@angular/common 17.0.0-next.0 → 17.0.0-next.2

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.
Files changed (55) hide show
  1. package/esm2022/http/src/client.mjs +3 -3
  2. package/esm2022/http/src/fetch.mjs +3 -3
  3. package/esm2022/http/src/interceptor.mjs +3 -3
  4. package/esm2022/http/src/jsonp.mjs +6 -6
  5. package/esm2022/http/src/module.mjs +12 -12
  6. package/esm2022/http/src/xhr.mjs +3 -3
  7. package/esm2022/http/src/xsrf.mjs +6 -6
  8. package/esm2022/http/testing/src/backend.mjs +3 -3
  9. package/esm2022/http/testing/src/module.mjs +4 -4
  10. package/esm2022/src/common.mjs +2 -1
  11. package/esm2022/src/common_module.mjs +4 -4
  12. package/esm2022/src/directives/ng_class.mjs +3 -3
  13. package/esm2022/src/directives/ng_component_outlet.mjs +3 -3
  14. package/esm2022/src/directives/ng_for_of.mjs +3 -3
  15. package/esm2022/src/directives/ng_if.mjs +3 -3
  16. package/esm2022/src/directives/ng_optimized_image/lcp_image_observer.mjs +3 -3
  17. package/esm2022/src/directives/ng_optimized_image/ng_optimized_image.mjs +14 -6
  18. package/esm2022/src/directives/ng_optimized_image/preconnect_link_checker.mjs +3 -3
  19. package/esm2022/src/directives/ng_optimized_image/preload-link-creator.mjs +3 -3
  20. package/esm2022/src/directives/ng_plural.mjs +6 -6
  21. package/esm2022/src/directives/ng_style.mjs +3 -3
  22. package/esm2022/src/directives/ng_switch.mjs +9 -9
  23. package/esm2022/src/directives/ng_template_outlet.mjs +3 -3
  24. package/esm2022/src/i18n/localization.mjs +6 -6
  25. package/esm2022/src/location/hash_location_strategy.mjs +3 -3
  26. package/esm2022/src/location/location.mjs +3 -3
  27. package/esm2022/src/location/location_strategy.mjs +6 -6
  28. package/esm2022/src/location/platform_location.mjs +6 -6
  29. package/esm2022/src/pipes/async_pipe.mjs +3 -3
  30. package/esm2022/src/pipes/case_conversion_pipes.mjs +9 -9
  31. package/esm2022/src/pipes/date_pipe.mjs +3 -3
  32. package/esm2022/src/pipes/i18n_plural_pipe.mjs +3 -3
  33. package/esm2022/src/pipes/i18n_select_pipe.mjs +3 -3
  34. package/esm2022/src/pipes/json_pipe.mjs +3 -3
  35. package/esm2022/src/pipes/keyvalue_pipe.mjs +3 -3
  36. package/esm2022/src/pipes/number_pipe.mjs +9 -9
  37. package/esm2022/src/pipes/slice_pipe.mjs +3 -3
  38. package/esm2022/src/version.mjs +1 -1
  39. package/esm2022/testing/src/location_mock.mjs +12 -5
  40. package/esm2022/testing/src/mock_location_strategy.mjs +3 -3
  41. package/esm2022/testing/src/mock_platform_location.mjs +3 -3
  42. package/esm2022/upgrade/src/location_upgrade_module.mjs +4 -4
  43. package/fesm2022/common.mjs +125 -117
  44. package/fesm2022/common.mjs.map +1 -1
  45. package/fesm2022/http/testing.mjs +8 -8
  46. package/fesm2022/http.mjs +37 -37
  47. package/fesm2022/testing.mjs +13 -70
  48. package/fesm2022/testing.mjs.map +1 -1
  49. package/fesm2022/upgrade.mjs +5 -5
  50. package/http/index.d.ts +1 -1
  51. package/http/testing/index.d.ts +1 -1
  52. package/index.d.ts +161 -1
  53. package/package.json +2 -2
  54. package/testing/index.d.ts +1 -1
  55. package/upgrade/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.0
2
+ * @license Angular v17.0.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -308,10 +308,10 @@ class HttpClientTestingBackend {
308
308
  return `Match by function: ${matcher.name}`;
309
309
  }
