Files
lcbp3.np-dms.work/frontend/node_modules/next/dist/build/templates/edge-ssr.js
2025-09-21 20:29:15 +07:00

334 lines
13 KiB
JavaScript
Executable File

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
ComponentMod: null,
default: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
ComponentMod: function() {
return ComponentMod;
},
default: function() {
return nHandler;
}
});
require("../../server/web/globals");
const _adapter = require("../../server/web/adapter");
const _incrementalcache = require("../../server/lib/incremental-cache");
const _handlers = require("../../server/use-cache/handlers");
const _VAR_MODULE_DOCUMENT = /*#__PURE__*/ _interop_require_default(require("VAR_MODULE_DOCUMENT"));
const _VAR_MODULE_APP = /*#__PURE__*/ _interop_require_wildcard(require("VAR_MODULE_APP"));
const _VAR_USERLAND = /*#__PURE__*/ _interop_require_wildcard(require("VAR_USERLAND"));
const _VAR_MODULE_GLOBAL_ERROR = /*#__PURE__*/ _interop_require_wildcard(require("VAR_MODULE_GLOBAL_ERROR"));
const _module = /*#__PURE__*/ _interop_require_default(require("../../server/route-modules/pages/module"));
const _web = require("../../server/base-http/web");
const _tracer = require("../../server/lib/trace/tracer");
const _constants = require("../../server/lib/trace/constants");
const _constants1 = require("../../lib/constants");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
// INJECT:nextConfig
// INJECT:pageRouteModuleOptions
// INJECT:errorRouteModuleOptions
// INJECT:user500RouteModuleOptions
// Initialize the cache handlers interface.
(0, _handlers.initializeCacheHandlers)();
globalThis.nextConfig = nextConfig;
const pageMod = {
..._VAR_USERLAND,
routeModule: new _module.default({
...pageRouteModuleOptions,
components: {
App: _VAR_MODULE_APP.default,
Document: _VAR_MODULE_DOCUMENT.default
},
userland: _VAR_USERLAND
})
};
const errorMod = {
..._VAR_MODULE_GLOBAL_ERROR,
routeModule: new _module.default({
...errorRouteModuleOptions,
components: {
App: _VAR_MODULE_APP.default,
Document: _VAR_MODULE_DOCUMENT.default
},
userland: _VAR_MODULE_GLOBAL_ERROR
})
};
// FIXME: this needs to be made compatible with the template
const error500Mod = userland500Page ? {
...userland500Page,
routeModule: new _module.default({
...user500RouteModuleOptions,
components: {
App: _VAR_MODULE_APP.default,
Document: _VAR_MODULE_DOCUMENT.default
},
userland: userland500Page
})
} : null;
const ComponentMod = pageMod;
async function requestHandler(req, _event) {
var _nextConfig_experimental_amp, _nextConfig_i18n;
let srcPage = 'VAR_PAGE';
const relativeUrl = `${req.nextUrl.pathname}${req.nextUrl.search}`;
const baseReq = new _web.WebNextRequest(req);
const pageRouteModule = pageMod.routeModule;
const prepareResult = await pageRouteModule.prepare(baseReq, null, {
srcPage,
multiZoneDraftMode: false
});
if (!prepareResult) {
return new Response('Bad Request', {
status: 400
});
}
const { query, params, buildId, isNextDataRequest, buildManifest, prerenderManifest, reactLoadableManifest, clientReferenceManifest, subresourceIntegrityManifest, dynamicCssManifest } = prepareResult;
const renderContext = {
page: srcPage,
query,
params,
sharedContext: {
buildId,
deploymentId: process.env.NEXT_DEPLOYMENT_ID,
customServer: undefined
},
renderContext: {
isFallback: false,
isDraftMode: false,
developmentNotFoundSourcePage: undefined
},
renderOpts: {
params,
page: srcPage,
supportsDynamicResponse: true,
Component: pageMod.Component,
ComponentMod: pageMod,
pageConfig: pageMod.pageConfig,
routeModule: pageMod.routeModule,
canonicalBase: nextConfig.amp.canonicalBase || '',
previewProps: prerenderManifest.preview,
ampOptimizerConfig: (_nextConfig_experimental_amp = nextConfig.experimental.amp) == null ? void 0 : _nextConfig_experimental_amp.optimizer,
basePath: nextConfig.basePath,
assetPrefix: nextConfig.assetPrefix,
images: nextConfig.images,
optimizeCss: nextConfig.experimental.optimizeCss,
nextConfigOutput: nextConfig.output,
nextScriptWorkers: nextConfig.experimental.nextScriptWorkers,
disableOptimizedLoading: nextConfig.experimental.disableOptimizedLoading,
domainLocales: (_nextConfig_i18n = nextConfig.i18n) == null ? void 0 : _nextConfig_i18n.domains,
distDir: '',
crossOrigin: nextConfig.crossOrigin ? nextConfig.crossOrigin : undefined,
largePageDataBytes: nextConfig.experimental.largePageDataBytes,
// Only the `publicRuntimeConfig` key is exposed to the client side
// It'll be rendered as part of __NEXT_DATA__ on the client side
runtimeConfig: Object.keys(nextConfig.publicRuntimeConfig).length > 0 ? nextConfig.publicRuntimeConfig : undefined,
isExperimentalCompile: nextConfig.experimental.isExperimentalCompile,
// `htmlLimitedBots` is passed to server as serialized config in string format
experimental: {
clientTraceMetadata: nextConfig.experimental.clientTraceMetadata
},
buildManifest,
subresourceIntegrityManifest,
reactLoadableManifest,
clientReferenceManifest,
dynamicCssManifest
}
};
let finalStatus = 200;
const renderResultToResponse = (result)=>{
// Handle null responses
if (result.isNull) {
finalStatus = 500;
return new Response(null, {
status: 500
});
}
// Extract metadata
const { metadata } = result;
finalStatus = metadata.statusCode || 200;
const headers = new Headers();
// Set content type
const contentType = result.contentType || _constants1.HTML_CONTENT_TYPE_HEADER;
headers.set('Content-Type', contentType);
// Add metadata headers
if (metadata.headers) {
for (const [key, value] of Object.entries(metadata.headers)){
if (value !== undefined) {
if (Array.isArray(value)) {
// Handle multiple header values
for (const v of value){
headers.append(key, String(v));
}
} else {
headers.set(key, String(value));
}
}
}
}
// Handle static response
if (!result.isDynamic) {
const body = result.toUnchunkedString();
headers.set('Content-Length', String(new TextEncoder().encode(body).length));
return new Response(body, {
status: finalStatus,
headers
});
}
// Handle dynamic/streaming response
// For edge runtime, we need to create a readable stream that pipes from the result
const { readable, writable } = new TransformStream();
// Start piping the result to the writable stream
// This is done asynchronously to avoid blocking the response creation
result.pipeTo(writable).catch((err)=>{
console.error('Error piping RenderResult to response:', err);
});
return new Response(readable, {
status: finalStatus,
headers
});
};
const invokeRender = async (span)=>{
try {
const result = await pageRouteModule.render(// @ts-expect-error we don't type this for edge
baseReq, new _web.WebNextResponse(undefined), {
...renderContext,
renderOpts: {
...renderContext.renderOpts,
getServerSideProps: pageMod.getServerSideProps,
Component: pageMod.default || pageMod,
ComponentMod: pageMod,
pageConfig: pageMod.config,
isNextDataRequest
}
}).finally(()=>{
if (!span) return;
span.setAttributes({
'http.status_code': finalStatus,
'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') !== _constants.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 = `${req.method} ${route}`;
span.setAttributes({
'next.route': route,
'http.route': route,
'next.span_name': name
});
span.updateName(name);
} else {
span.updateName(`${req.method} ${relativeUrl}`);
}
});
return renderResultToResponse(result);
} catch (err) {
const errModule = error500Mod || errorMod;
const errRouteModule = errModule.routeModule;
if (errRouteModule.isDev) {
throw err;
}
await errRouteModule.onRequestError(baseReq, err, {
routerKind: 'Pages Router',
routePath: srcPage,
routeType: 'render',
revalidateReason: undefined
});
const errResult = await errRouteModule.render(// @ts-expect-error we don't type this for edge
baseReq, new _web.WebNextResponse(undefined), {
...renderContext,
page: error500Mod ? '/500' : '/_error',
renderOpts: {
...renderContext.renderOpts,
getServerSideProps: errModule.getServerSideProps,
Component: errModule.default || errModule,
ComponentMod: errModule,
pageConfig: errModule.config
}
});
return renderResultToResponse(errResult);
}
};
const tracer = (0, _tracer.getTracer)();
return tracer.withPropagatedContext(req.headers, ()=>tracer.trace(_constants.BaseServerSpan.handleRequest, {
spanName: `${req.method} ${relativeUrl}`,
kind: _tracer.SpanKind.SERVER,
attributes: {
'http.method': req.method,
'http.target': relativeUrl,
'http.route': srcPage
}
}, invokeRender));
}
function nHandler(opts) {
return (0, _adapter.adapter)({
...opts,
IncrementalCache: _incrementalcache.IncrementalCache,
handler: requestHandler,
incrementalCacheHandler,
bypassNextUrl: true
});
}
//# sourceMappingURL=edge-ssr.js.map