@angular/common 21.0.0-next.9 → 21.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/_common_module-chunk.mjs +3050 -4380
- package/fesm2022/_common_module-chunk.mjs.map +1 -1
- package/fesm2022/_location-chunk.mjs +392 -588
- package/fesm2022/_location-chunk.mjs.map +1 -1
- package/fesm2022/_module-chunk.mjs +2035 -3001
- package/fesm2022/_module-chunk.mjs.map +1 -1
- package/fesm2022/_platform_navigation-chunk.mjs +30 -16
- package/fesm2022/_platform_navigation-chunk.mjs.map +1 -1
- package/fesm2022/_xhr-chunk.mjs +10 -16
- package/fesm2022/_xhr-chunk.mjs.map +1 -1
- package/fesm2022/common.mjs +1133 -1837
- package/fesm2022/common.mjs.map +1 -1
- package/fesm2022/http-testing.mjs +259 -310
- package/fesm2022/http-testing.mjs.map +1 -1
- package/fesm2022/http.mjs +302 -370
- package/fesm2022/http.mjs.map +1 -1
- package/fesm2022/testing.mjs +596 -552
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +601 -838
- package/fesm2022/upgrade.mjs.map +1 -1
- package/package.json +2 -2
- package/types/_common_module-chunk.d.ts +1 -1
- package/types/_module-chunk.d.ts +33 -1
- package/types/_platform_location-chunk.d.ts +1 -1
- package/types/_xhr-chunk.d.ts +1 -1
- package/types/common.d.ts +34 -4
- package/types/http-testing.d.ts +1 -1
- package/types/http.d.ts +13 -4
- package/types/testing.d.ts +88 -62
- package/types/upgrade.d.ts +1 -1
package/fesm2022/upgrade.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/utils.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/location_shim.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/params.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/location_upgrade_module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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.dev/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","/**\n * @license\n * Copyright Google LLC 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.dev/license\n */\n\nimport {Location, LocationStrategy, PlatformLocation} from '../../index';\nimport {ɵisPromise as isPromise} from '@angular/core';\nimport {UpgradeModule} from '@angular/upgrade/static';\nimport {ReplaySubject} from 'rxjs';\n\nimport {UrlCodec} from './params';\nimport {deepEqual, isAnchor} 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 initializing = 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 (\n url: string,\n state: unknown,\n oldUrl: string,\n oldState: unknown,\n err?: (e: Error) => void,\n ) => void,\n (e: Error) => void,\n ][] = [];\n\n private cachedState: unknown = null;\n\n private urlChanges = new ReplaySubject<{newUrl: string; newState: unknown}>(1);\n\n private readonly removeOnUrlChangeFn: VoidFunction;\n\n constructor(\n $injector: any,\n private location: Location,\n private platformLocation: PlatformLocation,\n private urlCodec: UrlCodec,\n private locationStrategy: LocationStrategy,\n ) {\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 this.removeOnUrlChangeFn = this.location.onUrlChange((newUrl, newState) => {\n this.urlChanges.next({newUrl, newState});\n });\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 (\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey ||\n event.which === 2 ||\n event.button === 2\n ) {\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.urlChanges.subscribe(({newUrl, newState}) => {\n const oldUrl = this.absUrl();\n const oldState = this.$$state;\n this.$$parse(newUrl);\n newUrl = this.absUrl();\n this.$$state = newState;\n const defaultPrevented = $rootScope.$broadcast(\n '$locationChangeStart',\n newUrl,\n oldUrl,\n newState,\n 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 this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);\n } else {\n this.initializing = false;\n $rootScope.$broadcast('$locationChangeSuccess', newUrl, oldUrl, newState, oldState);\n this.resetBrowserUpdate();\n }\n if (!$rootScope.$$phase) {\n $rootScope.$digest();\n }\n });\n\n // Synchronize the browser's URL and state with the application.\n // Note: There is no need to save the `$watch` return value (deregister listener)\n // into a variable because `$scope.$$watchers` is automatically cleaned up when\n // the root scope is destroyed.\n $rootScope.$watch(() => {\n if (this.initializing || 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.initializing || urlOrStateChanged) {\n this.initializing = 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 = $rootScope.$broadcast(\n '$locationChangeStart',\n newUrl,\n oldUrl,\n this.$$state,\n 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 initializing because it's going to perform the update\n // to the URL which shouldn't be needed when initializing.\n if (urlOrStateChanged) {\n this.setBrowserUrlWithFallback(\n newUrl,\n currentReplace,\n oldState === this.$$state ? null : this.$$state,\n );\n this.$$replace = false;\n }\n $rootScope.$broadcast(\n '$locationChangeSuccess',\n newUrl,\n oldUrl,\n this.$$state,\n oldState,\n );\n if (urlOrStateChanged) {\n this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);\n }\n }\n });\n }\n }\n this.$$replace = false;\n });\n\n $rootScope.$on('$destroy', () => {\n this.removeOnUrlChangeFn();\n // Complete the subject to release all active observers when the root\n // scope is destroyed. Before this change, we subscribed to the `urlChanges`\n // subject, and the subscriber captured `this`, leading to a memory leak\n // after the root scope was destroyed.\n this.urlChanges.complete();\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 {\n return this.cachedState;\n }\n\n private stripBaseUrl(base: string, url: string) {\n if (url.startsWith(base)) {\n return url.slice(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 ) {\n this.$$changeListeners.push([fn, err]);\n }\n\n /** @internal */\n $$notifyChangeListeners(\n url: string = '',\n state: unknown,\n oldUrl: string = '',\n oldState: unknown,\n ) {\n this.$$changeListeners.forEach(([fn, err]) => {\n try {\n fn(url, state, oldUrl, oldState);\n } catch (e) {\n err(e as Error);\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 this.$$path ||= '/';\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 } 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.slice(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](https://tools.ietf.org/html/rfc3986).\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 {\n return this.$$absUrl;\n }\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 {\n return this.$$protocol;\n }\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 {\n return this.$$host;\n }\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 {\n return this.$$port;\n }\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,\n * 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[],\n ): this;\n search(\n search?: string | number | {[key: string]: unknown},\n paramValue?: null | undefined | string | number | boolean | string[],\n ): {[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 }\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 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-compatible `$locationProvider` for AngularJS.\n *\n * @publicApi\n */\nexport class $locationShimProvider {\n constructor(\n private ngUpgrade: UpgradeModule,\n private location: Location,\n private platformLocation: PlatformLocation,\n private urlCodec: UrlCodec,\n private locationStrategy: LocationStrategy,\n ) {}\n\n /**\n * Factory method that returns an instance of the $locationShim\n */\n $get() {\n return new $locationShim(\n this.ngUpgrade.$injector,\n this.location,\n this.platformLocation,\n this.urlCodec,\n this.locationStrategy,\n );\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 LLC 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.dev/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 * 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(\n path: string,\n search: {[k: string]: unknown},\n hash: string,\n 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(\n url: string,\n base?: string,\n ): {\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) {\n return parseKeyValue(search);\n }\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(\n pathOrHref: string,\n search?: {[k: string]: unknown},\n hash?: string,\n 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 = `${parsed.protocol}://${parsed.hostname}${\n parsed.port ? ':' + parsed.port : ''\n }`;\n\n return this.normalize(\n this.decodePath(parsed.pathname),\n this.decodeSearch(parsed.search),\n this.decodeHash(parsed.hash),\n serverUrl,\n );\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) {\n return this.normalize(valA) === this.normalize(valB);\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/urlUtils.js#L60\n parse(url: string, base?: string) {\n try {\n // Safari 12 throws an error when the URL constructor is called with an undefined base.\n const parsed = !base ? new URL(url) : 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 * @param str value potential URI component to check.\n * @returns the decoded URI if it can be decoded or else `undefined`.\n */\nfunction tryDecodeURIComponent(value: string): string | undefined {\n try {\n return decodeURIComponent(value);\n } catch (e) {\n // Ignore any invalid uri component.\n return undefined;\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 */\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 });\n } else {\n parts.push(\n encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value as any, true)),\n );\n }\n }\n return parts.length ? parts.join('&') : '';\n}\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * https://tools.ietf.org/html/rfc3986 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).replace(/%26/g, '&').replace(/%3D/gi, '=').replace(/%2B/gi, '+');\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 https://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/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%20/g, pctEncodeSpaces ? '%20' : '+');\n}\n","/**\n * @license\n * Copyright Google LLC 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.dev/license\n */\n\nimport {\n APP_BASE_HREF,\n CommonModule,\n HashLocationStrategy,\n Location,\n LocationStrategy,\n PathLocationStrategy,\n PlatformLocation,\n} from '../../index';\nimport {inject, InjectionToken, ModuleWithProviders, NgModule} from '@angular/core';\nimport {UpgradeModule} from '@angular/upgrade/static';\n\nimport {$locationShim, $locationShimProvider} from './location_shim';\nimport {AngularJSUrlCodec, UrlCodec} from './params';\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 = new InjectionToken<LocationUpgradeConfig>(\n typeof ngDevMode !== undefined && ngDevMode ? 'LOCATION_UPGRADE_CONFIGURATION' : '',\n);\n\nconst APP_BASE_HREF_RESOLVED = new InjectionToken<string>(\n typeof ngDevMode !== undefined && ngDevMode ? 'APP_BASE_HREF_RESOLVED' : '',\n);\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](https://angular.io/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 },\n {provide: LOCATION_UPGRADE_CONFIGURATION, useValue: config ? config : {}},\n {provide: UrlCodec, useFactory: provideUrlCodec},\n {\n provide: APP_BASE_HREF_RESOLVED,\n useFactory: provideAppBaseHref,\n },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n },\n ],\n };\n }\n}\n\nfunction provideAppBaseHref() {\n const config = inject(LOCATION_UPGRADE_CONFIGURATION);\n const appBaseHref = inject(APP_BASE_HREF, {optional: true});\n\n if (config && config.appBaseHref != null) {\n return config.appBaseHref;\n } else if (appBaseHref != null) {\n return appBaseHref;\n }\n return '';\n}\n\nfunction provideUrlCodec() {\n const config = inject(LOCATION_UPGRADE_CONFIGURATION);\n const codec = (config && config.urlCodec) || AngularJSUrlCodec;\n return new (codec as any)();\n}\n\nfunction provideLocationStrategy() {\n const platformLocation = inject(PlatformLocation);\n const baseHref = inject(APP_BASE_HREF_RESOLVED);\n const options = inject(LOCATION_UPGRADE_CONFIGURATION);\n return options.useHash\n ? new HashLocationStrategy(platformLocation, baseHref)\n : new PathLocationStrategy(platformLocation, baseHref);\n}\n\nfunction provide$location() {\n const $locationProvider = new $locationShimProvider(\n inject(UpgradeModule),\n inject(Location),\n inject(PlatformLocation),\n inject(UrlCodec),\n inject(LocationStrategy),\n );\n\n return $locationProvider.$get();\n}\n"],"names":["isPromise"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upgrade.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/utils.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/location_shim.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/params.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/common/upgrade/src/location_upgrade_module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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.dev/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","/**\n * @license\n * Copyright Google LLC 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.dev/license\n */\n\nimport {Location, LocationStrategy, PlatformLocation} from '../../index';\nimport {ɵisPromise as isPromise} from '@angular/core';\nimport {UpgradeModule} from '@angular/upgrade/static';\nimport {ReplaySubject} from 'rxjs';\n\nimport {UrlCodec} from './params';\nimport {deepEqual, isAnchor} 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 initializing = 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 (\n url: string,\n state: unknown,\n oldUrl: string,\n oldState: unknown,\n err?: (e: Error) => void,\n ) => void,\n (e: Error) => void,\n ][] = [];\n\n private cachedState: unknown = null;\n\n private urlChanges = new ReplaySubject<{newUrl: string; newState: unknown}>(1);\n\n private readonly removeOnUrlChangeFn: VoidFunction;\n\n constructor(\n $injector: any,\n private location: Location,\n private platformLocation: PlatformLocation,\n private urlCodec: UrlCodec,\n private locationStrategy: LocationStrategy,\n ) {\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 this.removeOnUrlChangeFn = this.location.onUrlChange((newUrl, newState) => {\n this.urlChanges.next({newUrl, newState});\n });\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 (\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey ||\n event.which === 2 ||\n event.button === 2\n ) {\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.urlChanges.subscribe(({newUrl, newState}) => {\n const oldUrl = this.absUrl();\n const oldState = this.$$state;\n this.$$parse(newUrl);\n newUrl = this.absUrl();\n this.$$state = newState;\n const defaultPrevented = $rootScope.$broadcast(\n '$locationChangeStart',\n newUrl,\n oldUrl,\n newState,\n 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 this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);\n } else {\n this.initializing = false;\n $rootScope.$broadcast('$locationChangeSuccess', newUrl, oldUrl, newState, oldState);\n this.resetBrowserUpdate();\n }\n if (!$rootScope.$$phase) {\n $rootScope.$digest();\n }\n });\n\n // Synchronize the browser's URL and state with the application.\n // Note: There is no need to save the `$watch` return value (deregister listener)\n // into a variable because `$scope.$$watchers` is automatically cleaned up when\n // the root scope is destroyed.\n $rootScope.$watch(() => {\n if (this.initializing || 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.initializing || urlOrStateChanged) {\n this.initializing = 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 = $rootScope.$broadcast(\n '$locationChangeStart',\n newUrl,\n oldUrl,\n this.$$state,\n 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 initializing because it's going to perform the update\n // to the URL which shouldn't be needed when initializing.\n if (urlOrStateChanged) {\n this.setBrowserUrlWithFallback(\n newUrl,\n currentReplace,\n oldState === this.$$state ? null : this.$$state,\n );\n this.$$replace = false;\n }\n $rootScope.$broadcast(\n '$locationChangeSuccess',\n newUrl,\n oldUrl,\n this.$$state,\n oldState,\n );\n if (urlOrStateChanged) {\n this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);\n }\n }\n });\n }\n }\n this.$$replace = false;\n });\n\n $rootScope.$on('$destroy', () => {\n this.removeOnUrlChangeFn();\n // Complete the subject to release all active observers when the root\n // scope is destroyed. Before this change, we subscribed to the `urlChanges`\n // subject, and the subscriber captured `this`, leading to a memory leak\n // after the root scope was destroyed.\n this.urlChanges.complete();\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 {\n return this.cachedState;\n }\n\n private stripBaseUrl(base: string, url: string) {\n if (url.startsWith(base)) {\n return url.slice(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 ) {\n this.$$changeListeners.push([fn, err]);\n }\n\n /** @internal */\n $$notifyChangeListeners(\n url: string = '',\n state: unknown,\n oldUrl: string = '',\n oldState: unknown,\n ) {\n this.$$changeListeners.forEach(([fn, err]) => {\n try {\n fn(url, state, oldUrl, oldState);\n } catch (e) {\n err(e as Error);\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 this.$$path ||= '/';\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 } 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.slice(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](https://tools.ietf.org/html/rfc3986).\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 {\n return this.$$absUrl;\n }\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 {\n return this.$$protocol;\n }\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 {\n return this.$$host;\n }\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 {\n return this.$$port;\n }\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,\n * 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[],\n ): this;\n search(\n search?: string | number | {[key: string]: unknown},\n paramValue?: null | undefined | string | number | boolean | string[],\n ): {[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 }\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 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-compatible `$locationProvider` for AngularJS.\n *\n * @publicApi\n */\nexport class $locationShimProvider {\n constructor(\n private ngUpgrade: UpgradeModule,\n private location: Location,\n private platformLocation: PlatformLocation,\n private urlCodec: UrlCodec,\n private locationStrategy: LocationStrategy,\n ) {}\n\n /**\n * Factory method that returns an instance of the $locationShim\n */\n $get() {\n return new $locationShim(\n this.ngUpgrade.$injector,\n this.location,\n this.platformLocation,\n this.urlCodec,\n this.locationStrategy,\n );\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 LLC 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.dev/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 * 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(\n path: string,\n search: {[k: string]: unknown},\n hash: string,\n 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(\n url: string,\n base?: string,\n ): {\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) {\n return parseKeyValue(search);\n }\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(\n pathOrHref: string,\n search?: {[k: string]: unknown},\n hash?: string,\n 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 = `${parsed.protocol}://${parsed.hostname}${\n parsed.port ? ':' + parsed.port : ''\n }`;\n\n return this.normalize(\n this.decodePath(parsed.pathname),\n this.decodeSearch(parsed.search),\n this.decodeHash(parsed.hash),\n serverUrl,\n );\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) {\n return this.normalize(valA) === this.normalize(valB);\n }\n\n // https://github.com/angular/angular.js/blob/864c7f0/src/ng/urlUtils.js#L60\n parse(url: string, base?: string) {\n try {\n // Safari 12 throws an error when the URL constructor is called with an undefined base.\n const parsed = !base ? new URL(url) : 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 * @param str value potential URI component to check.\n * @returns the decoded URI if it can be decoded or else `undefined`.\n */\nfunction tryDecodeURIComponent(value: string): string | undefined {\n try {\n return decodeURIComponent(value);\n } catch (e) {\n // Ignore any invalid uri component.\n return undefined;\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 */\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 });\n } else {\n parts.push(\n encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value as any, true)),\n );\n }\n }\n return parts.length ? parts.join('&') : '';\n}\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * https://tools.ietf.org/html/rfc3986 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).replace(/%26/g, '&').replace(/%3D/gi, '=').replace(/%2B/gi, '+');\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 https://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/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%20/g, pctEncodeSpaces ? '%20' : '+');\n}\n","/**\n * @license\n * Copyright Google LLC 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.dev/license\n */\n\nimport {\n APP_BASE_HREF,\n CommonModule,\n HashLocationStrategy,\n Location,\n LocationStrategy,\n PathLocationStrategy,\n PlatformLocation,\n} from '../../index';\nimport {inject, InjectionToken, ModuleWithProviders, NgModule} from '@angular/core';\nimport {UpgradeModule} from '@angular/upgrade/static';\n\nimport {$locationShim, $locationShimProvider} from './location_shim';\nimport {AngularJSUrlCodec, UrlCodec} from './params';\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 = new InjectionToken<LocationUpgradeConfig>(\n typeof ngDevMode !== undefined && ngDevMode ? 'LOCATION_UPGRADE_CONFIGURATION' : '',\n);\n\nconst APP_BASE_HREF_RESOLVED = new InjectionToken<string>(\n typeof ngDevMode !== undefined && ngDevMode ? 'APP_BASE_HREF_RESOLVED' : '',\n);\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](https://angular.io/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 },\n {provide: LOCATION_UPGRADE_CONFIGURATION, useValue: config ? config : {}},\n {provide: UrlCodec, useFactory: provideUrlCodec},\n {\n provide: APP_BASE_HREF_RESOLVED,\n useFactory: provideAppBaseHref,\n },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n },\n ],\n };\n }\n}\n\nfunction provideAppBaseHref() {\n const config = inject(LOCATION_UPGRADE_CONFIGURATION);\n const appBaseHref = inject(APP_BASE_HREF, {optional: true});\n\n if (config && config.appBaseHref != null) {\n return config.appBaseHref;\n } else if (appBaseHref != null) {\n return appBaseHref;\n }\n return '';\n}\n\nfunction provideUrlCodec() {\n const config = inject(LOCATION_UPGRADE_CONFIGURATION);\n const codec = (config && config.urlCodec) || AngularJSUrlCodec;\n return new (codec as any)();\n}\n\nfunction provideLocationStrategy() {\n const platformLocation = inject(PlatformLocation);\n const baseHref = inject(APP_BASE_HREF_RESOLVED);\n const options = inject(LOCATION_UPGRADE_CONFIGURATION);\n return options.useHash\n ? new HashLocationStrategy(platformLocation, baseHref)\n : new PathLocationStrategy(platformLocation, baseHref);\n}\n\nfunction provide$location() {\n const $locationProvider = new $locationShimProvider(\n inject(UpgradeModule),\n inject(Location),\n inject(PlatformLocation),\n inject(UrlCodec),\n inject(LocationStrategy),\n );\n\n return $locationProvider.$get();\n}\n"],"names":["deepEqual","a","b","prototype","Array","isArray","JSON","stringify","e","isAnchor","el","href","undefined","PATH_MATCH","DOUBLE_SLASH_REGEX","IGNORE_URI_REGEXP","DEFAULT_PORTS","$locationShim","location","platformLocation","urlCodec","locationStrategy","initializing","updateBrowser","$$absUrl","$$url","$$protocol","$$host","$$port","$$replace","$$path","$$search","$$hash","$$state","$$changeListeners","cachedState","urlChanges","ReplaySubject","removeOnUrlChangeFn","constructor","$injector","initialUrl","browserUrl","parsedUrl","parse","protocol","hostname","parseInt","port","$$parseLinkUrl","cacheState","browserState","onUrlChange","newUrl","newState","next","isPromise","then","$i","initialize","$rootScope","get","$rootElement","on","event","ctrlKey","metaKey","shiftKey","which","button","elm","target","nodeName","toLowerCase","parentNode","absHref","relHref","getAttribute","test","isDefaultPrevented","preventDefault","absUrl","$apply","subscribe","oldUrl","oldState","$$parse","defaultPrevented","$broadcast","state","setBrowserUrlWithFallback","$$notifyChangeListeners","url","resetBrowserUpdate","$$phase","$digest","$watch","currentReplace","urlOrStateChanged","areEqual","$evalAsync","$on","complete","lastBrowserUrl","lastHistoryState","replace","sameState","stripBaseUrl","getServerBase","replaceState","pushState","lastCachedState","getState","base","startsWith","slice","length","baseHref","getBaseHref","endsWith","parseAppUrl","Error","prefixed","charAt","match","path","pathname","substring","decodePath","decodeSearch","search","decodeHash","hash","onChange","fn","err","push","forEach","pathUrl","composeUrls","rewrittenUrl","appUrl","normalize","exec","host","toString","paramValue","arguments","key","currentSearch","$locationShimProvider","ngUpgrade","$get","hashPrefix","prefix","html5Mode","mode","UrlCodec","AngularJSUrlCodec","encodePath","segments","split","i","encodeUriSegment","join","_stripIndexHtml","encodeSearch","parseKeyValue","toKeyValue","encodeHash","decodeURIComponent","pathOrHref","baseUrl","parsed","serverUrl","encPath","encSearch","encHash","joinedPath","valA","valB","URL","tryDecodeURIComponent","value","keyValue","obj","splitPoint","val","indexOf","hasOwnProperty","parts","arrayValue","encodeUriQuery","pctEncodeSpaces","encodeURIComponent","LOCATION_UPGRADE_CONFIGURATION","InjectionToken","ngDevMode","APP_BASE_HREF_RESOLVED","LocationUpgradeModule","config","ngModule","providers","Location","provide","useFactory","provide$location","useValue","provideUrlCodec","provideAppBaseHref","LocationStrategy","provideLocationStrategy","deps","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","CommonModule","ɵinj","ɵɵngDeclareInjector","decorators","args","imports","inject","appBaseHref","APP_BASE_HREF","optional","codec","PlatformLocation","options","useHash","HashLocationStrategy","PathLocationStrategy","$locationProvider","UpgradeModule"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/common",
|
|
3
|
-
"version": "21.0.0-
|
|
3
|
+
"version": "21.0.0-rc.1",
|
|
4
4
|
"description": "Angular - commonly needed directives and services",
|
|
5
5
|
"author": "angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@angular/core": "21.0.0-
|
|
47
|
+
"@angular/core": "21.0.0-rc.1",
|
|
48
48
|
"rxjs": "^6.5.3 || ^7.4.0"
|
|
49
49
|
},
|
|
50
50
|
"repository": {
|
package/types/_module-chunk.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.0.0-
|
|
2
|
+
* @license Angular v21.0.0-rc.1
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.dev/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -10,6 +10,8 @@ import { ModuleWithProviders } from '@angular/core';
|
|
|
10
10
|
/**
|
|
11
11
|
* A token used to manipulate and access values stored in `HttpContext`.
|
|
12
12
|
*
|
|
13
|
+
* @see [Request and response metadata](guide/http/interceptors#request-and-response-metadata)
|
|
14
|
+
*
|
|
13
15
|
* @publicApi
|
|
14
16
|
*/
|
|
15
17
|
declare class HttpContextToken<T> {
|
|
@@ -47,6 +49,8 @@ declare class HttpContextToken<T> {
|
|
|
47
49
|
* }).subscribe(...);
|
|
48
50
|
* ```
|
|
49
51
|
*
|
|
52
|
+
* @see [Request and response metadata](guide/http/interceptors#request-and-response-metadata)
|
|
53
|
+
*
|
|
50
54
|
* @publicApi
|
|
51
55
|
*/
|
|
52
56
|
declare class HttpContext {
|
|
@@ -95,6 +99,8 @@ declare class HttpContext {
|
|
|
95
99
|
* Instances are immutable. Modifying methods return a cloned
|
|
96
100
|
* instance with the change. The original object is never changed.
|
|
97
101
|
*
|
|
102
|
+
* @see [Setting request headers](guide/http/making-requests#setting-request-headers)
|
|
103
|
+
*
|
|
98
104
|
* @publicApi
|
|
99
105
|
*/
|
|
100
106
|
declare class HttpHeaders {
|
|
@@ -193,6 +199,8 @@ declare class HttpHeaders {
|
|
|
193
199
|
*
|
|
194
200
|
* Used by `HttpParams`.
|
|
195
201
|
*
|
|
202
|
+
* @see [Custom parameter encoding](guide/http/making-requests#custom-parameter-encoding)
|
|
203
|
+
*
|
|
196
204
|
* @publicApi
|
|
197
205
|
**/
|
|
198
206
|
interface HttpParameterCodec {
|
|
@@ -240,6 +248,9 @@ declare class HttpUrlEncodingCodec implements HttpParameterCodec {
|
|
|
240
248
|
/**
|
|
241
249
|
* Options used to construct an `HttpParams` instance.
|
|
242
250
|
*
|
|
251
|
+
* @see [Setting URL parameters](guide/http/making-requests#setting-url-parameters)
|
|
252
|
+
* @see [Custom parameter encoding](guide/http/making-requests#custom-parameter-encoding)
|
|
253
|
+
*
|
|
243
254
|
* @publicApi
|
|
244
255
|
*/
|
|
245
256
|
interface HttpParamsOptions {
|
|
@@ -261,6 +272,8 @@ interface HttpParamsOptions {
|
|
|
261
272
|
*
|
|
262
273
|
* This class is immutable; all mutation operations return a new instance.
|
|
263
274
|
*
|
|
275
|
+
* @see [Setting URL parameters](guide/http/making-requests#setting-url-parameters)
|
|
276
|
+
*
|
|
264
277
|
* @publicApi
|
|
265
278
|
*/
|
|
266
279
|
declare class HttpParams {
|
|
@@ -656,6 +669,8 @@ declare class HttpRequest<T> {
|
|
|
656
669
|
/**
|
|
657
670
|
* Type enumeration for the different kinds of `HttpEvent`.
|
|
658
671
|
*
|
|
672
|
+
* @see [Receiving raw progress event](guide/http/making-requests#receiving-raw-progress-events)
|
|
673
|
+
*
|
|
659
674
|
* @publicApi
|
|
660
675
|
*/
|
|
661
676
|
declare enum HttpEventType {
|
|
@@ -689,6 +704,8 @@ declare enum HttpEventType {
|
|
|
689
704
|
/**
|
|
690
705
|
* Base interface for progress events.
|
|
691
706
|
*
|
|
707
|
+
* @see [Receiving raw progress events](guide/http/making-requests#receiving-raw-progress-events)
|
|
708
|
+
*
|
|
692
709
|
* @publicApi
|
|
693
710
|
*/
|
|
694
711
|
interface HttpProgressEvent {
|
|
@@ -709,6 +726,8 @@ interface HttpProgressEvent {
|
|
|
709
726
|
/**
|
|
710
727
|
* A download progress event.
|
|
711
728
|
*
|
|
729
|
+
* @see [Receiving raw progress events](guide/http/making-requests#receiving-raw-progress-events)
|
|
730
|
+
*
|
|
712
731
|
* @publicApi
|
|
713
732
|
*/
|
|
714
733
|
interface HttpDownloadProgressEvent extends HttpProgressEvent {
|
|
@@ -725,6 +744,8 @@ interface HttpDownloadProgressEvent extends HttpProgressEvent {
|
|
|
725
744
|
*
|
|
726
745
|
* Note: The `FetchBackend` doesn't support progress report on uploads.
|
|
727
746
|
*
|
|
747
|
+
* @see [Receiving raw progress events](guide/http/making-requests#receiving-raw-progress-events)
|
|
748
|
+
*
|
|
728
749
|
* @publicApi
|
|
729
750
|
*/
|
|
730
751
|
interface HttpUploadProgressEvent extends HttpProgressEvent {
|
|
@@ -735,6 +756,8 @@ interface HttpUploadProgressEvent extends HttpProgressEvent {
|
|
|
735
756
|
* when a request may be retried multiple times, to distinguish between
|
|
736
757
|
* retries on the final event stream.
|
|
737
758
|
*
|
|
759
|
+
* @see [Receiving raw progress events](guide/http/making-requests#receiving-raw-progress-events)
|
|
760
|
+
*
|
|
738
761
|
* @publicApi
|
|
739
762
|
*/
|
|
740
763
|
interface HttpSentEvent {
|
|
@@ -746,6 +769,8 @@ interface HttpSentEvent {
|
|
|
746
769
|
* Grouping all custom events under this type ensures they will be handled
|
|
747
770
|
* and forwarded by all implementations of interceptors.
|
|
748
771
|
*
|
|
772
|
+
* @see [Receiving raw progress events](guide/http/making-requests#receiving-raw-progress-events)
|
|
773
|
+
*
|
|
749
774
|
* @publicApi
|
|
750
775
|
*/
|
|
751
776
|
interface HttpUserEvent<T> {
|
|
@@ -756,6 +781,7 @@ interface HttpUserEvent<T> {
|
|
|
756
781
|
*
|
|
757
782
|
* Typed according to the expected type of the response.
|
|
758
783
|
*
|
|
784
|
+
* @see [Intercepting response events](guide/http/interceptors#intercepting-response-events)
|
|
759
785
|
* @publicApi
|
|
760
786
|
*/
|
|
761
787
|
type HttpEvent<T> = HttpSentEvent | HttpHeaderResponse | HttpResponse<T> | HttpDownloadProgressEvent | HttpUploadProgressEvent | HttpUserEvent<T>;
|
|
@@ -835,6 +861,8 @@ declare abstract class HttpResponseBase {
|
|
|
835
861
|
* `HttpHeaderResponse` is a `HttpEvent` available on the response
|
|
836
862
|
* event stream, only when progress events are requested.
|
|
837
863
|
*
|
|
864
|
+
* @see [Receiving raw progress events](guide/http/making-requests#receiving-raw-progress-events)
|
|
865
|
+
*
|
|
838
866
|
* @publicApi
|
|
839
867
|
*/
|
|
840
868
|
declare class HttpHeaderResponse extends HttpResponseBase {
|
|
@@ -866,6 +894,8 @@ declare class HttpHeaderResponse extends HttpResponseBase {
|
|
|
866
894
|
* `HttpResponse` is a `HttpEvent` available on the response event
|
|
867
895
|
* stream.
|
|
868
896
|
*
|
|
897
|
+
* @see [Interacting with the server response events](guide/http/making-requests#interacting-with-the-server-response-events)
|
|
898
|
+
*
|
|
869
899
|
* @publicApi
|
|
870
900
|
*/
|
|
871
901
|
declare class HttpResponse<T> extends HttpResponseBase {
|
|
@@ -916,6 +946,8 @@ declare class HttpResponse<T> extends HttpResponseBase {
|
|
|
916
946
|
* will contain either a wrapped Error object or the error response returned
|
|
917
947
|
* from the server.
|
|
918
948
|
*
|
|
949
|
+
* @see [Handling request failure](guide/http/making-requests#handling-request-failure)
|
|
950
|
+
*
|
|
919
951
|
* @publicApi
|
|
920
952
|
*/
|
|
921
953
|
declare class HttpErrorResponse extends HttpResponseBase implements Error {
|
package/types/_xhr-chunk.d.ts
CHANGED
package/types/common.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.0.0-
|
|
2
|
+
* @license Angular v21.0.0-rc.1
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.dev/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { Location, LocationStrategy } from './_common_module-chunk.js';
|
|
8
|
+
export { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DatePipe, DatePipeConfig, DecimalPipe, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValue, KeyValuePipe, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, PathLocationStrategy, PercentPipe, PopStateEvent, SlicePipe, TitleCasePipe, UpperCasePipe } from './_common_module-chunk.js';
|
|
7
9
|
import * as i0 from '@angular/core';
|
|
8
10
|
import { OnDestroy, ɵNavigation as _Navigation, ɵNavigationHistoryEntry as _NavigationHistoryEntry, ɵNavigationUpdateCurrentEntryOptions as _NavigationUpdateCurrentEntryOptions, ɵNavigationTransition as _NavigationTransition, ɵNavigationNavigateOptions as _NavigationNavigateOptions, ɵNavigationResult as _NavigationResult, ɵNavigationReloadOptions as _NavigationReloadOptions, ɵNavigationOptions as _NavigationOptions, ɵNavigateEvent as _NavigateEvent, ɵNavigationCurrentEntryChangeEvent as _NavigationCurrentEntryChangeEvent, Version, Provider, InjectionToken, OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
9
11
|
export { DOCUMENT, ɵIMAGE_CONFIG as IMAGE_CONFIG, ɵImageConfig as ImageConfig } from '@angular/core';
|
|
10
|
-
import { LocationStrategy } from './_common_module-chunk.js';
|
|
11
|
-
export { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DatePipe, DatePipeConfig, DecimalPipe, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValue, KeyValuePipe, Location, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, PathLocationStrategy, PercentPipe, PopStateEvent, SlicePipe, TitleCasePipe, UpperCasePipe } from './_common_module-chunk.js';
|
|
12
12
|
import { PlatformLocation, LocationChangeListener } from './_platform_location-chunk.js';
|
|
13
13
|
export { BrowserPlatformLocation, LOCATION_INITIALIZED, LocationChangeEvent } from './_platform_location-chunk.js';
|
|
14
14
|
export { XhrFactory } from './_xhr-chunk.js';
|
|
@@ -39,6 +39,36 @@ declare abstract class DomAdapter {
|
|
|
39
39
|
abstract getCookie(name: string): string | null;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* A `Location` implementation that uses the browser's `Navigation` API.
|
|
44
|
+
*
|
|
45
|
+
* This class is an adapter that maps the methods of the `Location` service to the newer
|
|
46
|
+
* browser `Navigation` API. It is used when the `Navigation` API is available.
|
|
47
|
+
*
|
|
48
|
+
* This adapter uses `navigation.navigate()` for `go` and `replaceState` to ensure a single source
|
|
49
|
+
* of truth for the navigation state. The Navigation API's state and `history.state` are separate.
|
|
50
|
+
*
|
|
51
|
+
* Note that `navigation.back()` and `navigation.forward()` can differ from the traditional
|
|
52
|
+
* `history` API in how they traverse the joint session history.
|
|
53
|
+
*
|
|
54
|
+
* @see {@link Location}
|
|
55
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API
|
|
56
|
+
*/
|
|
57
|
+
declare class NavigationAdapterForLocation extends Location {
|
|
58
|
+
private readonly navigation;
|
|
59
|
+
private readonly destroyRef;
|
|
60
|
+
constructor();
|
|
61
|
+
private registerNavigationListeners;
|
|
62
|
+
getState(): unknown;
|
|
63
|
+
replaceState(path: string, query?: string, state?: any): void;
|
|
64
|
+
go(path: string, query?: string, state?: any): void;
|
|
65
|
+
back(): void;
|
|
66
|
+
forward(): void;
|
|
67
|
+
onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction;
|
|
68
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationAdapterForLocation, never>;
|
|
69
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NavigationAdapterForLocation>;
|
|
70
|
+
}
|
|
71
|
+
|
|
42
72
|
/**
|
|
43
73
|
* @description
|
|
44
74
|
* A {@link LocationStrategy} used to configure the {@link Location} service to
|
|
@@ -1243,5 +1273,5 @@ declare const PRECONNECT_CHECK_BLOCKLIST: InjectionToken<(string | string[])[]>;
|
|
|
1243
1273
|
*/
|
|
1244
1274
|
declare function normalizeQueryParams(params: string): string;
|
|
1245
1275
|
|
|
1246
|
-
export { FormStyle, FormatWidth, HashLocationStrategy, IMAGE_LOADER, LocationChangeListener, LocationStrategy, NgOptimizedImage, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PlatformLocation, PlatformNavigation, Plural, TranslationWidth, VERSION, ViewportScroller, WeekDay, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, provideNetlifyLoader, registerLocaleData, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, getDOM as ɵgetDOM, normalizeQueryParams as ɵnormalizeQueryParams, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };
|
|
1276
|
+
export { FormStyle, FormatWidth, HashLocationStrategy, IMAGE_LOADER, Location, LocationChangeListener, LocationStrategy, NgOptimizedImage, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PlatformLocation, PlatformNavigation, Plural, TranslationWidth, VERSION, ViewportScroller, WeekDay, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, provideNetlifyLoader, registerLocaleData, DomAdapter as ɵDomAdapter, NavigationAdapterForLocation as ɵNavigationAdapterForLocation, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, getDOM as ɵgetDOM, normalizeQueryParams as ɵnormalizeQueryParams, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };
|
|
1247
1277
|
export type { ImageLoader, ImageLoaderConfig, ImagePlaceholderConfig, Time };
|
package/types/http-testing.d.ts
CHANGED