310
310
  }
311
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
312
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingBackend }); }
311
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
312
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingBackend }); }
313
313
  }
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingBackend, decorators: [{
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingBackend, decorators: [{
315
315
  type: Injectable
316
316
  }] });
317
317
  function describeRequest(testRequest) {
@@ -336,13 +336,13 @@ function provideHttpClientTesting() {
336
336
  * @publicApi
337
337
  */
338
338
  class HttpClientTestingModule {
339
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
340
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingModule, imports: [HttpClientModule] }); }
341
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingModule, providers: [
339
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
340
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingModule, imports: [HttpClientModule] }); }
341
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingModule, providers: [
342
342
  provideHttpClientTesting(),
343
343
  ], imports: [HttpClientModule] }); }
344
344
  }
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientTestingModule, decorators: [{
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientTestingModule, decorators: [{
346
346
  type: NgModule,
347
347
  args: [{
348
348
  imports: [
package/fesm2022/http.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.0
2
+ * @license Angular v17.0.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1373,10 +1373,10 @@ class HttpClient {
1373
1373
  put(url, body, options = {}) {
1374
1374
  return this.request('PUT', url, addBody(options, body));
1375
1375
  }
1376
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
1377
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClient }); }
1376
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
1377
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClient }); }
1378
1378
  }
1379
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClient, decorators: [{
1379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClient, decorators: [{
1380
1380
  type: Injectable
1381
1381
  }], ctorParameters: function () { return [{ type: HttpHandler }]; } });
1382
1382
 
@@ -1581,10 +1581,10 @@ class FetchBackend {
1581
1581
  }
1582
1582
  return chunksAll;
1583
1583
  }
1584
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1585
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: FetchBackend }); }
1584
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1585
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: FetchBackend }); }
1586
1586
  }
1587
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: FetchBackend, decorators: [{
1587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: FetchBackend, decorators: [{
1588
1588
  type: Injectable
1589
1589
  }] });
