| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| 0 && (module.exports = { |
| NextRequestHint: null, |
| adapter: null |
| }); |
| function _export(target, all) { |
| for(var name in all)Object.defineProperty(target, name, { |
| enumerable: true, |
| get: all[name] |
| }); |
| } |
| _export(exports, { |
| NextRequestHint: function() { |
| return NextRequestHint; |
| }, |
| adapter: function() { |
| return adapter; |
| } |
| }); |
| const _error = require("./error"); |
| const _utils = require("./utils"); |
| const _fetchevent = require("./spec-extension/fetch-event"); |
| const _request = require("./spec-extension/request"); |
| const _response = require("./spec-extension/response"); |
| const _relativizeurl = require("../../shared/lib/router/utils/relativize-url"); |
| const _nexturl = require("./next-url"); |
| const _internalutils = require("../internal-utils"); |
| const _apppaths = require("../../shared/lib/router/utils/app-paths"); |
| const _approuterheaders = require("../../client/components/app-router-headers"); |
| const _globals = require("./globals"); |
| const _requeststore = require("../async-storage/request-store"); |
| const _workunitasyncstorageexternal = require("../app-render/work-unit-async-storage.external"); |
| const _workstore = require("../async-storage/work-store"); |
| const _workasyncstorageexternal = require("../app-render/work-async-storage.external"); |
| const _tracer = require("../lib/trace/tracer"); |
| const _constants = require("../lib/trace/constants"); |
| const _webonclose = require("./web-on-close"); |
| const _getedgepreviewprops = require("./get-edge-preview-props"); |
| const _builtinrequestcontext = require("../after/builtin-request-context"); |
| const _implicittags = require("../lib/implicit-tags"); |
| class NextRequestHint extends _request.NextRequest { |
| constructor(params){ |
| super(params.input, params.init); |
| this.sourcePage = params.page; |
| } |
| get request() { |
| throw Object.defineProperty(new _error.PageSignatureError({ |
| page: this.sourcePage |
| }), "__NEXT_ERROR_CODE", { |
| value: "E394", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| respondWith() { |
| throw Object.defineProperty(new _error.PageSignatureError({ |
| page: this.sourcePage |
| }), "__NEXT_ERROR_CODE", { |
| value: "E394", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| waitUntil() { |
| throw Object.defineProperty(new _error.PageSignatureError({ |
| page: this.sourcePage |
| }), "__NEXT_ERROR_CODE", { |
| value: "E394", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| } |
| const headersGetter = { |
| keys: (headers)=>Array.from(headers.keys()), |
| get: (headers, key)=>headers.get(key) ?? undefined |
| }; |
| let propagator = (request, fn)=>{ |
| const tracer = (0, _tracer.getTracer)(); |
| return tracer.withPropagatedContext(request.headers, fn, headersGetter); |
| }; |
| let testApisIntercepted = false; |
| function ensureTestApisIntercepted() { |
| if (!testApisIntercepted) { |
| testApisIntercepted = true; |
| if (process.env.NEXT_PRIVATE_TEST_PROXY === 'true') { |
| const { interceptTestApis, wrapRequestHandler } = |
| require('next/dist/experimental/testmode/server-edge'); |
| interceptTestApis(); |
| propagator = wrapRequestHandler(propagator); |
| } |
| } |
| } |
| async function adapter(params) { |
| var _getBuiltinRequestContext; |
| ensureTestApisIntercepted(); |
| await (0, _globals.ensureInstrumentationRegistered)(); |
| |
| const isEdgeRendering = typeof globalThis.__BUILD_MANIFEST !== 'undefined'; |
| params.request.url = (0, _apppaths.normalizeRscURL)(params.request.url); |
| const requestURL = params.bypassNextUrl ? new URL(params.request.url) : new _nexturl.NextURL(params.request.url, { |
| headers: params.request.headers, |
| nextConfig: params.request.nextConfig |
| }); |
| |
| |
| const keys = [ |
| ...requestURL.searchParams.keys() |
| ]; |
| for (const key of keys){ |
| const value = requestURL.searchParams.getAll(key); |
| const normalizedKey = (0, _utils.normalizeNextQueryParam)(key); |
| if (normalizedKey) { |
| requestURL.searchParams.delete(normalizedKey); |
| for (const val of value){ |
| requestURL.searchParams.append(normalizedKey, val); |
| } |
| requestURL.searchParams.delete(key); |
| } |
| } |
| |
| let buildId = process.env.__NEXT_BUILD_ID || ''; |
| if ('buildId' in requestURL) { |
| buildId = requestURL.buildId || ''; |
| requestURL.buildId = ''; |
| } |
| const requestHeaders = (0, _utils.fromNodeOutgoingHttpHeaders)(params.request.headers); |
| const isNextDataRequest = requestHeaders.has('x-nextjs-data'); |
| const isRSCRequest = requestHeaders.get(_approuterheaders.RSC_HEADER) === '1'; |
| if (isNextDataRequest && requestURL.pathname === '/index') { |
| requestURL.pathname = '/'; |
| } |
| const flightHeaders = new Map(); |
| |
| if (!isEdgeRendering) { |
| for (const header of _approuterheaders.FLIGHT_HEADERS){ |
| const value = requestHeaders.get(header); |
| if (value !== null) { |
| flightHeaders.set(header, value); |
| requestHeaders.delete(header); |
| } |
| } |
| } |
| const normalizeURL = process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE ? new URL(params.request.url) : requestURL; |
| const rscHash = normalizeURL.searchParams.get(_approuterheaders.NEXT_RSC_UNION_QUERY); |
| const request = new NextRequestHint({ |
| page: params.page, |
| |
| input: (0, _internalutils.stripInternalSearchParams)(normalizeURL).toString(), |
| init: { |
| body: params.request.body, |
| headers: requestHeaders, |
| method: params.request.method, |
| nextConfig: params.request.nextConfig, |
| signal: params.request.signal |
| } |
| }); |
| |
| |
| |
| |
| if (isNextDataRequest) { |
| Object.defineProperty(request, '__isData', { |
| enumerable: false, |
| value: true |
| }); |
| } |
| if ( |
| |
| |
| !globalThis.__incrementalCacheShared && params.IncrementalCache) { |
| ; |
| globalThis.__incrementalCache = new params.IncrementalCache({ |
| CurCacheHandler: params.incrementalCacheHandler, |
| minimalMode: process.env.NODE_ENV !== 'development', |
| fetchCacheKeyPrefix: process.env.__NEXT_FETCH_CACHE_KEY_PREFIX, |
| dev: process.env.NODE_ENV === 'development', |
| requestHeaders: params.request.headers, |
| getPrerenderManifest: ()=>{ |
| return { |
| version: -1, |
| routes: {}, |
| dynamicRoutes: {}, |
| notFoundRoutes: [], |
| preview: (0, _getedgepreviewprops.getEdgePreviewProps)() |
| }; |
| } |
| }); |
| } |
| |
| |
| const outerWaitUntil = params.request.waitUntil ?? ((_getBuiltinRequestContext = (0, _builtinrequestcontext.getBuiltinRequestContext)()) == null ? void 0 : _getBuiltinRequestContext.waitUntil); |
| const event = new _fetchevent.NextFetchEvent({ |
| request, |
| page: params.page, |
| context: outerWaitUntil ? { |
| waitUntil: outerWaitUntil |
| } : undefined |
| }); |
| let response; |
| let cookiesFromResponse; |
| response = await propagator(request, ()=>{ |
| |
| const isMiddleware = params.page === '/middleware' || params.page === '/src/middleware'; |
| if (isMiddleware) { |
| |
| |
| |
| const waitUntil = event.waitUntil.bind(event); |
| const closeController = new _webonclose.CloseController(); |
| return (0, _tracer.getTracer)().trace(_constants.MiddlewareSpan.execute, { |
| spanName: `middleware ${request.method} ${request.nextUrl.pathname}`, |
| attributes: { |
| 'http.target': request.nextUrl.pathname, |
| 'http.method': request.method |
| } |
| }, async ()=>{ |
| try { |
| var _params_request_nextConfig_experimental, _params_request_nextConfig, _params_request_nextConfig_experimental1, _params_request_nextConfig1; |
| const onUpdateCookies = (cookies)=>{ |
| cookiesFromResponse = cookies; |
| }; |
| const previewProps = (0, _getedgepreviewprops.getEdgePreviewProps)(); |
| const page = '/' |
| ; |
| const fallbackRouteParams = null; |
| const implicitTags = await (0, _implicittags.getImplicitTags)(page, request.nextUrl, fallbackRouteParams); |
| const requestStore = (0, _requeststore.createRequestStoreForAPI)(request, request.nextUrl, implicitTags, onUpdateCookies, previewProps); |
| const workStore = (0, _workstore.createWorkStore)({ |
| page, |
| renderOpts: { |
| cacheLifeProfiles: (_params_request_nextConfig = params.request.nextConfig) == null ? void 0 : (_params_request_nextConfig_experimental = _params_request_nextConfig.experimental) == null ? void 0 : _params_request_nextConfig_experimental.cacheLife, |
| experimental: { |
| isRoutePPREnabled: false, |
| cacheComponents: false, |
| authInterrupts: !!((_params_request_nextConfig1 = params.request.nextConfig) == null ? void 0 : (_params_request_nextConfig_experimental1 = _params_request_nextConfig1.experimental) == null ? void 0 : _params_request_nextConfig_experimental1.authInterrupts) |
| }, |
| supportsDynamicResponse: true, |
| waitUntil, |
| onClose: closeController.onClose.bind(closeController), |
| onAfterTaskError: undefined |
| }, |
| isPrefetchRequest: request.headers.get(_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER) === '1', |
| buildId: buildId ?? '', |
| previouslyRevalidatedTags: [] |
| }); |
| return await _workasyncstorageexternal.workAsyncStorage.run(workStore, ()=>_workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, params.handler, request, event)); |
| } finally{ |
| |
| |
| |
| |
| setTimeout(()=>{ |
| closeController.dispatchClose(); |
| }, 0); |
| } |
| }); |
| } |
| return params.handler(request, event); |
| }); |
| |
| if (response && !(response instanceof Response)) { |
| throw Object.defineProperty(new TypeError('Expected an instance of Response to be returned'), "__NEXT_ERROR_CODE", { |
| value: "E567", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| if (response && cookiesFromResponse) { |
| response.headers.set('set-cookie', cookiesFromResponse); |
| } |
| |
| |
| |
| |
| |
| const rewrite = response == null ? void 0 : response.headers.get('x-middleware-rewrite'); |
| if (response && rewrite && (isRSCRequest || !isEdgeRendering)) { |
| const destination = new _nexturl.NextURL(rewrite, { |
| forceLocale: true, |
| headers: params.request.headers, |
| nextConfig: params.request.nextConfig |
| }); |
| if (!process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE && !isEdgeRendering) { |
| if (destination.host === request.nextUrl.host) { |
| destination.buildId = buildId || destination.buildId; |
| response.headers.set('x-middleware-rewrite', String(destination)); |
| } |
| } |
| |
| |
| |
| |
| const { url: relativeDestination, isRelative } = (0, _relativizeurl.parseRelativeURL)(destination.toString(), requestURL.toString()); |
| if (!isEdgeRendering && isNextDataRequest && |
| |
| |
| !(process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE && relativeDestination.match(/http(s)?:\/\//))) { |
| response.headers.set('x-nextjs-rewrite', relativeDestination); |
| } |
| |
| |
| |
| if (isRSCRequest && isRelative) { |
| if (requestURL.pathname !== destination.pathname) { |
| response.headers.set(_approuterheaders.NEXT_REWRITTEN_PATH_HEADER, destination.pathname); |
| } |
| if (requestURL.search !== destination.search) { |
| response.headers.set(_approuterheaders.NEXT_REWRITTEN_QUERY_HEADER, |
| destination.search.slice(1)); |
| } |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| if (response && rewrite && isRSCRequest && rscHash) { |
| const rewriteURL = new URL(rewrite); |
| if (!rewriteURL.searchParams.has(_approuterheaders.NEXT_RSC_UNION_QUERY)) { |
| rewriteURL.searchParams.set(_approuterheaders.NEXT_RSC_UNION_QUERY, rscHash); |
| response.headers.set('x-middleware-rewrite', rewriteURL.toString()); |
| } |
| } |
| |
| |
| |
| |
| const redirect = response == null ? void 0 : response.headers.get('Location'); |
| if (response && redirect && !isEdgeRendering) { |
| const redirectURL = new _nexturl.NextURL(redirect, { |
| forceLocale: false, |
| headers: params.request.headers, |
| nextConfig: params.request.nextConfig |
| }); |
| |
| |
| |
| response = new Response(response.body, response); |
| if (!process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE) { |
| if (redirectURL.host === requestURL.host) { |
| redirectURL.buildId = buildId || redirectURL.buildId; |
| response.headers.set('Location', redirectURL.toString()); |
| } |
| } |
| |
| |
| |
| |
| if (isNextDataRequest) { |
| response.headers.delete('Location'); |
| response.headers.set('x-nextjs-redirect', (0, _relativizeurl.getRelativeURL)(redirectURL.toString(), requestURL.toString())); |
| } |
| } |
| const finalResponse = response ? response : _response.NextResponse.next(); |
| |
| const middlewareOverrideHeaders = finalResponse.headers.get('x-middleware-override-headers'); |
| const overwrittenHeaders = []; |
| if (middlewareOverrideHeaders) { |
| for (const [key, value] of flightHeaders){ |
| finalResponse.headers.set(`x-middleware-request-${key}`, value); |
| overwrittenHeaders.push(key); |
| } |
| if (overwrittenHeaders.length > 0) { |
| finalResponse.headers.set('x-middleware-override-headers', middlewareOverrideHeaders + ',' + overwrittenHeaders.join(',')); |
| } |
| } |
| return { |
| response: finalResponse, |
| waitUntil: (0, _fetchevent.getWaitUntilPromiseFromEvent)(event) ?? Promise.resolve(), |
| fetchMetrics: request.fetchMetrics |
| }; |
| } |
|
|
| |