| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| 0 && (module.exports = { |
| createParamsFromClient: null, |
| createPrerenderParamsForClientSegment: null, |
| createServerParamsForMetadata: null, |
| createServerParamsForRoute: null, |
| createServerParamsForServerSegment: null |
| }); |
| function _export(target, all) { |
| for(var name in all)Object.defineProperty(target, name, { |
| enumerable: true, |
| get: all[name] |
| }); |
| } |
| _export(exports, { |
| createParamsFromClient: function() { |
| return createParamsFromClient; |
| }, |
| createPrerenderParamsForClientSegment: function() { |
| return createPrerenderParamsForClientSegment; |
| }, |
| createServerParamsForMetadata: function() { |
| return createServerParamsForMetadata; |
| }, |
| createServerParamsForRoute: function() { |
| return createServerParamsForRoute; |
| }, |
| createServerParamsForServerSegment: function() { |
| return createServerParamsForServerSegment; |
| } |
| }); |
| const _workasyncstorageexternal = require("../app-render/work-async-storage.external"); |
| const _reflect = require("../web/spec-extension/adapters/reflect"); |
| const _dynamicrendering = require("../app-render/dynamic-rendering"); |
| const _workunitasyncstorageexternal = require("../app-render/work-unit-async-storage.external"); |
| const _invarianterror = require("../../shared/lib/invariant-error"); |
| const _reflectutils = require("../../shared/lib/utils/reflect-utils"); |
| const _dynamicrenderingutils = require("../dynamic-rendering-utils"); |
| const _creatededupedbycallsiteservererrorlogger = require("../create-deduped-by-callsite-server-error-logger"); |
| const _dynamicaccessasyncstorageexternal = require("../app-render/dynamic-access-async-storage.external"); |
| function createParamsFromClient(underlyingParams, workStore) { |
| const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); |
| if (workUnitStore) { |
| switch(workUnitStore.type){ |
| case 'prerender': |
| case 'prerender-client': |
| case 'prerender-ppr': |
| case 'prerender-legacy': |
| return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore); |
| case 'cache': |
| case 'private-cache': |
| case 'unstable-cache': |
| throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in cache contexts.'), "__NEXT_ERROR_CODE", { |
| value: "E736", |
| enumerable: false, |
| configurable: true |
| }); |
| case 'prerender-runtime': |
| throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in a runtime prerender.'), "__NEXT_ERROR_CODE", { |
| value: "E770", |
| enumerable: false, |
| configurable: true |
| }); |
| case 'request': |
| if (process.env.NODE_ENV === 'development') { |
| |
| |
| |
| const devFallbackParams = workUnitStore.devFallbackParams; |
| return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore); |
| } else { |
| return createRenderParamsInProd(underlyingParams); |
| } |
| default: |
| workUnitStore; |
| } |
| } |
| (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)(); |
| } |
| const createServerParamsForMetadata = createServerParamsForServerSegment; |
| function createServerParamsForRoute(underlyingParams, workStore) { |
| const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); |
| if (workUnitStore) { |
| switch(workUnitStore.type){ |
| case 'prerender': |
| case 'prerender-client': |
| case 'prerender-ppr': |
| case 'prerender-legacy': |
| return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore); |
| case 'cache': |
| case 'private-cache': |
| case 'unstable-cache': |
| throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in cache contexts.'), "__NEXT_ERROR_CODE", { |
| value: "E738", |
| enumerable: false, |
| configurable: true |
| }); |
| case 'prerender-runtime': |
| return createRuntimePrerenderParams(underlyingParams, workUnitStore); |
| case 'request': |
| if (process.env.NODE_ENV === 'development') { |
| |
| |
| |
| const devFallbackParams = workUnitStore.devFallbackParams; |
| return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore); |
| } else { |
| return createRenderParamsInProd(underlyingParams); |
| } |
| default: |
| workUnitStore; |
| } |
| } |
| (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)(); |
| } |
| function createServerParamsForServerSegment(underlyingParams, workStore) { |
| const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); |
| if (workUnitStore) { |
| switch(workUnitStore.type){ |
| case 'prerender': |
| case 'prerender-client': |
| case 'prerender-ppr': |
| case 'prerender-legacy': |
| return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore); |
| case 'cache': |
| case 'private-cache': |
| case 'unstable-cache': |
| throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in cache contexts.'), "__NEXT_ERROR_CODE", { |
| value: "E743", |
| enumerable: false, |
| configurable: true |
| }); |
| case 'prerender-runtime': |
| return createRuntimePrerenderParams(underlyingParams, workUnitStore); |
| case 'request': |
| if (process.env.NODE_ENV === 'development') { |
| |
| |
| |
| const devFallbackParams = workUnitStore.devFallbackParams; |
| return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore); |
| } else { |
| return createRenderParamsInProd(underlyingParams); |
| } |
| default: |
| workUnitStore; |
| } |
| } |
| (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)(); |
| } |
| function createPrerenderParamsForClientSegment(underlyingParams) { |
| const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); |
| if (!workStore) { |
| throw Object.defineProperty(new _invarianterror.InvariantError('Missing workStore in createPrerenderParamsForClientSegment'), "__NEXT_ERROR_CODE", { |
| value: "E773", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); |
| if (workUnitStore) { |
| switch(workUnitStore.type){ |
| case 'prerender': |
| case 'prerender-client': |
| const fallbackParams = workUnitStore.fallbackRouteParams; |
| if (fallbackParams) { |
| for(let key in underlyingParams){ |
| if (fallbackParams.has(key)) { |
| |
| |
| |
| |
| return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`params`'); |
| } |
| } |
| } |
| break; |
| case 'cache': |
| case 'private-cache': |
| case 'unstable-cache': |
| throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in cache contexts.'), "__NEXT_ERROR_CODE", { |
| value: "E734", |
| enumerable: false, |
| configurable: true |
| }); |
| case 'prerender-ppr': |
| case 'prerender-legacy': |
| case 'prerender-runtime': |
| case 'request': |
| break; |
| default: |
| workUnitStore; |
| } |
| } |
| |
| |
| |
| return Promise.resolve(underlyingParams); |
| } |
| function createStaticPrerenderParams(underlyingParams, workStore, prerenderStore) { |
| switch(prerenderStore.type){ |
| case 'prerender': |
| case 'prerender-client': |
| { |
| const fallbackParams = prerenderStore.fallbackRouteParams; |
| if (fallbackParams) { |
| for(const key in underlyingParams){ |
| if (fallbackParams.has(key)) { |
| |
| |
| |
| |
| return makeHangingParams(underlyingParams, workStore, prerenderStore); |
| } |
| } |
| } |
| break; |
| } |
| case 'prerender-ppr': |
| { |
| const fallbackParams = prerenderStore.fallbackRouteParams; |
| if (fallbackParams) { |
| for(const key in underlyingParams){ |
| if (fallbackParams.has(key)) { |
| return makeErroringExoticParams(underlyingParams, fallbackParams, workStore, prerenderStore); |
| } |
| } |
| } |
| break; |
| } |
| case 'prerender-legacy': |
| break; |
| default: |
| prerenderStore; |
| } |
| if (process.env.__NEXT_CACHE_COMPONENTS) { |
| return makeUntrackedParams(underlyingParams); |
| } else { |
| return makeUntrackedExoticParams(underlyingParams); |
| } |
| } |
| function createRuntimePrerenderParams(underlyingParams, workUnitStore) { |
| return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, process.env.__NEXT_CACHE_COMPONENTS ? makeUntrackedParams(underlyingParams) : makeUntrackedExoticParams(underlyingParams)); |
| } |
| function createRenderParamsInProd(underlyingParams) { |
| if (process.env.__NEXT_CACHE_COMPONENTS) { |
| return makeUntrackedParams(underlyingParams); |
| } |
| return makeUntrackedExoticParams(underlyingParams); |
| } |
| function createRenderParamsInDev(underlyingParams, devFallbackParams, workStore) { |
| let hasFallbackParams = false; |
| if (devFallbackParams) { |
| for(let key in underlyingParams){ |
| if (devFallbackParams.has(key)) { |
| hasFallbackParams = true; |
| break; |
| } |
| } |
| } |
| if (process.env.__NEXT_CACHE_COMPONENTS) { |
| return makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore); |
| } |
| return makeDynamicallyTrackedExoticParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore); |
| } |
| const CachedParams = new WeakMap(); |
| const fallbackParamsProxyHandler = { |
| get: function get(target, prop, receiver) { |
| if (prop === 'then' || prop === 'catch' || prop === 'finally') { |
| const originalMethod = _reflect.ReflectAdapter.get(target, prop, receiver); |
| return ({ |
| [prop]: (...args)=>{ |
| const store = _dynamicaccessasyncstorageexternal.dynamicAccessAsyncStorage.getStore(); |
| if (store) { |
| store.abortController.abort(Object.defineProperty(new Error(`Accessed fallback \`params\` during prerendering.`), "__NEXT_ERROR_CODE", { |
| value: "E691", |
| enumerable: false, |
| configurable: true |
| })); |
| } |
| return new Proxy(originalMethod.apply(target, args), fallbackParamsProxyHandler); |
| } |
| })[prop]; |
| } |
| return _reflect.ReflectAdapter.get(target, prop, receiver); |
| } |
| }; |
| function makeHangingParams(underlyingParams, workStore, prerenderStore) { |
| const cachedParams = CachedParams.get(underlyingParams); |
| if (cachedParams) { |
| return cachedParams; |
| } |
| const promise = new Proxy((0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`params`'), fallbackParamsProxyHandler); |
| CachedParams.set(underlyingParams, promise); |
| return promise; |
| } |
| function makeErroringExoticParams(underlyingParams, fallbackParams, workStore, prerenderStore) { |
| const cachedParams = CachedParams.get(underlyingParams); |
| if (cachedParams) { |
| return cachedParams; |
| } |
| const augmentedUnderlying = { |
| ...underlyingParams |
| }; |
| |
| |
| |
| const promise = Promise.resolve(augmentedUnderlying); |
| CachedParams.set(underlyingParams, promise); |
| Object.keys(underlyingParams).forEach((prop)=>{ |
| if (_reflectutils.wellKnownProperties.has(prop)) { |
| |
| |
| } else { |
| if (fallbackParams.has(prop)) { |
| Object.defineProperty(augmentedUnderlying, prop, { |
| get () { |
| const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop); |
| |
| |
| |
| |
| |
| |
| if (prerenderStore.type === 'prerender-ppr') { |
| |
| (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking); |
| } else { |
| |
| (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore); |
| } |
| }, |
| enumerable: true |
| }); |
| Object.defineProperty(promise, prop, { |
| get () { |
| const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop); |
| |
| |
| |
| |
| |
| |
| if (prerenderStore.type === 'prerender-ppr') { |
| |
| (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking); |
| } else { |
| |
| (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore); |
| } |
| }, |
| set (newValue) { |
| Object.defineProperty(promise, prop, { |
| value: newValue, |
| writable: true, |
| enumerable: true |
| }); |
| }, |
| enumerable: true, |
| configurable: true |
| }); |
| } else { |
| ; |
| promise[prop] = underlyingParams[prop]; |
| } |
| } |
| }); |
| return promise; |
| } |
| function makeUntrackedExoticParams(underlyingParams) { |
| const cachedParams = CachedParams.get(underlyingParams); |
| if (cachedParams) { |
| return cachedParams; |
| } |
| |
| |
| |
| const promise = Promise.resolve(underlyingParams); |
| CachedParams.set(underlyingParams, promise); |
| Object.keys(underlyingParams).forEach((prop)=>{ |
| if (_reflectutils.wellKnownProperties.has(prop)) { |
| |
| |
| } else { |
| ; |
| promise[prop] = underlyingParams[prop]; |
| } |
| }); |
| return promise; |
| } |
| function makeUntrackedParams(underlyingParams) { |
| const cachedParams = CachedParams.get(underlyingParams); |
| if (cachedParams) { |
| return cachedParams; |
| } |
| const promise = Promise.resolve(underlyingParams); |
| CachedParams.set(underlyingParams, promise); |
| return promise; |
| } |
| function makeDynamicallyTrackedExoticParamsWithDevWarnings(underlyingParams, hasFallbackParams, store) { |
| const cachedParams = CachedParams.get(underlyingParams); |
| if (cachedParams) { |
| return cachedParams; |
| } |
| |
| |
| |
| const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams) : Promise.resolve(underlyingParams); |
| const proxiedProperties = new Set(); |
| const unproxiedProperties = []; |
| Object.keys(underlyingParams).forEach((prop)=>{ |
| if (_reflectutils.wellKnownProperties.has(prop)) { |
| |
| |
| unproxiedProperties.push(prop); |
| } else { |
| proxiedProperties.add(prop); |
| promise[prop] = underlyingParams[prop]; |
| } |
| }); |
| const proxiedPromise = new Proxy(promise, { |
| get (target, prop, receiver) { |
| if (typeof prop === 'string') { |
| if ( |
| proxiedProperties.has(prop)) { |
| const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop); |
| syncIODev(store.route, expression); |
| } |
| } |
| return _reflect.ReflectAdapter.get(target, prop, receiver); |
| }, |
| set (target, prop, value, receiver) { |
| if (typeof prop === 'string') { |
| proxiedProperties.delete(prop); |
| } |
| return _reflect.ReflectAdapter.set(target, prop, value, receiver); |
| }, |
| ownKeys (target) { |
| const expression = '`...params` or similar expression'; |
| syncIODev(store.route, expression, unproxiedProperties); |
| return Reflect.ownKeys(target); |
| } |
| }); |
| CachedParams.set(underlyingParams, proxiedPromise); |
| return proxiedPromise; |
| } |
| |
| |
| function makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, store) { |
| const cachedParams = CachedParams.get(underlyingParams); |
| if (cachedParams) { |
| return cachedParams; |
| } |
| |
| |
| |
| const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams) : Promise.resolve(underlyingParams); |
| const proxiedProperties = new Set(); |
| const unproxiedProperties = []; |
| Object.keys(underlyingParams).forEach((prop)=>{ |
| if (_reflectutils.wellKnownProperties.has(prop)) { |
| |
| |
| unproxiedProperties.push(prop); |
| } else { |
| proxiedProperties.add(prop); |
| } |
| }); |
| const proxiedPromise = new Proxy(promise, { |
| get (target, prop, receiver) { |
| if (typeof prop === 'string') { |
| if ( |
| proxiedProperties.has(prop)) { |
| const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop); |
| warnForSyncAccess(store.route, expression); |
| } |
| } |
| return _reflect.ReflectAdapter.get(target, prop, receiver); |
| }, |
| set (target, prop, value, receiver) { |
| if (typeof prop === 'string') { |
| proxiedProperties.delete(prop); |
| } |
| return _reflect.ReflectAdapter.set(target, prop, value, receiver); |
| }, |
| ownKeys (target) { |
| const expression = '`...params` or similar expression'; |
| warnForIncompleteEnumeration(store.route, expression, unproxiedProperties); |
| return Reflect.ownKeys(target); |
| } |
| }); |
| CachedParams.set(underlyingParams, proxiedPromise); |
| return proxiedPromise; |
| } |
| function syncIODev(route, expression, missingProperties) { |
| const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); |
| if (workUnitStore) { |
| switch(workUnitStore.type){ |
| case 'request': |
| if (workUnitStore.prerenderPhase === true) { |
| |
| |
| (0, _dynamicrendering.trackSynchronousRequestDataAccessInDev)(workUnitStore); |
| } |
| break; |
| case 'prerender': |
| case 'prerender-client': |
| case 'prerender-runtime': |
| case 'prerender-ppr': |
| case 'prerender-legacy': |
| case 'cache': |
| case 'private-cache': |
| case 'unstable-cache': |
| break; |
| default: |
| workUnitStore; |
| } |
| } |
| |
| if (missingProperties && missingProperties.length > 0) { |
| warnForIncompleteEnumeration(route, expression, missingProperties); |
| } else { |
| warnForSyncAccess(route, expression); |
| } |
| } |
| const warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createParamsAccessError); |
| const warnForIncompleteEnumeration = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createIncompleteEnumerationError); |
| function createParamsAccessError(route, expression) { |
| const prefix = route ? `Route "${route}" ` : 'This route '; |
| return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\`params\` should be awaited before using its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), "__NEXT_ERROR_CODE", { |
| value: "E307", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| function createIncompleteEnumerationError(route, expression, missingProperties) { |
| const prefix = route ? `Route "${route}" ` : 'This route '; |
| return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\`params\` should be awaited before using its properties. ` + `The following properties were not available through enumeration ` + `because they conflict with builtin property names: ` + `${describeListOfPropertyNames(missingProperties)}. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), "__NEXT_ERROR_CODE", { |
| value: "E482", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| function describeListOfPropertyNames(properties) { |
| switch(properties.length){ |
| case 0: |
| throw Object.defineProperty(new _invarianterror.InvariantError('Expected describeListOfPropertyNames to be called with a non-empty list of strings.'), "__NEXT_ERROR_CODE", { |
| value: "E531", |
| enumerable: false, |
| configurable: true |
| }); |
| case 1: |
| return `\`${properties[0]}\``; |
| case 2: |
| return `\`${properties[0]}\` and \`${properties[1]}\``; |
| default: |
| { |
| let description = ''; |
| for(let i = 0; i < properties.length - 1; i++){ |
| description += `\`${properties[i]}\`, `; |
| } |
| description += `, and \`${properties[properties.length - 1]}\``; |
| return description; |
| } |
| } |
| } |
|
|
| |