1590
1590
  /**
@@ -1683,10 +1683,10 @@ class HttpInterceptorHandler extends HttpHandler {
1683
1683
  return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest))
1684
1684
  .pipe(finalize(() => this.pendingTasks.remove(taskId)));
1685
1685
  }
1686
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1687
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpInterceptorHandler }); }
1686
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1687
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpInterceptorHandler }); }
1688
1688
  }
1689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpInterceptorHandler, decorators: [{
1689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpInterceptorHandler, decorators: [{
1690
1690
  type: Injectable
1691
1691
  }], ctorParameters: function () { return [{ type: HttpBackend }, { type: i0.EnvironmentInjector }]; } });
1692
1692
 
@@ -1888,10 +1888,10 @@ class JsonpClientBackend {
1888
1888
  }
1889
1889
  foreignDocument.adoptNode(script);
1890
1890
  }
1891
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1892
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: JsonpClientBackend }); }
1891
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1892
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: JsonpClientBackend }); }
1893
1893
  }
1894
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: JsonpClientBackend, decorators: [{
1894
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: JsonpClientBackend, decorators: [{
1895
1895
  type: Injectable
1896
1896
  }], ctorParameters: function () { return [{ type: JsonpCallbackContext }, { type: undefined, decorators: [{
1897
1897
  type: Inject,
@@ -1929,10 +1929,10 @@ class JsonpInterceptor {
1929
1929
  intercept(initialRequest, next) {
1930
1930
  return this.injector.runInContext(() => jsonpInterceptorFn(initialRequest, downstreamRequest => next.handle(downstreamRequest)));
1931
1931
  }
1932
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: JsonpInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1933
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: JsonpInterceptor }); }
1932
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: JsonpInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1933
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: JsonpInterceptor }); }
1934
1934
  }
1935
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: JsonpInterceptor, decorators: [{
1935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: JsonpInterceptor, decorators: [{
1936
1936
  type: Injectable
1937
1937
  }], ctorParameters: function () { return [{ type: i0.EnvironmentInjector }]; } });
1938
1938
 
@@ -2211,10 +2211,10 @@ class HttpXhrBackend {
2211
2211
  });
2212
2212
  }));
2213
2213
  }
2214
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXhrBackend, deps: [{ token: i1.XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
2215
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXhrBackend }); }
2214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXhrBackend, deps: [{ token: i1.XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
2215
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXhrBackend }); }
2216
2216
  }
2217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXhrBackend, decorators: [{
2217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXhrBackend, decorators: [{
2218
2218
  type: Injectable
2219
2219
  }], ctorParameters: function () { return [{ type: i1.XhrFactory }]; } });
2220
2220
 
@@ -2263,10 +2263,10 @@ class HttpXsrfCookieExtractor {
2263
2263
  }
2264
2264
  return this.lastToken;
2265
2265
  }
2266
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable }); }
2267
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXsrfCookieExtractor }); }
2266
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable }); }
2267
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXsrfCookieExtractor }); }
2268
2268
  }
2269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{
2269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{
2270
2270
  type: Injectable
2271
2271
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2272
2272
  type: Inject,
@@ -2306,10 +2306,10 @@ class HttpXsrfInterceptor {
2306
2306
  intercept(initialRequest, next) {
2307
2307
  return this.injector.runInContext(() => xsrfInterceptorFn(initialRequest, downstreamRequest => next.handle(downstreamRequest)));
2308
2308
  }
2309
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2310
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXsrfInterceptor }); }
2309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2310
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXsrfInterceptor }); }
2311
2311
  }
2312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{
2312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{
2313
2313
  type: Injectable
2314
2314
  }], ctorParameters: function () { return [{ type: i0.EnvironmentInjector }]; } });
2315
2315
 
@@ -2566,9 +2566,9 @@ class HttpClientXsrfModule {
2566
2566
  providers: withXsrfConfiguration(options).ɵproviders,
2567
2567
  };
2568
2568
  }
2569
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2570
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientXsrfModule }); }
2571
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientXsrfModule, providers: [
2569
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2570
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule }); }
2571
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule, providers: [
2572
2572
  HttpXsrfInterceptor,
2573
2573
  { provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },
2574
2574
  { provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },
@@ -2579,7 +2579,7 @@ class HttpClientXsrfModule {
2579
2579
  { provide: XSRF_ENABLED, useValue: true },
2580
2580
  ] }); }
2581
2581
  }
2582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientXsrfModule, decorators: [{
2582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule, decorators: [{
2583
2583
  type: NgModule,
2584
2584
  args: [{
2585
2585
  providers: [
@@ -2604,13 +2604,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0",
2604
2604
  * @publicApi
2605
2605
  */
2606
2606
  class HttpClientModule {
2607
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2608
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientModule }); }
2609
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientModule, providers: [
2607
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2608
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientModule }); }
2609
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientModule, providers: [
2610
2610
  provideHttpClient(withInterceptorsFromDi()),
2611
2611
  ] }); }
2612
2612
  }
2613
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientModule, decorators: [{
2613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientModule, decorators: [{
2614
2614
  type: NgModule,
2615
2615
  args: [{
2616
2616
  /**
@@ -2631,13 +2631,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0",
2631
2631
  * @publicApi
2632
2632
  */
2633
2633
  class HttpClientJsonpModule {
2634
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2635
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientJsonpModule }); }
2636
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientJsonpModule, providers: [
2634
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2635
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule }); }
2636
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule, providers: [
2637
2637
  withJsonpSupport().ɵproviders,
2638
2638
  ] }); }
2639
2639
  }
