Recipe-app main
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
import App from '../../../../pages/_app';
|
||||
import Document from '../../../../pages/_document';
|
||||
import { RouteKind } from '../../../route-kind';
|
||||
import * as moduleError from '../../../../pages/_error';
|
||||
import PagesRouteModule from '../module';
|
||||
import { getHandler } from '../pages-handler';
|
||||
export const routeModule = new PagesRouteModule({
|
||||
// TODO: add descriptor for internal error page
|
||||
definition: {
|
||||
kind: RouteKind.PAGES,
|
||||
page: '/_error',
|
||||
pathname: '/_error',
|
||||
filename: '',
|
||||
bundlePath: ''
|
||||
},
|
||||
distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',
|
||||
relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',
|
||||
components: {
|
||||
App,
|
||||
Document
|
||||
},
|
||||
userland: moduleError
|
||||
});
|
||||
export const handler = getHandler({
|
||||
srcPage: '/_error',
|
||||
routeModule,
|
||||
userland: moduleError,
|
||||
config: {},
|
||||
isFallbackError: true
|
||||
});
|
||||
|
||||
//# sourceMappingURL=_error.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../src/server/route-modules/pages/builtin/_error.tsx"],"sourcesContent":["import App from '../../../../pages/_app'\nimport Document from '../../../../pages/_document'\nimport { RouteKind } from '../../../route-kind'\n\nimport * as moduleError from '../../../../pages/_error'\n\nimport PagesRouteModule from '../module'\nimport { getHandler } from '../pages-handler'\n\nexport const routeModule = new PagesRouteModule({\n // TODO: add descriptor for internal error page\n definition: {\n kind: RouteKind.PAGES,\n page: '/_error',\n pathname: '/_error',\n filename: '',\n bundlePath: '',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n components: {\n App,\n Document,\n },\n userland: moduleError,\n})\n\nexport const handler = getHandler({\n srcPage: '/_error',\n routeModule,\n userland: moduleError,\n config: {},\n isFallbackError: true,\n})\n"],"names":["App","Document","RouteKind","moduleError","PagesRouteModule","getHandler","routeModule","definition","kind","PAGES","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","components","userland","handler","srcPage","config","isFallbackError"],"mappings":"AAAA,OAAOA,SAAS,yBAAwB;AACxC,OAAOC,cAAc,8BAA6B;AAClD,SAASC,SAAS,QAAQ,sBAAqB;AAE/C,YAAYC,iBAAiB,2BAA0B;AAEvD,OAAOC,sBAAsB,YAAW;AACxC,SAASC,UAAU,QAAQ,mBAAkB;AAE7C,OAAO,MAAMC,cAAc,IAAIF,iBAAiB;IAC9C,+CAA+C;IAC/CG,YAAY;QACVC,MAAMN,UAAUO,KAAK;QACrBC,MAAM;QACNC,UAAU;QACVC,UAAU;QACVC,YAAY;IACd;IACAC,SAASC,QAAQC,GAAG,CAACC,wBAAwB,IAAI;IACjDC,oBAAoBH,QAAQC,GAAG,CAACG,2BAA2B,IAAI;IAC/DC,YAAY;QACVpB;QACAC;IACF;IACAoB,UAAUlB;AACZ,GAAE;AAEF,OAAO,MAAMmB,UAAUjB,WAAW;IAChCkB,SAAS;IACTjB;IACAe,UAAUlB;IACVqB,QAAQ,CAAC;IACTC,iBAAiB;AACnB,GAAE","ignoreList":[0]}
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
export * from './module'
|
||||
Generated
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
if (process.env.NEXT_RUNTIME === 'edge') {
|
||||
module.exports = require('next/dist/server/route-modules/pages/module.js');
|
||||
} else {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
if (process.env.TURBOPACK) {
|
||||
module.exports = require('next/dist/compiled/next-server/pages-turbo.runtime.dev.js');
|
||||
} else {
|
||||
module.exports = require('next/dist/compiled/next-server/pages.runtime.dev.js');
|
||||
}
|
||||
} else {
|
||||
if (process.env.TURBOPACK) {
|
||||
module.exports = require('next/dist/compiled/next-server/pages-turbo.runtime.prod.js');
|
||||
} else {
|
||||
module.exports = require('next/dist/compiled/next-server/pages.runtime.prod.js');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=module.compiled.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../src/server/route-modules/pages/module.compiled.js"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/pages/module.js')\n} else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/pages-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/pages.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/pages-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/pages.runtime.prod.js')\n }\n }\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","NODE_ENV","TURBOPACK"],"mappings":"AAAA,IAAIA,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;IACvCC,OAAOC,OAAO,GAAGC,QAAQ;AAC3B,OAAO;IACL,IAAIL,QAAQC,GAAG,CAACK,QAAQ,KAAK,eAAe;QAC1C,IAAIN,QAAQC,GAAG,CAACM,SAAS,EAAE;YACzBJ,OAAOC,OAAO,GAAGC,QAAQ;QAC3B,OAAO;YACLF,OAAOC,OAAO,GAAGC,QAAQ;QAC3B;IACF,OAAO;QACL,IAAIL,QAAQC,GAAG,CAACM,SAAS,EAAE;YACzBJ,OAAOC,OAAO,GAAGC,QAAQ;QAC3B,OAAO;YACLF,OAAOC,OAAO,GAAGC,QAAQ;QAC3B;IACF;AACF","ignoreList":[0]}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
import { RouteModule } from '../route-module';
|
||||
import { renderToHTMLImpl, renderToHTML } from '../../render';
|
||||
import * as vendoredContexts from './vendored/contexts/entrypoints';
|
||||
export class PagesRouteModule extends RouteModule {
|
||||
constructor(options){
|
||||
super(options);
|
||||
this.components = options.components;
|
||||
}
|
||||
render(req, res, context) {
|
||||
return renderToHTMLImpl(req, res, context.page, context.query, context.renderOpts, {
|
||||
App: this.components.App,
|
||||
Document: this.components.Document
|
||||
}, context.sharedContext, context.renderContext);
|
||||
}
|
||||
}
|
||||
const vendored = {
|
||||
contexts: vendoredContexts
|
||||
};
|
||||
// needed for the static build
|
||||
export { renderToHTML, vendored };
|
||||
export default PagesRouteModule;
|
||||
|
||||
//# sourceMappingURL=module.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+14
@@ -0,0 +1,14 @@
|
||||
export const lazyRenderPagesPage = (...args)=>{
|
||||
if (process.env.NEXT_MINIMAL) {
|
||||
throw Object.defineProperty(new Error("Can't use lazyRenderPagesPage in minimal mode"), "__NEXT_ERROR_CODE", {
|
||||
value: "E272",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
} else {
|
||||
const render = require('./module.compiled').renderToHTML;
|
||||
return render(...args);
|
||||
}
|
||||
};
|
||||
|
||||
//# sourceMappingURL=module.render.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../src/server/route-modules/pages/module.render.ts"],"sourcesContent":["import type { PagesRender } from '../../render'\n\nexport const lazyRenderPagesPage: PagesRender = (...args) => {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\"Can't use lazyRenderPagesPage in minimal mode\")\n } else {\n const render: PagesRender = (\n require('./module.compiled') as typeof import('./module.compiled')\n ).renderToHTML\n\n return render(...args)\n }\n}\n"],"names":["lazyRenderPagesPage","args","process","env","NEXT_MINIMAL","Error","render","require","renderToHTML"],"mappings":"AAEA,OAAO,MAAMA,sBAAmC,CAAC,GAAGC;IAClD,IAAIC,QAAQC,GAAG,CAACC,YAAY,EAAE;QAC5B,MAAM,qBAA0D,CAA1D,IAAIC,MAAM,kDAAV,qBAAA;mBAAA;wBAAA;0BAAA;QAAyD;IACjE,OAAO;QACL,MAAMC,SAAsB,AAC1BC,QAAQ,qBACRC,YAAY;QAEd,OAAOF,UAAUL;IACnB;AACF,EAAC","ignoreList":[0]}
|
||||
+530
@@ -0,0 +1,530 @@
|
||||
import { RouteKind } from '../../route-kind';
|
||||
import { BaseServerSpan } from '../../lib/trace/constants';
|
||||
import { getTracer, SpanKind } from '../../lib/trace/tracer';
|
||||
import { formatUrl } from '../../../shared/lib/router/utils/format-url';
|
||||
import { addRequestMeta, getRequestMeta, setRequestMeta } from '../../request-meta';
|
||||
import { interopDefault } from '../../app-render/interop-default';
|
||||
import { getRevalidateReason } from '../../instrumentation/utils';
|
||||
import { normalizeDataPath } from '../../../shared/lib/page-path/normalize-data-path';
|
||||
import { CachedRouteKind } from '../../response-cache';
|
||||
import { getCacheControlHeader } from '../../lib/cache-control';
|
||||
import { normalizeRepeatedSlashes } from '../../../shared/lib/utils';
|
||||
import { getRedirectStatus } from '../../../lib/redirect-status';
|
||||
import { CACHE_ONE_YEAR_SECONDS, HTML_CONTENT_TYPE_HEADER, JSON_CONTENT_TYPE_HEADER, NEXT_NAV_DEPLOYMENT_ID_HEADER } from '../../../lib/constants';
|
||||
import path from 'path';
|
||||
import { sendRenderResult } from '../../send-payload';
|
||||
import RenderResult from '../../render-result';
|
||||
import { toResponseCacheEntry } from '../../response-cache/utils';
|
||||
import { NoFallbackError } from '../../../shared/lib/no-fallback-error.external';
|
||||
import { RedirectStatusCode } from '../../../client/components/redirect-status-code';
|
||||
import { isBot } from '../../../shared/lib/router/utils/is-bot';
|
||||
import { addPathPrefix } from '../../../shared/lib/router/utils/add-path-prefix';
|
||||
import { removeTrailingSlash } from '../../../shared/lib/router/utils/remove-trailing-slash';
|
||||
export const getHandler = ({ srcPage: originalSrcPage, config, userland, routeModule, isFallbackError, getStaticPaths, getStaticProps, getServerSideProps })=>{
|
||||
return async function handler(req, res, ctx) {
|
||||
var _serverFilesManifest_config_experimental, _serverFilesManifest_config;
|
||||
if (ctx.requestMeta) {
|
||||
setRequestMeta(req, ctx.requestMeta);
|
||||
}
|
||||
if (routeModule.isDev) {
|
||||
addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());
|
||||
}
|
||||
let srcPage = originalSrcPage;
|
||||
// turbopack doesn't normalize `/index` in the page name
|
||||
// so we need to to process dynamic routes properly
|
||||
// TODO: fix turbopack providing differing value from webpack
|
||||
if (process.env.TURBOPACK) {
|
||||
srcPage = srcPage.replace(/\/index$/, '') || '/';
|
||||
} else if (srcPage === '/index') {
|
||||
// we always normalize /index specifically
|
||||
srcPage = '/';
|
||||
}
|
||||
const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;
|
||||
const prepareResult = await routeModule.prepare(req, res, {
|
||||
srcPage,
|
||||
multiZoneDraftMode
|
||||
});
|
||||
if (!prepareResult) {
|
||||
res.statusCode = 400;
|
||||
res.end('Bad Request');
|
||||
ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
|
||||
return;
|
||||
}
|
||||
const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'));
|
||||
const render404 = async ()=>{
|
||||
// TODO: should route-module itself handle rendering the 404
|
||||
if (routerServerContext == null ? void 0 : routerServerContext.render404) {
|
||||
await routerServerContext.render404(req, res, parsedUrl, false);
|
||||
} else {
|
||||
res.end('This page could not be found');
|
||||
}
|
||||
};
|
||||
const { buildId, query, params, parsedUrl, originalQuery, originalPathname, buildManifest, fallbackBuildManifest, nextFontManifest, serverFilesManifest, reactLoadableManifest, prerenderManifest, isDraftMode, isOnDemandRevalidate, revalidateOnlyGenerated, locale, locales, defaultLocale, routerServerContext, nextConfig, resolvedPathname, encodedResolvedPathname, deploymentId, clientAssetToken } = prepareResult;
|
||||
const isExperimentalCompile = serverFilesManifest == null ? void 0 : (_serverFilesManifest_config = serverFilesManifest.config) == null ? void 0 : (_serverFilesManifest_config_experimental = _serverFilesManifest_config.experimental) == null ? void 0 : _serverFilesManifest_config_experimental.isExperimentalCompile;
|
||||
const hasServerProps = Boolean(getServerSideProps);
|
||||
const hasStaticProps = Boolean(getStaticProps);
|
||||
const hasStaticPaths = Boolean(getStaticPaths);
|
||||
const hasGetInitialProps = Boolean((userland.default || userland).getInitialProps);
|
||||
let cacheKey = null;
|
||||
let isIsrFallback = false;
|
||||
let isNextDataRequest = prepareResult.isNextDataRequest && (hasStaticProps || hasServerProps);
|
||||
const is404Page = srcPage === '/404';
|
||||
const is500Page = srcPage === '/500';
|
||||
const isErrorPage = srcPage === '/_error';
|
||||
if (!routeModule.isDev && !isDraftMode && hasStaticProps) {
|
||||
cacheKey = `${locale ? `/${locale}` : ''}${(srcPage === '/' || resolvedPathname === '/') && locale ? '' : resolvedPathname}`;
|
||||
if (is404Page || is500Page || isErrorPage) {
|
||||
cacheKey = `${locale ? `/${locale}` : ''}${srcPage}`;
|
||||
}
|
||||
// ensure /index and / is normalized to one key
|
||||
cacheKey = cacheKey === '/index' ? '/' : cacheKey;
|
||||
}
|
||||
if (hasStaticPaths && !isDraftMode) {
|
||||
const decodedPathname = removeTrailingSlash(locale ? addPathPrefix(resolvedPathname, `/${locale}`) : resolvedPathname);
|
||||
const isPrerendered = Boolean(prerenderManifest.routes[decodedPathname]) || prerenderManifest.notFoundRoutes.includes(decodedPathname);
|
||||
const prerenderInfo = prerenderManifest.dynamicRoutes[srcPage];
|
||||
if (prerenderInfo) {
|
||||
if (prerenderInfo.fallback === false && !isPrerendered) {
|
||||
if (nextConfig.adapterPath) {
|
||||
return await render404();
|
||||
}
|
||||
throw new NoFallbackError();
|
||||
}
|
||||
if (typeof prerenderInfo.fallback === 'string' && !isPrerendered && !isNextDataRequest) {
|
||||
isIsrFallback = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// When serving a bot request, we want to serve a blocking render and not
|
||||
// the prerendered page. This ensures that the correct content is served
|
||||
// to the bot in the head.
|
||||
if (isIsrFallback && isBot(req.headers['user-agent'] || '') || isMinimalMode) {
|
||||
isIsrFallback = false;
|
||||
}
|
||||
const tracer = getTracer();
|
||||
const activeSpan = tracer.getActiveScopeSpan();
|
||||
try {
|
||||
var _parsedUrl_pathname;
|
||||
const method = req.method || 'GET';
|
||||
const resolvedUrl = formatUrl({
|
||||
pathname: nextConfig.trailingSlash ? `${encodedResolvedPathname}${!encodedResolvedPathname.endsWith('/') && ((_parsedUrl_pathname = parsedUrl.pathname) == null ? void 0 : _parsedUrl_pathname.endsWith('/')) ? '/' : ''}` : removeTrailingSlash(encodedResolvedPathname || '/'),
|
||||
// make sure to only add query values from original URL
|
||||
query: hasStaticProps ? {} : originalQuery
|
||||
});
|
||||
let parentSpan;
|
||||
const handleResponse = async (span)=>{
|
||||
const responseGenerator = async ({ previousCacheEntry })=>{
|
||||
var _previousCacheEntry_value;
|
||||
const doRender = async ()=>{
|
||||
try {
|
||||
var _nextConfig_i18n;
|
||||
return await routeModule.render(req, res, {
|
||||
query: hasStaticProps && !isExperimentalCompile ? {
|
||||
...params
|
||||
} : {
|
||||
...query,
|
||||
...params
|
||||
},
|
||||
params,
|
||||
page: srcPage,
|
||||
renderContext: {
|
||||
isDraftMode,
|
||||
isFallback: isIsrFallback,
|
||||
developmentNotFoundSourcePage: getRequestMeta(req, 'developmentNotFoundSourcePage')
|
||||
},
|
||||
sharedContext: {
|
||||
buildId,
|
||||
customServer: Boolean(routerServerContext == null ? void 0 : routerServerContext.isCustomServer) || undefined,
|
||||
deploymentId,
|
||||
clientAssetToken
|
||||
},
|
||||
renderOpts: {
|
||||
params,
|
||||
routeModule,
|
||||
page: srcPage,
|
||||
pageConfig: config || {},
|
||||
Component: interopDefault(userland),
|
||||
ComponentMod: userland,
|
||||
getStaticProps,
|
||||
getStaticPaths,
|
||||
getServerSideProps,
|
||||
supportsDynamicResponse: !hasStaticProps,
|
||||
buildManifest: isFallbackError ? fallbackBuildManifest : buildManifest,
|
||||
nextFontManifest,
|
||||
reactLoadableManifest,
|
||||
assetPrefix: nextConfig.assetPrefix,
|
||||
previewProps: prerenderManifest.preview,
|
||||
images: nextConfig.images,
|
||||
nextConfigOutput: nextConfig.output,
|
||||
optimizeCss: Boolean(nextConfig.experimental.optimizeCss),
|
||||
nextScriptWorkers: Boolean(nextConfig.experimental.nextScriptWorkers),
|
||||
domainLocales: (_nextConfig_i18n = nextConfig.i18n) == null ? void 0 : _nextConfig_i18n.domains,
|
||||
crossOrigin: nextConfig.crossOrigin,
|
||||
multiZoneDraftMode,
|
||||
basePath: nextConfig.basePath,
|
||||
disableOptimizedLoading: nextConfig.experimental.disableOptimizedLoading,
|
||||
largePageDataBytes: nextConfig.experimental.largePageDataBytes,
|
||||
isExperimentalCompile,
|
||||
experimental: {
|
||||
clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || []
|
||||
},
|
||||
locale,
|
||||
locales,
|
||||
defaultLocale,
|
||||
setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,
|
||||
isNextDataRequest: isNextDataRequest && (hasServerProps || hasStaticProps),
|
||||
resolvedUrl,
|
||||
// For getServerSideProps and getInitialProps we need to ensure we use the original URL
|
||||
// and not the resolved URL to prevent a hydration mismatch on
|
||||
// asPath
|
||||
resolvedAsPath: hasServerProps || hasGetInitialProps ? formatUrl({
|
||||
// we use the original URL pathname less the _next/data prefix if
|
||||
// present
|
||||
pathname: isNextDataRequest ? normalizeDataPath(originalPathname) : originalPathname,
|
||||
query: originalQuery
|
||||
}) : resolvedUrl,
|
||||
isOnDemandRevalidate,
|
||||
ErrorDebug: getRequestMeta(req, 'PagesErrorDebug'),
|
||||
err: getRequestMeta(req, 'invokeError'),
|
||||
// needed for experimental.optimizeCss feature
|
||||
distDir: path.join(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir, routeModule.distDir)
|
||||
}
|
||||
}).then((renderResult)=>{
|
||||
const { metadata } = renderResult;
|
||||
let cacheControl = metadata.cacheControl;
|
||||
if ('isNotFound' in metadata && metadata.isNotFound) {
|
||||
return {
|
||||
value: null,
|
||||
cacheControl
|
||||
};
|
||||
}
|
||||
// Handle `isRedirect`.
|
||||
if (metadata.isRedirect) {
|
||||
return {
|
||||
value: {
|
||||
kind: CachedRouteKind.REDIRECT,
|
||||
props: metadata.pageData ?? metadata.flightData
|
||||
},
|
||||
cacheControl
|
||||
};
|
||||
}
|
||||
return {
|
||||
value: {
|
||||
kind: CachedRouteKind.PAGES,
|
||||
html: renderResult,
|
||||
pageData: renderResult.metadata.pageData,
|
||||
headers: renderResult.metadata.headers,
|
||||
status: renderResult.metadata.statusCode
|
||||
},
|
||||
cacheControl
|
||||
};
|
||||
}).finally(()=>{
|
||||
if (!span) return;
|
||||
span.setAttributes({
|
||||
'http.status_code': res.statusCode,
|
||||
'next.rsc': false
|
||||
});
|
||||
const rootSpanAttributes = tracer.getRootSpanAttributes();
|
||||
// We were unable to get attributes, probably OTEL is not enabled
|
||||
if (!rootSpanAttributes) {
|
||||
return;
|
||||
}
|
||||
if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {
|
||||
console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);
|
||||
return;
|
||||
}
|
||||
const route = rootSpanAttributes.get('next.route');
|
||||
if (route) {
|
||||
const name = `${method} ${route}`;
|
||||
span.setAttributes({
|
||||
'next.route': route,
|
||||
'http.route': route,
|
||||
'next.span_name': name
|
||||
});
|
||||
span.updateName(name);
|
||||
// Propagate http.route to the parent span if one exists
|
||||
// (e.g. a platform-created HTTP span in adapter
|
||||
// deployments).
|
||||
if (parentSpan && parentSpan !== span) {
|
||||
parentSpan.setAttribute('http.route', route);
|
||||
parentSpan.updateName(name);
|
||||
}
|
||||
} else {
|
||||
span.updateName(`${method} ${srcPage}`);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
// if this is a background revalidate we need to report
|
||||
// the request error here as it won't be bubbled
|
||||
if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {
|
||||
const silenceLog = false;
|
||||
await routeModule.onRequestError(req, err, {
|
||||
routerKind: 'Pages Router',
|
||||
routePath: srcPage,
|
||||
routeType: 'render',
|
||||
revalidateReason: getRevalidateReason({
|
||||
isStaticGeneration: hasStaticProps,
|
||||
isOnDemandRevalidate
|
||||
})
|
||||
}, silenceLog, routerServerContext);
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
};
|
||||
// if we've already generated this page we no longer
|
||||
// serve the fallback
|
||||
if (previousCacheEntry) {
|
||||
isIsrFallback = false;
|
||||
}
|
||||
if (isIsrFallback) {
|
||||
const fallbackResponse = await routeModule.getResponseCache(req).get(routeModule.isDev ? null : locale ? `/${locale}${srcPage}` : srcPage, async ({ previousCacheEntry: previousFallbackCacheEntry = null })=>{
|
||||
if (!routeModule.isDev) {
|
||||
return toResponseCacheEntry(previousFallbackCacheEntry);
|
||||
}
|
||||
return doRender();
|
||||
}, {
|
||||
routeKind: RouteKind.PAGES,
|
||||
isFallback: true,
|
||||
isRoutePPREnabled: false,
|
||||
isOnDemandRevalidate: false,
|
||||
incrementalCache: await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode),
|
||||
waitUntil: ctx.waitUntil
|
||||
});
|
||||
if (fallbackResponse) {
|
||||
// Remove the cache control from the response to prevent it from being
|
||||
// used in the surrounding cache.
|
||||
delete fallbackResponse.cacheControl;
|
||||
fallbackResponse.isMiss = true;
|
||||
return fallbackResponse;
|
||||
}
|
||||
}
|
||||
if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {
|
||||
res.statusCode = 404;
|
||||
// on-demand revalidate always sets this header
|
||||
res.setHeader('x-nextjs-cache', 'REVALIDATED');
|
||||
res.end('This page could not be found');
|
||||
return null;
|
||||
}
|
||||
if (isIsrFallback && (previousCacheEntry == null ? void 0 : (_previousCacheEntry_value = previousCacheEntry.value) == null ? void 0 : _previousCacheEntry_value.kind) === CachedRouteKind.PAGES) {
|
||||
return {
|
||||
value: {
|
||||
kind: CachedRouteKind.PAGES,
|
||||
html: new RenderResult(Buffer.from(previousCacheEntry.value.html), {
|
||||
contentType: HTML_CONTENT_TYPE_HEADER,
|
||||
metadata: {
|
||||
statusCode: previousCacheEntry.value.status,
|
||||
headers: previousCacheEntry.value.headers
|
||||
}
|
||||
}),
|
||||
pageData: {},
|
||||
status: previousCacheEntry.value.status,
|
||||
headers: previousCacheEntry.value.headers
|
||||
},
|
||||
cacheControl: {
|
||||
revalidate: 0,
|
||||
expire: undefined
|
||||
}
|
||||
};
|
||||
}
|
||||
return doRender();
|
||||
};
|
||||
const result = await routeModule.handleResponse({
|
||||
cacheKey,
|
||||
req,
|
||||
nextConfig,
|
||||
routeKind: RouteKind.PAGES,
|
||||
isOnDemandRevalidate,
|
||||
revalidateOnlyGenerated,
|
||||
waitUntil: ctx.waitUntil,
|
||||
responseGenerator: responseGenerator,
|
||||
prerenderManifest,
|
||||
isMinimalMode
|
||||
});
|
||||
// if we got a cache hit this wasn't an ISR fallback
|
||||
// but it wasn't generated during build so isn't in the
|
||||
// prerender-manifest
|
||||
if (isIsrFallback && !(result == null ? void 0 : result.isMiss)) {
|
||||
isIsrFallback = false;
|
||||
}
|
||||
// response is finished is no cache entry
|
||||
if (!result) {
|
||||
return;
|
||||
}
|
||||
if (hasStaticProps && !isMinimalMode) {
|
||||
res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : result.isMiss ? 'MISS' : result.isStale ? 'STALE' : 'HIT');
|
||||
}
|
||||
let cacheControl;
|
||||
if (!hasStaticProps || isIsrFallback) {
|
||||
if (!res.getHeader('Cache-Control')) {
|
||||
cacheControl = {
|
||||
revalidate: 0,
|
||||
expire: undefined
|
||||
};
|
||||
}
|
||||
} else if (is404Page) {
|
||||
const notFoundRevalidate = getRequestMeta(req, 'notFoundRevalidate');
|
||||
cacheControl = {
|
||||
revalidate: typeof notFoundRevalidate === 'undefined' ? 0 : notFoundRevalidate,
|
||||
expire: undefined
|
||||
};
|
||||
} else if (is500Page) {
|
||||
cacheControl = {
|
||||
revalidate: 0,
|
||||
expire: undefined
|
||||
};
|
||||
} else if (result.cacheControl) {
|
||||
// If the cache entry has a cache control with a revalidate value that's
|
||||
// a number, use it.
|
||||
if (typeof result.cacheControl.revalidate === 'number') {
|
||||
var _result_cacheControl;
|
||||
if (result.cacheControl.revalidate < 1) {
|
||||
throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${result.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", {
|
||||
value: "E22",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
cacheControl = {
|
||||
revalidate: result.cacheControl.revalidate,
|
||||
expire: ((_result_cacheControl = result.cacheControl) == null ? void 0 : _result_cacheControl.expire) ?? nextConfig.expireTime
|
||||
};
|
||||
} else {
|
||||
// revalidate: false
|
||||
cacheControl = {
|
||||
revalidate: CACHE_ONE_YEAR_SECONDS,
|
||||
expire: undefined
|
||||
};
|
||||
}
|
||||
}
|
||||
// If cache control is already set on the response we don't
|
||||
// override it to allow users to customize it via next.config
|
||||
if (cacheControl && !res.getHeader('Cache-Control')) {
|
||||
res.setHeader('Cache-Control', getCacheControlHeader(cacheControl));
|
||||
}
|
||||
// notFound: true case
|
||||
if (!result.value) {
|
||||
var _result_cacheControl1;
|
||||
// add revalidate metadata before rendering 404 page
|
||||
// so that we can use this as source of truth for the
|
||||
// cache-control header instead of what the 404 page returns
|
||||
// for the revalidate value
|
||||
addRequestMeta(req, 'notFoundRevalidate', (_result_cacheControl1 = result.cacheControl) == null ? void 0 : _result_cacheControl1.revalidate);
|
||||
res.statusCode = 404;
|
||||
if (isNextDataRequest) {
|
||||
if (deploymentId) {
|
||||
res.setHeader(NEXT_NAV_DEPLOYMENT_ID_HEADER, deploymentId);
|
||||
}
|
||||
res.end('{"notFound":true}');
|
||||
return;
|
||||
}
|
||||
return await render404();
|
||||
}
|
||||
if (result.value.kind === CachedRouteKind.REDIRECT) {
|
||||
if (isNextDataRequest) {
|
||||
if (deploymentId) {
|
||||
res.setHeader(NEXT_NAV_DEPLOYMENT_ID_HEADER, deploymentId);
|
||||
}
|
||||
res.setHeader('content-type', JSON_CONTENT_TYPE_HEADER);
|
||||
res.end(JSON.stringify(result.value.props));
|
||||
return;
|
||||
} else {
|
||||
const handleRedirect = (pageData)=>{
|
||||
const redirect = {
|
||||
destination: pageData.pageProps.__N_REDIRECT,
|
||||
statusCode: pageData.pageProps.__N_REDIRECT_STATUS,
|
||||
basePath: pageData.pageProps.__N_REDIRECT_BASE_PATH
|
||||
};
|
||||
const statusCode = getRedirectStatus(redirect);
|
||||
const { basePath } = nextConfig;
|
||||
if (basePath && redirect.basePath !== false && redirect.destination.startsWith('/')) {
|
||||
redirect.destination = `${basePath}${redirect.destination}`;
|
||||
}
|
||||
if (redirect.destination.startsWith('/')) {
|
||||
redirect.destination = normalizeRepeatedSlashes(redirect.destination);
|
||||
}
|
||||
res.statusCode = statusCode;
|
||||
res.setHeader('Location', redirect.destination);
|
||||
if (statusCode === RedirectStatusCode.PermanentRedirect) {
|
||||
res.setHeader('Refresh', `0;url=${redirect.destination}`);
|
||||
}
|
||||
res.end(redirect.destination);
|
||||
};
|
||||
await handleRedirect(result.value.props);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (result.value.kind !== CachedRouteKind.PAGES) {
|
||||
throw Object.defineProperty(new Error(`Invariant: received non-pages cache entry in pages handler`), "__NEXT_ERROR_CODE", {
|
||||
value: "E695",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
// In dev, we should not cache pages for any reason.
|
||||
if (routeModule.isDev) {
|
||||
res.setHeader('Cache-Control', 'no-cache, must-revalidate');
|
||||
}
|
||||
// Draft mode should never be cached
|
||||
if (isDraftMode) {
|
||||
res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');
|
||||
}
|
||||
// when invoking _error before pages/500 we don't actually
|
||||
// send the _error response
|
||||
if (getRequestMeta(req, 'customErrorRender') || isErrorPage && isMinimalMode && res.statusCode === 500) {
|
||||
return null;
|
||||
}
|
||||
// Add deployment ID header for data requests
|
||||
if (isNextDataRequest && !isErrorPage && !is500Page) {
|
||||
if (deploymentId) {
|
||||
res.setHeader(NEXT_NAV_DEPLOYMENT_ID_HEADER, deploymentId);
|
||||
}
|
||||
}
|
||||
await sendRenderResult({
|
||||
req,
|
||||
res,
|
||||
// If we are rendering the error page it's not a data request
|
||||
// anymore
|
||||
result: isNextDataRequest && !isErrorPage && !is500Page ? new RenderResult(Buffer.from(JSON.stringify(result.value.pageData)), {
|
||||
contentType: JSON_CONTENT_TYPE_HEADER,
|
||||
metadata: result.value.html.metadata
|
||||
}) : result.value.html,
|
||||
generateEtags: nextConfig.generateEtags,
|
||||
poweredByHeader: nextConfig.poweredByHeader,
|
||||
cacheControl: routeModule.isDev ? undefined : cacheControl
|
||||
});
|
||||
};
|
||||
// TODO: activeSpan code path is for when wrapped by
|
||||
// next-server can be removed when this is no longer used
|
||||
if (activeSpan) {
|
||||
await handleResponse();
|
||||
} else {
|
||||
parentSpan = tracer.getActiveScopeSpan();
|
||||
await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {
|
||||
spanName: `${method} ${srcPage}`,
|
||||
kind: SpanKind.SERVER,
|
||||
attributes: {
|
||||
'http.method': method,
|
||||
'http.target': req.url
|
||||
}
|
||||
}, handleResponse));
|
||||
}
|
||||
} catch (err) {
|
||||
if (!(err instanceof NoFallbackError)) {
|
||||
const silenceLog = false;
|
||||
await routeModule.onRequestError(req, err, {
|
||||
routerKind: 'Pages Router',
|
||||
routePath: srcPage,
|
||||
routeType: 'render',
|
||||
revalidateReason: getRevalidateReason({
|
||||
isStaticGeneration: hasStaticProps,
|
||||
isOnDemandRevalidate
|
||||
})
|
||||
}, silenceLog, routerServerContext);
|
||||
}
|
||||
// rethrow so that we can handle serving error page
|
||||
throw err;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//# sourceMappingURL=pages-handler.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].AppRouterContext;
|
||||
|
||||
//# sourceMappingURL=app-router-context.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/app-router-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n"],"names":["module","exports","require","vendored","AppRouterContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,gBAAgB","ignoreList":[0]}
|
||||
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
export * as RouterContext from '../../../../../shared/lib/router-context.shared-runtime';
|
||||
export * as LoadableContext from '../../../../../shared/lib/loadable-context.shared-runtime';
|
||||
export * as Loadable from '../../../../../shared/lib/loadable.shared-runtime';
|
||||
export * as ImageConfigContext from '../../../../../shared/lib/image-config-context.shared-runtime';
|
||||
export * as HtmlContext from '../../../../../shared/lib/html-context.shared-runtime';
|
||||
export * as HooksClientContext from '../../../../../shared/lib/hooks-client-context.shared-runtime';
|
||||
export * as HeadManagerContext from '../../../../../shared/lib/head-manager-context.shared-runtime';
|
||||
export * as AppRouterContext from '../../../../../shared/lib/app-router-context.shared-runtime';
|
||||
export * as ServerInsertedHtml from '../../../../../shared/lib/server-inserted-html.shared-runtime';
|
||||
|
||||
//# sourceMappingURL=entrypoints.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/entrypoints.ts"],"sourcesContent":["export * as RouterContext from '../../../../../shared/lib/router-context.shared-runtime'\nexport * as LoadableContext from '../../../../../shared/lib/loadable-context.shared-runtime'\nexport * as Loadable from '../../../../../shared/lib/loadable.shared-runtime'\nexport * as ImageConfigContext from '../../../../../shared/lib/image-config-context.shared-runtime'\nexport * as HtmlContext from '../../../../../shared/lib/html-context.shared-runtime'\nexport * as HooksClientContext from '../../../../../shared/lib/hooks-client-context.shared-runtime'\nexport * as HeadManagerContext from '../../../../../shared/lib/head-manager-context.shared-runtime'\nexport * as AppRouterContext from '../../../../../shared/lib/app-router-context.shared-runtime'\nexport * as ServerInsertedHtml from '../../../../../shared/lib/server-inserted-html.shared-runtime'\n"],"names":["RouterContext","LoadableContext","Loadable","ImageConfigContext","HtmlContext","HooksClientContext","HeadManagerContext","AppRouterContext","ServerInsertedHtml"],"mappings":"AAAA,OAAO,KAAKA,aAAa,MAAM,0DAAyD;AACxF,OAAO,KAAKC,eAAe,MAAM,4DAA2D;AAC5F,OAAO,KAAKC,QAAQ,MAAM,oDAAmD;AAC7E,OAAO,KAAKC,kBAAkB,MAAM,gEAA+D;AACnG,OAAO,KAAKC,WAAW,MAAM,wDAAuD;AACpF,OAAO,KAAKC,kBAAkB,MAAM,gEAA+D;AACnG,OAAO,KAAKC,kBAAkB,MAAM,gEAA+D;AACnG,OAAO,KAAKC,gBAAgB,MAAM,8DAA6D;AAC/F,OAAO,KAAKC,kBAAkB,MAAM,gEAA+D","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].HeadManagerContext;
|
||||
|
||||
//# sourceMappingURL=head-manager-context.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/head-manager-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HeadManagerContext\n"],"names":["module","exports","require","vendored","HeadManagerContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,kBAAkB","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].HooksClientContext;
|
||||
|
||||
//# sourceMappingURL=hooks-client-context.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/hooks-client-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n"],"names":["module","exports","require","vendored","HooksClientContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,kBAAkB","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].HtmlContext;
|
||||
|
||||
//# sourceMappingURL=html-context.js.map
|
||||
frontend/node_modules/next/dist/esm/server/route-modules/pages/vendored/contexts/html-context.js.map
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/html-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HtmlContext\n"],"names":["module","exports","require","vendored","HtmlContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,WAAW","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].ImageConfigContext;
|
||||
|
||||
//# sourceMappingURL=image-config-context.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/image-config-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ImageConfigContext\n"],"names":["module","exports","require","vendored","ImageConfigContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,kBAAkB","ignoreList":[0]}
|
||||
frontend/node_modules/next/dist/esm/server/route-modules/pages/vendored/contexts/loadable-context.js
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].LoadableContext;
|
||||
|
||||
//# sourceMappingURL=loadable-context.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/loadable-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].LoadableContext\n"],"names":["module","exports","require","vendored","LoadableContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,eAAe","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].Loadable;
|
||||
|
||||
//# sourceMappingURL=loadable.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/loadable.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].Loadable\n"],"names":["module","exports","require","vendored","Loadable"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,QAAQ","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].RouterContext;
|
||||
|
||||
//# sourceMappingURL=router-context.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/router-context.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].RouterContext\n"],"names":["module","exports","require","vendored","RouterContext"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,aAAa","ignoreList":[0]}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../module.compiled').vendored['contexts'].ServerInsertedHtml;
|
||||
|
||||
//# sourceMappingURL=server-inserted-html.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../../../../src/server/route-modules/pages/vendored/contexts/server-inserted-html.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n"],"names":["module","exports","require","vendored","ServerInsertedHtml"],"mappings":"AAAAA,OAAOC,OAAO,GAAG,AACfC,QAAQ,yBACRC,QAAQ,CAAC,WAAW,CAACC,kBAAkB","ignoreList":[0]}
|
||||
Reference in New Issue
Block a user