@angular/common 20.0.0 → 20.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common_module.d-Cpp8wYHt.d.ts +1 -1
- package/fesm2022/common.mjs +33 -16
- package/fesm2022/common.mjs.map +1 -1
- package/fesm2022/common_module-B4apSsk3.mjs +86 -86
- package/fesm2022/http/testing.mjs +10 -10
- package/fesm2022/http.mjs +4 -4
- package/fesm2022/location-DTVjZRwU.mjs +16 -16
- package/fesm2022/{module-Bc_q5C8l.mjs → module-9-_NJo3W.mjs} +44 -42
- package/fesm2022/{module-Bc_q5C8l.mjs.map → module-9-_NJo3W.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-CEmSPUGj.mjs +28 -0
- package/fesm2022/xhr-CEmSPUGj.mjs.map +1 -0
- package/http/index.d.ts +2 -2
- package/http/testing/index.d.ts +1 -1
- package/index.d.ts +1 -1
- package/module.d-yNBsZ8gb.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
- package/fesm2022/xhr-BfNfxNDv.mjs +0 -45
- package/fesm2022/xhr-BfNfxNDv.mjs.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.
|
|
2
|
+
* @license Angular v20.0.1
|
|
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, DestroyRef, InjectionToken, PendingTasks,
|
|
8
|
+
import { ɵRuntimeError as _RuntimeError, Injectable, inject, NgZone, DestroyRef, InjectionToken, PendingTasks, ɵConsole as _Console, ɵformatRuntimeError as _formatRuntimeError, runInInjectionContext, DOCUMENT, 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
|
-
import {
|
|
11
|
+
import { XhrFactory, parseCookieValue } from './xhr-CEmSPUGj.mjs';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a
|
|
@@ -1573,10 +1573,10 @@ class HttpClient {
|
|
|
1573
1573
|
put(url, body, options = {}) {
|
|
1574
1574
|
return this.request('PUT', url, addBody(options, body));
|
|
1575
1575
|
}
|
|
1576
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
1577
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
1576
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1577
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClient });
|
|
1578
1578
|
}
|
|
1579
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
1579
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClient, decorators: [{
|
|
1580
1580
|
type: Injectable
|
|
1581
1581
|
}], ctorParameters: () => [{ type: HttpHandler }] });
|
|
1582
1582
|
|
|
@@ -1821,10 +1821,10 @@ class FetchBackend {
|
|
|
1821
1821
|
}
|
|
1822
1822
|
return chunksAll;
|
|
1823
1823
|
}
|
|
1824
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
1825
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
1824
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1825
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: FetchBackend });
|
|
1826
1826
|
}
|
|
1827
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
1827
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: FetchBackend, decorators: [{
|
|
1828
1828
|
type: Injectable
|
|
1829
1829
|
}], ctorParameters: () => [] });
|
|
1830
1830
|
/**
|
|
@@ -1922,13 +1922,15 @@ class HttpInterceptorHandler extends HttpHandler {
|
|
|
1922
1922
|
// for an application. The logic below checks if that's the case and produces
|
|
1923
1923
|
// a warning otherwise.
|
|
1924
1924
|
if ((typeof ngDevMode === 'undefined' || ngDevMode) && !fetchBackendWarningDisplayed) {
|
|
1925
|
-
const isServer = isPlatformServer(injector.get(PLATFORM_ID));
|
|
1926
1925
|
// This flag is necessary because provideHttpClientTesting() overrides the backend
|
|
1927
1926
|
// even if `withFetch()` is used within the test. When the testing HTTP backend is provided,
|
|
1928
1927
|
// no HTTP calls are actually performed during the test, so producing a warning would be
|
|
1929
1928
|
// misleading.
|
|
1930
1929
|
const isTestingBackend = this.backend.isTestingBackend;
|
|
1931
|
-
if (
|
|
1930
|
+
if (typeof ngServerMode !== 'undefined' &&
|
|
1931
|
+
ngServerMode &&
|
|
1932
|
+
!(this.backend instanceof FetchBackend) &&
|
|
1933
|
+
!isTestingBackend) {
|
|
1932
1934
|
fetchBackendWarningDisplayed = true;
|
|
1933
1935
|
injector
|
|
1934
1936
|
.get(_Console)
|
|
@@ -1961,10 +1963,10 @@ class HttpInterceptorHandler extends HttpHandler {
|
|
|
1961
1963
|
return this.chain(initialRequest, (downstreamRequest) => this.backend.handle(downstreamRequest));
|
|
1962
1964
|
}
|
|
1963
1965
|
}
|
|
1964
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
1965
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
1966
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1967
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpInterceptorHandler });
|
|
1966
1968
|
}
|
|
1967
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
1969
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpInterceptorHandler, decorators: [{
|
|
1968
1970
|
type: Injectable
|
|
1969
1971
|
}], ctorParameters: () => [{ type: HttpBackend }, { type: i0.EnvironmentInjector }] });
|
|
1970
1972
|
|
|
@@ -2166,10 +2168,10 @@ class JsonpClientBackend {
|
|
|
2166
2168
|
foreignDocument ??= this.document.implementation.createHTMLDocument();
|
|
2167
2169
|
foreignDocument.adoptNode(script);
|
|
2168
2170
|
}
|
|
2169
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2170
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
2171
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2172
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: JsonpClientBackend });
|
|
2171
2173
|
}
|
|
2172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2174
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: JsonpClientBackend, decorators: [{
|
|
2173
2175
|
type: Injectable
|
|
2174
2176
|
}], ctorParameters: () => [{ type: JsonpCallbackContext }, { type: undefined, decorators: [{
|
|
2175
2177
|
type: Inject,
|
|
@@ -2208,10 +2210,10 @@ class JsonpInterceptor {
|
|
|
2208
2210
|
intercept(initialRequest, next) {
|
|
2209
2211
|
return runInInjectionContext(this.injector, () => jsonpInterceptorFn(initialRequest, (downstreamRequest) => next.handle(downstreamRequest)));
|
|
2210
2212
|
}
|
|
2211
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2212
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
2213
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: JsonpInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2214
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: JsonpInterceptor });
|
|
2213
2215
|
}
|
|
2214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: JsonpInterceptor, decorators: [{
|
|
2215
2217
|
type: Injectable
|
|
2216
2218
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2217
2219
|
|
|
@@ -2496,10 +2498,10 @@ class HttpXhrBackend {
|
|
|
2496
2498
|
});
|
|
2497
2499
|
}));
|
|
2498
2500
|
}
|
|
2499
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2500
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
2501
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXhrBackend, deps: [{ token: XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2502
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXhrBackend });
|
|
2501
2503
|
}
|
|
2502
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2504
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXhrBackend, decorators: [{
|
|
2503
2505
|
type: Injectable
|
|
2504
2506
|
}], ctorParameters: () => [{ type: XhrFactory }] });
|
|
2505
2507
|
|
|
@@ -2549,10 +2551,10 @@ class HttpXsrfCookieExtractor {
|
|
|
2549
2551
|
}
|
|
2550
2552
|
return this.lastToken;
|
|
2551
2553
|
}
|
|
2552
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2553
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
2554
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2555
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXsrfCookieExtractor });
|
|
2554
2556
|
}
|
|
2555
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2557
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{
|
|
2556
2558
|
type: Injectable
|
|
2557
2559
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2558
2560
|
type: Inject,
|
|
@@ -2593,10 +2595,10 @@ class HttpXsrfInterceptor {
|
|
|
2593
2595
|
intercept(initialRequest, next) {
|
|
2594
2596
|
return runInInjectionContext(this.injector, () => xsrfInterceptorFn(initialRequest, (downstreamRequest) => next.handle(downstreamRequest)));
|
|
2595
2597
|
}
|
|
2596
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2597
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.
|
|
2598
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2599
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXsrfInterceptor });
|
|
2598
2600
|
}
|
|
2599
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2601
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{
|
|
2600
2602
|
type: Injectable
|
|
2601
2603
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2602
2604
|
|
|
@@ -2862,9 +2864,9 @@ class HttpClientXsrfModule {
|
|
|
2862
2864
|
providers: withXsrfConfiguration(options).ɵproviders,
|
|
2863
2865
|
};
|
|
2864
2866
|
}
|
|
2865
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2866
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.
|
|
2867
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.
|
|
2867
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2868
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.1", ngImport: i0, type: HttpClientXsrfModule });
|
|
2869
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientXsrfModule, providers: [
|
|
2868
2870
|
HttpXsrfInterceptor,
|
|
2869
2871
|
{ provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },
|
|
2870
2872
|
{ provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },
|
|
@@ -2875,7 +2877,7 @@ class HttpClientXsrfModule {
|
|
|
2875
2877
|
{ provide: XSRF_ENABLED, useValue: true },
|
|
2876
2878
|
] });
|
|
2877
2879
|
}
|
|
2878
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientXsrfModule, decorators: [{
|
|
2879
2881
|
type: NgModule,
|
|
2880
2882
|
args: [{
|
|
2881
2883
|
providers: [
|
|
@@ -2901,11 +2903,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
2901
2903
|
* @deprecated use `provideHttpClient(withInterceptorsFromDi())` as providers instead
|
|
2902
2904
|
*/
|
|
2903
2905
|
class HttpClientModule {
|
|
2904
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2905
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.
|
|
2906
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.
|
|
2906
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2907
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.1", ngImport: i0, type: HttpClientModule });
|
|
2908
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientModule, providers: [provideHttpClient(withInterceptorsFromDi())] });
|
|
2907
2909
|
}
|
|
2908
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2910
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientModule, decorators: [{
|
|
2909
2911
|
type: NgModule,
|
|
2910
2912
|
args: [{
|
|
2911
2913
|
/**
|
|
@@ -2925,11 +2927,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
2925
2927
|
* @deprecated `withJsonpSupport()` as providers instead
|
|
2926
2928
|
*/
|
|
2927
2929
|
class HttpClientJsonpModule {
|
|
2928
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.
|
|
2929
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.
|
|
2930
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.
|
|
2930
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2931
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.1", ngImport: i0, type: HttpClientJsonpModule });
|
|
2932
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientJsonpModule, providers: [withJsonpSupport().ɵproviders] });
|
|
2931
2933
|
}
|
|
2932
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.
|
|
2934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: HttpClientJsonpModule, decorators: [{
|
|
2933
2935
|
type: NgModule,
|
|
2934
2936
|
args: [{
|
|
2935
2937
|
providers: [withJsonpSupport().ɵproviders],
|
|
@@ -2937,4 +2939,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
2937
2939
|
}] });
|
|
2938
2940
|
|
|
2939
2941
|
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 };
|
|
2940
|
-
//# sourceMappingURL=module-
|
|
2942
|
+
//# sourceMappingURL=module-9-_NJo3W.mjs.map
|