blob: 7546a96ff15c1b9fbbe6ed065793689c5c687160 [file] [log] [blame]
{"version":3,"file":"common-upgrade.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../../packages/common/upgrade/src/utils.ts","../../../../../../packages/common/upgrade/src/location_shim.ts","../../../../../../packages/common/upgrade/src/params.ts","../../../../../../packages/common/upgrade/src/location_upgrade_module.ts","../../../../../../packages/common/upgrade/src/index.ts","../../../../../../packages/common/upgrade/public_api.ts","../../../../../../packages/common/upgrade/index.ts","../../../../../../packages/common/upgrade/upgrade.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport function stripPrefix(val: string, prefix: string): string {\n return val.startsWith(prefix) ? val.substring(prefix.length) : val;\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) {\n return true;\n } else if (!a || !b) {\n return false;\n } else {\n try {\n if ((a.prototype !== b.prototype) || (Array.isArray(a) && Array.isArray(b))) {\n return false;\n }\n return JSON.stringify(a) === JSON.stringify(b);\n } catch (e) {\n return false;\n }\n }\n}\n\nexport function isAnchor(el: (Node & ParentNode) | Element | null): el is HTMLAnchorElement {\n return (<HTMLAnchorElement>el).href !== undefined;\n}\n\nexport function isPromise(obj: any): obj is Promise<any> {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && typeof obj.then === 'function';\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Location, LocationStrategy, PlatformLocation} from '@angular/common';\nimport {UpgradeModule} from '@angular/upgrade/static';\n\nimport {UrlCodec} from './params';\nimport {deepEqual, isAnchor, isPromise} from './utils';\n\nconst PATH_MATCH = /^([^?#]*)(\\?([^#]*))?(#(.*))?$/;\nconst DOUBLE_SLASH_REGEX = /^\\s*[\\\\/]{2,}/;\nconst IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i;\nconst DEFAULT_PORTS: {[key: string]: number} = {\n 'http:': 80,\n 'https:': 443,\n 'ftp:': 21\n};\n\n/**\n * Location service that provides a drop-in replacement for the $location service\n * provided in AngularJS.\n *\n * @see [Using the Angular Unified Location Service](guide/upgrade#using-the-unified-angular-location-service)\n *\n * @publicApi\n */\nexport class $locationShim {\n private initalizing = true;\n private updateBrowser = false;\n private $$absUrl: string = '';\n private $$url: string = '';\n private $$protocol: string;\n private $$host: string = '';\n private $$port: number|null;\n private $$replace: boolean = false;\n private $$path: string = '';\n private $$search: any = '';\n private $$hash: string = '';\n private $$state: unknown;\n private $$changeListeners: [\n ((url: string, state: unknown, oldUrl: string, oldState: unknown, err?: (e: Error) => void) =>\n void),\n (e: Error) => void\n ][] = [];\n\n private cachedState: unknown = null;\n\n\n\n constructor(\n $injector: any, private location: Location, private platformLocation: PlatformLocation,\n private urlCodec: UrlCodec, private locationStrategy: LocationStrategy) {\n const initialUrl = this.browserUrl();\n\n let parsedUrl = this.urlCodec.parse(initialUrl);\n\n if (typeof parsedUrl === 'string') {\n throw 'Invalid URL';\n }\n\n this.$$protocol = parsedUrl.protocol;\n this.$$host = parsedUrl.hostname;\n this.$$port = parseInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;\n\n this.$$parseLinkUrl(initialUrl, initialUrl);\n this.cacheState();\n this.$$state = this.browserState();\n\n if (isPromise($injector)) {\n $injector.then($i => this.initialize($i));\n } else {\n this.initialize($injector);\n }\n }\n\n private initialize($injector: any) {\n const $rootScope = $injector.get('$rootScope');\n const $rootElement = $injector.get('$rootElement');\n\n $rootElement.on('click', (event: any) => {\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.which === 2 ||\n event.button === 2) {\n return;\n }\n\n let elm: (Node & ParentNode)|null = event.target;\n\n // traverse the DOM up to find first A tag\n while (elm && elm.nodeName.toLowerCase() !== 'a') {\n // ignore rewriting if no A tag (reached root element, or no parent - removed from document)\n if (elm === $rootElement[0] || !(elm = elm.parentNode)) {\n return;\n }\n }\n\n if (!isAnchor(elm)) {\n return;\n }\n\n const absHref = elm.href;\n const relHref = elm.getAttribute('href');\n\n // Ignore when url is started with javascript: or mailto:\n if (IGNORE_URI_REGEXP.test(absHref)) {\n return;\n }\n\n if (absHref && !elm.getAttribute('target') && !event.isDefaultPrevented()) {\n if (this.$$parseLinkUrl(absHref, relHref)) {\n // We do a preventDefault for all urls that are part of the AngularJS application,\n // in html5mode and also without, so that we are able to abort navigation without\n // getting double entries in the location history.\n event.preventDefault();\n // update location manually\n if (this.absUrl() !== this.browserUrl()) {\n $rootScope.$apply();\n }\n }\n }\n });\n\n this.location.onUrlChange((newUrl, newState) => {\n let oldUrl = this.absUrl();\n let oldState = this.$$state;\n this.$$parse(newUrl);\n newUrl = this.absUrl();\n this.$$state = newState;\n const defaultPrevented =\n $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, newState, oldState)\n .defaultPrevented;\n\n // if the location was changed by a `$locationChangeStart` handler then stop\n // processing this location change\n if (this.absUrl() !== newUrl) return;\n\n // If default was prevented, set back to old state. This is the state that was locally\n // cached in the $location service.\n if (defaultPrevented) {\n this.$$parse(oldUrl);\n this.state(oldState);\n this.setBrowserUrlWithFallback(oldUrl, false, oldState);\n } else {\n this.initalizing = false;\n $rootScope.$broadcast('$locationChangeSuccess', newUrl, oldUrl, newState, oldState);\n this.resetBrowserUpdate();\n }\n if (!$rootScope.$$phase) {\n $rootScope.$digest();\n }\n });\n\n // update browser\n $rootScope.$watch(() => {\n if (this.initalizing || this.updateBrowser) {\n this.updateBrowser = false;\n\n const oldUrl = this.browserUrl();\n const newUrl = this.absUrl();\n const oldState = this.browserState();\n let currentReplace = this.$$replace;\n\n const urlOrStateChanged =\n !this.urlCodec.areEqual(oldUrl, newUrl) || oldState !== this.$$state;\n\n // Fire location changes one time to on initialization. This must be done on the\n // next tick (thus inside $evalAsync()) in order for listeners to be registered\n // before the event fires. Mimicing behavior from $locationWatch:\n // https://github.com/angular/angular.js/blob/master/src/ng/location.js#L983\n if (this.initalizing || urlOrStateChanged) {\n this.initalizing = false;\n\n $rootScope.$evalAsync(() => {\n // Get the new URL again since it could have changed due to async update\n const newUrl = this.absUrl();\n const defaultPrevented =\n $rootScope\n .$broadcast('$locationChangeStart', newUrl, oldUrl, this.$$state, oldState)\n .defaultPrevented;\n\n // if the location was changed by a `$locationChangeStart` handler then stop\n // processing this location change\n if (this.absUrl() !== newUrl) return;\n\n if (defaultPrevented) {\n this.$$parse(oldUrl);\n this.$$state = oldState;\n } else {\n // This block doesn't run when initalizing because it's going to perform the update to\n // the URL which shouldn't be needed when initalizing.\n if (urlOrStateChanged) {\n this.setBrowserUrlWithFallback(\n newUrl, currentReplace, oldState === this.$$state ? null : this.$$state);\n this.$$replace = false;\n }\n $rootScope.$broadcast(\n '$locationChangeSuccess', newUrl, oldUrl, this.$$state, oldState);\n }\n });\n }\n }\n this.$$replace = false;\n });\n }\n\n private resetBrowserUpdate() {\n this.$$replace = false;\n this.$$state = this.browserState();\n this.updateBrowser = false;\n this.lastBrowserUrl = this.browserUrl();\n }\n\n private lastHistoryState: unknown;\n private lastBrowserUrl: string = '';\n private browserUrl(): string;\n private browserUrl(url: string, replace?: boolean, state?: unknown): this;\n private browserUrl(url?: string, replace?: boolean, state?: unknown) {\n // In modern browsers `history.state` is `null` by default; treating it separately\n // from `undefined` would cause `$browser.url('/foo')` to change `history.state`\n // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.\n if (typeof state === 'undefined') {\n state = null;\n }\n\n // setter\n if (url) {\n let sameState = this.lastHistoryState === state;\n\n // Normalize the inputted URL\n url = this.urlCodec.parse(url).href;\n\n // Don't change anything if previous and current URLs and states match.\n if (this.lastBrowserUrl === url && sameState) {\n return this;\n }\n this.lastBrowserUrl = url;\n this.lastHistoryState = state;\n\n // Remove server base from URL as the Angular APIs for updating URL require\n // it to be the path+.\n url = this.stripBaseUrl(this.getServerBase(), url) || url;\n\n // Set the URL\n if (replace) {\n this.locationStrategy.replaceState(state, '', url, '');\n } else {\n this.locationStrategy.pushState(state, '', url, '');\n }\n\n this.cacheState();\n\n return this;\n // getter\n } else {\n return this.platformLocation.href;\n }\n }\n\n // This variable should be used *only* inside the cacheState function.\n private lastCachedState: unknown = null;\n private cacheState() {\n // This should be the only place in $browser where `history.state` is read.\n this.cachedState = this.platformLocation.getState();\n if (typeof this.cachedState === 'undefined') {\n this.cachedState = null;\n }\n\n // Prevent callbacks fo fire twice if both hashchange & popstate were fired.\n if (deepEqual(this.cachedState, this.lastCachedState)) {\n this.cachedState = this.lastCachedState;\n }\n\n this.lastCachedState = this.cachedState;\n this.lastHistoryState = this.cachedState;\n }\n\n /**\n * This function emulates the $browser.state() function from AngularJS. It will cause\n * history.state to be cached unless changed with deep equality check.\n */\n private browserState(): unknown { return this.cachedState; }\n\n private stripBaseUrl(base: string, url: string) {\n if (url.startsWith(base)) {\n return url.substr(base.length);\n }\n return undefined;\n }\n\n private getServerBase() {\n const {protocol, hostname, port} = this.platformLocation;\n const baseHref = this.locationStrategy.getBaseHref();\n let url = `${protocol}//${hostname}${port ? ':' + port : ''}${baseHref || '/'}`;\n return url.endsWith('/') ? url : url + '/';\n }\n\n private parseAppUrl(url: string) {\n if (DOUBLE_SLASH_REGEX.test(url)) {\n throw new Error(`Bad Path - URL cannot start with double slashes: ${url}`);\n }\n\n let prefixed = (url.charAt(0) !== '/');\n if (prefixed) {\n url = '/' + url;\n }\n let match = this.urlCodec.parse(url, this.getServerBase());\n if (typeof match === 'string') {\n throw new Error(`Bad URL - Cannot parse URL: ${url}`);\n }\n let path =\n prefixed && match.pathname.charAt(0) === '/' ? match.pathname.substring(1) : match.pathname;\n this.$$path = this.urlCodec.decodePath(path);\n this.$$search = this.urlCodec.decodeSearch(match.search);\n this.$$hash = this.urlCodec.decodeHash(match.hash);\n\n // make sure path starts with '/';\n if (this.$$path && this.$$path.charAt(0) !== '/') {\n this.$$path = '/' + this.$$path;\n }\n }\n\n /**\n * Registers listeners for URL changes. This API is used to catch updates performed by the\n * AngularJS framework. These changes are a subset of the `$locationChangeStart` and\n * `$locationChangeSuccess` events which fire when AngularJS updates its internally-referenced\n * version of the browser URL.\n *\n * It's possible for `$locationChange` events to happen, but for the browser URL\n * (window.location) to remain unchanged. This `onChange` callback will fire only when AngularJS\n * actually updates the browser URL (window.location).\n *\n * @param fn The callback function that is triggered for the listener when the URL changes.\n * @param err The callback function that is triggered when an error occurs.\n */\n onChange(\n fn: (url: string, state: unknown, oldUrl: string, oldState: unknown) => void,\n err: (e: Error) => void = (e: Error) => {}) {\n this.$$changeListeners.push([fn, err]);\n }\n\n /** @internal */\n $$notifyChangeListeners(\n url: string = '', state: unknown, oldUrl: string = '', oldState: unknown) {\n this.$$changeListeners.forEach(([fn, err]) => {\n try {\n fn(url, state, oldUrl, oldState);\n } catch (e) {\n err(e);\n }\n });\n }\n\n /**\n * Parses the provided URL, and sets the current URL to the parsed result.\n *\n * @param url The URL string.\n */\n $$parse(url: string) {\n let pathUrl: string|undefined;\n if (url.startsWith('/')) {\n pathUrl = url;\n } else {\n // Remove protocol & hostname if URL starts with it\n pathUrl = this.stripBaseUrl(this.getServerBase(), url);\n }\n if (typeof pathUrl === 'undefined') {\n throw new Error(`Invalid url \"${url}\", missing path prefix \"${this.getServerBase()}\".`);\n }\n\n this.parseAppUrl(pathUrl);\n\n if (!this.$$path) {\n this.$$path = '/';\n }\n this.composeUrls();\n }\n\n /**\n * Parses the provided URL and its relative URL.\n *\n * @param url The full URL string.\n * @param relHref A URL string relative to the full URL string.\n */\n $$parseLinkUrl(url: string, relHref?: string|null): boolean {\n // When relHref is passed, it should be a hash and is handled separately\n if (relHref && relHref[0] === '#') {\n this.hash(relHref.slice(1));\n return true;\n }\n let rewrittenUrl;\n let appUrl = this.stripBaseUrl(this.getServerBase(), url);\n if (typeof appUrl !== 'undefined') {\n rewrittenUrl = this.getServerBase() + appUrl;\n } else if (this.getServerBase() === url + '/') {\n rewrittenUrl = this.getServerBase();\n }\n // Set the URL\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n }\n\n private setBrowserUrlWithFallback(url: string, replace: boolean, state: unknown) {\n const oldUrl = this.url();\n const oldState = this.$$state;\n try {\n this.browserUrl(url, replace, state);\n\n // Make sure $location.state() returns referentially identical (not just deeply equal)\n // state object; this makes possible quick checking if the state changed in the digest\n // loop. Checking deep equality would be too expensive.\n this.$$state = this.browserState();\n this.$$notifyChangeListeners(url, state, oldUrl, oldState);\n } catch (e) {\n // Restore old values if pushState fails\n this.url(oldUrl);\n this.$$state = oldState;\n\n throw e;\n }\n }\n\n private composeUrls() {\n this.$$url = this.urlCodec.normalize(this.$$path, this.$$search, this.$$hash);\n this.$$absUrl = this.getServerBase() + this.$$url.substr(1); // remove '/' from front of URL\n this.updateBrowser = true;\n }\n\n /**\n * Retrieves the full URL representation with all segments encoded according to\n * rules specified in\n * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).\n *\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let absUrl = $location.absUrl();\n * // => \"http://example.com/#/some/path?foo=bar&baz=xoxo\"\n * ```\n */\n absUrl(): string { return this.$$absUrl; }\n\n /**\n * Retrieves the current URL, or sets a new URL. When setting a URL,\n * changes the path, search, and hash, and returns a reference to its own instance.\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let url = $location.url();\n * // => \"/some/path?foo=bar&baz=xoxo\"\n * ```\n */\n url(): string;\n url(url: string): this;\n url(url?: string): string|this {\n if (typeof url === 'string') {\n if (!url.length) {\n url = '/';\n }\n\n const match = PATH_MATCH.exec(url);\n if (!match) return this;\n if (match[1] || url === '') this.path(this.urlCodec.decodePath(match[1]));\n if (match[2] || match[1] || url === '') this.search(match[3] || '');\n this.hash(match[5] || '');\n\n // Chainable method\n return this;\n }\n\n return this.$$url;\n }\n\n /**\n * Retrieves the protocol of the current URL.\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let protocol = $location.protocol();\n * // => \"http\"\n * ```\n */\n protocol(): string { return this.$$protocol; }\n\n /**\n * Retrieves the protocol of the current URL.\n *\n * In contrast to the non-AngularJS version `location.host` which returns `hostname:port`, this\n * returns the `hostname` portion only.\n *\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let host = $location.host();\n * // => \"example.com\"\n *\n * // given URL http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo\n * host = $location.host();\n * // => \"example.com\"\n * host = location.host;\n * // => \"example.com:8080\"\n * ```\n */\n host(): string { return this.$$host; }\n\n /**\n * Retrieves the port of the current URL.\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let port = $location.port();\n * // => 80\n * ```\n */\n port(): number|null { return this.$$port; }\n\n /**\n * Retrieves the path of the current URL, or changes the path and returns a reference to its own\n * instance.\n *\n * Paths should always begin with forward slash (/). This method adds the forward slash\n * if it is missing.\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let path = $location.path();\n * // => \"/some/path\"\n * ```\n */\n path(): string;\n path(path: string|number|null): this;\n path(path?: string|number|null): string|this {\n if (typeof path === 'undefined') {\n return this.$$path;\n }\n\n // null path converts to empty string. Prepend with \"/\" if needed.\n path = path !== null ? path.toString() : '';\n path = path.charAt(0) === '/' ? path : '/' + path;\n\n this.$$path = path;\n\n this.composeUrls();\n return this;\n }\n\n /**\n * Retrieves a map of the search parameters of the current URL, or changes a search \n * part and returns a reference to its own instance.\n *\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n * let searchObject = $location.search();\n * // => {foo: 'bar', baz: 'xoxo'}\n *\n * // set foo to 'yipee'\n * $location.search('foo', 'yipee');\n * // $location.search() => {foo: 'yipee', baz: 'xoxo'}\n * ```\n *\n * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or\n * hash object.\n *\n * When called with a single argument the method acts as a setter, setting the `search` component\n * of `$location` to the specified value.\n *\n * If the argument is a hash object containing an array of values, these values will be encoded\n * as duplicate search parameters in the URL.\n *\n * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`\n * will override only a single search property.\n *\n * If `paramValue` is an array, it will override the property of the `search` component of\n * `$location` specified via the first argument.\n *\n * If `paramValue` is `null`, the property specified via the first argument will be deleted.\n *\n * If `paramValue` is `true`, the property specified via the first argument will be added with no\n * value nor trailing equal sign.\n *\n * @return {Object} The parsed `search` object of the current URL, or the changed `search` object.\n */\n search(): {[key: string]: unknown};\n search(search: string|number|{[key: string]: unknown}): this;\n search(\n search: string|number|{[key: string]: unknown},\n paramValue: null|undefined|string|number|boolean|string[]): this;\n search(\n search?: string|number|{[key: string]: unknown},\n paramValue?: null|undefined|string|number|boolean|string[]): {[key: string]: unknown}|this {\n switch (arguments.length) {\n case 0:\n return this.$$search;\n case 1:\n if (typeof search === 'string' || typeof search === 'number') {\n this.$$search = this.urlCodec.decodeSearch(search.toString());\n } else if (typeof search === 'object' && search !== null) {\n // Copy the object so it's never mutated\n search = {...search};\n // remove object undefined or null properties\n for (const key in search) {\n if (search[key] == null) delete search[key];\n }\n\n this.$$search = search;\n } else {\n throw new Error(\n 'LocationProvider.search(): First argument must be a string or an object.');\n }\n break;\n default:\n if (typeof search === 'string') {\n const currentSearch = this.search();\n if (typeof paramValue === 'undefined' || paramValue === null) {\n delete currentSearch[search];\n return this.search(currentSearch);\n } else {\n currentSearch[search] = paramValue;\n return this.search(currentSearch);\n }\n }\n }\n this.composeUrls();\n return this;\n }\n\n /**\n * Retrieves the current hash fragment, or changes the hash fragment and returns a reference to\n * its own instance.\n *\n * ```js\n * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue\n * let hash = $location.hash();\n * // => \"hashValue\"\n * ```\n */\n hash(): string;\n hash(hash: string|number|null): this;\n hash(hash?: string|number|null): string|this {\n if (typeof hash === 'undefined') {\n return this.$$hash;\n }\n\n this.$$hash = hash !== null ? hash.toString() : '';\n\n this.composeUrls();\n return this;\n }\n\n /**\n * Changes to `$location` during the current `$digest` will replace the current\n * history record, instead of adding a new one.\n */\n replace(): this {\n this.$$replace = true;\n return this;\n }\n\n /**\n * Retrieves the history state object when called without any parameter.\n *\n * Change the history state object when called with one parameter and return `$location`.\n * The state object is later passed to `pushState` or `replaceState`.\n *\n * This method is supported only in HTML5 mode and only in browsers supporting\n * the HTML5 History API methods such as `pushState` and `replaceState`. If you need to support\n * older browsers (like IE9 or Android < 4.0), don't use this method.\n *\n */\n state(): unknown;\n state(state: unknown): this;\n state(state?: unknown): unknown|this {\n if (typeof state === 'undefined') {\n return this.$$state;\n }\n\n this.$$state = state;\n return this;\n }\n}\n\n/**\n * The factory function used to create an instance of the `$locationShim` in Angular,\n * and provides an API-compatiable `$locationProvider` for AngularJS.\n *\n * @publicApi\n */\nexport class $locationShimProvider {\n constructor(\n private ngUpgrade: UpgradeModule, private location: Location,\n private platformLocation: PlatformLocation, private urlCodec: UrlCodec,\n private locationStrategy: LocationStrategy) {}\n\n /**\n * Factory method that returns an instance of the $locationShim\n */\n $get() {\n return new $locationShim(\n this.ngUpgrade.$injector, this.location, this.platformLocation, this.urlCodec,\n this.locationStrategy);\n }\n\n /**\n * Stub method used to keep API compatible with AngularJS. This setting is configured through\n * the LocationUpgradeModule's `config` method in your Angular app.\n */\n hashPrefix(prefix?: string) {\n throw new Error('Configure LocationUpgrade through LocationUpgradeModule.config method.');\n }\n\n /**\n * Stub method used to keep API compatible with AngularJS. This setting is configured through\n * the LocationUpgradeModule's `config` method in your Angular app.\n */\n html5Mode(mode?: any) {\n throw new Error('Configure LocationUpgrade through LocationUpgradeModule.config method.');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A codec for encoding and decoding URL parts.\n *\n * @publicApi\n **/\nexport abstract class UrlCodec {\n /**\n * Encodes the path from the provided string\n *\n * @param path The path string\n */\n abstract encodePath(path: string): string;\n\n /**\n * Decodes the path from the provided string\n *\n * @param path The path string\n */\n abstract decodePath(path: string): string;\n\n /**\n * Encodes the search string from the provided string or object\n *\n * @param path The path string or object\n */\n abstract encodeSearch(search: string|{[k: string]: unknown}): string;\n\n /**\n * Decodes the search objects from the provided string\n *\n * @param path The path string\n */\n abstract decodeSearch(search: string): {[k: string]: unknown};\n\n /**\n * Encodes the hash from the provided string\n *\n * @param path The hash string\n */\n abstract encodeHash(hash: string): string;\n\n /**\n * Decodes the hash from the provided string\n *\n * @param path The hash string\n */\n abstract decodeHash(hash: string): string;\n\n /**\n * Normalizes the URL from the provided string\n *\n * @param path The URL string\n */\n abstract normalize(href: string): string;\n\n\n /**\n * Normalizes the URL from the provided string, search, hash, and base URL parameters\n *\n * @param path The URL path\n * @param search The search object\n * @param hash The has string\n * @param baseUrl The base URL for the URL\n */\n abstract normalize(path: string, search: {[k: string]: unknown}, hash: string, baseUrl?: string):\n string;\n\n /**\n * Checks whether the two strings are equal\n * @param valA First string for comparison\n * @param valB Second string for comparison\n */\n abstract areEqual(valA: string, valB: string): boolean;\n\n /**\n * Parses the URL string based on the base URL\n *\n * @param url The full URL string\n * @param base The base for the URL\n */\n abstract parse(url: string, base?: string): {\n href: string,\n protocol: string,\n host: string,\n search: string,\n hash: string,\n hostname: string,\n port: string,\n pathname: string\n };\n}\n\n/**\n * A `UrlCodec` that uses logic from AngularJS to serialize and parse URLs\n * and URL parameters.\n *\n * @publicApi\n */\nexport class AngularJSUrlCodec implements UrlCodec {\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L15\n encodePath(path: string): string {\n const segments = path.split('/');\n let i = segments.length;\n\n while (i--) {\n // decode forward slashes to prevent them from being double encoded\n segments[i] = encodeUriSegment(segments[i].replace(/%2F/g, '/'));\n }\n\n path = segments.join('/');\n return _stripIndexHtml((path && path[0] !== '/' && '/' || '') + path);\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L42\n encodeSearch(search: string|{[k: string]: unknown}): string {\n if (typeof search === 'string') {\n search = parseKeyValue(search);\n }\n\n search = toKeyValue(search);\n return search ? '?' + search : '';\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L44\n encodeHash(hash: string) {\n hash = encodeUriSegment(hash);\n return hash ? '#' + hash : '';\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L27\n decodePath(path: string, html5Mode = true): string {\n const segments = path.split('/');\n let i = segments.length;\n\n while (i--) {\n segments[i] = decodeURIComponent(segments[i]);\n if (html5Mode) {\n // encode forward slashes to prevent them from being mistaken for path separators\n segments[i] = segments[i].replace(/\\//g, '%2F');\n }\n }\n\n return segments.join('/');\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L72\n decodeSearch(search: string) { return parseKeyValue(search); }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L73\n decodeHash(hash: string) {\n hash = decodeURIComponent(hash);\n return hash[0] === '#' ? hash.substring(1) : hash;\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L149\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L42\n normalize(href: string): string;\n normalize(path: string, search: {[k: string]: unknown}, hash: string, baseUrl?: string): string;\n normalize(pathOrHref: string, search?: {[k: string]: unknown}, hash?: string, baseUrl?: string):\n string {\n if (arguments.length === 1) {\n const parsed = this.parse(pathOrHref, baseUrl);\n\n if (typeof parsed === 'string') {\n return parsed;\n }\n\n const serverUrl =\n `${parsed.protocol}://${parsed.hostname}${parsed.port ? ':' + parsed.port : ''}`;\n\n return this.normalize(\n this.decodePath(parsed.pathname), this.decodeSearch(parsed.search),\n this.decodeHash(parsed.hash), serverUrl);\n } else {\n const encPath = this.encodePath(pathOrHref);\n const encSearch = search && this.encodeSearch(search) || '';\n const encHash = hash && this.encodeHash(hash) || '';\n\n let joinedPath = (baseUrl || '') + encPath;\n\n if (!joinedPath.length || joinedPath[0] !== '/') {\n joinedPath = '/' + joinedPath;\n }\n return joinedPath + encSearch + encHash;\n }\n }\n\n areEqual(valA: string, valB: string) { return this.normalize(valA) === this.normalize(valB); }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/urlUtils.js#L60\n parse(url: string, base?: string) {\n try {\n const parsed = new URL(url, base);\n return {\n href: parsed.href,\n protocol: parsed.protocol ? parsed.protocol.replace(/:$/, '') : '',\n host: parsed.host,\n search: parsed.search ? parsed.search.replace(/^\\?/, '') : '',\n hash: parsed.hash ? parsed.hash.replace(/^#/, '') : '',\n hostname: parsed.hostname,\n port: parsed.port,\n pathname: (parsed.pathname.charAt(0) === '/') ? parsed.pathname : '/' + parsed.pathname\n };\n } catch (e) {\n throw new Error(`Invalid URL (${url}) with base (${base})`);\n }\n }\n}\n\nfunction _stripIndexHtml(url: string): string {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value: string) {\n try {\n return decodeURIComponent(value);\n } catch (e) {\n // Ignore any invalid uri component.\n return undefined;\n }\n}\n\n\n/**\n * Parses an escaped url query string into key-value pairs. Logic taken from\n * https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1382\n * @returns {Object.<string,boolean|Array>}\n */\nfunction parseKeyValue(keyValue: string): {[k: string]: unknown} {\n const obj: {[k: string]: unknown} = {};\n (keyValue || '').split('&').forEach((keyValue) => {\n let splitPoint, key, val;\n if (keyValue) {\n key = keyValue = keyValue.replace(/\\+/g, '%20');\n splitPoint = keyValue.indexOf('=');\n if (splitPoint !== -1) {\n key = keyValue.substring(0, splitPoint);\n val = keyValue.substring(splitPoint + 1);\n }\n key = tryDecodeURIComponent(key);\n if (typeof key !== 'undefined') {\n val = typeof val !== 'undefined' ? tryDecodeURIComponent(val) : true;\n if (!obj.hasOwnProperty(key)) {\n obj[key] = val;\n } else if (Array.isArray(obj[key])) {\n (obj[key] as unknown[]).push(val);\n } else {\n obj[key] = [obj[key], val];\n }\n }\n }\n });\n return obj;\n}\n\n/**\n * Serializes into key-value pairs. Logic taken from\n * https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1409\n */\nfunction toKeyValue(obj: {[k: string]: unknown}) {\n const parts: unknown[] = [];\n for (const key in obj) {\n let value = obj[key];\n if (Array.isArray(value)) {\n value.forEach((arrayValue) => {\n parts.push(\n encodeUriQuery(key, true) +\n (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));\n });\n } else {\n parts.push(\n encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value as any, true)));\n }\n }\n return parts.length ? parts.join('&') : '';\n}\n\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n *\n * Logic from https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1437\n */\nfunction encodeUriSegment(val: string) {\n return encodeUriQuery(val, true)\n .replace(/%26/gi, '&')\n .replace(/%3D/gi, '=')\n .replace(/%2B/gi, '+');\n}\n\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n *\n * Logic from https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1456\n */\nfunction encodeUriQuery(val: string, pctEncodeSpaces: boolean = false) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {APP_BASE_HREF, CommonModule, HashLocationStrategy, Location, LocationStrategy, PathLocationStrategy, PlatformLocation} from '@angular/common';\nimport {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core';\nimport {UpgradeModule} from '@angular/upgrade/static';\n\nimport {$locationShim, $locationShimProvider} from './location_shim';\nimport {AngularJSUrlCodec, UrlCodec} from './params';\n\n\n/**\n * Configuration options for LocationUpgrade.\n *\n * @publicApi\n */\nexport interface LocationUpgradeConfig {\n /**\n * Configures whether the location upgrade module should use the `HashLocationStrategy`\n * or the `PathLocationStrategy`\n */\n useHash?: boolean;\n /**\n * Configures the hash prefix used in the URL when using the `HashLocationStrategy`\n */\n hashPrefix?: string;\n /**\n * Configures the URL codec for encoding and decoding URLs. Default is the `AngularJSCodec`\n */\n urlCodec?: typeof UrlCodec;\n /**\n * Configures the base href when used in server-side rendered applications\n */\n serverBaseHref?: string;\n /**\n * Configures the base href when used in client-side rendered applications\n */\n appBaseHref?: string;\n}\n\n/**\n * A provider token used to configure the location upgrade module.\n *\n * @publicApi\n */\nexport const LOCATION_UPGRADE_CONFIGURATION =\n new InjectionToken<LocationUpgradeConfig>('LOCATION_UPGRADE_CONFIGURATION');\n\nconst APP_BASE_HREF_RESOLVED = new InjectionToken<string>('APP_BASE_HREF_RESOLVED');\n\n/**\n * `NgModule` used for providing and configuring Angular's Unified Location Service for upgrading.\n * \n * @see [Using the Unified Angular Location Service](guide/upgrade#using-the-unified-angular-location-service)\n *\n * @publicApi\n */\n@NgModule({imports: [CommonModule]})\nexport class LocationUpgradeModule {\n static config(config?: LocationUpgradeConfig): ModuleWithProviders<LocationUpgradeModule> {\n return {\n ngModule: LocationUpgradeModule,\n providers: [\n Location,\n {\n provide: $locationShim,\n useFactory: provide$location,\n deps: [UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy]\n },\n {provide: LOCATION_UPGRADE_CONFIGURATION, useValue: config ? config : {}},\n {provide: UrlCodec, useFactory: provideUrlCodec, deps: [LOCATION_UPGRADE_CONFIGURATION]},\n {\n provide: APP_BASE_HREF_RESOLVED,\n useFactory: provideAppBaseHref,\n deps: [LOCATION_UPGRADE_CONFIGURATION, [new Inject(APP_BASE_HREF), new Optional()]]\n },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n deps: [\n PlatformLocation,\n APP_BASE_HREF_RESOLVED,\n LOCATION_UPGRADE_CONFIGURATION,\n ]\n },\n ],\n };\n }\n}\n\nexport function provideAppBaseHref(config: LocationUpgradeConfig, appBaseHref?: string) {\n if (config && config.appBaseHref != null) {\n return config.appBaseHref;\n } else if (appBaseHref != null) {\n return appBaseHref;\n }\n return '';\n}\n\nexport function provideUrlCodec(config: LocationUpgradeConfig) {\n const codec = config && config.urlCodec || AngularJSUrlCodec;\n return new (codec as any)();\n}\n\nexport function provideLocationStrategy(\n platformLocation: PlatformLocation, baseHref: string, options: LocationUpgradeConfig = {}) {\n return options.useHash ? new HashLocationStrategy(platformLocation, baseHref) :\n new PathLocationStrategy(platformLocation, baseHref);\n}\n\nexport function provide$location(\n ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation,\n urlCodec: UrlCodec, locationStrategy: LocationStrategy) {\n const $locationProvider =\n new $locationShimProvider(ngUpgrade, location, platformLocation, urlCodec, locationStrategy);\n\n return $locationProvider.$get();\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {$locationShim, $locationShimProvider} from './location_shim';\nexport {LOCATION_UPGRADE_CONFIGURATION, LocationUpgradeConfig, LocationUpgradeModule} from './location_upgrade_module';\nexport {AngularJSUrlCodec, UrlCodec} from './params';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/index';\n\n// This file only reexports content of the `src` folder. Keep it that way.\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {provide$location as ɵangular_packages_common_upgrade_upgrade_d,provideAppBaseHref as ɵangular_packages_common_upgrade_upgrade_a,provideLocationStrategy as ɵangular_packages_common_upgrade_upgrade_c,provideUrlCodec as ɵangular_packages_common_upgrade_upgrade_b} from './src/location_upgrade_module';"],"names":["InjectionToken","Location","UpgradeModule","PlatformLocation","LocationStrategy","Inject","APP_BASE_HREF","Optional","NgModule","CommonModule","HashLocationStrategy","PathLocationStrategy"],"mappings":"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"}