@angular/common 21.1.0-rc.0 → 21.1.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -227,7 +227,7 @@ class HttpClientTestingBackend {
227
227
  }
228
228
  static ɵfac = i0.ɵɵngDeclareFactory({
229
229
  minVersion: "12.0.0",
230
- version: "21.1.0-rc.0",
230
+ version: "21.1.1",
231
231
  ngImport: i0,
232
232
  type: HttpClientTestingBackend,
233
233
  deps: [],
@@ -235,14 +235,14 @@ class HttpClientTestingBackend {
235
235
  });
236
236
  static ɵprov = i0.ɵɵngDeclareInjectable({
237
237
  minVersion: "12.0.0",
238
- version: "21.1.0-rc.0",
238
+ version: "21.1.1",
239
239
  ngImport: i0,
240
240
  type: HttpClientTestingBackend
241
241
  });
242
242
  }
243
243
  i0.ɵɵngDeclareClassMetadata({
244
244
  minVersion: "12.0.0",
245
- version: "21.1.0-rc.0",
245
+ version: "21.1.1",
246
246
  ngImport: i0,
247
247
  type: HttpClientTestingBackend,
248
248
  decorators: [{
@@ -271,7 +271,7 @@ function provideHttpClientTesting() {
271
271
  class HttpClientTestingModule {
272
272
  static ɵfac = i0.ɵɵngDeclareFactory({
273
273
  minVersion: "12.0.0",
274
- version: "21.1.0-rc.0",
274
+ version: "21.1.1",
275
275
  ngImport: i0,
276
276
  type: HttpClientTestingModule,
277
277
  deps: [],
@@ -279,14 +279,14 @@ class HttpClientTestingModule {
279
279
  });
280
280
  static ɵmod = i0.ɵɵngDeclareNgModule({
281
281
  minVersion: "14.0.0",
282
- version: "21.1.0-rc.0",
282
+ version: "21.1.1",
283
283
  ngImport: i0,
284
284
  type: HttpClientTestingModule,
285
285
  imports: [HttpClientModule]
286
286
  });
287
287
  static ɵinj = i0.ɵɵngDeclareInjector({
288
288
  minVersion: "12.0.0",
289
- version: "21.1.0-rc.0",
289
+ version: "21.1.1",
290
290
  ngImport: i0,
291
291
  type: HttpClientTestingModule,
292
292
  providers: [provideHttpClientTesting()],
@@ -295,7 +295,7 @@ class HttpClientTestingModule {
295
295
  }
296
296
  i0.ɵɵngDeclareClassMetadata({
297
297
  minVersion: "12.0.0",
298
- version: "21.1.0-rc.0",
298
+ version: "21.1.1",
299
299
  ngImport: i0,
300
300
  type: HttpClientTestingModule,
301
301
  decorators: [{
package/fesm2022/http.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -202,7 +202,7 @@ class MockPlatformLocation {
202
202
  }
203
203
  static ɵfac = i0.ɵɵngDeclareFactory({
204
204
  minVersion: "12.0.0",
205
- version: "21.1.0-rc.0",
205
+ version: "21.1.1",
206
206
  ngImport: i0,
207
207
  type: MockPlatformLocation,
208
208
  deps: [{
@@ -213,14 +213,14 @@ class MockPlatformLocation {
213
213
  });
214
214
  static ɵprov = i0.ɵɵngDeclareInjectable({
215
215
  minVersion: "12.0.0",
216
- version: "21.1.0-rc.0",
216
+ version: "21.1.1",
217
217
  ngImport: i0,
218
218
  type: MockPlatformLocation
219
219
  });
220
220
  }
221
221
  i0.ɵɵngDeclareClassMetadata({
222
222
  minVersion: "12.0.0",
223
- version: "21.1.0-rc.0",
223
+ version: "21.1.1",
224
224
  ngImport: i0,
225
225
  type: MockPlatformLocation,
226
226
  decorators: [{
@@ -252,12 +252,12 @@ class FakeNavigationPlatformLocation {
252
252
  return this.config?.appBaseHref ?? '';
253
253
  }
254
254
  onPopState(fn) {
255
- this._platformNavigation.window.addEventListener('popstate', fn);
256
- return () => this._platformNavigation.window.removeEventListener('popstate', fn);
255
+ this._platformNavigation.window?.addEventListener?.('popstate', fn);
256
+ return () => this._platformNavigation.window?.removeEventListener?.('popstate', fn);
257
257
  }
258
258
  onHashChange(fn) {
259
- this._platformNavigation.window.addEventListener('hashchange', fn);
260
- return () => this._platformNavigation.window.removeEventListener('hashchange', fn);
259
+ this._platformNavigation.window?.addEventListener?.('hashchange', fn);
260
+ return () => this._platformNavigation.window?.removeEventListener?.('hashchange', fn);
261
261
  }
262
262
  get href() {
263
263
  return this._platformNavigation.currentEntry.url;
@@ -300,7 +300,7 @@ class FakeNavigationPlatformLocation {
300
300
  }
301
301
  static ɵfac = i0.ɵɵngDeclareFactory({
302
302
  minVersion: "12.0.0",
303
- version: "21.1.0-rc.0",
303
+ version: "21.1.1",
304
304
  ngImport: i0,
305
305
  type: FakeNavigationPlatformLocation,
306
306
  deps: [],
@@ -308,14 +308,14 @@ class FakeNavigationPlatformLocation {
308
308
  });
309
309
  static ɵprov = i0.ɵɵngDeclareInjectable({
310
310
  minVersion: "12.0.0",
311
- version: "21.1.0-rc.0",
311
+ version: "21.1.1",
312
312
  ngImport: i0,
313
313
  type: FakeNavigationPlatformLocation
314
314
  });
315
315
  }
316
316
  i0.ɵɵngDeclareClassMetadata({
317
317
  minVersion: "12.0.0",
318
- version: "21.1.0-rc.0",
318
+ version: "21.1.1",
319
319
  ngImport: i0,
320
320
  type: FakeNavigationPlatformLocation,
321
321
  decorators: [{
@@ -501,7 +501,7 @@ class SpyLocation {
501
501
  }
502
502
  static ɵfac = i0.ɵɵngDeclareFactory({
503
503
  minVersion: "12.0.0",
504
- version: "21.1.0-rc.0",
504
+ version: "21.1.1",
505
505
  ngImport: i0,
506
506
  type: SpyLocation,
507
507
  deps: [],
@@ -509,14 +509,14 @@ class SpyLocation {
509
509
  });
510
510
  static ɵprov = i0.ɵɵngDeclareInjectable({
511
511
  minVersion: "12.0.0",
512
- version: "21.1.0-rc.0",
512
+ version: "21.1.1",
513
513
  ngImport: i0,
514
514
  type: SpyLocation
515
515
  });
516
516
  }
517
517
  i0.ɵɵngDeclareClassMetadata({
518
518
  minVersion: "12.0.0",
519
- version: "21.1.0-rc.0",
519
+ version: "21.1.1",
520
520
  ngImport: i0,
521
521
  type: SpyLocation,
522
522
  decorators: [{
@@ -597,7 +597,7 @@ class MockLocationStrategy extends LocationStrategy {
597
597
  }
598
598
  static ɵfac = i0.ɵɵngDeclareFactory({
599
599
  minVersion: "12.0.0",
600
- version: "21.1.0-rc.0",
600
+ version: "21.1.1",
601
601
  ngImport: i0,
602
602
  type: MockLocationStrategy,
603
603
  deps: [],
@@ -605,14 +605,14 @@ class MockLocationStrategy extends LocationStrategy {
605
605
  });
606
606
  static ɵprov = i0.ɵɵngDeclareInjectable({
607
607
  minVersion: "12.0.0",
608
- version: "21.1.0-rc.0",
608
+ version: "21.1.1",
609
609
  ngImport: i0,
610
610
  type: MockLocationStrategy
611
611
  });
612
612
  }
613
613
  i0.ɵɵngDeclareClassMetadata({
614
614
  minVersion: "12.0.0",
615
- version: "21.1.0-rc.0",
615
+ version: "21.1.1",
616
616
  ngImport: i0,
617
617
  type: MockLocationStrategy,
618
618
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/mock_platform_location.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/navigation/provide_fake_platform_navigation.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/location_mock.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/mock_location_strategy.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/provide_location_mocks.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\nimport {\n LocationChangeEvent,\n LocationChangeListener,\n PlatformLocation,\n PlatformNavigation,\n} from '../../index';\nimport {Inject, inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport {FakeNavigation} from './navigation/fake_navigation';\n\n/**\n * Parser from https://tools.ietf.org/html/rfc3986#appendix-B\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\n * 12 3 4 5 6 7 8 9\n *\n * Example: http://www.ics.uci.edu/pub/ietf/uri/#Related\n *\n * Results in:\n *\n * $1 = http:\n * $2 = http\n * $3 = //www.ics.uci.edu\n * $4 = www.ics.uci.edu\n * $5 = /pub/ietf/uri/\n * $6 = <undefined>\n * $7 = <undefined>\n * $8 = #Related\n * $9 = Related\n */\nconst urlParse = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n\nfunction parseUrl(urlStr: string, baseHref: string) {\n const verifyProtocol = /^((http[s]?|ftp):\\/\\/)/;\n let serverBase: string | undefined;\n\n // URL class requires full URL. If the URL string doesn't start with protocol, we need to add\n // an arbitrary base URL which can be removed afterward.\n if (!verifyProtocol.test(urlStr)) {\n serverBase = 'http://empty.com/';\n }\n let parsedUrl: {\n protocol: string;\n hostname: string;\n port: string;\n pathname: string;\n search: string;\n hash: string;\n };\n try {\n parsedUrl = new URL(urlStr, serverBase);\n } catch (e) {\n const result = urlParse.exec(serverBase || '' + urlStr);\n if (!result) {\n throw new Error(`Invalid URL: ${urlStr} with base: ${baseHref}`);\n }\n const hostSplit = result[4].split(':');\n parsedUrl = {\n protocol: result[1],\n hostname: hostSplit[0],\n port: hostSplit[1] || '',\n pathname: result[5],\n search: result[6],\n hash: result[8],\n };\n }\n if (parsedUrl.pathname && parsedUrl.pathname.indexOf(baseHref) === 0) {\n parsedUrl.pathname = parsedUrl.pathname.substring(baseHref.length);\n }\n return {\n hostname: (!serverBase && parsedUrl.hostname) || '',\n protocol: (!serverBase && parsedUrl.protocol) || '',\n port: (!serverBase && parsedUrl.port) || '',\n pathname: parsedUrl.pathname || '/',\n search: parsedUrl.search || '',\n hash: parsedUrl.hash || '',\n };\n}\n\n/**\n * Mock platform location config\n *\n * @publicApi\n */\nexport interface MockPlatformLocationConfig {\n startUrl?: string;\n appBaseHref?: string;\n}\n\n/**\n * Provider for mock platform location config\n *\n * @publicApi\n */\nexport const MOCK_PLATFORM_LOCATION_CONFIG = new InjectionToken<MockPlatformLocationConfig>(\n 'MOCK_PLATFORM_LOCATION_CONFIG',\n);\n\n/**\n * Mock implementation of URL state.\n *\n * @publicApi\n */\n@Injectable()\nexport class MockPlatformLocation implements PlatformLocation {\n private baseHref: string = '';\n private hashUpdate = new Subject<LocationChangeEvent>();\n private popStateSubject = new Subject<LocationChangeEvent>();\n private urlChangeIndex: number = 0;\n private urlChanges: {\n hostname: string;\n protocol: string;\n port: string;\n pathname: string;\n search: string;\n hash: string;\n state: unknown;\n }[] = [{hostname: '', protocol: '', port: '', pathname: '/', search: '', hash: '', state: null}];\n\n constructor(\n @Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?: MockPlatformLocationConfig,\n ) {\n if (config) {\n this.baseHref = config.appBaseHref || '';\n\n const parsedChanges = this.parseChanges(\n null,\n config.startUrl || 'http://_empty_/',\n this.baseHref,\n );\n this.urlChanges[0] = {...parsedChanges};\n }\n }\n\n get hostname() {\n return this.urlChanges[this.urlChangeIndex].hostname;\n }\n get protocol() {\n return this.urlChanges[this.urlChangeIndex].protocol;\n }\n get port() {\n return this.urlChanges[this.urlChangeIndex].port;\n }\n get pathname() {\n return this.urlChanges[this.urlChangeIndex].pathname;\n }\n get search() {\n return this.urlChanges[this.urlChangeIndex].search;\n }\n get hash() {\n return this.urlChanges[this.urlChangeIndex].hash;\n }\n get state() {\n return this.urlChanges[this.urlChangeIndex].state;\n }\n\n getBaseHrefFromDOM(): string {\n return this.baseHref;\n }\n\n onPopState(fn: LocationChangeListener): VoidFunction {\n const subscription = this.popStateSubject.subscribe(fn);\n return () => subscription.unsubscribe();\n }\n\n onHashChange(fn: LocationChangeListener): VoidFunction {\n const subscription = this.hashUpdate.subscribe(fn);\n return () => subscription.unsubscribe();\n }\n\n get href(): string {\n let url = `${this.protocol}//${this.hostname}${this.port ? ':' + this.port : ''}`;\n url += `${this.pathname === '/' ? '' : this.pathname}${this.search}${this.hash}`;\n return url;\n }\n\n get url(): string {\n return `${this.pathname}${this.search}${this.hash}`;\n }\n\n private parseChanges(state: unknown, url: string, baseHref: string = '') {\n // When the `history.state` value is stored, it is always copied.\n state = JSON.parse(JSON.stringify(state));\n return {...parseUrl(url, baseHref), state};\n }\n\n replaceState(state: any, title: string, newUrl: string): void {\n const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);\n\n this.urlChanges[this.urlChangeIndex] = {\n ...this.urlChanges[this.urlChangeIndex],\n pathname,\n search,\n hash,\n state: parsedState,\n };\n }\n\n pushState(state: any, title: string, newUrl: string): void {\n const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);\n if (this.urlChangeIndex > 0) {\n this.urlChanges.splice(this.urlChangeIndex + 1);\n }\n this.urlChanges.push({\n ...this.urlChanges[this.urlChangeIndex],\n pathname,\n search,\n hash,\n state: parsedState,\n });\n this.urlChangeIndex = this.urlChanges.length - 1;\n }\n\n forward(): void {\n const oldUrl = this.url;\n const oldHash = this.hash;\n if (this.urlChangeIndex < this.urlChanges.length) {\n this.urlChangeIndex++;\n }\n this.emitEvents(oldHash, oldUrl);\n }\n\n back(): void {\n const oldUrl = this.url;\n const oldHash = this.hash;\n if (this.urlChangeIndex > 0) {\n this.urlChangeIndex--;\n }\n this.emitEvents(oldHash, oldUrl);\n }\n\n historyGo(relativePosition: number = 0): void {\n const oldUrl = this.url;\n const oldHash = this.hash;\n const nextPageIndex = this.urlChangeIndex + relativePosition;\n if (nextPageIndex >= 0 && nextPageIndex < this.urlChanges.length) {\n this.urlChangeIndex = nextPageIndex;\n }\n this.emitEvents(oldHash, oldUrl);\n }\n\n getState(): unknown {\n return this.state;\n }\n\n /**\n * Browsers are inconsistent in when they fire events and perform the state updates\n * The most easiest thing to do in our mock is synchronous and that happens to match\n * Firefox and Chrome, at least somewhat closely\n *\n * https://github.com/WICG/navigation-api#watching-for-navigations\n * https://docs.google.com/document/d/1Pdve-DJ1JCGilj9Yqf5HxRJyBKSel5owgOvUJqTauwU/edit#heading=h.3ye4v71wsz94\n * popstate is always sent before hashchange:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event#when_popstate_is_sent\n */\n private emitEvents(oldHash: string, oldUrl: string) {\n this.popStateSubject.next({\n type: 'popstate',\n state: this.getState(),\n oldUrl,\n newUrl: this.url,\n } as LocationChangeEvent);\n if (oldHash !== this.hash) {\n this.hashUpdate.next({\n type: 'hashchange',\n state: null,\n oldUrl,\n newUrl: this.url,\n } as LocationChangeEvent);\n }\n }\n}\n\n/**\n * Mock implementation of URL state.\n */\n@Injectable()\nexport class FakeNavigationPlatformLocation implements PlatformLocation {\n private readonly _platformNavigation: FakeNavigation;\n\n constructor() {\n const platformNavigation = inject(PlatformNavigation);\n if (!(platformNavigation instanceof FakeNavigation)) {\n throw new Error(\n 'FakePlatformNavigation cannot be used without FakeNavigation. Use ' +\n '`provideFakeNavigation` to have all these services provided together.',\n );\n }\n this._platformNavigation = platformNavigation;\n }\n\n private config = inject(MOCK_PLATFORM_LOCATION_CONFIG, {optional: true});\n getBaseHrefFromDOM(): string {\n return this.config?.appBaseHref ?? '';\n }\n\n onPopState(fn: LocationChangeListener): VoidFunction {\n this._platformNavigation.window.addEventListener('popstate', fn);\n return () => this._platformNavigation.window.removeEventListener('popstate', fn);\n }\n\n onHashChange(fn: LocationChangeListener): VoidFunction {\n this._platformNavigation.window.addEventListener('hashchange', fn as any);\n return () => this._platformNavigation.window.removeEventListener('hashchange', fn as any);\n }\n\n get href(): string {\n return this._platformNavigation.currentEntry.url!;\n }\n get protocol(): string {\n return new URL(this._platformNavigation.currentEntry.url!).protocol;\n }\n get hostname(): string {\n return new URL(this._platformNavigation.currentEntry.url!).hostname;\n }\n get port(): string {\n return new URL(this._platformNavigation.currentEntry.url!).port;\n }\n get pathname(): string {\n return new URL(this._platformNavigation.currentEntry.url!).pathname;\n }\n get search(): string {\n return new URL(this._platformNavigation.currentEntry.url!).search;\n }\n get hash(): string {\n return new URL(this._platformNavigation.currentEntry.url!).hash;\n }\n\n pushState(state: any, title: string, url: string): void {\n this._platformNavigation.pushState(state, title, url);\n }\n\n replaceState(state: any, title: string, url: string): void {\n this._platformNavigation.replaceState(state, title, url);\n }\n\n forward(): void {\n this._platformNavigation.forward();\n }\n\n back(): void {\n this._platformNavigation.back();\n }\n\n historyGo(relativePosition: number = 0): void {\n this._platformNavigation.go(relativePosition);\n }\n\n getState(): unknown {\n return this._platformNavigation.currentEntry.getHistoryState();\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\nimport {DOCUMENT, PlatformLocation, PlatformNavigation} from '../../../index';\nimport {inject, InjectionToken, Provider} from '@angular/core';\nimport {PRECOMMIT_HANDLER_SUPPORTED} from '../../../src/navigation/platform_navigation';\n\nimport {\n FakeNavigationPlatformLocation,\n MOCK_PLATFORM_LOCATION_CONFIG,\n} from '../mock_platform_location';\n\nimport {FakeNavigation} from './fake_navigation';\n\nconst FAKE_NAVIGATION = new InjectionToken<FakeNavigation>('fakeNavigation', {\n // Providing a factory implies that the token is provided in root by default\n factory: () => {\n const config = inject(MOCK_PLATFORM_LOCATION_CONFIG, {optional: true});\n const baseFallback = 'http://_empty_/';\n const startUrl = new URL(config?.startUrl || baseFallback, baseFallback);\n const fakeNavigation = new FakeNavigation(inject(DOCUMENT), startUrl.href as `http${string}`);\n fakeNavigation.setSynchronousTraversalsForTesting(true);\n return fakeNavigation;\n },\n});\n\n/**\n * Return a provider for the `FakeNavigation` in place of the real Navigation API.\n */\nexport function provideFakePlatformNavigation(): Provider[] {\n return [\n {\n provide: PlatformNavigation,\n useFactory: () => inject(FAKE_NAVIGATION),\n },\n {provide: PlatformLocation, useClass: FakeNavigationPlatformLocation},\n {provide: PRECOMMIT_HANDLER_SUPPORTED, useValue: true},\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\nimport {\n Location,\n LocationStrategy,\n PopStateEvent,\n ɵnormalizeQueryParams as normalizeQueryParams,\n} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {Subject, SubscriptionLike} from 'rxjs';\n\n/**\n * A spy for {@link Location} that allows tests to fire simulated location events.\n *\n * @publicApi\n */\n@Injectable()\nexport class SpyLocation implements Location {\n urlChanges: string[] = [];\n private _history: LocationState[] = [new LocationState('', '', null)];\n private _historyIndex: number = 0;\n /** @internal */\n _subject = new Subject<PopStateEvent>();\n /** @internal */\n _basePath: string = '';\n /** @internal */\n _locationStrategy: LocationStrategy = null!;\n /** @internal */\n _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];\n /** @internal */\n _urlChangeSubscription: SubscriptionLike | null = null;\n\n /** @docs-private */\n ngOnDestroy(): void {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\n }\n\n setInitialPath(url: string) {\n this._history[this._historyIndex].path = url;\n }\n\n setBaseHref(url: string) {\n this._basePath = url;\n }\n\n path(): string {\n return this._history[this._historyIndex].path;\n }\n\n getState(): unknown {\n return this._history[this._historyIndex].state;\n }\n\n isCurrentPathEqualTo(path: string, query: string = ''): boolean {\n const givenPath = path.endsWith('/') ? path.substring(0, path.length - 1) : path;\n const currPath = this.path().endsWith('/')\n ? this.path().substring(0, this.path().length - 1)\n : this.path();\n\n return currPath == givenPath + (query.length > 0 ? '?' + query : '');\n }\n\n simulateUrlPop(pathname: string) {\n this._subject.next({'url': pathname, 'pop': true, 'type': 'popstate'});\n }\n\n simulateHashChange(pathname: string) {\n const path = this.prepareExternalUrl(pathname);\n this.pushHistory(path, '', null);\n\n this.urlChanges.push('hash: ' + pathname);\n // the browser will automatically fire popstate event before each `hashchange` event, so we need\n // to simulate it.\n this._subject.next({'url': pathname, 'pop': true, 'type': 'popstate'});\n this._subject.next({'url': pathname, 'pop': true, 'type': 'hashchange'});\n }\n\n prepareExternalUrl(url: string): string {\n if (url.length > 0 && !url.startsWith('/')) {\n url = '/' + url;\n }\n return this._basePath + url;\n }\n\n go(path: string, query: string = '', state: any = null) {\n path = this.prepareExternalUrl(path);\n\n this.pushHistory(path, query, state);\n\n const locationState = this._history[this._historyIndex - 1];\n if (locationState.path == path && locationState.query == query) {\n return;\n }\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.urlChanges.push(url);\n this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);\n }\n\n replaceState(path: string, query: string = '', state: any = null) {\n path = this.prepareExternalUrl(path);\n\n const history = this._history[this._historyIndex];\n\n history.state = state;\n\n if (history.path == path && history.query == query) {\n return;\n }\n\n history.path = path;\n history.query = query;\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.urlChanges.push('replace: ' + url);\n this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);\n }\n\n forward() {\n if (this._historyIndex < this._history.length - 1) {\n this._historyIndex++;\n this._subject.next({\n 'url': this.path(),\n 'state': this.getState(),\n 'pop': true,\n 'type': 'popstate',\n });\n }\n }\n\n back() {\n if (this._historyIndex > 0) {\n this._historyIndex--;\n this._subject.next({\n 'url': this.path(),\n 'state': this.getState(),\n 'pop': true,\n 'type': 'popstate',\n });\n }\n }\n\n historyGo(relativePosition: number = 0): void {\n const nextPageIndex = this._historyIndex + relativePosition;\n if (nextPageIndex >= 0 && nextPageIndex < this._history.length) {\n this._historyIndex = nextPageIndex;\n this._subject.next({\n 'url': this.path(),\n 'state': this.getState(),\n 'pop': true,\n 'type': 'popstate',\n });\n }\n }\n\n onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {\n this._urlChangeListeners.push(fn);\n\n this._urlChangeSubscription ??= this.subscribe((v) => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n\n return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\n }\n };\n }\n\n /** @internal */\n _notifyUrlChangeListeners(url: string = '', state: unknown) {\n this._urlChangeListeners.forEach((fn) => fn(url, state));\n }\n\n subscribe(\n onNext: (value: any) => void,\n onThrow?: ((error: any) => void) | null,\n onReturn?: (() => void) | null,\n ): SubscriptionLike {\n return this._subject.subscribe({\n next: onNext,\n error: onThrow ?? undefined,\n complete: onReturn ?? undefined,\n });\n }\n\n normalize(url: string): string {\n return null!;\n }\n\n private pushHistory(path: string, query: string, state: any) {\n if (this._historyIndex > 0) {\n this._history.splice(this._historyIndex + 1);\n }\n this._history.push(new LocationState(path, query, state));\n this._historyIndex = this._history.length - 1;\n }\n}\n\nclass LocationState {\n constructor(\n public path: string,\n public query: string,\n public state: any,\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\nimport {LocationStrategy} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * A mock implementation of {@link LocationStrategy} that allows tests to fire simulated\n * location events.\n *\n * @publicApi\n */\n@Injectable()\nexport class MockLocationStrategy extends LocationStrategy {\n internalBaseHref: string = '/';\n internalPath: string = '/';\n internalTitle: string = '';\n urlChanges: string[] = [];\n /** @internal */\n _subject = new Subject<_MockPopStateEvent>();\n private stateChanges: any[] = [];\n constructor() {\n super();\n }\n\n simulatePopState(url: string): void {\n this.internalPath = url;\n this._subject.next(new _MockPopStateEvent(this.path()));\n }\n\n override path(includeHash: boolean = false): string {\n return this.internalPath;\n }\n\n override prepareExternalUrl(internal: string): string {\n if (internal.startsWith('/') && this.internalBaseHref.endsWith('/')) {\n return this.internalBaseHref + internal.substring(1);\n }\n return this.internalBaseHref + internal;\n }\n\n override pushState(ctx: any, title: string, path: string, query: string): void {\n // Add state change to changes array\n this.stateChanges.push(ctx);\n\n this.internalTitle = title;\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.internalPath = url;\n\n const externalUrl = this.prepareExternalUrl(url);\n this.urlChanges.push(externalUrl);\n }\n\n override replaceState(ctx: any, title: string, path: string, query: string): void {\n // Reset the last index of stateChanges to the ctx (state) object\n this.stateChanges[(this.stateChanges.length || 1) - 1] = ctx;\n\n this.internalTitle = title;\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.internalPath = url;\n\n const externalUrl = this.prepareExternalUrl(url);\n this.urlChanges.push('replace: ' + externalUrl);\n }\n\n override onPopState(fn: (value: any) => void): void {\n this._subject.subscribe({next: fn});\n }\n\n override getBaseHref(): string {\n return this.internalBaseHref;\n }\n\n override back(): void {\n if (this.urlChanges.length > 0) {\n this.urlChanges.pop();\n this.stateChanges.pop();\n const nextUrl = this.urlChanges.length > 0 ? this.urlChanges[this.urlChanges.length - 1] : '';\n this.simulatePopState(nextUrl);\n }\n }\n\n override forward(): void {\n throw 'not implemented';\n }\n\n override getState(): unknown {\n return this.stateChanges[(this.stateChanges.length || 1) - 1];\n }\n}\n\nclass _MockPopStateEvent {\n pop: boolean = true;\n type: string = 'popstate';\n constructor(public newUrl: string) {}\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} from '../../index';\nimport {Provider} from '@angular/core';\n\nimport {SpyLocation} from './location_mock';\nimport {MockLocationStrategy} from './mock_location_strategy';\n\n/**\n * Returns mock providers for the `Location` and `LocationStrategy` classes.\n * The mocks are helpful in tests to fire simulated location events.\n *\n * @publicApi\n */\nexport function provideLocationMocks(): Provider[] {\n return [\n {provide: Location, useClass: SpyLocation},\n {provide: LocationStrategy, useClass: MockLocationStrategy},\n ];\n}\n"],"names":["urlParse","parseUrl","urlStr","baseHref","verifyProtocol","serverBase","test","parsedUrl","URL","e","result","exec","Error","hostSplit","split","protocol","hostname","port","pathname","search","hash","indexOf","substring","length","MOCK_PLATFORM_LOCATION_CONFIG","InjectionToken","MockPlatformLocation","hashUpdate","Subject","popStateSubject","urlChangeIndex","urlChanges","state","constructor","config","appBaseHref","parsedChanges","parseChanges","startUrl","getBaseHrefFromDOM","onPopState","fn","subscription","subscribe","unsubscribe","onHashChange","href","url","JSON","parse","stringify","replaceState","title","newUrl","parsedState","pushState","splice","push","forward","oldUrl","oldHash","emitEvents","back","historyGo","relativePosition","nextPageIndex","getState","next","type","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","optional","target","ɵɵFactoryTarget","Injectable","decorators","Inject","Optional","FakeNavigationPlatformLocation","_platformNavigation","platformNavigation","inject","PlatformNavigation","FakeNavigation","window","addEventListener","removeEventListener","currentEntry","go","getHistoryState","deps","FAKE_NAVIGATION","factory","baseFallback","fakeNavigation","DOCUMENT","setSynchronousTraversalsForTesting","provideFakePlatformNavigation","provide","useFactory","PlatformLocation","useClass","PRECOMMIT_HANDLER_SUPPORTED","useValue","SpyLocation","_history","LocationState","_historyIndex","_subject","_basePath","_locationStrategy","_urlChangeListeners","_urlChangeSubscription","ngOnDestroy","setInitialPath","path","setBaseHref","isCurrentPathEqualTo","query","givenPath","endsWith","currPath","simulateUrlPop","simulateHashChange","prepareExternalUrl","pushHistory","startsWith","locationState","_notifyUrlChangeListeners","normalizeQueryParams","history","onUrlChange","v","fnIndex","forEach","onNext","onThrow","onReturn","error","undefined","complete","normalize","MockLocationStrategy","LocationStrategy","internalBaseHref","internalPath","internalTitle","stateChanges","simulatePopState","_MockPopStateEvent","includeHash","internal","ctx","externalUrl","getBaseHref","pop","nextUrl","provideLocationMocks","Location"],"mappings":"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"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/mock_platform_location.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/navigation/provide_fake_platform_navigation.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/location_mock.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/mock_location_strategy.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/common/testing/src/provide_location_mocks.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\nimport {\n LocationChangeEvent,\n LocationChangeListener,\n PlatformLocation,\n PlatformNavigation,\n} from '../../index';\nimport {Inject, inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport {FakeNavigation} from './navigation/fake_navigation';\n\n/**\n * Parser from https://tools.ietf.org/html/rfc3986#appendix-B\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\n * 12 3 4 5 6 7 8 9\n *\n * Example: http://www.ics.uci.edu/pub/ietf/uri/#Related\n *\n * Results in:\n *\n * $1 = http:\n * $2 = http\n * $3 = //www.ics.uci.edu\n * $4 = www.ics.uci.edu\n * $5 = /pub/ietf/uri/\n * $6 = <undefined>\n * $7 = <undefined>\n * $8 = #Related\n * $9 = Related\n */\nconst urlParse = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n\nfunction parseUrl(urlStr: string, baseHref: string) {\n const verifyProtocol = /^((http[s]?|ftp):\\/\\/)/;\n let serverBase: string | undefined;\n\n // URL class requires full URL. If the URL string doesn't start with protocol, we need to add\n // an arbitrary base URL which can be removed afterward.\n if (!verifyProtocol.test(urlStr)) {\n serverBase = 'http://empty.com/';\n }\n let parsedUrl: {\n protocol: string;\n hostname: string;\n port: string;\n pathname: string;\n search: string;\n hash: string;\n };\n try {\n parsedUrl = new URL(urlStr, serverBase);\n } catch (e) {\n const result = urlParse.exec(serverBase || '' + urlStr);\n if (!result) {\n throw new Error(`Invalid URL: ${urlStr} with base: ${baseHref}`);\n }\n const hostSplit = result[4].split(':');\n parsedUrl = {\n protocol: result[1],\n hostname: hostSplit[0],\n port: hostSplit[1] || '',\n pathname: result[5],\n search: result[6],\n hash: result[8],\n };\n }\n if (parsedUrl.pathname && parsedUrl.pathname.indexOf(baseHref) === 0) {\n parsedUrl.pathname = parsedUrl.pathname.substring(baseHref.length);\n }\n return {\n hostname: (!serverBase && parsedUrl.hostname) || '',\n protocol: (!serverBase && parsedUrl.protocol) || '',\n port: (!serverBase && parsedUrl.port) || '',\n pathname: parsedUrl.pathname || '/',\n search: parsedUrl.search || '',\n hash: parsedUrl.hash || '',\n };\n}\n\n/**\n * Mock platform location config\n *\n * @publicApi\n */\nexport interface MockPlatformLocationConfig {\n startUrl?: string;\n appBaseHref?: string;\n}\n\n/**\n * Provider for mock platform location config\n *\n * @publicApi\n */\nexport const MOCK_PLATFORM_LOCATION_CONFIG = new InjectionToken<MockPlatformLocationConfig>(\n 'MOCK_PLATFORM_LOCATION_CONFIG',\n);\n\n/**\n * Mock implementation of URL state.\n *\n * @publicApi\n */\n@Injectable()\nexport class MockPlatformLocation implements PlatformLocation {\n private baseHref: string = '';\n private hashUpdate = new Subject<LocationChangeEvent>();\n private popStateSubject = new Subject<LocationChangeEvent>();\n private urlChangeIndex: number = 0;\n private urlChanges: {\n hostname: string;\n protocol: string;\n port: string;\n pathname: string;\n search: string;\n hash: string;\n state: unknown;\n }[] = [{hostname: '', protocol: '', port: '', pathname: '/', search: '', hash: '', state: null}];\n\n constructor(\n @Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?: MockPlatformLocationConfig,\n ) {\n if (config) {\n this.baseHref = config.appBaseHref || '';\n\n const parsedChanges = this.parseChanges(\n null,\n config.startUrl || 'http://_empty_/',\n this.baseHref,\n );\n this.urlChanges[0] = {...parsedChanges};\n }\n }\n\n get hostname() {\n return this.urlChanges[this.urlChangeIndex].hostname;\n }\n get protocol() {\n return this.urlChanges[this.urlChangeIndex].protocol;\n }\n get port() {\n return this.urlChanges[this.urlChangeIndex].port;\n }\n get pathname() {\n return this.urlChanges[this.urlChangeIndex].pathname;\n }\n get search() {\n return this.urlChanges[this.urlChangeIndex].search;\n }\n get hash() {\n return this.urlChanges[this.urlChangeIndex].hash;\n }\n get state() {\n return this.urlChanges[this.urlChangeIndex].state;\n }\n\n getBaseHrefFromDOM(): string {\n return this.baseHref;\n }\n\n onPopState(fn: LocationChangeListener): VoidFunction {\n const subscription = this.popStateSubject.subscribe(fn);\n return () => subscription.unsubscribe();\n }\n\n onHashChange(fn: LocationChangeListener): VoidFunction {\n const subscription = this.hashUpdate.subscribe(fn);\n return () => subscription.unsubscribe();\n }\n\n get href(): string {\n let url = `${this.protocol}//${this.hostname}${this.port ? ':' + this.port : ''}`;\n url += `${this.pathname === '/' ? '' : this.pathname}${this.search}${this.hash}`;\n return url;\n }\n\n get url(): string {\n return `${this.pathname}${this.search}${this.hash}`;\n }\n\n private parseChanges(state: unknown, url: string, baseHref: string = '') {\n // When the `history.state` value is stored, it is always copied.\n state = JSON.parse(JSON.stringify(state));\n return {...parseUrl(url, baseHref), state};\n }\n\n replaceState(state: any, title: string, newUrl: string): void {\n const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);\n\n this.urlChanges[this.urlChangeIndex] = {\n ...this.urlChanges[this.urlChangeIndex],\n pathname,\n search,\n hash,\n state: parsedState,\n };\n }\n\n pushState(state: any, title: string, newUrl: string): void {\n const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);\n if (this.urlChangeIndex > 0) {\n this.urlChanges.splice(this.urlChangeIndex + 1);\n }\n this.urlChanges.push({\n ...this.urlChanges[this.urlChangeIndex],\n pathname,\n search,\n hash,\n state: parsedState,\n });\n this.urlChangeIndex = this.urlChanges.length - 1;\n }\n\n forward(): void {\n const oldUrl = this.url;\n const oldHash = this.hash;\n if (this.urlChangeIndex < this.urlChanges.length) {\n this.urlChangeIndex++;\n }\n this.emitEvents(oldHash, oldUrl);\n }\n\n back(): void {\n const oldUrl = this.url;\n const oldHash = this.hash;\n if (this.urlChangeIndex > 0) {\n this.urlChangeIndex--;\n }\n this.emitEvents(oldHash, oldUrl);\n }\n\n historyGo(relativePosition: number = 0): void {\n const oldUrl = this.url;\n const oldHash = this.hash;\n const nextPageIndex = this.urlChangeIndex + relativePosition;\n if (nextPageIndex >= 0 && nextPageIndex < this.urlChanges.length) {\n this.urlChangeIndex = nextPageIndex;\n }\n this.emitEvents(oldHash, oldUrl);\n }\n\n getState(): unknown {\n return this.state;\n }\n\n /**\n * Browsers are inconsistent in when they fire events and perform the state updates\n * The most easiest thing to do in our mock is synchronous and that happens to match\n * Firefox and Chrome, at least somewhat closely\n *\n * https://github.com/WICG/navigation-api#watching-for-navigations\n * https://docs.google.com/document/d/1Pdve-DJ1JCGilj9Yqf5HxRJyBKSel5owgOvUJqTauwU/edit#heading=h.3ye4v71wsz94\n * popstate is always sent before hashchange:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event#when_popstate_is_sent\n */\n private emitEvents(oldHash: string, oldUrl: string) {\n this.popStateSubject.next({\n type: 'popstate',\n state: this.getState(),\n oldUrl,\n newUrl: this.url,\n } as LocationChangeEvent);\n if (oldHash !== this.hash) {\n this.hashUpdate.next({\n type: 'hashchange',\n state: null,\n oldUrl,\n newUrl: this.url,\n } as LocationChangeEvent);\n }\n }\n}\n\n/**\n * Mock implementation of URL state.\n */\n@Injectable()\nexport class FakeNavigationPlatformLocation implements PlatformLocation {\n private readonly _platformNavigation: FakeNavigation;\n\n constructor() {\n const platformNavigation = inject(PlatformNavigation);\n if (!(platformNavigation instanceof FakeNavigation)) {\n throw new Error(\n 'FakePlatformNavigation cannot be used without FakeNavigation. Use ' +\n '`provideFakeNavigation` to have all these services provided together.',\n );\n }\n this._platformNavigation = platformNavigation;\n }\n\n private config = inject(MOCK_PLATFORM_LOCATION_CONFIG, {optional: true});\n getBaseHrefFromDOM(): string {\n return this.config?.appBaseHref ?? '';\n }\n\n // window, addEventListener, removeEventListener might be undefined due to test mocks\n onPopState(fn: LocationChangeListener): VoidFunction {\n this._platformNavigation.window?.addEventListener?.('popstate', fn);\n return () => this._platformNavigation.window?.removeEventListener?.('popstate', fn);\n }\n\n onHashChange(fn: LocationChangeListener): VoidFunction {\n this._platformNavigation.window?.addEventListener?.('hashchange', fn as any);\n return () => this._platformNavigation.window?.removeEventListener?.('hashchange', fn as any);\n }\n\n get href(): string {\n return this._platformNavigation.currentEntry.url!;\n }\n get protocol(): string {\n return new URL(this._platformNavigation.currentEntry.url!).protocol;\n }\n get hostname(): string {\n return new URL(this._platformNavigation.currentEntry.url!).hostname;\n }\n get port(): string {\n return new URL(this._platformNavigation.currentEntry.url!).port;\n }\n get pathname(): string {\n return new URL(this._platformNavigation.currentEntry.url!).pathname;\n }\n get search(): string {\n return new URL(this._platformNavigation.currentEntry.url!).search;\n }\n get hash(): string {\n return new URL(this._platformNavigation.currentEntry.url!).hash;\n }\n\n pushState(state: any, title: string, url: string): void {\n this._platformNavigation.pushState(state, title, url);\n }\n\n replaceState(state: any, title: string, url: string): void {\n this._platformNavigation.replaceState(state, title, url);\n }\n\n forward(): void {\n this._platformNavigation.forward();\n }\n\n back(): void {\n this._platformNavigation.back();\n }\n\n historyGo(relativePosition: number = 0): void {\n this._platformNavigation.go(relativePosition);\n }\n\n getState(): unknown {\n return this._platformNavigation.currentEntry.getHistoryState();\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\nimport {DOCUMENT, PlatformLocation, PlatformNavigation} from '../../../index';\nimport {inject, InjectionToken, Provider} from '@angular/core';\nimport {PRECOMMIT_HANDLER_SUPPORTED} from '../../../src/navigation/platform_navigation';\n\nimport {\n FakeNavigationPlatformLocation,\n MOCK_PLATFORM_LOCATION_CONFIG,\n} from '../mock_platform_location';\n\nimport {FakeNavigation} from './fake_navigation';\n\nconst FAKE_NAVIGATION = new InjectionToken<FakeNavigation>('fakeNavigation', {\n // Providing a factory implies that the token is provided in root by default\n factory: () => {\n const config = inject(MOCK_PLATFORM_LOCATION_CONFIG, {optional: true});\n const baseFallback = 'http://_empty_/';\n const startUrl = new URL(config?.startUrl || baseFallback, baseFallback);\n const fakeNavigation = new FakeNavigation(inject(DOCUMENT), startUrl.href as `http${string}`);\n fakeNavigation.setSynchronousTraversalsForTesting(true);\n return fakeNavigation;\n },\n});\n\n/**\n * Return a provider for the `FakeNavigation` in place of the real Navigation API.\n */\nexport function provideFakePlatformNavigation(): Provider[] {\n return [\n {\n provide: PlatformNavigation,\n useFactory: () => inject(FAKE_NAVIGATION),\n },\n {provide: PlatformLocation, useClass: FakeNavigationPlatformLocation},\n {provide: PRECOMMIT_HANDLER_SUPPORTED, useValue: true},\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\nimport {\n Location,\n LocationStrategy,\n PopStateEvent,\n ɵnormalizeQueryParams as normalizeQueryParams,\n} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {Subject, SubscriptionLike} from 'rxjs';\n\n/**\n * A spy for {@link Location} that allows tests to fire simulated location events.\n *\n * @publicApi\n */\n@Injectable()\nexport class SpyLocation implements Location {\n urlChanges: string[] = [];\n private _history: LocationState[] = [new LocationState('', '', null)];\n private _historyIndex: number = 0;\n /** @internal */\n _subject = new Subject<PopStateEvent>();\n /** @internal */\n _basePath: string = '';\n /** @internal */\n _locationStrategy: LocationStrategy = null!;\n /** @internal */\n _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];\n /** @internal */\n _urlChangeSubscription: SubscriptionLike | null = null;\n\n /** @docs-private */\n ngOnDestroy(): void {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\n }\n\n setInitialPath(url: string) {\n this._history[this._historyIndex].path = url;\n }\n\n setBaseHref(url: string) {\n this._basePath = url;\n }\n\n path(): string {\n return this._history[this._historyIndex].path;\n }\n\n getState(): unknown {\n return this._history[this._historyIndex].state;\n }\n\n isCurrentPathEqualTo(path: string, query: string = ''): boolean {\n const givenPath = path.endsWith('/') ? path.substring(0, path.length - 1) : path;\n const currPath = this.path().endsWith('/')\n ? this.path().substring(0, this.path().length - 1)\n : this.path();\n\n return currPath == givenPath + (query.length > 0 ? '?' + query : '');\n }\n\n simulateUrlPop(pathname: string) {\n this._subject.next({'url': pathname, 'pop': true, 'type': 'popstate'});\n }\n\n simulateHashChange(pathname: string) {\n const path = this.prepareExternalUrl(pathname);\n this.pushHistory(path, '', null);\n\n this.urlChanges.push('hash: ' + pathname);\n // the browser will automatically fire popstate event before each `hashchange` event, so we need\n // to simulate it.\n this._subject.next({'url': pathname, 'pop': true, 'type': 'popstate'});\n this._subject.next({'url': pathname, 'pop': true, 'type': 'hashchange'});\n }\n\n prepareExternalUrl(url: string): string {\n if (url.length > 0 && !url.startsWith('/')) {\n url = '/' + url;\n }\n return this._basePath + url;\n }\n\n go(path: string, query: string = '', state: any = null) {\n path = this.prepareExternalUrl(path);\n\n this.pushHistory(path, query, state);\n\n const locationState = this._history[this._historyIndex - 1];\n if (locationState.path == path && locationState.query == query) {\n return;\n }\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.urlChanges.push(url);\n this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);\n }\n\n replaceState(path: string, query: string = '', state: any = null) {\n path = this.prepareExternalUrl(path);\n\n const history = this._history[this._historyIndex];\n\n history.state = state;\n\n if (history.path == path && history.query == query) {\n return;\n }\n\n history.path = path;\n history.query = query;\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.urlChanges.push('replace: ' + url);\n this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);\n }\n\n forward() {\n if (this._historyIndex < this._history.length - 1) {\n this._historyIndex++;\n this._subject.next({\n 'url': this.path(),\n 'state': this.getState(),\n 'pop': true,\n 'type': 'popstate',\n });\n }\n }\n\n back() {\n if (this._historyIndex > 0) {\n this._historyIndex--;\n this._subject.next({\n 'url': this.path(),\n 'state': this.getState(),\n 'pop': true,\n 'type': 'popstate',\n });\n }\n }\n\n historyGo(relativePosition: number = 0): void {\n const nextPageIndex = this._historyIndex + relativePosition;\n if (nextPageIndex >= 0 && nextPageIndex < this._history.length) {\n this._historyIndex = nextPageIndex;\n this._subject.next({\n 'url': this.path(),\n 'state': this.getState(),\n 'pop': true,\n 'type': 'popstate',\n });\n }\n }\n\n onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {\n this._urlChangeListeners.push(fn);\n\n this._urlChangeSubscription ??= this.subscribe((v) => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n\n return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\n }\n };\n }\n\n /** @internal */\n _notifyUrlChangeListeners(url: string = '', state: unknown) {\n this._urlChangeListeners.forEach((fn) => fn(url, state));\n }\n\n subscribe(\n onNext: (value: any) => void,\n onThrow?: ((error: any) => void) | null,\n onReturn?: (() => void) | null,\n ): SubscriptionLike {\n return this._subject.subscribe({\n next: onNext,\n error: onThrow ?? undefined,\n complete: onReturn ?? undefined,\n });\n }\n\n normalize(url: string): string {\n return null!;\n }\n\n private pushHistory(path: string, query: string, state: any) {\n if (this._historyIndex > 0) {\n this._history.splice(this._historyIndex + 1);\n }\n this._history.push(new LocationState(path, query, state));\n this._historyIndex = this._history.length - 1;\n }\n}\n\nclass LocationState {\n constructor(\n public path: string,\n public query: string,\n public state: any,\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\nimport {LocationStrategy} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * A mock implementation of {@link LocationStrategy} that allows tests to fire simulated\n * location events.\n *\n * @publicApi\n */\n@Injectable()\nexport class MockLocationStrategy extends LocationStrategy {\n internalBaseHref: string = '/';\n internalPath: string = '/';\n internalTitle: string = '';\n urlChanges: string[] = [];\n /** @internal */\n _subject = new Subject<_MockPopStateEvent>();\n private stateChanges: any[] = [];\n constructor() {\n super();\n }\n\n simulatePopState(url: string): void {\n this.internalPath = url;\n this._subject.next(new _MockPopStateEvent(this.path()));\n }\n\n override path(includeHash: boolean = false): string {\n return this.internalPath;\n }\n\n override prepareExternalUrl(internal: string): string {\n if (internal.startsWith('/') && this.internalBaseHref.endsWith('/')) {\n return this.internalBaseHref + internal.substring(1);\n }\n return this.internalBaseHref + internal;\n }\n\n override pushState(ctx: any, title: string, path: string, query: string): void {\n // Add state change to changes array\n this.stateChanges.push(ctx);\n\n this.internalTitle = title;\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.internalPath = url;\n\n const externalUrl = this.prepareExternalUrl(url);\n this.urlChanges.push(externalUrl);\n }\n\n override replaceState(ctx: any, title: string, path: string, query: string): void {\n // Reset the last index of stateChanges to the ctx (state) object\n this.stateChanges[(this.stateChanges.length || 1) - 1] = ctx;\n\n this.internalTitle = title;\n\n const url = path + (query.length > 0 ? '?' + query : '');\n this.internalPath = url;\n\n const externalUrl = this.prepareExternalUrl(url);\n this.urlChanges.push('replace: ' + externalUrl);\n }\n\n override onPopState(fn: (value: any) => void): void {\n this._subject.subscribe({next: fn});\n }\n\n override getBaseHref(): string {\n return this.internalBaseHref;\n }\n\n override back(): void {\n if (this.urlChanges.length > 0) {\n this.urlChanges.pop();\n this.stateChanges.pop();\n const nextUrl = this.urlChanges.length > 0 ? this.urlChanges[this.urlChanges.length - 1] : '';\n this.simulatePopState(nextUrl);\n }\n }\n\n override forward(): void {\n throw 'not implemented';\n }\n\n override getState(): unknown {\n return this.stateChanges[(this.stateChanges.length || 1) - 1];\n }\n}\n\nclass _MockPopStateEvent {\n pop: boolean = true;\n type: string = 'popstate';\n constructor(public newUrl: string) {}\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} from '../../index';\nimport {Provider} from '@angular/core';\n\nimport {SpyLocation} from './location_mock';\nimport {MockLocationStrategy} from './mock_location_strategy';\n\n/**\n * Returns mock providers for the `Location` and `LocationStrategy` classes.\n * The mocks are helpful in tests to fire simulated location events.\n *\n * @publicApi\n */\nexport function provideLocationMocks(): Provider[] {\n return [\n {provide: Location, useClass: SpyLocation},\n {provide: LocationStrategy, useClass: MockLocationStrategy},\n ];\n}\n"],"names":["urlParse","parseUrl","urlStr","baseHref","verifyProtocol","serverBase","test","parsedUrl","URL","e","result","exec","Error","hostSplit","split","protocol","hostname","port","pathname","search","hash","indexOf","substring","length","MOCK_PLATFORM_LOCATION_CONFIG","InjectionToken","MockPlatformLocation","hashUpdate","Subject","popStateSubject","urlChangeIndex","urlChanges","state","constructor","config","appBaseHref","parsedChanges","parseChanges","startUrl","getBaseHrefFromDOM","onPopState","fn","subscription","subscribe","unsubscribe","onHashChange","href","url","JSON","parse","stringify","replaceState","title","newUrl","parsedState","pushState","splice","push","forward","oldUrl","oldHash","emitEvents","back","historyGo","relativePosition","nextPageIndex","getState","next","type","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","optional","target","ɵɵFactoryTarget","Injectable","decorators","Inject","Optional","FakeNavigationPlatformLocation","_platformNavigation","platformNavigation","inject","PlatformNavigation","FakeNavigation","window","addEventListener","removeEventListener","currentEntry","go","getHistoryState","deps","FAKE_NAVIGATION","factory","baseFallback","fakeNavigation","DOCUMENT","setSynchronousTraversalsForTesting","provideFakePlatformNavigation","provide","useFactory","PlatformLocation","useClass","PRECOMMIT_HANDLER_SUPPORTED","useValue","SpyLocation","_history","LocationState","_historyIndex","_subject","_basePath","_locationStrategy","_urlChangeListeners","_urlChangeSubscription","ngOnDestroy","setInitialPath","path","setBaseHref","isCurrentPathEqualTo","query","givenPath","endsWith","currPath","simulateUrlPop","simulateHashChange","prepareExternalUrl","pushHistory","startsWith","locationState","_notifyUrlChangeListeners","normalizeQueryParams","history","onUrlChange","v","fnIndex","forEach","onNext","onThrow","onReturn","error","undefined","complete","normalize","MockLocationStrategy","LocationStrategy","internalBaseHref","internalPath","internalTitle","stateChanges","simulatePopState","_MockPopStateEvent","includeHash","internal","ctx","externalUrl","getBaseHref","pop","nextUrl","provideLocationMocks","Location"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -601,7 +601,7 @@ class LocationUpgradeModule {
601
601
  }
602
602
  static ɵfac = i0.ɵɵngDeclareFactory({
603
603
  minVersion: "12.0.0",
604
- version: "21.1.0-rc.0",
604
+ version: "21.1.1",
605
605
  ngImport: i0,
606
606
  type: LocationUpgradeModule,
607
607
  deps: [],
@@ -609,14 +609,14 @@ class LocationUpgradeModule {
609
609
  });
610
610
  static ɵmod = i0.ɵɵngDeclareNgModule({
611
611
  minVersion: "14.0.0",
612
- version: "21.1.0-rc.0",
612
+ version: "21.1.1",
613
613
  ngImport: i0,
614
614
  type: LocationUpgradeModule,
615
615
  imports: [CommonModule]
616
616
  });
617
617
  static ɵinj = i0.ɵɵngDeclareInjector({
618
618
  minVersion: "12.0.0",
619
- version: "21.1.0-rc.0",
619
+ version: "21.1.1",
620
620
  ngImport: i0,
621
621
  type: LocationUpgradeModule,
622
622
  imports: [CommonModule]
@@ -624,7 +624,7 @@ class LocationUpgradeModule {
624
624
  }
625
625
  i0.ɵɵngDeclareClassMetadata({
626
626
  minVersion: "12.0.0",
627
- version: "21.1.0-rc.0",
627
+ version: "21.1.1",
628
628
  ngImport: i0,
629
629
  type: LocationUpgradeModule,
630
630
  decorators: [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/common",
3
- "version": "21.1.0-rc.0",
3
+ "version": "21.1.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.1.0-rc.0",
47
+ "@angular/core": "21.1.1",
48
48
  "rxjs": "^6.5.3 || ^7.4.0"
49
49
  },
50
50
  "repository": {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
package/types/common.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
package/types/http.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.0-rc.0
2
+ * @license Angular v21.1.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */