@angular/common 20.0.0-next.0 → 20.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.
- package/fesm2022/common.mjs +236 -264
- package/fesm2022/common.mjs.map +1 -1
- package/fesm2022/http/testing.mjs +11 -15
- package/fesm2022/http/testing.mjs.map +1 -1
- package/fesm2022/http.mjs +66 -114
- package/fesm2022/http.mjs.map +1 -1
- package/fesm2022/testing.mjs +23 -42
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +11 -25
- package/fesm2022/upgrade.mjs.map +1 -1
- package/http/index.d.ts +2809 -2860
- package/http/testing/index.d.ts +75 -80
- package/index.d.ts +2149 -2372
- package/package.json +2 -2
- package/testing/index.d.ts +56 -65
- package/upgrade/index.d.ts +139 -147
package/fesm2022/http.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.0-next.
|
|
3
|
-
* (c) 2010-
|
|
2
|
+
* @license Angular v20.0.0-next.2
|
|
3
|
+
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { ɵRuntimeError, Injectable,
|
|
8
|
+
import { ɵRuntimeError as _RuntimeError, Injectable, inject, NgZone, InjectionToken, ɵPendingTasksInternal as _PendingTasksInternal, PLATFORM_ID, ɵConsole as _Console, ɵformatRuntimeError as _formatRuntimeError, runInInjectionContext, Inject, makeEnvironmentProviders, NgModule, assertInInjectionContext, Injector, ɵResourceImpl as _ResourceImpl, linkedSignal, computed, ResourceStatus, signal, APP_BOOTSTRAP_LISTENER, ɵperformanceMarkFeature as _performanceMarkFeature, ApplicationRef, TransferState, makeStateKey, ɵtruncateMiddle as _truncateMiddle } from '@angular/core';
|
|
9
9
|
import { of, Observable, from } from 'rxjs';
|
|
10
10
|
import { concatMap, filter, map, finalize, switchMap, tap } from 'rxjs/operators';
|
|
11
11
|
import * as i1 from '@angular/common';
|
|
12
|
-
import { isPlatformServer, DOCUMENT, ɵparseCookieValue } from '@angular/common';
|
|
12
|
+
import { isPlatformServer, DOCUMENT, ɵparseCookieValue as _parseCookieValue } from '@angular/common';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a
|
|
@@ -390,7 +390,7 @@ class HttpParams {
|
|
|
390
390
|
this.encoder = options.encoder || new HttpUrlEncodingCodec();
|
|
391
391
|
if (options.fromString) {
|
|
392
392
|
if (options.fromObject) {
|
|
393
|
-
throw new
|
|
393
|
+
throw new _RuntimeError(2805 /* RuntimeErrorCode.CANNOT_SPECIFY_BOTH_FROM_STRING_AND_FROM_OBJECT */, ngDevMode && 'Cannot specify both fromString and fromObject.');
|
|
394
394
|
}
|
|
395
395
|
this.map = paramParser(options.fromString, this.encoder);
|
|
396
396
|
}
|
|
@@ -1445,7 +1445,7 @@ class HttpClient {
|
|
|
1445
1445
|
return res$.pipe(map((res) => {
|
|
1446
1446
|
// Validate that the body is an ArrayBuffer.
|
|
1447
1447
|
if (res.body !== null && !(res.body instanceof ArrayBuffer)) {
|
|
1448
|
-
throw new
|
|
1448
|
+
throw new _RuntimeError(2806 /* RuntimeErrorCode.RESPONSE_IS_NOT_AN_ARRAY_BUFFER */, ngDevMode && 'Response is not an ArrayBuffer.');
|
|
1449
1449
|
}
|
|
1450
1450
|
return res.body;
|
|
1451
1451
|
}));
|
|
@@ -1453,7 +1453,7 @@ class HttpClient {
|
|
|
1453
1453
|
return res$.pipe(map((res) => {
|
|
1454
1454
|
// Validate that the body is a Blob.
|
|
1455
1455
|
if (res.body !== null && !(res.body instanceof Blob)) {
|
|
1456
|
-
throw new
|
|
1456
|
+
throw new _RuntimeError(2807 /* RuntimeErrorCode.RESPONSE_IS_NOT_A_BLOB */, ngDevMode && 'Response is not a Blob.');
|
|
1457
1457
|
}
|
|
1458
1458
|
return res.body;
|
|
1459
1459
|
}));
|
|
@@ -1461,7 +1461,7 @@ class HttpClient {
|
|
|
1461
1461
|
return res$.pipe(map((res) => {
|
|
1462
1462
|
// Validate that the body is a string.
|
|
1463
1463
|
if (res.body !== null && typeof res.body !== 'string') {
|
|
1464
|
-
throw new
|
|
1464
|
+
throw new _RuntimeError(2808 /* RuntimeErrorCode.RESPONSE_IS_NOT_A_STRING */, ngDevMode && 'Response is not a string.');
|
|
1465
1465
|
}
|
|
1466
1466
|
return res.body;
|
|
1467
1467
|
}));
|
|
@@ -1475,7 +1475,7 @@ class HttpClient {
|
|
|
1475
1475
|
return res$;
|
|
1476
1476
|
default:
|
|
1477
1477
|
// Guard against new future observe types being added.
|
|
1478
|
-
throw new
|
|
1478
|
+
throw new _RuntimeError(2809 /* RuntimeErrorCode.UNHANDLED_OBSERVE_TYPE */, ngDevMode && `Unreachable: unhandled observe type ${options.observe}}`);
|
|
1479
1479
|
}
|
|
1480
1480
|
}
|
|
1481
1481
|
/**
|
|
@@ -1569,10 +1569,10 @@ class HttpClient {
|
|
|
1569
1569
|
put(url, body, options = {}) {
|
|
1570
1570
|
return this.request('PUT', url, addBody(options, body));
|
|
1571
1571
|
}
|
|
1572
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1573
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1572
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1573
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClient });
|
|
1574
1574
|
}
|
|
1575
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1575
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClient, decorators: [{
|
|
1576
1576
|
type: Injectable
|
|
1577
1577
|
}], ctorParameters: () => [{ type: HttpHandler }] });
|
|
1578
1578
|
|
|
@@ -1787,10 +1787,10 @@ class FetchBackend {
|
|
|
1787
1787
|
}
|
|
1788
1788
|
return chunksAll;
|
|
1789
1789
|
}
|
|
1790
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1791
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1790
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1791
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: FetchBackend });
|
|
1792
1792
|
}
|
|
1793
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1793
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: FetchBackend, decorators: [{
|
|
1794
1794
|
type: Injectable
|
|
1795
1795
|
}] });
|
|
1796
1796
|
/**
|
|
@@ -1862,7 +1862,7 @@ function legacyInterceptorFnFactory() {
|
|
|
1862
1862
|
// out.
|
|
1863
1863
|
chain = interceptors.reduceRight(adaptLegacyInterceptorToChain, interceptorChainEndFn);
|
|
1864
1864
|
}
|
|
1865
|
-
const pendingTasks = inject(
|
|
1865
|
+
const pendingTasks = inject(_PendingTasksInternal);
|
|
1866
1866
|
const contributeToStability = inject(REQUESTS_CONTRIBUTE_TO_STABILITY);
|
|
1867
1867
|
if (contributeToStability) {
|
|
1868
1868
|
const taskId = pendingTasks.add();
|
|
@@ -1874,15 +1874,11 @@ function legacyInterceptorFnFactory() {
|
|
|
1874
1874
|
};
|
|
1875
1875
|
}
|
|
1876
1876
|
let fetchBackendWarningDisplayed = false;
|
|
1877
|
-
/** Internal function to reset the flag in tests */
|
|
1878
|
-
function resetFetchBackendWarningFlag() {
|
|
1879
|
-
fetchBackendWarningDisplayed = false;
|
|
1880
|
-
}
|
|
1881
1877
|
class HttpInterceptorHandler extends HttpHandler {
|
|
1882
1878
|
backend;
|
|
1883
1879
|
injector;
|
|
1884
1880
|
chain = null;
|
|
1885
|
-
pendingTasks = inject(
|
|
1881
|
+
pendingTasks = inject(_PendingTasksInternal);
|
|
1886
1882
|
contributeToStability = inject(REQUESTS_CONTRIBUTE_TO_STABILITY);
|
|
1887
1883
|
constructor(backend, injector) {
|
|
1888
1884
|
super();
|
|
@@ -1901,8 +1897,8 @@ class HttpInterceptorHandler extends HttpHandler {
|
|
|
1901
1897
|
if (isServer && !(this.backend instanceof FetchBackend) && !isTestingBackend) {
|
|
1902
1898
|
fetchBackendWarningDisplayed = true;
|
|
1903
1899
|
injector
|
|
1904
|
-
.get(
|
|
1905
|
-
.warn(
|
|
1900
|
+
.get(_Console)
|
|
1901
|
+
.warn(_formatRuntimeError(2801 /* RuntimeErrorCode.NOT_USING_FETCH_BACKEND_IN_SSR */, 'Angular detected that `HttpClient` is not configured ' +
|
|
1906
1902
|
"to use `fetch` APIs. It's strongly recommended to " +
|
|
1907
1903
|
'enable `fetch` for applications that use Server-Side Rendering ' +
|
|
1908
1904
|
'for better performance and compatibility. ' +
|
|
@@ -1931,10 +1927,10 @@ class HttpInterceptorHandler extends HttpHandler {
|
|
|
1931
1927
|
return this.chain(initialRequest, (downstreamRequest) => this.backend.handle(downstreamRequest));
|
|
1932
1928
|
}
|
|
1933
1929
|
}
|
|
1934
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1935
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1930
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1931
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpInterceptorHandler });
|
|
1936
1932
|
}
|
|
1937
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpInterceptorHandler, decorators: [{
|
|
1938
1934
|
type: Injectable
|
|
1939
1935
|
}], ctorParameters: () => [{ type: HttpBackend }, { type: i0.EnvironmentInjector }] });
|
|
1940
1936
|
|
|
@@ -2016,15 +2012,15 @@ class JsonpClientBackend {
|
|
|
2016
2012
|
// Firstly, check both the method and response type. If either doesn't match
|
|
2017
2013
|
// then the request was improperly routed here and cannot be handled.
|
|
2018
2014
|
if (req.method !== 'JSONP') {
|
|
2019
|
-
throw new
|
|
2015
|
+
throw new _RuntimeError(2810 /* RuntimeErrorCode.JSONP_WRONG_METHOD */, ngDevMode && JSONP_ERR_WRONG_METHOD);
|
|
2020
2016
|
}
|
|
2021
2017
|
else if (req.responseType !== 'json') {
|
|
2022
|
-
throw new
|
|
2018
|
+
throw new _RuntimeError(2811 /* RuntimeErrorCode.JSONP_WRONG_RESPONSE_TYPE */, ngDevMode && JSONP_ERR_WRONG_RESPONSE_TYPE);
|
|
2023
2019
|
}
|
|
2024
2020
|
// Check the request headers. JSONP doesn't support headers and
|
|
2025
2021
|
// cannot set any that were supplied.
|
|
2026
2022
|
if (req.headers.keys().length > 0) {
|
|
2027
|
-
throw new
|
|
2023
|
+
throw new _RuntimeError(2812 /* RuntimeErrorCode.JSONP_HEADERS_NOT_SUPPORTED */, ngDevMode && JSONP_ERR_HEADERS_NOT_SUPPORTED);
|
|
2028
2024
|
}
|
|
2029
2025
|
// Everything else happens inside the Observable boundary.
|
|
2030
2026
|
return new Observable((observer) => {
|
|
@@ -2068,7 +2064,7 @@ class JsonpClientBackend {
|
|
|
2068
2064
|
// if the JSONP script loads successfully. The event itself is unimportant.
|
|
2069
2065
|
// If something went wrong, onLoad() may run without the response callback
|
|
2070
2066
|
// having been invoked.
|
|
2071
|
-
const onLoad = (
|
|
2067
|
+
const onLoad = () => {
|
|
2072
2068
|
// We wrap it in an extra Promise, to ensure the microtask
|
|
2073
2069
|
// is scheduled after the loaded endpoint has executed any potential microtask itself,
|
|
2074
2070
|
// which is not guaranteed in Internet Explorer and EdgeHTML. See issue #39496
|
|
@@ -2136,10 +2132,10 @@ class JsonpClientBackend {
|
|
|
2136
2132
|
foreignDocument ??= this.document.implementation.createHTMLDocument();
|
|
2137
2133
|
foreignDocument.adoptNode(script);
|
|
2138
2134
|
}
|
|
2139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2140
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2136
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: JsonpClientBackend });
|
|
2141
2137
|
}
|
|
2142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: JsonpClientBackend, decorators: [{
|
|
2143
2139
|
type: Injectable
|
|
2144
2140
|
}], ctorParameters: () => [{ type: JsonpCallbackContext }, { type: undefined, decorators: [{
|
|
2145
2141
|
type: Inject,
|
|
@@ -2178,10 +2174,10 @@ class JsonpInterceptor {
|
|
|
2178
2174
|
intercept(initialRequest, next) {
|
|
2179
2175
|
return runInInjectionContext(this.injector, () => jsonpInterceptorFn(initialRequest, (downstreamRequest) => next.handle(downstreamRequest)));
|
|
2180
2176
|
}
|
|
2181
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2182
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2177
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: JsonpInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2178
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: JsonpInterceptor });
|
|
2183
2179
|
}
|
|
2184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: JsonpInterceptor, decorators: [{
|
|
2185
2181
|
type: Injectable
|
|
2186
2182
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2187
2183
|
|
|
@@ -2221,7 +2217,7 @@ class HttpXhrBackend {
|
|
|
2221
2217
|
// Quick check to give a better error message when a user attempts to use
|
|
2222
2218
|
// HttpClient.jsonp() without installing the HttpClientJsonpModule
|
|
2223
2219
|
if (req.method === 'JSONP') {
|
|
2224
|
-
throw new
|
|
2220
|
+
throw new _RuntimeError(-2800 /* RuntimeErrorCode.MISSING_JSONP_MODULE */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
2225
2221
|
`Cannot make a JSONP request without JSONP support. To fix the problem, either add the \`withJsonpSupport()\` call (if \`provideHttpClient()\` is used) or import the \`HttpClientJsonpModule\` in the root NgModule.`);
|
|
2226
2222
|
}
|
|
2227
2223
|
// Check whether this factory has a special function to load an XHR implementation
|
|
@@ -2463,10 +2459,10 @@ class HttpXhrBackend {
|
|
|
2463
2459
|
});
|
|
2464
2460
|
}));
|
|
2465
2461
|
}
|
|
2466
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2467
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2462
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXhrBackend, deps: [{ token: i1.XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2463
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXhrBackend });
|
|
2468
2464
|
}
|
|
2469
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXhrBackend, decorators: [{
|
|
2470
2466
|
type: Injectable
|
|
2471
2467
|
}], ctorParameters: () => [{ type: i1.XhrFactory }] });
|
|
2472
2468
|
|
|
@@ -2513,15 +2509,15 @@ class HttpXsrfCookieExtractor {
|
|
|
2513
2509
|
const cookieString = this.doc.cookie || '';
|
|
2514
2510
|
if (cookieString !== this.lastCookieString) {
|
|
2515
2511
|
this.parseCount++;
|
|
2516
|
-
this.lastToken =
|
|
2512
|
+
this.lastToken = _parseCookieValue(cookieString, this.cookieName);
|
|
2517
2513
|
this.lastCookieString = cookieString;
|
|
2518
2514
|
}
|
|
2519
2515
|
return this.lastToken;
|
|
2520
2516
|
}
|
|
2521
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2522
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2517
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2518
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXsrfCookieExtractor });
|
|
2523
2519
|
}
|
|
2524
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{
|
|
2525
2521
|
type: Injectable
|
|
2526
2522
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2527
2523
|
type: Inject,
|
|
@@ -2565,10 +2561,10 @@ class HttpXsrfInterceptor {
|
|
|
2565
2561
|
intercept(initialRequest, next) {
|
|
2566
2562
|
return runInInjectionContext(this.injector, () => xsrfInterceptorFn(initialRequest, (downstreamRequest) => next.handle(downstreamRequest)));
|
|
2567
2563
|
}
|
|
2568
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2569
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2564
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2565
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXsrfInterceptor });
|
|
2570
2566
|
}
|
|
2571
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{
|
|
2572
2568
|
type: Injectable
|
|
2573
2569
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2574
2570
|
|
|
@@ -2834,9 +2830,9 @@ class HttpClientXsrfModule {
|
|
|
2834
2830
|
providers: withXsrfConfiguration(options).ɵproviders,
|
|
2835
2831
|
};
|
|
2836
2832
|
}
|
|
2837
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2838
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
2839
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2833
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2834
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule });
|
|
2835
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule, providers: [
|
|
2840
2836
|
HttpXsrfInterceptor,
|
|
2841
2837
|
{ provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },
|
|
2842
2838
|
{ provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },
|
|
@@ -2847,7 +2843,7 @@ class HttpClientXsrfModule {
|
|
|
2847
2843
|
{ provide: XSRF_ENABLED, useValue: true },
|
|
2848
2844
|
] });
|
|
2849
2845
|
}
|
|
2850
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2846
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientXsrfModule, decorators: [{
|
|
2851
2847
|
type: NgModule,
|
|
2852
2848
|
args: [{
|
|
2853
2849
|
providers: [
|
|
@@ -2873,11 +2869,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.0",
|
|
|
2873
2869
|
* @deprecated use `provideHttpClient(withInterceptorsFromDi())` as providers instead
|
|
2874
2870
|
*/
|
|
2875
2871
|
class HttpClientModule {
|
|
2876
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2877
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
2878
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2872
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2873
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientModule });
|
|
2874
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientModule, providers: [provideHttpClient(withInterceptorsFromDi())] });
|
|
2879
2875
|
}
|
|
2880
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2876
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientModule, decorators: [{
|
|
2881
2877
|
type: NgModule,
|
|
2882
2878
|
args: [{
|
|
2883
2879
|
/**
|
|
@@ -2897,11 +2893,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.0",
|
|
|
2897
2893
|
* @deprecated `withJsonpSupport()` as providers instead
|
|
2898
2894
|
*/
|
|
2899
2895
|
class HttpClientJsonpModule {
|
|
2900
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2901
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
2902
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2896
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2897
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule });
|
|
2898
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule, providers: [withJsonpSupport().ɵproviders] });
|
|
2903
2899
|
}
|
|
2904
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
2900
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.2", ngImport: i0, type: HttpClientJsonpModule, decorators: [{
|
|
2905
2901
|
type: NgModule,
|
|
2906
2902
|
args: [{
|
|
2907
2903
|
providers: [withJsonpSupport().ɵproviders],
|
|
@@ -2928,7 +2924,7 @@ function makeHttpResourceFn(responseType) {
|
|
|
2928
2924
|
return function httpResourceRef(request, options) {
|
|
2929
2925
|
options?.injector || assertInInjectionContext(httpResource);
|
|
2930
2926
|
const injector = options?.injector ?? inject(Injector);
|
|
2931
|
-
return new HttpResourceImpl(injector, () => normalizeRequest(request, responseType), options?.defaultValue, options?.parse);
|
|
2927
|
+
return new HttpResourceImpl(injector, () => normalizeRequest(request, responseType), options?.defaultValue, options?.parse, options?.equal);
|
|
2932
2928
|
};
|
|
2933
2929
|
}
|
|
2934
2930
|
function normalizeRequest(request, responseType) {
|
|
@@ -2951,9 +2947,11 @@ function normalizeRequest(request, responseType) {
|
|
|
2951
2947
|
reportProgress: unwrappedRequest.reportProgress,
|
|
2952
2948
|
withCredentials: unwrappedRequest.withCredentials,
|
|
2953
2949
|
responseType,
|
|
2950
|
+
context: unwrappedRequest.context,
|
|
2951
|
+
transferCache: unwrappedRequest.transferCache,
|
|
2954
2952
|
});
|
|
2955
2953
|
}
|
|
2956
|
-
class HttpResourceImpl extends
|
|
2954
|
+
class HttpResourceImpl extends _ResourceImpl {
|
|
2957
2955
|
client;
|
|
2958
2956
|
_headers = linkedSignal({
|
|
2959
2957
|
source: this.extRequest,
|
|
@@ -2972,7 +2970,7 @@ class HttpResourceImpl extends ɵResourceImpl {
|
|
|
2972
2970
|
: undefined);
|
|
2973
2971
|
progress = this._progress.asReadonly();
|
|
2974
2972
|
statusCode = this._statusCode.asReadonly();
|
|
2975
|
-
constructor(injector, request, defaultValue, parse) {
|
|
2973
|
+
constructor(injector, request, defaultValue, parse, equal) {
|
|
2976
2974
|
super(request, ({ request, abortSignal }) => {
|
|
2977
2975
|
let sub;
|
|
2978
2976
|
// Track the abort listener so it can be removed if the Observable completes (as a memory
|
|
@@ -3015,53 +3013,13 @@ class HttpResourceImpl extends ɵResourceImpl {
|
|
|
3015
3013
|
},
|
|
3016
3014
|
});
|
|
3017
3015
|
return promise;
|
|
3018
|
-
}, defaultValue,
|
|
3016
|
+
}, defaultValue, equal, injector);
|
|
3019
3017
|
this.client = injector.get(HttpClient);
|
|
3020
3018
|
}
|
|
3021
3019
|
hasValue() {
|
|
3022
3020
|
return super.hasValue();
|
|
3023
3021
|
}
|
|
3024
3022
|
}
|
|
3025
|
-
/**
|
|
3026
|
-
* A `Resource` of the `HttpResponse` meant for use in `HttpResource` if we decide to go this route.
|
|
3027
|
-
*
|
|
3028
|
-
* TODO(alxhub): delete this if we decide we don't want it.
|
|
3029
|
-
*/
|
|
3030
|
-
class HttpResponseResource {
|
|
3031
|
-
parent;
|
|
3032
|
-
status;
|
|
3033
|
-
value;
|
|
3034
|
-
error;
|
|
3035
|
-
isLoading;
|
|
3036
|
-
constructor(parent, request) {
|
|
3037
|
-
this.parent = parent;
|
|
3038
|
-
this.status = computed(() => {
|
|
3039
|
-
// There are two kinds of errors which can occur in an HTTP request: HTTP errors or normal JS
|
|
3040
|
-
// errors. Since we have a response for HTTP errors, we report `Resolved` status even if the
|
|
3041
|
-
// overall request is considered to be in an Error state.
|
|
3042
|
-
if (parent.status() === ResourceStatus.Error) {
|
|
3043
|
-
return this.value() !== undefined ? ResourceStatus.Resolved : ResourceStatus.Error;
|
|
3044
|
-
}
|
|
3045
|
-
return parent.status();
|
|
3046
|
-
});
|
|
3047
|
-
this.error = computed(() => {
|
|
3048
|
-
// Filter out HTTP errors.
|
|
3049
|
-
return this.value() === undefined ? parent.error() : undefined;
|
|
3050
|
-
});
|
|
3051
|
-
this.value = linkedSignal({
|
|
3052
|
-
source: request,
|
|
3053
|
-
computation: () => undefined,
|
|
3054
|
-
});
|
|
3055
|
-
this.isLoading = parent.isLoading;
|
|
3056
|
-
}
|
|
3057
|
-
hasValue() {
|
|
3058
|
-
return this.value() !== undefined;
|
|
3059
|
-
}
|
|
3060
|
-
reload() {
|
|
3061
|
-
// TODO: should you be able to reload this way?
|
|
3062
|
-
return this.parent.reload();
|
|
3063
|
-
}
|
|
3064
|
-
}
|
|
3065
3023
|
|
|
3066
3024
|
/**
|
|
3067
3025
|
* If your application uses different HTTP origins to make API calls (via `HttpClient`) on the server and
|
|
@@ -3123,7 +3081,7 @@ function transferCacheInterceptorFn(req, next) {
|
|
|
3123
3081
|
optional: true,
|
|
3124
3082
|
});
|
|
3125
3083
|
if (typeof ngServerMode !== 'undefined' && !ngServerMode && originMap) {
|
|
3126
|
-
throw new
|
|
3084
|
+
throw new _RuntimeError(2803 /* RuntimeErrorCode.HTTP_ORIGIN_MAP_USED_IN_CLIENT */, ngDevMode &&
|
|
3127
3085
|
'Angular detected that the `HTTP_TRANSFER_CACHE_ORIGIN_MAP` token is configured and ' +
|
|
3128
3086
|
'present in the client side code. Please ensure that this token is only provided in the ' +
|
|
3129
3087
|
'server code of the application.');
|
|
@@ -3252,7 +3210,7 @@ function withHttpTransferCache(cacheOptions) {
|
|
|
3252
3210
|
{
|
|
3253
3211
|
provide: CACHE_OPTIONS,
|
|
3254
3212
|
useFactory: () => {
|
|
3255
|
-
|
|
3213
|
+
_performanceMarkFeature('NgHttpTransferCache');
|
|
3256
3214
|
return { isCacheActive: true, ...cacheOptions };
|
|
3257
3215
|
},
|
|
3258
3216
|
},
|
|
@@ -3294,9 +3252,9 @@ function appendMissingHeadersDetection(url, headers, headersToInclude) {
|
|
|
3294
3252
|
const key = (prop + ':' + headerName).toLowerCase(); // e.g. `get:cache-control`
|
|
3295
3253
|
if (!headersToInclude.includes(headerName) && !warningProduced.has(key)) {
|
|
3296
3254
|
warningProduced.add(key);
|
|
3297
|
-
const truncatedUrl =
|
|
3255
|
+
const truncatedUrl = _truncateMiddle(url);
|
|
3298
3256
|
// TODO: create Error guide for this warning
|
|
3299
|
-
console.warn(
|
|
3257
|
+
console.warn(_formatRuntimeError(2802 /* RuntimeErrorCode.HEADERS_ALTERED_BY_TRANSFER_CACHE */, `Angular detected that the \`${headerName}\` header is accessed, but the value of the header ` +
|
|
3300
3258
|
`was not transferred from the server to the client by the HttpTransferCache. ` +
|
|
3301
3259
|
`To include the value of the \`${headerName}\` header for the \`${truncatedUrl}\` request, ` +
|
|
3302
3260
|
`use the \`includeHeaders\` list. The \`includeHeaders\` can be defined either ` +
|
|
@@ -3323,17 +3281,11 @@ function mapRequestOriginUrl(url, originMap) {
|
|
|
3323
3281
|
}
|
|
3324
3282
|
function verifyMappedOrigin(url) {
|
|
3325
3283
|
if (new URL(url, 'resolve://').pathname !== '/') {
|
|
3326
|
-
throw new
|
|
3284
|
+
throw new _RuntimeError(2804 /* RuntimeErrorCode.HTTP_ORIGIN_MAP_CONTAINS_PATH */, 'Angular detected a URL with a path segment in the value provided for the ' +
|
|
3327
3285
|
`\`HTTP_TRANSFER_CACHE_ORIGIN_MAP\` token: ${url}. The map should only contain origins ` +
|
|
3328
3286
|
'without any other segments.');
|
|
3329
3287
|
}
|
|
3330
3288
|
}
|
|
3331
3289
|
|
|
3332
|
-
// This file is not used to build this module. It is only used during editing
|
|
3333
|
-
|
|
3334
|
-
/**
|
|
3335
|
-
* Generated bundle index. Do not edit.
|
|
3336
|
-
*/
|
|
3337
|
-
|
|
3338
3290
|
export { FetchBackend, HTTP_INTERCEPTORS, HTTP_TRANSFER_CACHE_ORIGIN_MAP, HttpBackend, HttpClient, HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule, HttpContext, HttpContextToken, HttpErrorResponse, HttpEventType, HttpFeatureKind, HttpHandler, HttpHeaderResponse, HttpHeaders, HttpParams, HttpRequest, HttpResponse, HttpResponseBase, HttpStatusCode, HttpUrlEncodingCodec, HttpXhrBackend, HttpXsrfTokenExtractor, JsonpClientBackend, JsonpInterceptor, httpResource, provideHttpClient, withFetch, withInterceptors, withInterceptorsFromDi, withJsonpSupport, withNoXsrfProtection, withRequestsMadeViaParent, withXsrfConfiguration, HTTP_ROOT_INTERCEPTOR_FNS as ɵHTTP_ROOT_INTERCEPTOR_FNS, HttpInterceptorHandler as ɵHttpInterceptingHandler, HttpInterceptorHandler as ɵHttpInterceptorHandler, REQUESTS_CONTRIBUTE_TO_STABILITY as ɵREQUESTS_CONTRIBUTE_TO_STABILITY, withHttpTransferCache as ɵwithHttpTransferCache };
|
|
3339
3291
|
//# sourceMappingURL=http.mjs.map
|