@angular/common 19.2.12 → 19.2.13
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/common_module.d-NEF7UaHr.d.ts +1 -1
- package/fesm2022/common.mjs +14 -14
- package/fesm2022/common.mjs.map +1 -1
- package/fesm2022/common_module-Dx7dWex5.mjs +86 -86
- package/fesm2022/dom_tokens-rA0ACyx7.mjs +1 -1
- package/fesm2022/http/testing.mjs +9 -9
- package/fesm2022/http.mjs +3 -3
- package/fesm2022/location-Dq4mJT-A.mjs +16 -16
- package/fesm2022/{module-BQ-7fJZl.mjs → module-z3bvLlVg.mjs} +48 -42
- package/fesm2022/{module-BQ-7fJZl.mjs.map → module-z3bvLlVg.mjs.map} +1 -1
- package/fesm2022/platform_navigation-B45Jeakb.mjs +4 -4
- package/fesm2022/testing.mjs +13 -13
- package/fesm2022/upgrade.mjs +5 -5
- package/fesm2022/xhr-BfNfxNDv.mjs +1 -1
- package/http/index.d.ts +4 -2
- package/http/testing/index.d.ts +1 -1
- package/index.d.ts +1 -1
- package/module.d-CnjH8Dlt.d.ts +1 -1
- package/package.json +2 -2
- package/platform_location.d-Lbv6Ueec.d.ts +1 -1
- package/testing/index.d.ts +1 -1
- package/upgrade/index.d.ts +1 -1
- package/xhr.d-D_1kTQR5.d.ts +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.2.
|
|
2
|
+
* @license Angular v19.2.13
|
|
3
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 as _RuntimeError, Injectable, inject, NgZone,
|
|
8
|
+
import { ɵRuntimeError as _RuntimeError, Injectable, inject, NgZone, DestroyRef, InjectionToken, ɵPendingTasksInternal as _PendingTasksInternal, PLATFORM_ID, ɵConsole as _Console, ɵformatRuntimeError as _formatRuntimeError, runInInjectionContext, Inject, makeEnvironmentProviders, NgModule } from '@angular/core';
|
|
9
9
|
import { concatMap, filter, map, finalize, switchMap } from 'rxjs/operators';
|
|
10
10
|
import { of, Observable, from } from 'rxjs';
|
|
11
11
|
import { isPlatformServer, XhrFactory, parseCookieValue } from './xhr-BfNfxNDv.mjs';
|
|
@@ -1565,10 +1565,10 @@ class HttpClient {
|
|
|
1565
1565
|
put(url, body, options = {}) {
|
|
1566
1566
|
return this.request('PUT', url, addBody(options, body));
|
|
1567
1567
|
}
|
|
1568
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1569
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1568
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1569
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClient });
|
|
1570
1570
|
}
|
|
1571
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClient, decorators: [{
|
|
1572
1572
|
type: Injectable
|
|
1573
1573
|
}], ctorParameters: () => [{ type: HttpHandler }] });
|
|
1574
1574
|
|
|
@@ -1607,7 +1607,13 @@ class FetchBackend {
|
|
|
1607
1607
|
// see https://github.com/angular/angular/issues/57527.
|
|
1608
1608
|
fetchImpl = inject(FetchFactory, { optional: true })?.fetch ?? ((...args) => globalThis.fetch(...args));
|
|
1609
1609
|
ngZone = inject(NgZone);
|
|
1610
|
-
|
|
1610
|
+
destroyRef = inject(DestroyRef);
|
|
1611
|
+
destroyed = false;
|
|
1612
|
+
constructor() {
|
|
1613
|
+
this.destroyRef.onDestroy(() => {
|
|
1614
|
+
this.destroyed = true;
|
|
1615
|
+
});
|
|
1616
|
+
}
|
|
1611
1617
|
handle(request) {
|
|
1612
1618
|
return new Observable((observer) => {
|
|
1613
1619
|
const aborter = new AbortController();
|
|
@@ -1670,7 +1676,7 @@ class FetchBackend {
|
|
|
1670
1676
|
// unnecessary work or triggering side effects after teardown.
|
|
1671
1677
|
// This may happen if the app was explicitly destroyed before
|
|
1672
1678
|
// the response returned entirely.
|
|
1673
|
-
if (this.
|
|
1679
|
+
if (this.destroyed) {
|
|
1674
1680
|
// Streams left in a pending state (due to `break` without cancel) may
|
|
1675
1681
|
// continue consuming or holding onto data behind the scenes.
|
|
1676
1682
|
// Calling `reader.cancel()` allows the browser or the underlying
|
|
@@ -1806,12 +1812,12 @@ class FetchBackend {
|
|
|
1806
1812
|
}
|
|
1807
1813
|
return chunksAll;
|
|
1808
1814
|
}
|
|
1809
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1810
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1815
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1816
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: FetchBackend });
|
|
1811
1817
|
}
|
|
1812
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1818
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: FetchBackend, decorators: [{
|
|
1813
1819
|
type: Injectable
|
|
1814
|
-
}] });
|
|
1820
|
+
}], ctorParameters: () => [] });
|
|
1815
1821
|
/**
|
|
1816
1822
|
* Abstract class to provide a mocked implementation of `fetch()`
|
|
1817
1823
|
*/
|
|
@@ -1946,10 +1952,10 @@ class HttpInterceptorHandler extends HttpHandler {
|
|
|
1946
1952
|
return this.chain(initialRequest, (downstreamRequest) => this.backend.handle(downstreamRequest));
|
|
1947
1953
|
}
|
|
1948
1954
|
}
|
|
1949
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1950
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1955
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1956
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpInterceptorHandler });
|
|
1951
1957
|
}
|
|
1952
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpInterceptorHandler, decorators: [{
|
|
1953
1959
|
type: Injectable
|
|
1954
1960
|
}], ctorParameters: () => [{ type: HttpBackend }, { type: i0.EnvironmentInjector }] });
|
|
1955
1961
|
|
|
@@ -2151,10 +2157,10 @@ class JsonpClientBackend {
|
|
|
2151
2157
|
foreignDocument ??= this.document.implementation.createHTMLDocument();
|
|
2152
2158
|
foreignDocument.adoptNode(script);
|
|
2153
2159
|
}
|
|
2154
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2155
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2161
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: JsonpClientBackend });
|
|
2156
2162
|
}
|
|
2157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: JsonpClientBackend, decorators: [{
|
|
2158
2164
|
type: Injectable
|
|
2159
2165
|
}], ctorParameters: () => [{ type: JsonpCallbackContext }, { type: undefined, decorators: [{
|
|
2160
2166
|
type: Inject,
|
|
@@ -2193,10 +2199,10 @@ class JsonpInterceptor {
|
|
|
2193
2199
|
intercept(initialRequest, next) {
|
|
2194
2200
|
return runInInjectionContext(this.injector, () => jsonpInterceptorFn(initialRequest, (downstreamRequest) => next.handle(downstreamRequest)));
|
|
2195
2201
|
}
|
|
2196
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2197
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2202
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: JsonpInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2203
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: JsonpInterceptor });
|
|
2198
2204
|
}
|
|
2199
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: JsonpInterceptor, decorators: [{
|
|
2200
2206
|
type: Injectable
|
|
2201
2207
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2202
2208
|
|
|
@@ -2478,10 +2484,10 @@ class HttpXhrBackend {
|
|
|
2478
2484
|
});
|
|
2479
2485
|
}));
|
|
2480
2486
|
}
|
|
2481
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2482
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2487
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXhrBackend, deps: [{ token: XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2488
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXhrBackend });
|
|
2483
2489
|
}
|
|
2484
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2490
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXhrBackend, decorators: [{
|
|
2485
2491
|
type: Injectable
|
|
2486
2492
|
}], ctorParameters: () => [{ type: XhrFactory }] });
|
|
2487
2493
|
|
|
@@ -2531,10 +2537,10 @@ class HttpXsrfCookieExtractor {
|
|
|
2531
2537
|
}
|
|
2532
2538
|
return this.lastToken;
|
|
2533
2539
|
}
|
|
2534
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2535
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2540
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2541
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXsrfCookieExtractor });
|
|
2536
2542
|
}
|
|
2537
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2543
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{
|
|
2538
2544
|
type: Injectable
|
|
2539
2545
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2540
2546
|
type: Inject,
|
|
@@ -2575,10 +2581,10 @@ class HttpXsrfInterceptor {
|
|
|
2575
2581
|
intercept(initialRequest, next) {
|
|
2576
2582
|
return runInInjectionContext(this.injector, () => xsrfInterceptorFn(initialRequest, (downstreamRequest) => next.handle(downstreamRequest)));
|
|
2577
2583
|
}
|
|
2578
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2579
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2584
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2585
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXsrfInterceptor });
|
|
2580
2586
|
}
|
|
2581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2587
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{
|
|
2582
2588
|
type: Injectable
|
|
2583
2589
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2584
2590
|
|
|
@@ -2844,9 +2850,9 @@ class HttpClientXsrfModule {
|
|
|
2844
2850
|
providers: withXsrfConfiguration(options).ɵproviders,
|
|
2845
2851
|
};
|
|
2846
2852
|
}
|
|
2847
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2848
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
2849
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
2853
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2854
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: HttpClientXsrfModule });
|
|
2855
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientXsrfModule, providers: [
|
|
2850
2856
|
HttpXsrfInterceptor,
|
|
2851
2857
|
{ provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },
|
|
2852
2858
|
{ provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },
|
|
@@ -2857,7 +2863,7 @@ class HttpClientXsrfModule {
|
|
|
2857
2863
|
{ provide: XSRF_ENABLED, useValue: true },
|
|
2858
2864
|
] });
|
|
2859
2865
|
}
|
|
2860
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2866
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientXsrfModule, decorators: [{
|
|
2861
2867
|
type: NgModule,
|
|
2862
2868
|
args: [{
|
|
2863
2869
|
providers: [
|
|
@@ -2883,11 +2889,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
2883
2889
|
* @deprecated use `provideHttpClient(withInterceptorsFromDi())` as providers instead
|
|
2884
2890
|
*/
|
|
2885
2891
|
class HttpClientModule {
|
|
2886
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2887
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
2888
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
2892
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2893
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: HttpClientModule });
|
|
2894
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientModule, providers: [provideHttpClient(withInterceptorsFromDi())] });
|
|
2889
2895
|
}
|
|
2890
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2896
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientModule, decorators: [{
|
|
2891
2897
|
type: NgModule,
|
|
2892
2898
|
args: [{
|
|
2893
2899
|
/**
|
|
@@ -2907,11 +2913,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
2907
2913
|
* @deprecated `withJsonpSupport()` as providers instead
|
|
2908
2914
|
*/
|
|
2909
2915
|
class HttpClientJsonpModule {
|
|
2910
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2911
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
2912
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
2916
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2917
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: HttpClientJsonpModule });
|
|
2918
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientJsonpModule, providers: [withJsonpSupport().ɵproviders] });
|
|
2913
2919
|
}
|
|
2914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2920
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HttpClientJsonpModule, decorators: [{
|
|
2915
2921
|
type: NgModule,
|
|
2916
2922
|
args: [{
|
|
2917
2923
|
providers: [withJsonpSupport().ɵproviders],
|
|
@@ -2919,4 +2925,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
2919
2925
|
}] });
|
|
2920
2926
|
|
|
2921
2927
|
export { FetchBackend, HTTP_INTERCEPTORS, HTTP_ROOT_INTERCEPTOR_FNS, HttpBackend, HttpClient, HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule, HttpContext, HttpContextToken, HttpErrorResponse, HttpEventType, HttpFeatureKind, HttpHandler, HttpHeaderResponse, HttpHeaders, HttpInterceptorHandler, HttpParams, HttpRequest, HttpResponse, HttpResponseBase, HttpStatusCode, HttpUrlEncodingCodec, HttpXhrBackend, HttpXsrfTokenExtractor, JsonpClientBackend, JsonpInterceptor, REQUESTS_CONTRIBUTE_TO_STABILITY, provideHttpClient, withFetch, withInterceptors, withInterceptorsFromDi, withJsonpSupport, withNoXsrfProtection, withRequestsMadeViaParent, withXsrfConfiguration };
|
|
2922
|
-
//# sourceMappingURL=module-
|
|
2928
|
+
//# sourceMappingURL=module-z3bvLlVg.mjs.map
|