diff --git a/packages/common/http/src/transfer_cache.ts b/packages/common/http/src/transfer_cache.ts index 09d37e2e85b..3d096606641 100644 --- a/packages/common/http/src/transfer_cache.ts +++ b/packages/common/http/src/transfer_cache.ts @@ -12,7 +12,6 @@ import { inject, InjectionToken, makeStateKey, - PLATFORM_ID, Provider, StateKey, TransferState, @@ -21,7 +20,6 @@ import { ɵtruncateMiddle as truncateMiddle, ɵRuntimeError as RuntimeError, } from '@angular/core'; -import {isPlatformServer} from '@angular/common'; import {Observable, of} from 'rxjs'; import {tap} from 'rxjs/operators'; @@ -149,8 +147,8 @@ export function transferCacheInterceptorFn( const originMap: Record | null = inject(HTTP_TRANSFER_CACHE_ORIGIN_MAP, { optional: true, }); - const isServer = isPlatformServer(inject(PLATFORM_ID)); - if (originMap && !isServer) { + + if (typeof ngServerMode !== 'undefined' && !ngServerMode && originMap) { throw new RuntimeError( RuntimeErrorCode.HTTP_ORIGIN_MAP_USED_IN_CLIENT, ngDevMode && @@ -160,7 +158,10 @@ export function transferCacheInterceptorFn( ); } - const requestUrl = isServer && originMap ? mapRequestOriginUrl(req.url, originMap) : req.url; + const requestUrl = + typeof ngServerMode !== 'undefined' && ngServerMode && originMap + ? mapRequestOriginUrl(req.url, originMap) + : req.url; const storeKey = makeCacheKey(req, requestUrl); const response = transferState.get(storeKey, null); @@ -217,7 +218,7 @@ export function transferCacheInterceptorFn( // Request not found in cache. Make the request and cache it if on the server. return next(req).pipe( tap((event: HttpEvent) => { - if (event instanceof HttpResponse && isServer) { + if (event instanceof HttpResponse && typeof ngServerMode !== 'undefined' && ngServerMode) { transferState.set(storeKey, { [BODY]: event.body, [HEADERS]: getFilteredHeaders(event.headers, headersToInclude), diff --git a/packages/common/http/test/transfer_cache_spec.ts b/packages/common/http/test/transfer_cache_spec.ts index e0e22368be6..dc882e95a2d 100644 --- a/packages/common/http/test/transfer_cache_spec.ts +++ b/packages/common/http/test/transfer_cache_spec.ts @@ -88,6 +88,14 @@ describe('TransferCache', () => { return response; } + beforeEach(() => { + globalThis['ngServerMode'] = true; + }); + + afterEach(() => { + globalThis['ngServerMode'] = undefined; + }); + beforeEach( withBody('', () => { TestBed.resetTestingModule(); @@ -323,6 +331,14 @@ describe('TransferCache', () => { }); describe('caching in browser context', () => { + beforeEach(() => { + globalThis['ngServerMode'] = false; + }); + + afterEach(() => { + globalThis['ngServerMode'] = undefined; + }); + beforeEach( withBody('', () => { TestBed.resetTestingModule(); diff --git a/packages/platform-browser/test/hydration_spec.ts b/packages/platform-browser/test/hydration_spec.ts index 90066475d80..92d0d360db4 100644 --- a/packages/platform-browser/test/hydration_spec.ts +++ b/packages/platform-browser/test/hydration_spec.ts @@ -53,6 +53,14 @@ describe('provideClientHydration', () => { override isStable = new BehaviorSubject(false); } + beforeEach(() => { + globalThis['ngServerMode'] = true; + }); + + afterEach(() => { + globalThis['ngServerMode'] = undefined; + }); + describe('default', () => { beforeEach( withBody(