{"version":3,"sources":["jsdelivr-header.js","/npm/next@16.0.10/src/server/next.ts"],"names":[],"mappings":"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","file":"/npm/next@16.0.10/dist/server/next.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/next@16.0.10/dist/server/next.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import type { Options as DevServerOptions } from './dev/next-dev-server'\nimport type {\n  NodeRequestHandler,\n  Options as ServerOptions,\n} from './next-server'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { Duplex } from 'stream'\nimport type { NextUrlWithParsedQuery, RequestMeta } from './request-meta'\n\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { default as NextNodeServer } from './next-server'\nimport * as log from '../build/output/log'\nimport loadConfig from './config'\nimport path from 'node:path'\nimport { NON_STANDARD_NODE_ENV } from '../lib/constants'\nimport {\n  PHASE_DEVELOPMENT_SERVER,\n  SERVER_FILES_MANIFEST,\n} from '../shared/lib/constants'\nimport { PHASE_PRODUCTION_SERVER } from '../shared/lib/constants'\nimport { getTracer } from './lib/trace/tracer'\nimport { NextServerSpan } from './lib/trace/constants'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport type { ServerFields } from './lib/router-utils/setup-dev-bundler'\nimport type { ServerInitResult } from './lib/render-server'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\nimport {\n  RouterServerContextSymbol,\n  routerServerGlobal,\n} from './lib/router-utils/router-server-context'\n\nlet ServerImpl: typeof NextNodeServer\n\nconst getServerImpl = async () => {\n  if (ServerImpl === undefined) {\n    ServerImpl = (\n      await Promise.resolve(\n        require('./next-server') as typeof import('./next-server')\n      )\n    ).default\n  }\n  return ServerImpl\n}\n\nexport type NextServerOptions = Omit<\n  ServerOptions | DevServerOptions,\n  // This is assigned in this server abstraction.\n  'conf'\n> &\n  Partial<Pick<ServerOptions | DevServerOptions, 'conf'>>\n\nexport type NextBundlerOptions = {\n  /** @deprecated Use `turbopack` instead */\n  turbo?: boolean\n  /** Selects Turbopack as the bundler */\n  turbopack?: boolean\n  /** Selects Webpack as the bundler */\n  webpack?: boolean\n}\n\nexport type RequestHandler = (\n  req: IncomingMessage,\n  res: ServerResponse,\n  parsedUrl?: NextUrlWithParsedQuery | undefined\n) => Promise<void>\n\nexport type UpgradeHandler = (\n  req: IncomingMessage,\n  socket: Duplex,\n  head: Buffer\n) => Promise<void>\n\nconst SYMBOL_LOAD_CONFIG = Symbol('next.load_config')\n\ninterface NextWrapperServer {\n  // NOTE: the methods/properties here are the public API for custom servers.\n  // Consider backwards compatibilty when changing something here!\n\n  options: NextServerOptions\n  hostname: string | undefined\n  port: number | undefined\n\n  getRequestHandler(): RequestHandler\n  prepare(serverFields?: ServerFields): Promise<void>\n  setAssetPrefix(assetPrefix: string): void\n  close(): Promise<void>\n\n  // used internally\n  getUpgradeHandler(): UpgradeHandler\n\n  // legacy methods that we left exposed in the past\n\n  logError(...args: Parameters<NextNodeServer['logError']>): void\n\n  revalidate(\n    ...args: Parameters<NextNodeServer['revalidate']>\n  ): ReturnType<NextNodeServer['revalidate']>\n\n  logErrorWithOriginalStack(err: unknown, type: string): void\n\n  render(\n    ...args: Parameters<NextNodeServer['render']>\n  ): ReturnType<NextNodeServer['render']>\n\n  renderToHTML(\n    ...args: Parameters<NextNodeServer['renderToHTML']>\n  ): ReturnType<NextNodeServer['renderToHTML']>\n\n  renderError(\n    ...args: Parameters<NextNodeServer['renderError']>\n  ): ReturnType<NextNodeServer['renderError']>\n\n  renderErrorToHTML(\n    ...args: Parameters<NextNodeServer['renderErrorToHTML']>\n  ): ReturnType<NextNodeServer['renderErrorToHTML']>\n\n  render404(\n    ...args: Parameters<NextNodeServer['render404']>\n  ): ReturnType<NextNodeServer['render404']>\n}\n\n/** The wrapper server used by `next start` */\nexport class NextServer implements NextWrapperServer {\n  private serverPromise?: Promise<NextNodeServer>\n  private server?: NextNodeServer\n  private reqHandler?: NodeRequestHandler\n  private reqHandlerPromise?: Promise<NodeRequestHandler>\n  private preparedAssetPrefix?: string\n\n  public options: NextServerOptions\n\n  constructor(options: NextServerOptions) {\n    this.options = options\n  }\n\n  get hostname() {\n    return this.options.hostname\n  }\n\n  get port() {\n    return this.options.port\n  }\n\n  getRequestHandler(): RequestHandler {\n    return async (\n      req: IncomingMessage,\n      res: ServerResponse,\n      parsedUrl?: UrlWithParsedQuery\n    ) => {\n      return getTracer().trace(NextServerSpan.getRequestHandler, async () => {\n        const requestHandler = await this.getServerRequestHandler()\n        return requestHandler(req, res, parsedUrl)\n      })\n    }\n  }\n\n  /**\n   * @internal - this method is internal to Next.js and should not be used\n   * directly by end-users, only used in testing\n   */\n  getRequestHandlerWithMetadata(meta: RequestMeta): RequestHandler {\n    return async (\n      req: IncomingMessage,\n      res: ServerResponse,\n      parsedUrl?: UrlWithParsedQuery\n    ) => {\n      return getTracer().trace(\n        NextServerSpan.getRequestHandlerWithMetadata,\n        async () => {\n          const server = await this.getServer()\n          const handler = server.getRequestHandlerWithMetadata(meta)\n          return handler(req, res, parsedUrl)\n        }\n      )\n    }\n  }\n\n  getUpgradeHandler(): UpgradeHandler {\n    return async (req: IncomingMessage, socket: any, head: any) => {\n      const server = await this.getServer()\n      // @ts-expect-error we mark this as protected so it\n      // causes an error here\n      return server.handleUpgrade.apply(server, [req, socket, head])\n    }\n  }\n\n  setAssetPrefix(assetPrefix: string) {\n    if (this.server) {\n      this.server.setAssetPrefix(assetPrefix)\n    } else {\n      this.preparedAssetPrefix = assetPrefix\n    }\n  }\n\n  logError(...args: Parameters<NextWrapperServer['logError']>) {\n    if (this.server) {\n      this.server.logError(...args)\n    }\n  }\n\n  async logErrorWithOriginalStack(err: unknown, type: string) {\n    const server = await this.getServer()\n    // this is only available on dev server\n    if ((server as any).logErrorWithOriginalStack) {\n      return (server as any).logErrorWithOriginalStack(err, type)\n    }\n  }\n\n  async revalidate(...args: Parameters<NextWrapperServer['revalidate']>) {\n    const server = await this.getServer()\n    return server.revalidate(...args)\n  }\n\n  async render(...args: Parameters<NextWrapperServer['render']>) {\n    const server = await this.getServer()\n    return server.render(...args)\n  }\n\n  async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n    const server = await this.getServer()\n    return server.renderToHTML(...args)\n  }\n\n  async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n    const server = await this.getServer()\n    return server.renderError(...args)\n  }\n\n  async renderErrorToHTML(\n    ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n  ) {\n    const server = await this.getServer()\n    return server.renderErrorToHTML(...args)\n  }\n\n  async render404(...args: Parameters<NextWrapperServer['render404']>) {\n    const server = await this.getServer()\n    return server.render404(...args)\n  }\n\n  async prepare(serverFields?: ServerFields) {\n    const server = await this.getServer()\n\n    if (serverFields) {\n      Object.assign(server, serverFields)\n    }\n    // We shouldn't prepare the server in production,\n    // because this code won't be executed when deployed\n    if (this.options.dev) {\n      await server.prepare()\n    }\n  }\n\n  async close() {\n    if (this.server) {\n      await this.server.close()\n    }\n  }\n\n  private async createServer(\n    options: ServerOptions | DevServerOptions\n  ): Promise<NextNodeServer> {\n    let ServerImplementation: typeof NextNodeServer\n    if (options.dev) {\n      ServerImplementation = (\n        require('./dev/next-dev-server') as typeof import('./dev/next-dev-server')\n      ).default as typeof import('./dev/next-dev-server').default\n    } else {\n      ServerImplementation = await getServerImpl()\n    }\n    const server = new ServerImplementation(options)\n\n    return server\n  }\n\n  private async [SYMBOL_LOAD_CONFIG]() {\n    const dir = path.resolve(\n      /* turbopackIgnore: true */ this.options.dir || '.'\n    )\n\n    const config = await loadConfig(\n      this.options.dev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_SERVER,\n      dir,\n      {\n        customConfig: this.options.conf,\n        silent: true,\n      }\n    )\n\n    // check serialized build config when available\n    if (!this.options.dev) {\n      try {\n        const serializedConfig = require(\n          /* turbopackIgnore: true */\n          path.join(\n            /* turbopackIgnore: true */ dir,\n            config.distDir,\n            SERVER_FILES_MANIFEST\n          )\n        ).config\n\n        config.experimental.isExperimentalCompile =\n          serializedConfig.experimental.isExperimentalCompile\n      } catch (_) {\n        // if distDir is customized we don't know until we\n        // load the config so fallback to loading the config\n        // from next.config.js\n      }\n    }\n\n    return config\n  }\n\n  private async getServer() {\n    if (!this.serverPromise) {\n      this.serverPromise = this[SYMBOL_LOAD_CONFIG]().then(async (conf) => {\n        if (!this.options.dev) {\n          if (conf.output === 'standalone') {\n            if (!process.env.__NEXT_PRIVATE_STANDALONE_CONFIG) {\n              log.warn(\n                `\"next start\" does not work with \"output: standalone\" configuration. Use \"node .next/standalone/server.js\" instead.`\n              )\n            }\n          } else if (conf.output === 'export') {\n            throw new Error(\n              `\"next start\" does not work with \"output: export\" configuration. Use \"npx serve@latest out\" instead.`\n            )\n          }\n        }\n\n        this.server = await this.createServer({\n          ...this.options,\n          conf,\n        })\n        if (this.preparedAssetPrefix) {\n          this.server.setAssetPrefix(this.preparedAssetPrefix)\n        }\n        return this.server\n      })\n    }\n    return this.serverPromise\n  }\n\n  private async getServerRequestHandler() {\n    if (this.reqHandler) return this.reqHandler\n\n    // Memoize request handler creation\n    if (!this.reqHandlerPromise) {\n      this.reqHandlerPromise = this.getServer().then((server) => {\n        this.reqHandler = getTracer().wrap(\n          NextServerSpan.getServerRequestHandler,\n          server.getRequestHandler().bind(server)\n        )\n        delete this.reqHandlerPromise\n        return this.reqHandler\n      })\n    }\n    return this.reqHandlerPromise\n  }\n}\n\n/** The wrapper server used for `import next from \"next\" (in a custom server)` */\nclass NextCustomServer implements NextWrapperServer {\n  private didWebSocketSetup: boolean = false\n  protected cleanupListeners?: AsyncCallbackSet\n\n  protected init?: ServerInitResult\n\n  public options: NextServerOptions\n\n  constructor(options: NextServerOptions) {\n    this.options = options\n  }\n\n  protected getInit() {\n    if (!this.init) {\n      throw new Error(\n        'prepare() must be called before performing this operation'\n      )\n    }\n    return this.init\n  }\n\n  protected get requestHandler() {\n    return this.getInit().requestHandler\n  }\n  protected get upgradeHandler() {\n    return this.getInit().upgradeHandler\n  }\n  protected get server() {\n    return this.getInit().server\n  }\n\n  get hostname() {\n    return this.options.hostname\n  }\n\n  get port() {\n    return this.options.port\n  }\n\n  async prepare() {\n    const { getRequestHandlers } =\n      require('./lib/start-server') as typeof import('./lib/start-server')\n\n    let onDevServerCleanup: AsyncCallbackSet['add'] | undefined\n    if (this.options.dev) {\n      this.cleanupListeners = new AsyncCallbackSet()\n      onDevServerCleanup = this.cleanupListeners.add.bind(this.cleanupListeners)\n    }\n\n    const initResult = await getRequestHandlers({\n      dir: this.options.dir!,\n      port: this.options.port || 3000,\n      isDev: !!this.options.dev,\n      onDevServerCleanup,\n      hostname: this.options.hostname || 'localhost',\n      minimalMode: this.options.minimalMode,\n      quiet: this.options.quiet,\n    })\n    this.init = initResult\n  }\n\n  private setupWebSocketHandler(\n    customServer?: import('http').Server,\n    _req?: IncomingMessage\n  ) {\n    if (!this.didWebSocketSetup) {\n      this.didWebSocketSetup = true\n      customServer = customServer || (_req?.socket as any)?.server\n\n      if (customServer) {\n        customServer.on('upgrade', async (req, socket, head) => {\n          this.upgradeHandler(req, socket, head)\n        })\n      }\n    }\n  }\n\n  getRequestHandler(): RequestHandler {\n    return async (\n      req: IncomingMessage,\n      res: ServerResponse,\n      parsedUrl?: UrlWithParsedQuery\n    ) => {\n      this.setupWebSocketHandler(this.options.httpServer, req)\n\n      if (parsedUrl) {\n        req.url = formatUrl(parsedUrl)\n      }\n\n      return this.requestHandler(req, res)\n    }\n  }\n\n  async render(...args: Parameters<NextWrapperServer['render']>) {\n    let [req, res, pathname, query, parsedUrl] = args\n    this.setupWebSocketHandler(this.options.httpServer, req as IncomingMessage)\n\n    if (!pathname.startsWith('/')) {\n      console.error(`Cannot render page with path \"${pathname}\"`)\n      pathname = `/${pathname}`\n    }\n    pathname = pathname === '/index' ? '/' : pathname\n\n    req.url = formatUrl({\n      ...parsedUrl,\n      pathname,\n      query,\n    })\n\n    await this.requestHandler(req as IncomingMessage, res as ServerResponse)\n    return\n  }\n\n  setAssetPrefix(assetPrefix: string): void {\n    this.server.setAssetPrefix(assetPrefix)\n\n    // update the router-server nextConfig instance as\n    // this is the source of truth for \"handler\" in serverful\n    const relativeProjectDir = path.relative(\n      process.cwd(),\n      this.options.dir || ''\n    )\n\n    if (\n      routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]\n        ?.nextConfig\n    ) {\n      routerServerGlobal[RouterServerContextSymbol][\n        relativeProjectDir\n      ].nextConfig.assetPrefix = assetPrefix\n    }\n  }\n\n  getUpgradeHandler(): UpgradeHandler {\n    return this.server.getUpgradeHandler()\n  }\n\n  logError(...args: Parameters<NextWrapperServer['logError']>) {\n    this.server.logError(...args)\n  }\n\n  logErrorWithOriginalStack(err: unknown, type: string) {\n    return this.server.logErrorWithOriginalStack(err, type)\n  }\n\n  async revalidate(...args: Parameters<NextWrapperServer['revalidate']>) {\n    return this.server.revalidate(...args)\n  }\n\n  async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n    return this.server.renderToHTML(...args)\n  }\n\n  async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n    return this.server.renderError(...args)\n  }\n\n  async renderErrorToHTML(\n    ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n  ) {\n    return this.server.renderErrorToHTML(...args)\n  }\n\n  async render404(...args: Parameters<NextWrapperServer['render404']>) {\n    return this.server.render404(...args)\n  }\n\n  async close() {\n    await Promise.allSettled([\n      this.init?.server.close(),\n      this.cleanupListeners?.runAll(),\n    ])\n  }\n}\n\n// This file is used for when users run `require('next')`\nfunction createServer(\n  options: NextServerOptions & NextBundlerOptions\n): NextWrapperServer {\n  // next sets customServer to false when calling this function, in that case we don't want to modify the environment variables\n  const isCustomServer = options?.customServer ?? true\n  if (isCustomServer) {\n    const selectTurbopack =\n      options &&\n      (options.turbo || options.turbopack || process.env.IS_TURBOPACK_TEST)\n    const selectWebpack =\n      options && (options.webpack || process.env.IS_WEBPACK_TEST)\n    if (selectTurbopack && selectWebpack) {\n      throw new Error('Pass either `webpack` or `turbopack`, not both.')\n    }\n    if (selectTurbopack || !selectWebpack) {\n      process.env.TURBOPACK ??= selectTurbopack ? '1' : 'auto'\n    }\n  } else {\n    if (options && (options.webpack || options.turbo || options.turbopack)) {\n      throw new Error(\n        'Only custom servers can pass `webpack`, `turbo`, or `turbopack`.'\n      )\n    }\n  }\n\n  // The package is used as a TypeScript plugin.\n  if (\n    options &&\n    'typescript' in options &&\n    'version' in (options as any).typescript\n  ) {\n    const pluginMod: typeof import('./next-typescript') =\n      require('./next-typescript') as typeof import('./next-typescript')\n    return pluginMod.createTSPlugin(\n      options as any\n    ) as unknown as NextWrapperServer\n  }\n\n  if (options == null) {\n    throw new Error(\n      'The server has not been instantiated properly. https://nextjs.org/docs/messages/invalid-server-options'\n    )\n  }\n\n  if (\n    !('isNextDevCommand' in options) &&\n    process.env.NODE_ENV &&\n    !['production', 'development', 'test'].includes(process.env.NODE_ENV)\n  ) {\n    log.warn(NON_STANDARD_NODE_ENV)\n  }\n\n  if (options.dev && typeof options.dev !== 'boolean') {\n    console.warn(\n      \"Warning: 'dev' is not a boolean which could introduce unexpected behavior. https://nextjs.org/docs/messages/invalid-server-options\"\n    )\n  }\n\n  // When the caller is a custom server (using next()).\n  if (options.customServer !== false) {\n    const dir = path.resolve(/* turbopackIgnore: true */ options.dir || '.')\n\n    return new NextCustomServer({\n      ...options,\n      dir,\n    })\n  }\n\n  // When the caller is Next.js internals (i.e. render worker, start server, etc)\n  return new NextServer(options)\n}\n\n// Support commonjs `require('next')`\nmodule.exports = createServer\n// exports = module.exports\n\n// Support `import next from 'next'`\nexport default createServer\n"]}