2640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: HttpClientJsonpModule, decorators: [{
2640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule, decorators: [{
2641
2641
  type: NgModule,
2642
2642
  args: [{
2643
2643
  providers: [
@@ -1,71 +1,14 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.0
2
+ * @license Angular v17.0.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
+ import { ɵnormalizeQueryParams, LocationStrategy, Location } from '@angular/common';
7
8
  import * as i0 from '@angular/core';
8
9
  import { EventEmitter, Injectable, InjectionToken, Inject, Optional } from '@angular/core';
9
- import { LocationStrategy, Location } from '@angular/common';
10
10
  import { Subject } from 'rxjs';
11
11
 
12
- /**
13
- * Joins two parts of a URL with a slash if needed.
14
- *
15
- * @param start URL string
16
- * @param end URL string
17
- *
18
- *
19
- * @returns The joined URL string.
20
- */
21
- function joinWithSlash(start, end) {
22
- if (start.length == 0) {
23
- return end;
24
- }
25
- if (end.length == 0) {
26
- return start;
27
- }
28
- let slashes = 0;
29
- if (start.endsWith('/')) {
30
- slashes++;
31
- }
32
- if (end.startsWith('/')) {
33
- slashes++;
34
- }
35
- if (slashes == 2) {
36
- return start + end.substring(1);
37
- }
38
- if (slashes == 1) {
39
- return start + end;
40
- }
41
- return start + '/' + end;
42
- }
43
- /**
44
- * Removes a trailing slash from a URL string if needed.
45
- * Looks for the first occurrence of either `#`, `?`, or the end of the
46
- * line as `/` characters and removes the trailing slash if one exists.
47
- *
48
- * @param url URL string.
49
- *
50
- * @returns The URL string, modified if needed.
51
- */
52
- function stripTrailingSlash(url) {
53
- const match = url.match(/#|\?|$/);
54
- const pathEndIdx = match && match.index || url.length;
55
- const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);
56
- return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);
57
- }
58
- /**
59
- * Normalizes URL parameters by prepending with `?` if needed.
60
- *
61
- * @param params String of URL parameters.
62
- *
63
- * @returns The normalized URL parameters string.
64
- */
65
- function normalizeQueryParams(params) {
66
- return params && params[0] !== '?' ? '?' + params : params;
67
- }
68
-
69
12
  /**
70
13
  * A spy for {@link Location} that allows tests to fire simulated location events.
71
14
  *
@@ -136,7 +79,7 @@ class SpyLocation {
136
79
  }
137
80
  const url = path + (query.length > 0 ? ('?' + query) : '');
138
81
  this.urlChanges.push(url);
139
- this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);
82
+ this._notifyUrlChangeListeners(path + ɵnormalizeQueryParams(query), state);
140
83
  }
141
84
  replaceState(path, query = '', state = null) {
142
85
  path = this.prepareExternalUrl(path);
@@ -149,7 +92,7 @@ class SpyLocation {
149
92
  history.query = query;
150
93
  const url = path + (query.length > 0 ? ('?' + query) : '');
151
94
  this.urlChanges.push('replace: ' + url);
152
- this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);
95
+ this._notifyUrlChangeListeners(path + ɵnormalizeQueryParams(query), state);
153
96
  }
154
97
  forward() {
155
98
  if (this._historyIndex < (this._history.length - 1)) {
@@ -203,10 +146,10 @@ class SpyLocation {
203
146
  this._history.push(new LocationState(path, query, state));
204
147
  this._historyIndex = this._history.length - 1;
205
148
  }
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: SpyLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
207
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: SpyLocation }); }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: SpyLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
150
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: SpyLocation }); }
208
151
  }
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: SpyLocation, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: SpyLocation, decorators: [{
210
153
  type: Injectable
211
154
  }] });
212
155
  class LocationState {
@@ -285,10 +228,10 @@ class MockLocationStrategy extends LocationStrategy {
285
228
  getState() {
286
229
  return this.stateChanges[(this.stateChanges.length || 1) - 1];
287
230
  }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: MockLocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
289
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: MockLocationStrategy }); }
231
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: MockLocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
232
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: MockLocationStrategy }); }
290
233
  }
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: MockLocationStrategy, decorators: [{
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: MockLocationStrategy, decorators: [{
292
235
  type: Injectable
293
236
  }], ctorParameters: function () { return []; } });
294
237
  class _MockPopStateEvent {
@@ -484,10 +427,10 @@ class MockPlatformLocation {
484
427
  this.hashUpdate.next({ type: 'hashchange', state: null, oldUrl, newUrl: this.url });
485
428
  }
486
429
  }
487
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: MockPlatformLocation, deps: [{ token: MOCK_PLATFORM_LOCATION_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
488
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: MockPlatformLocation }); }
430
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: MockPlatformLocation, deps: [{ token: MOCK_PLATFORM_LOCATION_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
431
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: MockPlatformLocation }); }
489
432
  }
490
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: MockPlatformLocation, decorators: [{
433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: MockPlatformLocation, decorators: [{
491
434
  type: Injectable
492
435
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
493
436
  type: Inject,
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../../packages/common/src/location/util.ts","../../../../../../packages/common/testing/src/location_mock.ts","../../../../../../packages/common/testing/src/mock_location_strategy.ts","../../../../../../packages/common/testing/src/mock_platform_location.ts","../../../../../../packages/common/testing/src/provide_location_mocks.ts","../../../../../../packages/common/testing/src/testing.ts","../../../../../../packages/common/testing/public_api.ts","../../../../../../packages/common/testing/index.ts","../../../../../../packages/common/testing/testing.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.io/license\n */\n\n\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nexport function joinWithSlash(start: string, end: string): string {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nexport function stripTrailingSlash(url: string): string {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nexport function normalizeQueryParams(params: string): string {\n return params && params[0] !== '?' ? '?' + params : params;\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.io/license\n */\n\nimport {Location, LocationStrategy} from '@angular/common';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {SubscriptionLike} from 'rxjs';\n\nimport {normalizeQueryParams} from '../../src/location/util';\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: EventEmitter<any> = new EventEmitter();\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 /** @nodoc */\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 =\n this.path().endsWith('/') ? this.path().substring(0, this.path().length - 1) : this.path();\n\n return currPath == givenPath + (query.length > 0 ? ('?' + query) : '');\n }\n\n simulateUrlPop(pathname: string) {\n this._subject.emit({'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.emit({'url': pathname, 'pop': true, 'type': 'popstate'});\n this._subject.emit({'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.emit(\n {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});\n }\n }\n\n back() {\n if (this._historyIndex > 0) {\n this._historyIndex--;\n this._subject.emit(\n {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});\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.emit(\n {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});\n }\n }\n\n onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {\n this._urlChangeListeners.push(fn);\n\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\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, onThrow?: ((error: any) => void)|null,\n onReturn?: (() => void)|null): SubscriptionLike {\n return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn});\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(public path: string, public query: string, public state: any) {}\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.io/license\n */\n\nimport {LocationStrategy} from '@angular/common';\nimport {EventEmitter, Injectable} from '@angular/core';\n\n\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: EventEmitter<any> = new EventEmitter();\n private stateChanges: any[] = [];\n constructor() {\n super();\n }\n\n simulatePopState(url: string): void {\n this.internalPath = url;\n this._subject.emit(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.io/license\n */\n\nimport {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common';\nimport {Inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\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 =\n new InjectionToken<MockPlatformLocationConfig>('MOCK_PLATFORM_LOCATION_CONFIG');\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(@Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?:\n MockPlatformLocationConfig) {\n if (config) {\n this.baseHref = config.appBaseHref || '';\n\n const parsedChanges =\n this.parseChanges(null, config.startUrl || 'http://_empty_/', this.baseHref);\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\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], pathname, search, hash, state: parsedState};\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], pathname, search, hash, state: parsedState});\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', state: this.getState(), oldUrl, newUrl: this.url} as\n LocationChangeEvent);\n if (oldHash !== this.hash) {\n this.hashUpdate.next(\n {type: 'hashchange', state: null, oldUrl, newUrl: this.url} as LocationChangeEvent);\n }\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.io/license\n */\n\nimport {Location, LocationStrategy} from '@angular/common';\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","/**\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.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common/testing package.\n */\nexport {SpyLocation} from './location_mock';\nexport {MockLocationStrategy} from './mock_location_strategy';\nexport {MOCK_PLATFORM_LOCATION_CONFIG, MockPlatformLocation, MockPlatformLocationConfig} from './mock_platform_location';\nexport {provideLocationMocks} from './provide_location_mocks';\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.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/testing';\n\n// This file only reexports content of the `src` folder. Keep it that way.\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.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../../packages/common/testing/src/location_mock.ts","../../../../../../packages/common/testing/src/mock_location_strategy.ts","../../../../../../packages/common/testing/src/mock_platform_location.ts","../../../../../../packages/common/testing/src/provide_location_mocks.ts","../../../../../../packages/common/testing/src/testing.ts","../../../../../../packages/common/testing/public_api.ts","../../../../../../packages/common/testing/index.ts","../../../../../../packages/common/testing/testing.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.io/license\n */\n\nimport {Location, LocationStrategy, ɵnormalizeQueryParams as normalizeQueryParams} from '@angular/common';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {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: EventEmitter<any> = new EventEmitter();\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 /** @nodoc */\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 =\n this.path().endsWith('/') ? this.path().substring(0, this.path().length - 1) : this.path();\n\n return currPath == givenPath + (query.length > 0 ? ('?' + query) : '');\n }\n\n simulateUrlPop(pathname: string) {\n this._subject.emit({'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.emit({'url': pathname, 'pop': true, 'type': 'popstate'});\n this._subject.emit({'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.emit(\n {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});\n }\n }\n\n back() {\n if (this._historyIndex > 0) {\n this._historyIndex--;\n this._subject.emit(\n {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});\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.emit(\n {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});\n }\n }\n\n onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {\n this._urlChangeListeners.push(fn);\n\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\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, onThrow?: ((error: any) => void)|null,\n onReturn?: (() => void)|null): SubscriptionLike {\n return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn});\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(public path: string, public query: string, public state: any) {}\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.io/license\n */\n\nimport {LocationStrategy} from '@angular/common';\nimport {EventEmitter, Injectable} from '@angular/core';\n\n\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: EventEmitter<any> = new EventEmitter();\n private stateChanges: any[] = [];\n constructor() {\n super();\n }\n\n simulatePopState(url: string): void {\n this.internalPath = url;\n this._subject.emit(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.io/license\n */\n\nimport {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common';\nimport {Inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\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 =\n new InjectionToken<MockPlatformLocationConfig>('MOCK_PLATFORM_LOCATION_CONFIG');\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(@Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?:\n MockPlatformLocationConfig) {\n if (config) {\n this.baseHref = config.appBaseHref || '';\n\n const parsedChanges =\n this.parseChanges(null, config.startUrl || 'http://_empty_/', this.baseHref);\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\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], pathname, search, hash, state: parsedState};\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], pathname, search, hash, state: parsedState});\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', state: this.getState(), oldUrl, newUrl: this.url} as\n LocationChangeEvent);\n if (oldHash !== this.hash) {\n this.hashUpdate.next(\n {type: 'hashchange', state: null, oldUrl, newUrl: this.url} as LocationChangeEvent);\n }\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.io/license\n */\n\nimport {Location, LocationStrategy} from '@angular/common';\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","/**\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.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common/testing package.\n */\nexport {SpyLocation} from './location_mock';\nexport {MockLocationStrategy} from './mock_location_strategy';\nexport {MOCK_PLATFORM_LOCATION_CONFIG, MockPlatformLocation, MockPlatformLocationConfig} from './mock_platform_location';\nexport {provideLocationMocks} from './provide_location_mocks';\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.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/testing';\n\n// This file only reexports content of the `src` folder. Keep it that way.\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.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["normalizeQueryParams"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.0
2
+ * @license Angular v17.0.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -847,11 +847,11 @@ class LocationUpgradeModule {
847
847
  ],
848
848
  };
849
849
  }
850
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: LocationUpgradeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
851
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.0", ngImport: i0, type: LocationUpgradeModule, imports: [CommonModule] }); }
852
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: LocationUpgradeModule, imports: [CommonModule] }); }
850
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: LocationUpgradeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
851
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.2", ngImport: i0, type: LocationUpgradeModule, imports: [CommonModule] }); }
852
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: LocationUpgradeModule, imports: [CommonModule] }); }
853
853
  }
854
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.0", ngImport: i0, type: LocationUpgradeModule, decorators: [{
854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: LocationUpgradeModule, decorators: [{
855
855
  type: NgModule,
856
856
  args: [{ imports: [CommonModule] }]
857
857
  }] });
package/http/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.0
2
+ * @license Angular v17.0.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.0
2
+ * @license Angular v17.0.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */