{"version":3,"sources":["../../../../src/build/templates/pages-api.ts"],"sourcesContent":["import type { NextApiResponse } from '../../types'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\n\nimport { sendError } from '../../server/api-utils'\nimport { RouteKind } from '../../server/route-kind'\nimport type { Span } from '../../server/lib/trace/tracer'\nimport { PagesAPIRouteModule } from '../../server/route-modules/pages-api/module.compiled'\n\nimport { hoist } from './helpers'\n\n// Import the userland code.\nimport * as userland from 'VAR_USERLAND'\nimport { getTracer, SpanKind } from '../../server/lib/trace/tracer'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport type { InstrumentationOnRequestError } from '../../server/instrumentation/types'\nimport {\n  addRequestMeta,\n  setRequestMeta,\n  type RequestMeta,\n} from '../../server/request-meta'\n\n// Re-export the handler (should be the default export).\nexport default hoist(userland, 'default')\n\n// Re-export config.\nexport const config = hoist(userland, 'config')\n\n// Create and export the route module that will be consumed.\nconst routeModule = new PagesAPIRouteModule({\n  definition: {\n    kind: RouteKind.PAGES_API,\n    page: 'VAR_DEFINITION_PAGE',\n    pathname: 'VAR_DEFINITION_PATHNAME',\n    // The following aren't used in production.\n    bundlePath: '',\n    filename: '',\n  },\n  userland,\n  distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n  relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n})\n\nexport async function handler(\n  req: IncomingMessage,\n  res: ServerResponse,\n  ctx: {\n    waitUntil?: (prom: Promise<void>) => void\n    requestMeta?: RequestMeta\n  }\n) {\n  if (ctx.requestMeta) {\n    setRequestMeta(req, ctx.requestMeta)\n  }\n  if (routeModule.isDev) {\n    addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n  }\n  let srcPage = 'VAR_DEFINITION_PAGE'\n\n  // turbopack doesn't normalize `/index` in the page name\n  // so we need to to process dynamic routes properly\n  // TODO: fix turbopack providing differing value from webpack\n  if (process.env.TURBOPACK) {\n    srcPage = srcPage.replace(/\\/index$/, '') || '/'\n  }\n\n  const prepareResult = await routeModule.prepare(req, res, { srcPage })\n\n  if (!prepareResult) {\n    res.statusCode = 400\n    res.end('Bad Request')\n    ctx.waitUntil?.(Promise.resolve())\n    return\n  }\n\n  const { query, params, prerenderManifest, routerServerContext } =\n    prepareResult\n\n  try {\n    const method = req.method || 'GET'\n    const tracer = getTracer()\n\n    const activeSpan = tracer.getActiveScopeSpan()\n    const isWrappedByNextServer = Boolean(\n      routerServerContext?.isWrappedByNextServer\n    )\n    const onRequestError =\n      routeModule.instrumentationOnRequestError.bind(routeModule)\n\n    let parentSpan: Span | undefined\n    const invokeRouteModule = async (span?: Span) =>\n      routeModule\n        .render(req, res, {\n          query: {\n            ...query,\n            ...params,\n          },\n          params,\n          allowedRevalidateHeaderKeys: process.env\n            .__NEXT_ALLOWED_REVALIDATE_HEADERS as any as string[],\n          multiZoneDraftMode: Boolean(process.env.__NEXT_MULTI_ZONE_DRAFT_MODE),\n          trustHostHeader: process.env\n            .__NEXT_TRUST_HOST_HEADER as any as boolean,\n          // TODO: get this from from runtime env so manifest\n          // doesn't need to load\n          previewProps: prerenderManifest.preview,\n          propagateError: false,\n          dev: routeModule.isDev,\n          page: 'VAR_DEFINITION_PAGE',\n\n          internalRevalidate: routerServerContext?.revalidate,\n\n          onError: (...args: Parameters<InstrumentationOnRequestError>) =>\n            onRequestError(req, ...args),\n        })\n        .finally(() => {\n          if (!span) return\n\n          span.setAttributes({\n            'http.status_code': res.statusCode,\n            'next.rsc': false,\n          })\n\n          const rootSpanAttributes = tracer.getRootSpanAttributes()\n          // We were unable to get attributes, probably OTEL is not enabled\n          if (!rootSpanAttributes) {\n            return\n          }\n\n          if (\n            rootSpanAttributes.get('next.span_type') !==\n            BaseServerSpan.handleRequest\n          ) {\n            console.warn(\n              `Unexpected root span type '${rootSpanAttributes.get(\n                'next.span_type'\n              )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n            )\n            return\n          }\n\n          const route = rootSpanAttributes.get('next.route')\n          if (route) {\n            const name = `${method} ${route}`\n\n            span.setAttributes({\n              'next.route': route,\n              'http.route': route,\n              'next.span_name': name,\n            })\n            span.updateName(name)\n\n            // Propagate http.route to the parent span if one exists (e.g.\n            // a platform-created HTTP span in adapter deployments).\n            if (parentSpan && parentSpan !== span) {\n              parentSpan.setAttribute('http.route', route)\n              parentSpan.updateName(name)\n            }\n          } else {\n            span.updateName(`${method} ${srcPage}`)\n          }\n        })\n\n    // TODO: activeSpan code path is for when wrapped by\n    // next-server can be removed when this is no longer used\n    if (isWrappedByNextServer && activeSpan) {\n      await invokeRouteModule(activeSpan)\n    } else {\n      parentSpan = tracer.getActiveScopeSpan()\n      await tracer.withPropagatedContext(\n        req.headers,\n        () =>\n          tracer.trace(\n            BaseServerSpan.handleRequest,\n            {\n              spanName: `${method} ${srcPage}`,\n              kind: SpanKind.SERVER,\n              attributes: {\n                'http.method': method,\n                'http.target': req.url,\n              },\n            },\n            invokeRouteModule\n          ),\n        undefined,\n        !isWrappedByNextServer\n      )\n    }\n  } catch (err) {\n    // we re-throw in dev to show the error overlay\n    if (routeModule.isDev) {\n      throw err\n    }\n    // this is technically an invariant as error handling\n    // should be done inside of api-resolver onError\n    sendError(res as NextApiResponse, 500, 'Internal Server Error')\n  } finally {\n    // We don't allow any waitUntil work in pages API routes currently\n    // so if callback is present return with resolved promise since no\n    // pending work\n    ctx.waitUntil?.(Promise.resolve())\n  }\n}\n"],"names":["sendError","RouteKind","PagesAPIRouteModule","hoist","userland","getTracer","SpanKind","BaseServerSpan","addRequestMeta","setRequestMeta","config","routeModule","definition","kind","PAGES_API","page","pathname","bundlePath","filename","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","handler","req","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","TURBOPACK","replace","prepareResult","prepare","statusCode","end","waitUntil","Promise","resolve","query","params","prerenderManifest","routerServerContext","method","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","Boolean","onRequestError","instrumentationOnRequestError","bind","parentSpan","invokeRouteModule","span","render","allowedRevalidateHeaderKeys","__NEXT_ALLOWED_REVALIDATE_HEADERS","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","trustHostHeader","__NEXT_TRUST_HOST_HEADER","previewProps","preview","propagateError","dev","internalRevalidate","revalidate","onError","args","finally","setAttributes","rootSpanAttributes","getRootSpanAttributes","get","handleRequest","console","warn","route","name","updateName","setAttribute","withPropagatedContext","headers","trace","spanName","SERVER","attributes","url","undefined","err"],"mappings":"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","ignoreList":[0]}