334 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 |