next 15.5.1-canary.32 → 15.5.1-canary.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +2 -2
- package/dist/build/load-jsconfig.js +1 -1
- package/dist/build/load-jsconfig.js.map +1 -1
- package/dist/build/next-config-ts/transpile-config.js +26 -0
- package/dist/build/next-config-ts/transpile-config.js.map +1 -1
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/cli/next-test.js +1 -1
- package/dist/cli/next-test.js.map +1 -1
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
- package/dist/esm/build/index.js +2 -2
- package/dist/esm/build/load-jsconfig.js +1 -1
- package/dist/esm/build/load-jsconfig.js.map +1 -1
- package/dist/esm/build/next-config-ts/transpile-config.js +27 -1
- package/dist/esm/build/next-config-ts/transpile-config.js.map +1 -1
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/lib/eslint/runLintCheck.js +1 -1
- package/dist/esm/lib/eslint/runLintCheck.js.map +1 -1
- package/dist/esm/lib/has-necessary-dependencies.js +9 -7
- package/dist/esm/lib/has-necessary-dependencies.js.map +1 -1
- package/dist/esm/lib/verify-partytown-setup.js +1 -1
- package/dist/esm/lib/verify-partytown-setup.js.map +1 -1
- package/dist/esm/lib/verify-typescript-setup.js +2 -2
- package/dist/esm/lib/verify-typescript-setup.js.map +1 -1
- package/dist/esm/server/config-shared.js +1 -1
- package/dist/esm/server/config-shared.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +13 -3
- package/dist/esm/server/dev/hot-reloader-turbopack.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/server/lib/utils.js +1 -1
- package/dist/esm/server/lib/utils.js.map +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/lib/eslint/runLintCheck.js +1 -1
- package/dist/lib/eslint/runLintCheck.js.map +1 -1
- package/dist/lib/has-necessary-dependencies.d.ts +1 -1
- package/dist/lib/has-necessary-dependencies.js +8 -6
- package/dist/lib/has-necessary-dependencies.js.map +1 -1
- package/dist/lib/verify-partytown-setup.js +1 -1
- package/dist/lib/verify-partytown-setup.js.map +1 -1
- package/dist/lib/verify-typescript-setup.js +2 -2
- package/dist/lib/verify-typescript-setup.js.map +1 -1
- package/dist/server/config-shared.d.ts +1 -3
- package/dist/server/config-shared.js +1 -1
- package/dist/server/config-shared.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +13 -3
- package/dist/server/dev/hot-reloader-turbopack.js.map +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/server/lib/utils.d.ts +7 -0
- package/dist/server/lib/utils.js +5 -6
- package/dist/server/lib/utils.js.map +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/server/dev/hot-reloader-turbopack.ts"],"sourcesContent":["import type { Socket } from 'net'\nimport { mkdir, writeFile } from 'fs/promises'\nimport { join, extname, relative } from 'path'\nimport { pathToFileURL } from 'url'\n\nimport ws from 'next/dist/compiled/ws'\n\nimport type { OutputState } from '../../build/output/store'\nimport { store as consoleStore } from '../../build/output/store'\nimport type {\n CompilationError,\n HmrMessageSentToBrowser,\n NextJsHotReloaderInterface,\n ReloadPageMessage,\n SyncMessage,\n TurbopackConnectedMessage,\n} from './hot-reloader-types'\nimport { HMR_MESSAGE_SENT_TO_BROWSER } from './hot-reloader-types'\nimport type {\n Update as TurbopackUpdate,\n Endpoint,\n WrittenEndpoint,\n TurbopackResult,\n Project,\n Entrypoints,\n} from '../../build/swc/types'\nimport { createDefineEnv } from '../../build/swc'\nimport * as Log from '../../build/output/log'\nimport {\n getVersionInfo,\n matchNextPageBundleRequest,\n} from './hot-reloader-webpack'\nimport { BLOCKED_PAGES } from '../../shared/lib/constants'\nimport {\n getOverlayMiddleware,\n getSourceMapMiddleware,\n} from './middleware-turbopack'\nimport { PageNotFoundError } from '../../shared/lib/utils'\nimport { debounce } from '../utils'\nimport { deleteCache } from './require-cache'\nimport {\n clearAllModuleContexts,\n clearModuleContext,\n} from '../lib/render-server'\nimport { denormalizePagePath } from '../../shared/lib/page-path/denormalize-page-path'\nimport { trace } from '../../trace'\nimport {\n AssetMapper,\n type ChangeSubscriptions,\n type ClientState,\n handleEntrypoints,\n handlePagesErrorRoute,\n handleRouteType,\n hasEntrypointForKey,\n msToNs,\n type ReadyIds,\n type SendHmr,\n type StartBuilding,\n processTopLevelIssues,\n printNonFatalIssue,\n normalizedPageToTurbopackStructureRoute,\n} from './turbopack-utils'\nimport {\n propagateServerField,\n type ServerFields,\n type SetupOpts,\n} from '../lib/router-utils/setup-dev-bundler'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { findPagePathData } from './on-demand-entry-handler'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport {\n type EntryKey,\n getEntryKey,\n splitEntryKey,\n} from '../../shared/lib/turbopack/entry-key'\nimport {\n createBinaryHmrMessageData,\n FAST_REFRESH_RUNTIME_RELOAD,\n} from './messages'\nimport { generateEncryptionKeyBase64 } from '../app-render/encryption-utils-server'\nimport { isAppPageRouteDefinition } from '../route-definitions/app-page-route-definition'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport type { ModernSourceMapPayload } from '../lib/source-maps'\nimport { getNodeDebugType } from '../lib/utils'\nimport { isMetadataRouteFile } from '../../lib/metadata/is-metadata-route'\nimport { setBundlerFindSourceMapImplementation } from '../patch-error-inspect'\nimport { getNextErrorFeedbackMiddleware } from '../../next-devtools/server/get-next-error-feedback-middleware'\nimport {\n formatIssue,\n isPersistentCachingEnabled,\n isWellKnownError,\n processIssues,\n renderStyledStringToErrorAnsi,\n type EntryIssuesMap,\n type TopLevelIssuesMap,\n} from '../../shared/lib/turbopack/utils'\nimport { getDevOverlayFontMiddleware } from '../../next-devtools/server/font/get-dev-overlay-font-middleware'\nimport { devIndicatorServerState } from './dev-indicator-server-state'\nimport { getDisableDevIndicatorMiddleware } from '../../next-devtools/server/dev-indicator-middleware'\nimport { getRestartDevServerMiddleware } from '../../next-devtools/server/restart-dev-server-middleware'\nimport { backgroundLogCompilationEvents } from '../../shared/lib/turbopack/compilation-events'\nimport { getSupportedBrowsers } from '../../build/utils'\nimport { receiveBrowserLogsTurbopack } from './browser-logs/receive-logs'\nimport { normalizePath } from '../../lib/normalize-path'\nimport {\n devToolsConfigMiddleware,\n getDevToolsConfig,\n} from '../../next-devtools/server/devtools-config-middleware'\nimport {\n connectReactDebugChannel,\n deleteReactDebugChannel,\n setReactDebugChannel,\n} from './debug-channel'\n\nconst wsServer = new ws.Server({ noServer: true })\nconst isTestMode = !!(\n process.env.NEXT_TEST_MODE ||\n process.env.__NEXT_TEST_MODE ||\n process.env.DEBUG\n)\n\nconst sessionId = Math.floor(Number.MAX_SAFE_INTEGER * Math.random())\n\ndeclare const __next__clear_chunk_cache__: (() => void) | null | undefined\n\n/**\n * Replaces turbopack:///[project] with the specified project in the `source` field.\n */\nfunction rewriteTurbopackSources(\n projectRoot: string,\n sourceMap: ModernSourceMapPayload\n): void {\n if ('sections' in sourceMap) {\n for (const section of sourceMap.sections) {\n rewriteTurbopackSources(projectRoot, section.map)\n }\n } else {\n for (let i = 0; i < sourceMap.sources.length; i++) {\n sourceMap.sources[i] = pathToFileURL(\n join(\n projectRoot,\n sourceMap.sources[i].replace(/turbopack:\\/\\/\\/\\[project\\]/, '')\n )\n ).toString()\n }\n }\n}\n\nfunction getSourceMapFromTurbopack(\n project: Project,\n projectRoot: string,\n sourceURL: string\n): ModernSourceMapPayload | undefined {\n let sourceMapJson: string | null = null\n\n try {\n sourceMapJson = project.getSourceMapSync(sourceURL)\n } catch (err) {}\n\n if (sourceMapJson === null) {\n return undefined\n } else {\n const payload: ModernSourceMapPayload = JSON.parse(sourceMapJson)\n // The sourcemap from Turbopack is not yet written to disk so its `sources`\n // are not absolute paths yet. We need to rewrite them to be absolute paths.\n rewriteTurbopackSources(projectRoot, payload)\n return payload\n }\n}\n\nexport async function createHotReloaderTurbopack(\n opts: SetupOpts & { isSrcDir: boolean },\n serverFields: ServerFields,\n distDir: string,\n resetFetch: () => void\n): Promise<NextJsHotReloaderInterface> {\n const dev = true\n const buildId = 'development'\n const { nextConfig, dir: projectPath } = opts\n\n const { loadBindings } =\n require('../../build/swc') as typeof import('../../build/swc')\n\n let bindings = await loadBindings()\n\n // For the debugging purpose, check if createNext or equivalent next instance setup in test cases\n // works correctly. Normally `run-test` hides output so only will be visible when `--debug` flag is used.\n if (isTestMode) {\n ;(require('console') as typeof import('console')).log(\n 'Creating turbopack project',\n {\n dir: projectPath,\n testMode: isTestMode,\n }\n )\n }\n\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n const hotReloaderSpan = trace('hot-reloader', undefined, {\n version: process.env.__NEXT_VERSION as string,\n })\n // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing\n // of the current `next dev` invocation.\n hotReloaderSpan.stop()\n\n const encryptionKey = await generateEncryptionKeyBase64({\n isBuild: false,\n distDir,\n })\n\n // TODO: Implement\n let clientRouterFilters: any\n if (nextConfig.experimental.clientRouterFilter) {\n // TODO this need to be set correctly for persistent caching to work\n }\n\n const supportedBrowsers = getSupportedBrowsers(projectPath, dev)\n const currentNodeJsVersion = process.versions.node\n\n const rootPath =\n opts.nextConfig.turbopack?.root ||\n opts.nextConfig.outputFileTracingRoot ||\n projectPath\n const project = await bindings.turbo.createProject(\n {\n rootPath,\n projectPath: normalizePath(relative(rootPath, projectPath) || '.'),\n distDir,\n nextConfig: opts.nextConfig,\n watch: {\n enable: dev,\n pollIntervalMs: nextConfig.watchOptions?.pollIntervalMs,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters,\n config: nextConfig,\n dev,\n distDir,\n projectPath,\n fetchCacheKeyPrefix: opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // TODO: Implement\n middlewareMatchers: undefined,\n rewrites: opts.fsChecker.rewrites,\n }),\n buildId,\n encryptionKey,\n previewProps: opts.fsChecker.prerenderManifest.preview,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling: false,\n currentNodeJsVersion,\n },\n {\n persistentCaching: isPersistentCachingEnabled(opts.nextConfig),\n memoryLimit: opts.nextConfig.experimental?.turbopackMemoryLimit,\n isShortSession: false,\n }\n )\n backgroundLogCompilationEvents(project, {\n eventTypes: ['StartupCacheInvalidationEvent', 'TimingEvent'],\n })\n setBundlerFindSourceMapImplementation(\n getSourceMapFromTurbopack.bind(null, project, projectPath)\n )\n opts.onDevServerCleanup?.(async () => {\n setBundlerFindSourceMapImplementation(() => undefined)\n await project.onExit()\n })\n const entrypointsSubscription = project.entrypointsSubscribe()\n\n const currentWrittenEntrypoints: Map<EntryKey, WrittenEndpoint> = new Map()\n const currentEntrypoints: Entrypoints = {\n global: {\n app: undefined,\n document: undefined,\n error: undefined,\n\n middleware: undefined,\n instrumentation: undefined,\n },\n\n page: new Map(),\n app: new Map(),\n }\n\n const currentTopLevelIssues: TopLevelIssuesMap = new Map()\n const currentEntryIssues: EntryIssuesMap = new Map()\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n })\n\n // Dev specific\n const changeSubscriptions: ChangeSubscriptions = new Map()\n const serverPathState = new Map<string, string>()\n const readyIds: ReadyIds = new Set()\n let currentEntriesHandlingResolve: ((value?: unknown) => void) | undefined\n let currentEntriesHandling = new Promise(\n (resolve) => (currentEntriesHandlingResolve = resolve)\n )\n\n const assetMapper = new AssetMapper()\n\n function clearRequireCache(\n key: EntryKey,\n writtenEndpoint: WrittenEndpoint,\n {\n force,\n }: {\n // Always clear the cache, don't check if files have changed\n force?: boolean\n } = {}\n ): boolean {\n if (force) {\n for (const { path, contentHash } of writtenEndpoint.serverPaths) {\n // We ignore source maps\n if (path.endsWith('.map')) continue\n const localKey = `${key}:${path}`\n serverPathState.set(localKey, contentHash)\n serverPathState.set(path, contentHash)\n }\n } else {\n // Figure out if the server files have changed\n let hasChange = false\n for (const { path, contentHash } of writtenEndpoint.serverPaths) {\n // We ignore source maps\n if (path.endsWith('.map')) continue\n const localKey = `${key}:${path}`\n const localHash = serverPathState.get(localKey)\n const globalHash = serverPathState.get(path)\n if (\n (localHash && localHash !== contentHash) ||\n (globalHash && globalHash !== contentHash)\n ) {\n hasChange = true\n serverPathState.set(localKey, contentHash)\n serverPathState.set(path, contentHash)\n } else {\n if (!localHash) {\n serverPathState.set(localKey, contentHash)\n }\n if (!globalHash) {\n serverPathState.set(path, contentHash)\n }\n }\n }\n\n if (!hasChange) {\n return false\n }\n }\n\n resetFetch()\n\n // Not available in:\n // - Pages Router (no server-side HMR)\n // - Edge Runtime (uses browser runtime which already disposes chunks individually)\n if (typeof __next__clear_chunk_cache__ === 'function') {\n __next__clear_chunk_cache__()\n }\n\n const serverPaths = writtenEndpoint.serverPaths.map(({ path: p }) =>\n join(distDir, p)\n )\n\n for (const file of serverPaths) {\n clearModuleContext(file)\n deleteCache(file)\n }\n\n return true\n }\n\n const buildingIds = new Set()\n\n const startBuilding: StartBuilding = (id, requestUrl, forceRebuild) => {\n if (!forceRebuild && readyIds.has(id)) {\n return () => {}\n }\n if (buildingIds.size === 0) {\n consoleStore.setState(\n {\n loading: true,\n trigger: id,\n url: requestUrl,\n } as OutputState,\n true\n )\n }\n buildingIds.add(id)\n return function finishBuilding() {\n if (buildingIds.size === 0) {\n return\n }\n readyIds.add(id)\n buildingIds.delete(id)\n if (buildingIds.size === 0) {\n hmrEventHappened = false\n consoleStore.setState(\n {\n loading: false,\n } as OutputState,\n true\n )\n }\n }\n }\n\n let hmrEventHappened = false\n let hmrHash = 0\n\n const clients = new Set<ws>()\n const clientsByRequestId = new Map<string, ws>()\n const clientStates = new WeakMap<ws, ClientState>()\n\n function sendToClient(client: ws, message: HmrMessageSentToBrowser) {\n const data =\n typeof message.type === 'number'\n ? createBinaryHmrMessageData(message)\n : JSON.stringify(message)\n\n client.send(data)\n }\n\n function sendEnqueuedMessages() {\n for (const [, issueMap] of currentEntryIssues) {\n if (\n [...issueMap.values()].filter((i) => i.severity !== 'warning').length >\n 0\n ) {\n // During compilation errors we want to delay the HMR events until errors are fixed\n return\n }\n }\n\n for (const client of clients) {\n const state = clientStates.get(client)\n if (!state) {\n continue\n }\n\n for (const [, issueMap] of state.clientIssues) {\n if (\n [...issueMap.values()].filter((i) => i.severity !== 'warning')\n .length > 0\n ) {\n // During compilation errors we want to delay the HMR events until errors are fixed\n return\n }\n }\n\n for (const message of state.messages.values()) {\n sendToClient(client, message)\n }\n state.messages.clear()\n\n if (state.turbopackUpdates.length > 0) {\n sendToClient(client, {\n type: HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_MESSAGE,\n data: state.turbopackUpdates,\n })\n state.turbopackUpdates.length = 0\n }\n }\n }\n const sendEnqueuedMessagesDebounce = debounce(sendEnqueuedMessages, 2)\n\n const sendHmr: SendHmr = (id: string, message: HmrMessageSentToBrowser) => {\n for (const client of clients) {\n clientStates.get(client)?.messages.set(id, message)\n }\n\n hmrEventHappened = true\n sendEnqueuedMessagesDebounce()\n }\n\n function sendTurbopackMessage(payload: TurbopackUpdate) {\n // TODO(PACK-2049): For some reason we end up emitting hundreds of issues messages on bigger apps,\n // a lot of which are duplicates.\n // They are currently not handled on the client at all, so might as well not send them for now.\n payload.diagnostics = []\n payload.issues = []\n\n for (const client of clients) {\n clientStates.get(client)?.turbopackUpdates.push(payload)\n }\n\n hmrEventHappened = true\n sendEnqueuedMessagesDebounce()\n }\n\n async function subscribeToChanges(\n key: EntryKey,\n includeIssues: boolean,\n endpoint: Endpoint,\n createMessage: (\n change: TurbopackResult,\n hash: string\n ) => Promise<HmrMessageSentToBrowser> | HmrMessageSentToBrowser | void,\n onError?: (\n error: Error\n ) => Promise<HmrMessageSentToBrowser> | HmrMessageSentToBrowser | void\n ) {\n if (changeSubscriptions.has(key)) {\n return\n }\n\n const { side } = splitEntryKey(key)\n\n const changedPromise = endpoint[`${side}Changed`](includeIssues)\n changeSubscriptions.set(key, changedPromise)\n try {\n const changed = await changedPromise\n\n for await (const change of changed) {\n processIssues(currentEntryIssues, key, change, false, true)\n // TODO: Get an actual content hash from Turbopack.\n const message = await createMessage(change, String(++hmrHash))\n if (message) {\n sendHmr(key, message)\n }\n }\n } catch (e) {\n changeSubscriptions.delete(key)\n const payload = await onError?.(e as Error)\n if (payload) {\n sendHmr(key, payload)\n }\n return\n }\n changeSubscriptions.delete(key)\n }\n\n async function unsubscribeFromChanges(key: EntryKey) {\n const subscription = await changeSubscriptions.get(key)\n if (subscription) {\n await subscription.return?.()\n changeSubscriptions.delete(key)\n }\n currentEntryIssues.delete(key)\n }\n\n async function subscribeToHmrEvents(client: ws, id: string) {\n const key = getEntryKey('assets', 'client', id)\n if (!hasEntrypointForKey(currentEntrypoints, key, assetMapper)) {\n // maybe throw an error / force the client to reload?\n return\n }\n\n const state = clientStates.get(client)\n if (!state || state.subscriptions.has(id)) {\n return\n }\n\n const subscription = project!.hmrEvents(id)\n state.subscriptions.set(id, subscription)\n\n // The subscription will always emit once, which is the initial\n // computation. This is not a change, so swallow it.\n try {\n await subscription.next()\n\n for await (const data of subscription) {\n processIssues(state.clientIssues, key, data, false, true)\n if (data.type !== 'issues') {\n sendTurbopackMessage(data)\n }\n }\n } catch (e) {\n // The client might be using an HMR session from a previous server, tell them\n // to fully reload the page to resolve the issue. We can't use\n // `hotReloader.send` since that would force every connected client to\n // reload, only this client is out of date.\n const reloadMessage: ReloadPageMessage = {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in HMR event subscription for ${id}: ${e}`,\n }\n sendToClient(client, reloadMessage)\n client.close()\n return\n }\n }\n\n function unsubscribeFromHmrEvents(client: ws, id: string) {\n const state = clientStates.get(client)\n if (!state) {\n return\n }\n\n const subscription = state.subscriptions.get(id)\n subscription?.return!()\n\n const key = getEntryKey('assets', 'client', id)\n state.clientIssues.delete(key)\n }\n\n async function handleEntrypointsSubscription() {\n for await (const entrypoints of entrypointsSubscription) {\n if (!currentEntriesHandlingResolve) {\n currentEntriesHandling = new Promise(\n // eslint-disable-next-line no-loop-func\n (resolve) => (currentEntriesHandlingResolve = resolve)\n )\n }\n\n processTopLevelIssues(currentTopLevelIssues, entrypoints)\n\n await handleEntrypoints({\n entrypoints,\n\n currentEntrypoints,\n\n currentEntryIssues,\n manifestLoader,\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n logErrors: true,\n\n dev: {\n assetMapper,\n changeSubscriptions,\n clients,\n clientStates,\n serverFields,\n\n hooks: {\n handleWrittenEndpoint: (id, result, forceDeleteCache) => {\n currentWrittenEntrypoints.set(id, result)\n return clearRequireCache(id, result, { force: forceDeleteCache })\n },\n propagateServerField: propagateServerField.bind(null, opts),\n sendHmr,\n startBuilding,\n subscribeToChanges,\n unsubscribeFromChanges,\n unsubscribeFromHmrEvents,\n },\n },\n })\n\n currentEntriesHandlingResolve!()\n currentEntriesHandlingResolve = undefined\n }\n }\n\n await mkdir(join(distDir, 'server'), { recursive: true })\n await mkdir(join(distDir, 'static', buildId), { recursive: true })\n await writeFile(\n join(distDir, 'package.json'),\n JSON.stringify(\n {\n type: 'commonjs',\n },\n null,\n 2\n )\n )\n\n const middlewares = [\n getOverlayMiddleware({\n project,\n projectPath,\n isSrcDir: opts.isSrcDir,\n }),\n getSourceMapMiddleware(project),\n getNextErrorFeedbackMiddleware(opts.telemetry),\n getDevOverlayFontMiddleware(),\n getDisableDevIndicatorMiddleware(),\n getRestartDevServerMiddleware({\n telemetry: opts.telemetry,\n turbopackProject: project,\n }),\n devToolsConfigMiddleware({\n distDir,\n sendUpdateSignal: (data) => {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.DEVTOOLS_CONFIG,\n data,\n })\n },\n }),\n ]\n\n const versionInfoPromise = getVersionInfo()\n\n let devtoolsFrontendUrl: string | undefined\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType) {\n const debugPort = process.debugPort\n let debugInfo\n try {\n // It requires to use 127.0.0.1 instead of localhost for server-side fetching.\n const debugInfoList = await fetch(\n `http://127.0.0.1:${debugPort}/json/list`\n ).then((res) => res.json())\n debugInfo = debugInfoList[0]\n } catch {}\n if (debugInfo) {\n devtoolsFrontendUrl = debugInfo.devtoolsFrontendUrl\n }\n }\n\n const hotReloader: NextJsHotReloaderInterface = {\n turbopackProject: project,\n activeWebpackConfigs: undefined,\n serverStats: null,\n edgeServerStats: null,\n async run(req, res, _parsedUrl) {\n // intercept page chunks request and ensure them with turbopack\n if (req.url?.startsWith('/_next/static/chunks/pages/')) {\n const params = matchNextPageBundleRequest(req.url)\n\n if (params) {\n const decodedPagePath = `/${params.path\n .map((param: string) => decodeURIComponent(param))\n .join('/')}`\n\n const denormalizedPagePath = denormalizePagePath(decodedPagePath)\n\n await hotReloader\n .ensurePage({\n page: denormalizedPagePath,\n clientOnly: false,\n definition: undefined,\n url: req.url,\n })\n .catch(console.error)\n }\n }\n\n for (const middleware of middlewares) {\n let calledNext = false\n\n await middleware(req, res, () => {\n calledNext = true\n })\n\n if (!calledNext) {\n return { finished: true }\n }\n }\n\n // Request was not finished.\n return { finished: undefined }\n },\n\n // TODO: Figure out if socket type can match the NextJsHotReloaderInterface\n onHMR(req, socket: Socket, head, onUpgrade) {\n wsServer.handleUpgrade(req, socket, head, (client) => {\n onUpgrade(client)\n const clientIssues: EntryIssuesMap = new Map()\n const subscriptions: Map<string, AsyncIterator<any>> = new Map()\n\n clients.add(client)\n\n const requestId = req.url\n ? new URL(req.url, 'http://n').searchParams.get('id')\n : null\n\n if (requestId) {\n clientsByRequestId.set(requestId, client)\n }\n\n clientStates.set(client, {\n clientIssues,\n messages: new Map(),\n turbopackUpdates: [],\n subscriptions,\n })\n\n client.on('close', () => {\n // Remove active subscriptions\n for (const subscription of subscriptions.values()) {\n subscription.return?.()\n }\n clientStates.delete(client)\n clients.delete(client)\n\n if (requestId) {\n clientsByRequestId.delete(requestId)\n deleteReactDebugChannel(requestId)\n }\n })\n\n client.addEventListener('message', async ({ data }) => {\n const parsedData = JSON.parse(\n typeof data !== 'string' ? data.toString() : data\n )\n\n // Next.js messages\n switch (parsedData.event) {\n case 'span-end': {\n hotReloaderSpan.manualTraceChild(\n parsedData.spanName,\n msToNs(parsedData.startTime),\n msToNs(parsedData.endTime),\n parsedData.attributes\n )\n break\n }\n case 'client-hmr-latency': // { id, startTime, endTime, page, updatedModules, isPageHidden }\n hotReloaderSpan.manualTraceChild(\n parsedData.event,\n msToNs(parsedData.startTime),\n msToNs(parsedData.endTime),\n {\n updatedModules: parsedData.updatedModules,\n page: parsedData.page,\n isPageHidden: parsedData.isPageHidden,\n }\n )\n break\n\n case 'client-error': // { errorCount, clientId }\n case 'client-warning': // { warningCount, clientId }\n case 'client-success': // { clientId }\n case 'server-component-reload-page': // { clientId }\n case 'client-reload-page': // { clientId }\n case 'client-removed-page': // { page }\n case 'client-full-reload': // { stackTrace, hadRuntimeError }\n const { hadRuntimeError, dependencyChain } = parsedData\n if (hadRuntimeError) {\n Log.warn(FAST_REFRESH_RUNTIME_RELOAD)\n }\n if (\n Array.isArray(dependencyChain) &&\n typeof dependencyChain[0] === 'string'\n ) {\n const cleanedModulePath = dependencyChain[0]\n .replace(/^\\[project\\]/, '.')\n .replace(/ \\[.*\\] \\(.*\\)$/, '')\n Log.warn(\n `Fast Refresh had to perform a full reload when ${cleanedModulePath} changed. Read more: https://nextjs.org/docs/messages/fast-refresh-reload`\n )\n }\n break\n case 'client-added-page':\n // TODO\n break\n case 'browser-logs': {\n if (nextConfig.experimental.browserDebugInfoInTerminal) {\n await receiveBrowserLogsTurbopack({\n entries: parsedData.entries,\n router: parsedData.router,\n sourceType: parsedData.sourceType,\n project,\n projectPath,\n distDir,\n config: nextConfig.experimental.browserDebugInfoInTerminal,\n })\n }\n break\n }\n\n default:\n // Might be a Turbopack message...\n if (!parsedData.type) {\n throw new Error(`unrecognized HMR message \"${data}\"`)\n }\n }\n\n // Turbopack messages\n switch (parsedData.type) {\n case 'turbopack-subscribe':\n subscribeToHmrEvents(client, parsedData.path)\n break\n\n case 'turbopack-unsubscribe':\n unsubscribeFromHmrEvents(client, parsedData.path)\n break\n\n default:\n if (!parsedData.event) {\n throw new Error(`unrecognized Turbopack HMR message \"${data}\"`)\n }\n }\n })\n\n const turbopackConnectedMessage: TurbopackConnectedMessage = {\n type: HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_CONNECTED,\n data: { sessionId },\n }\n sendToClient(client, turbopackConnectedMessage)\n\n const errors: CompilationError[] = []\n\n for (const entryIssues of currentEntryIssues.values()) {\n for (const issue of entryIssues.values()) {\n if (issue.severity !== 'warning') {\n errors.push({\n message: formatIssue(issue),\n })\n } else {\n printNonFatalIssue(issue)\n }\n }\n }\n\n if (devIndicatorServerState.disabledUntil < Date.now()) {\n devIndicatorServerState.disabledUntil = 0\n }\n\n ;(async function () {\n const versionInfo = await versionInfoPromise\n const devToolsConfig = await getDevToolsConfig(distDir)\n\n const syncMessage: SyncMessage = {\n type: HMR_MESSAGE_SENT_TO_BROWSER.SYNC,\n errors,\n warnings: [],\n hash: '',\n versionInfo,\n debug: {\n devtoolsFrontendUrl,\n },\n devIndicator: devIndicatorServerState,\n devToolsConfig,\n }\n\n sendToClient(client, syncMessage)\n\n if (requestId) {\n connectReactDebugChannel(requestId, sendToClient.bind(null, client))\n }\n })()\n })\n },\n\n send(action) {\n const payload = JSON.stringify(action)\n\n for (const client of clients) {\n client.send(payload)\n }\n },\n\n setReactDebugChannel(debugChannel, htmlRequestId, requestId) {\n // Store the debug channel, regardless of whether the client is connected.\n setReactDebugChannel(requestId, debugChannel)\n\n // If the client is connected, we can connect the debug channel\n // immediately. Otherwise, we'll do that when the client connects.\n const client = clientsByRequestId.get(htmlRequestId)\n\n if (client) {\n connectReactDebugChannel(requestId, sendToClient.bind(null, client))\n }\n },\n\n setHmrServerError(_error) {\n // Not implemented yet.\n },\n clearHmrServerError() {\n // Not implemented yet.\n },\n async start() {},\n async getCompilationErrors(page) {\n const appEntryKey = getEntryKey('app', 'server', page)\n const pagesEntryKey = getEntryKey('pages', 'server', page)\n\n const topLevelIssues = currentTopLevelIssues.values()\n\n const thisEntryIssues =\n currentEntryIssues.get(appEntryKey) ??\n currentEntryIssues.get(pagesEntryKey)\n\n if (thisEntryIssues !== undefined && thisEntryIssues.size > 0) {\n // If there is an error related to the requesting page we display it instead of the first error\n return [...topLevelIssues, ...thisEntryIssues.values()]\n .map((issue) => {\n const formattedIssue = formatIssue(issue)\n if (issue.severity === 'warning') {\n printNonFatalIssue(issue)\n return null\n } else if (isWellKnownError(issue)) {\n Log.error(formattedIssue)\n }\n\n return new Error(formattedIssue)\n })\n .filter((error) => error !== null)\n }\n\n // Otherwise, return all errors across pages\n const errors = []\n for (const issue of topLevelIssues) {\n if (issue.severity !== 'warning') {\n errors.push(new Error(formatIssue(issue)))\n }\n }\n for (const entryIssues of currentEntryIssues.values()) {\n for (const issue of entryIssues.values()) {\n if (issue.severity !== 'warning') {\n const message = formatIssue(issue)\n errors.push(new Error(message))\n } else {\n printNonFatalIssue(issue)\n }\n }\n }\n return errors\n },\n async invalidate({\n // .env files or tsconfig/jsconfig change\n reloadAfterInvalidation,\n }) {\n if (reloadAfterInvalidation) {\n for (const [key, entrypoint] of currentWrittenEntrypoints) {\n clearRequireCache(key, entrypoint, { force: true })\n }\n\n await clearAllModuleContexts()\n this.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES,\n hash: String(++hmrHash),\n })\n }\n },\n async buildFallbackError() {\n // Not implemented yet.\n },\n async ensurePage({\n page: inputPage,\n // Unused parameters\n // clientOnly,\n appPaths,\n definition,\n isApp,\n url: requestUrl,\n }) {\n // When there is no route definition this is an internal file not a route the user added.\n // Middleware and instrumentation are handled in turbpack-utils.ts handleEntrypoints instead.\n if (!definition) {\n if (inputPage === '/middleware') return\n if (inputPage === '/src/middleware') return\n if (inputPage === '/instrumentation') return\n if (inputPage === '/src/instrumentation') return\n }\n\n return hotReloaderSpan\n .traceChild('ensure-page', {\n inputPage,\n })\n .traceAsyncFn(async () => {\n if (BLOCKED_PAGES.includes(inputPage) && inputPage !== '/_error') {\n return\n }\n\n await currentEntriesHandling\n\n // TODO We shouldn't look into the filesystem again. This should use the information from entrypoints\n let routeDef: Pick<\n RouteDefinition,\n 'filename' | 'bundlePath' | 'page'\n > =\n definition ??\n (await findPagePathData(\n projectPath,\n inputPage,\n nextConfig.pageExtensions,\n opts.pagesDir,\n opts.appDir,\n !!nextConfig.experimental.globalNotFound\n ))\n\n // If the route is actually an app page route, then we should have access\n // to the app route definition, and therefore, the appPaths from it.\n if (!appPaths && definition && isAppPageRouteDefinition(definition)) {\n appPaths = definition.appPaths\n }\n\n let page = routeDef.page\n if (appPaths) {\n const normalizedPage = normalizeAppPath(page)\n\n // filter out paths that are not exact matches (e.g. catchall)\n const matchingAppPaths = appPaths.filter(\n (path) => normalizeAppPath(path) === normalizedPage\n )\n\n // the last item in the array is the root page, if there are parallel routes\n page = matchingAppPaths[matchingAppPaths.length - 1]\n }\n\n const pathname = definition?.pathname ?? inputPage\n\n if (page === '/_error') {\n let finishBuilding = startBuilding(pathname, requestUrl, false)\n try {\n await handlePagesErrorRoute({\n currentEntryIssues,\n entrypoints: currentEntrypoints,\n manifestLoader,\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n logErrors: true,\n hooks: {\n subscribeToChanges,\n handleWrittenEndpoint: (id, result, forceDeleteCache) => {\n currentWrittenEntrypoints.set(id, result)\n assetMapper.setPathsForKey(id, result.clientPaths)\n return clearRequireCache(id, result, {\n force: forceDeleteCache,\n })\n },\n },\n })\n } finally {\n finishBuilding()\n }\n return\n }\n\n const isInsideAppDir = routeDef.bundlePath.startsWith('app/')\n const isEntryMetadataRouteFile = isMetadataRouteFile(\n routeDef.filename.replace(opts.appDir || '', ''),\n nextConfig.pageExtensions,\n true\n )\n const normalizedAppPage = isEntryMetadataRouteFile\n ? normalizedPageToTurbopackStructureRoute(\n page,\n extname(routeDef.filename)\n )\n : page\n\n const route = isInsideAppDir\n ? currentEntrypoints.app.get(normalizedAppPage)\n : currentEntrypoints.page.get(page)\n\n if (!route) {\n // TODO: why is this entry missing in turbopack?\n if (page === '/middleware') return\n if (page === '/src/middleware') return\n if (page === '/instrumentation') return\n if (page === '/src/instrumentation') return\n\n throw new PageNotFoundError(`route not found ${page}`)\n }\n\n // We don't throw on ensureOpts.isApp === true for page-api\n // since this can happen when app pages make\n // api requests to page API routes.\n if (isApp && route.type === 'page') {\n throw new Error(`mis-matched route type: isApp && page for ${page}`)\n }\n\n const finishBuilding = startBuilding(pathname, requestUrl, false)\n try {\n await handleRouteType({\n dev,\n page,\n pathname,\n route,\n currentEntryIssues,\n entrypoints: currentEntrypoints,\n manifestLoader,\n readyIds,\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n logErrors: true,\n\n hooks: {\n subscribeToChanges,\n handleWrittenEndpoint: (id, result, forceDeleteCache) => {\n currentWrittenEntrypoints.set(id, result)\n assetMapper.setPathsForKey(id, result.clientPaths)\n return clearRequireCache(id, result, {\n force: forceDeleteCache,\n })\n },\n },\n })\n } finally {\n finishBuilding()\n }\n })\n },\n close() {\n for (const wsClient of clients) {\n // it's okay to not cleanly close these websocket connections, this is dev\n wsClient.terminate()\n }\n clients.clear()\n clientsByRequestId.clear()\n },\n }\n\n handleEntrypointsSubscription().catch((err) => {\n console.error(err)\n process.exit(1)\n })\n\n // Write empty manifests\n await currentEntriesHandling\n await manifestLoader.writeManifests({\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n entrypoints: currentEntrypoints,\n })\n\n async function handleProjectUpdates() {\n for await (const updateMessage of project.updateInfoSubscribe(30)) {\n switch (updateMessage.updateType) {\n case 'start': {\n hotReloader.send({ type: HMR_MESSAGE_SENT_TO_BROWSER.BUILDING })\n break\n }\n case 'end': {\n sendEnqueuedMessages()\n\n function addErrors(\n errorsMap: Map<string, CompilationError>,\n issues: EntryIssuesMap\n ) {\n for (const issueMap of issues.values()) {\n for (const [key, issue] of issueMap) {\n if (issue.severity === 'warning') continue\n if (errorsMap.has(key)) continue\n\n const message = formatIssue(issue)\n\n errorsMap.set(key, {\n message,\n details: issue.detail\n ? renderStyledStringToErrorAnsi(issue.detail)\n : undefined,\n })\n }\n }\n }\n\n const errors = new Map<string, CompilationError>()\n addErrors(errors, currentEntryIssues)\n\n for (const client of clients) {\n const state = clientStates.get(client)\n if (!state) {\n continue\n }\n\n const clientErrors = new Map(errors)\n addErrors(clientErrors, state.clientIssues)\n\n sendToClient(client, {\n type: HMR_MESSAGE_SENT_TO_BROWSER.BUILT,\n hash: String(++hmrHash),\n errors: [...clientErrors.values()],\n warnings: [],\n })\n }\n\n if (hmrEventHappened) {\n const time = updateMessage.value.duration\n const timeMessage =\n time > 2000 ? `${Math.round(time / 100) / 10}s` : `${time}ms`\n Log.event(`Compiled in ${timeMessage}`)\n hmrEventHappened = false\n }\n break\n }\n default:\n }\n }\n }\n\n handleProjectUpdates().catch((err) => {\n console.error(err)\n process.exit(1)\n })\n\n return hotReloader\n}\n"],"names":["mkdir","writeFile","join","extname","relative","pathToFileURL","ws","store","consoleStore","HMR_MESSAGE_SENT_TO_BROWSER","createDefineEnv","Log","getVersionInfo","matchNextPageBundleRequest","BLOCKED_PAGES","getOverlayMiddleware","getSourceMapMiddleware","PageNotFoundError","debounce","deleteCache","clearAllModuleContexts","clearModuleContext","denormalizePagePath","trace","AssetMapper","handleEntrypoints","handlePagesErrorRoute","handleRouteType","hasEntrypointForKey","msToNs","processTopLevelIssues","printNonFatalIssue","normalizedPageToTurbopackStructureRoute","propagateServerField","TurbopackManifestLoader","findPagePathData","getEntryKey","splitEntryKey","createBinaryHmrMessageData","FAST_REFRESH_RUNTIME_RELOAD","generateEncryptionKeyBase64","isAppPageRouteDefinition","normalizeAppPath","getNodeDebugType","isMetadataRouteFile","setBundlerFindSourceMapImplementation","getNextErrorFeedbackMiddleware","formatIssue","isPersistentCachingEnabled","isWellKnownError","processIssues","renderStyledStringToErrorAnsi","getDevOverlayFontMiddleware","devIndicatorServerState","getDisableDevIndicatorMiddleware","getRestartDevServerMiddleware","backgroundLogCompilationEvents","getSupportedBrowsers","receiveBrowserLogsTurbopack","normalizePath","devToolsConfigMiddleware","getDevToolsConfig","connectReactDebugChannel","deleteReactDebugChannel","setReactDebugChannel","wsServer","Server","noServer","isTestMode","process","env","NEXT_TEST_MODE","__NEXT_TEST_MODE","DEBUG","sessionId","Math","floor","Number","MAX_SAFE_INTEGER","random","rewriteTurbopackSources","projectRoot","sourceMap","section","sections","map","i","sources","length","replace","toString","getSourceMapFromTurbopack","project","sourceURL","sourceMapJson","getSourceMapSync","err","undefined","payload","JSON","parse","createHotReloaderTurbopack","opts","serverFields","distDir","resetFetch","nextConfig","dev","buildId","dir","projectPath","loadBindings","require","bindings","log","testMode","hasRewrites","fsChecker","rewrites","afterFiles","beforeFiles","fallback","hotReloaderSpan","version","__NEXT_VERSION","stop","encryptionKey","isBuild","clientRouterFilters","experimental","clientRouterFilter","supportedBrowsers","currentNodeJsVersion","versions","node","rootPath","turbopack","root","outputFileTracingRoot","turbo","createProject","watch","enable","pollIntervalMs","watchOptions","defineEnv","isTurbopack","config","fetchCacheKeyPrefix","middlewareMatchers","previewProps","prerenderManifest","preview","browserslistQuery","noMangling","persistentCaching","memoryLimit","turbopackMemoryLimit","isShortSession","eventTypes","bind","onDevServerCleanup","onExit","entrypointsSubscription","entrypointsSubscribe","currentWrittenEntrypoints","Map","currentEntrypoints","global","app","document","error","middleware","instrumentation","page","currentTopLevelIssues","currentEntryIssues","manifestLoader","changeSubscriptions","serverPathState","readyIds","Set","currentEntriesHandlingResolve","currentEntriesHandling","Promise","resolve","assetMapper","clearRequireCache","key","writtenEndpoint","force","path","contentHash","serverPaths","endsWith","localKey","set","hasChange","localHash","get","globalHash","__next__clear_chunk_cache__","p","file","buildingIds","startBuilding","id","requestUrl","forceRebuild","has","size","setState","loading","trigger","url","add","finishBuilding","delete","hmrEventHappened","hmrHash","clients","clientsByRequestId","clientStates","WeakMap","sendToClient","client","message","data","type","stringify","send","sendEnqueuedMessages","issueMap","values","filter","severity","state","clientIssues","messages","clear","turbopackUpdates","TURBOPACK_MESSAGE","sendEnqueuedMessagesDebounce","sendHmr","sendTurbopackMessage","diagnostics","issues","push","subscribeToChanges","includeIssues","endpoint","createMessage","onError","side","changedPromise","changed","change","String","e","unsubscribeFromChanges","subscription","return","subscribeToHmrEvents","subscriptions","hmrEvents","next","reloadMessage","RELOAD_PAGE","close","unsubscribeFromHmrEvents","handleEntrypointsSubscription","entrypoints","devRewrites","productionRewrites","logErrors","hooks","handleWrittenEndpoint","result","forceDeleteCache","recursive","middlewares","isSrcDir","telemetry","turbopackProject","sendUpdateSignal","hotReloader","DEVTOOLS_CONFIG","versionInfoPromise","devtoolsFrontendUrl","nodeDebugType","debugPort","debugInfo","debugInfoList","fetch","then","res","json","activeWebpackConfigs","serverStats","edgeServerStats","run","req","_parsedUrl","startsWith","params","decodedPagePath","param","decodeURIComponent","denormalizedPagePath","ensurePage","clientOnly","definition","catch","console","calledNext","finished","onHMR","socket","head","onUpgrade","handleUpgrade","requestId","URL","searchParams","on","addEventListener","parsedData","event","manualTraceChild","spanName","startTime","endTime","attributes","updatedModules","isPageHidden","hadRuntimeError","dependencyChain","warn","Array","isArray","cleanedModulePath","browserDebugInfoInTerminal","entries","router","sourceType","Error","turbopackConnectedMessage","TURBOPACK_CONNECTED","errors","entryIssues","issue","disabledUntil","Date","now","versionInfo","devToolsConfig","syncMessage","SYNC","warnings","hash","debug","devIndicator","action","debugChannel","htmlRequestId","setHmrServerError","_error","clearHmrServerError","start","getCompilationErrors","appEntryKey","pagesEntryKey","topLevelIssues","thisEntryIssues","formattedIssue","invalidate","reloadAfterInvalidation","entrypoint","SERVER_COMPONENT_CHANGES","buildFallbackError","inputPage","appPaths","isApp","traceChild","traceAsyncFn","includes","routeDef","pageExtensions","pagesDir","appDir","globalNotFound","normalizedPage","matchingAppPaths","pathname","setPathsForKey","clientPaths","isInsideAppDir","bundlePath","isEntryMetadataRouteFile","filename","normalizedAppPage","route","wsClient","terminate","exit","writeManifests","handleProjectUpdates","updateMessage","updateInfoSubscribe","updateType","BUILDING","addErrors","errorsMap","details","detail","clientErrors","BUILT","time","value","duration","timeMessage","round"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../../src/server/dev/hot-reloader-turbopack.ts"],"sourcesContent":["import type { Socket } from 'net'\nimport { mkdir, writeFile } from 'fs/promises'\nimport { join, extname, relative } from 'path'\nimport { pathToFileURL } from 'url'\n\nimport ws from 'next/dist/compiled/ws'\n\nimport type { OutputState } from '../../build/output/store'\nimport { store as consoleStore } from '../../build/output/store'\nimport type {\n CompilationError,\n HmrMessageSentToBrowser,\n NextJsHotReloaderInterface,\n ReloadPageMessage,\n SyncMessage,\n TurbopackConnectedMessage,\n} from './hot-reloader-types'\nimport { HMR_MESSAGE_SENT_TO_BROWSER } from './hot-reloader-types'\nimport type {\n Update as TurbopackUpdate,\n Endpoint,\n WrittenEndpoint,\n TurbopackResult,\n Project,\n Entrypoints,\n} from '../../build/swc/types'\nimport { createDefineEnv } from '../../build/swc'\nimport * as Log from '../../build/output/log'\nimport {\n getVersionInfo,\n matchNextPageBundleRequest,\n} from './hot-reloader-webpack'\nimport { BLOCKED_PAGES } from '../../shared/lib/constants'\nimport {\n getOverlayMiddleware,\n getSourceMapMiddleware,\n} from './middleware-turbopack'\nimport { PageNotFoundError } from '../../shared/lib/utils'\nimport { debounce } from '../utils'\nimport { deleteCache } from './require-cache'\nimport {\n clearAllModuleContexts,\n clearModuleContext,\n} from '../lib/render-server'\nimport { denormalizePagePath } from '../../shared/lib/page-path/denormalize-page-path'\nimport { trace } from '../../trace'\nimport {\n AssetMapper,\n type ChangeSubscriptions,\n type ClientState,\n handleEntrypoints,\n handlePagesErrorRoute,\n handleRouteType,\n hasEntrypointForKey,\n msToNs,\n type ReadyIds,\n type SendHmr,\n type StartBuilding,\n processTopLevelIssues,\n printNonFatalIssue,\n normalizedPageToTurbopackStructureRoute,\n} from './turbopack-utils'\nimport {\n propagateServerField,\n type ServerFields,\n type SetupOpts,\n} from '../lib/router-utils/setup-dev-bundler'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { findPagePathData } from './on-demand-entry-handler'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport {\n type EntryKey,\n getEntryKey,\n splitEntryKey,\n} from '../../shared/lib/turbopack/entry-key'\nimport {\n createBinaryHmrMessageData,\n FAST_REFRESH_RUNTIME_RELOAD,\n} from './messages'\nimport { generateEncryptionKeyBase64 } from '../app-render/encryption-utils-server'\nimport { isAppPageRouteDefinition } from '../route-definitions/app-page-route-definition'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport type { ModernSourceMapPayload } from '../lib/source-maps'\nimport { getNodeDebugType } from '../lib/utils'\nimport { isMetadataRouteFile } from '../../lib/metadata/is-metadata-route'\nimport { setBundlerFindSourceMapImplementation } from '../patch-error-inspect'\nimport { getNextErrorFeedbackMiddleware } from '../../next-devtools/server/get-next-error-feedback-middleware'\nimport {\n formatIssue,\n isPersistentCachingEnabled,\n isWellKnownError,\n processIssues,\n renderStyledStringToErrorAnsi,\n type EntryIssuesMap,\n type TopLevelIssuesMap,\n} from '../../shared/lib/turbopack/utils'\nimport { getDevOverlayFontMiddleware } from '../../next-devtools/server/font/get-dev-overlay-font-middleware'\nimport { devIndicatorServerState } from './dev-indicator-server-state'\nimport { getDisableDevIndicatorMiddleware } from '../../next-devtools/server/dev-indicator-middleware'\nimport { getRestartDevServerMiddleware } from '../../next-devtools/server/restart-dev-server-middleware'\nimport { backgroundLogCompilationEvents } from '../../shared/lib/turbopack/compilation-events'\nimport { getSupportedBrowsers } from '../../build/utils'\nimport { receiveBrowserLogsTurbopack } from './browser-logs/receive-logs'\nimport { normalizePath } from '../../lib/normalize-path'\nimport {\n devToolsConfigMiddleware,\n getDevToolsConfig,\n} from '../../next-devtools/server/devtools-config-middleware'\nimport {\n connectReactDebugChannel,\n deleteReactDebugChannel,\n setReactDebugChannel,\n} from './debug-channel'\n\nconst wsServer = new ws.Server({ noServer: true })\nconst isTestMode = !!(\n process.env.NEXT_TEST_MODE ||\n process.env.__NEXT_TEST_MODE ||\n process.env.DEBUG\n)\n\nconst sessionId = Math.floor(Number.MAX_SAFE_INTEGER * Math.random())\n\ndeclare const __next__clear_chunk_cache__: (() => void) | null | undefined\n\n/**\n * Replaces turbopack:///[project] with the specified project in the `source` field.\n */\nfunction rewriteTurbopackSources(\n projectRoot: string,\n sourceMap: ModernSourceMapPayload\n): void {\n if ('sections' in sourceMap) {\n for (const section of sourceMap.sections) {\n rewriteTurbopackSources(projectRoot, section.map)\n }\n } else {\n for (let i = 0; i < sourceMap.sources.length; i++) {\n sourceMap.sources[i] = pathToFileURL(\n join(\n projectRoot,\n sourceMap.sources[i].replace(/turbopack:\\/\\/\\/\\[project\\]/, '')\n )\n ).toString()\n }\n }\n}\n\nfunction getSourceMapFromTurbopack(\n project: Project,\n projectRoot: string,\n sourceURL: string\n): ModernSourceMapPayload | undefined {\n let sourceMapJson: string | null = null\n\n try {\n sourceMapJson = project.getSourceMapSync(sourceURL)\n } catch (err) {}\n\n if (sourceMapJson === null) {\n return undefined\n } else {\n const payload: ModernSourceMapPayload = JSON.parse(sourceMapJson)\n // The sourcemap from Turbopack is not yet written to disk so its `sources`\n // are not absolute paths yet. We need to rewrite them to be absolute paths.\n rewriteTurbopackSources(projectRoot, payload)\n return payload\n }\n}\n\nexport async function createHotReloaderTurbopack(\n opts: SetupOpts & { isSrcDir: boolean },\n serverFields: ServerFields,\n distDir: string,\n resetFetch: () => void\n): Promise<NextJsHotReloaderInterface> {\n const dev = true\n const buildId = 'development'\n const { nextConfig, dir: projectPath } = opts\n\n const { loadBindings } =\n require('../../build/swc') as typeof import('../../build/swc')\n\n let bindings = await loadBindings()\n\n // For the debugging purpose, check if createNext or equivalent next instance setup in test cases\n // works correctly. Normally `run-test` hides output so only will be visible when `--debug` flag is used.\n if (isTestMode) {\n ;(require('console') as typeof import('console')).log(\n 'Creating turbopack project',\n {\n dir: projectPath,\n testMode: isTestMode,\n }\n )\n }\n\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n const hotReloaderSpan = trace('hot-reloader', undefined, {\n version: process.env.__NEXT_VERSION as string,\n })\n // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing\n // of the current `next dev` invocation.\n hotReloaderSpan.stop()\n\n const encryptionKey = await generateEncryptionKeyBase64({\n isBuild: false,\n distDir,\n })\n\n // TODO: Implement\n let clientRouterFilters: any\n if (nextConfig.experimental.clientRouterFilter) {\n // TODO this need to be set correctly for persistent caching to work\n }\n\n const supportedBrowsers = getSupportedBrowsers(projectPath, dev)\n const currentNodeJsVersion = process.versions.node\n\n const rootPath =\n opts.nextConfig.turbopack?.root ||\n opts.nextConfig.outputFileTracingRoot ||\n projectPath\n const project = await bindings.turbo.createProject(\n {\n rootPath,\n projectPath: normalizePath(relative(rootPath, projectPath) || '.'),\n distDir,\n nextConfig: opts.nextConfig,\n watch: {\n enable: dev,\n pollIntervalMs: nextConfig.watchOptions?.pollIntervalMs,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters,\n config: nextConfig,\n dev,\n distDir,\n projectPath,\n fetchCacheKeyPrefix: opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // TODO: Implement\n middlewareMatchers: undefined,\n rewrites: opts.fsChecker.rewrites,\n }),\n buildId,\n encryptionKey,\n previewProps: opts.fsChecker.prerenderManifest.preview,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling: false,\n currentNodeJsVersion,\n },\n {\n persistentCaching: isPersistentCachingEnabled(opts.nextConfig),\n memoryLimit: opts.nextConfig.experimental?.turbopackMemoryLimit,\n isShortSession: false,\n }\n )\n backgroundLogCompilationEvents(project, {\n eventTypes: ['StartupCacheInvalidationEvent', 'TimingEvent'],\n })\n setBundlerFindSourceMapImplementation(\n getSourceMapFromTurbopack.bind(null, project, projectPath)\n )\n opts.onDevServerCleanup?.(async () => {\n setBundlerFindSourceMapImplementation(() => undefined)\n await project.onExit()\n })\n const entrypointsSubscription = project.entrypointsSubscribe()\n\n const currentWrittenEntrypoints: Map<EntryKey, WrittenEndpoint> = new Map()\n const currentEntrypoints: Entrypoints = {\n global: {\n app: undefined,\n document: undefined,\n error: undefined,\n\n middleware: undefined,\n instrumentation: undefined,\n },\n\n page: new Map(),\n app: new Map(),\n }\n\n const currentTopLevelIssues: TopLevelIssuesMap = new Map()\n const currentEntryIssues: EntryIssuesMap = new Map()\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n })\n\n // Dev specific\n const changeSubscriptions: ChangeSubscriptions = new Map()\n const serverPathState = new Map<string, string>()\n const readyIds: ReadyIds = new Set()\n let currentEntriesHandlingResolve: ((value?: unknown) => void) | undefined\n let currentEntriesHandling = new Promise(\n (resolve) => (currentEntriesHandlingResolve = resolve)\n )\n\n const assetMapper = new AssetMapper()\n\n function clearRequireCache(\n key: EntryKey,\n writtenEndpoint: WrittenEndpoint,\n {\n force,\n }: {\n // Always clear the cache, don't check if files have changed\n force?: boolean\n } = {}\n ): boolean {\n if (force) {\n for (const { path, contentHash } of writtenEndpoint.serverPaths) {\n // We ignore source maps\n if (path.endsWith('.map')) continue\n const localKey = `${key}:${path}`\n serverPathState.set(localKey, contentHash)\n serverPathState.set(path, contentHash)\n }\n } else {\n // Figure out if the server files have changed\n let hasChange = false\n for (const { path, contentHash } of writtenEndpoint.serverPaths) {\n // We ignore source maps\n if (path.endsWith('.map')) continue\n const localKey = `${key}:${path}`\n const localHash = serverPathState.get(localKey)\n const globalHash = serverPathState.get(path)\n if (\n (localHash && localHash !== contentHash) ||\n (globalHash && globalHash !== contentHash)\n ) {\n hasChange = true\n serverPathState.set(localKey, contentHash)\n serverPathState.set(path, contentHash)\n } else {\n if (!localHash) {\n serverPathState.set(localKey, contentHash)\n }\n if (!globalHash) {\n serverPathState.set(path, contentHash)\n }\n }\n }\n\n if (!hasChange) {\n return false\n }\n }\n\n resetFetch()\n\n // Not available in:\n // - Pages Router (no server-side HMR)\n // - Edge Runtime (uses browser runtime which already disposes chunks individually)\n if (typeof __next__clear_chunk_cache__ === 'function') {\n __next__clear_chunk_cache__()\n }\n\n const serverPaths = writtenEndpoint.serverPaths.map(({ path: p }) =>\n join(distDir, p)\n )\n\n for (const file of serverPaths) {\n clearModuleContext(file)\n deleteCache(file)\n }\n\n return true\n }\n\n const buildingIds = new Set()\n\n const startBuilding: StartBuilding = (id, requestUrl, forceRebuild) => {\n if (!forceRebuild && readyIds.has(id)) {\n return () => {}\n }\n if (buildingIds.size === 0) {\n consoleStore.setState(\n {\n loading: true,\n trigger: id,\n url: requestUrl,\n } as OutputState,\n true\n )\n }\n buildingIds.add(id)\n return function finishBuilding() {\n if (buildingIds.size === 0) {\n return\n }\n readyIds.add(id)\n buildingIds.delete(id)\n if (buildingIds.size === 0) {\n hmrEventHappened = false\n consoleStore.setState(\n {\n loading: false,\n } as OutputState,\n true\n )\n }\n }\n }\n\n let hmrEventHappened = false\n let hmrHash = 0\n\n const clients = new Set<ws>()\n const clientsByRequestId = new Map<string, ws>()\n const clientStates = new WeakMap<ws, ClientState>()\n\n function sendToClient(client: ws, message: HmrMessageSentToBrowser) {\n const data =\n typeof message.type === 'number'\n ? createBinaryHmrMessageData(message)\n : JSON.stringify(message)\n\n client.send(data)\n }\n\n function sendEnqueuedMessages() {\n for (const [, issueMap] of currentEntryIssues) {\n if (\n [...issueMap.values()].filter((i) => i.severity !== 'warning').length >\n 0\n ) {\n // During compilation errors we want to delay the HMR events until errors are fixed\n return\n }\n }\n\n for (const client of clients) {\n const state = clientStates.get(client)\n if (!state) {\n continue\n }\n\n for (const [, issueMap] of state.clientIssues) {\n if (\n [...issueMap.values()].filter((i) => i.severity !== 'warning')\n .length > 0\n ) {\n // During compilation errors we want to delay the HMR events until errors are fixed\n return\n }\n }\n\n for (const message of state.messages.values()) {\n sendToClient(client, message)\n }\n state.messages.clear()\n\n if (state.turbopackUpdates.length > 0) {\n sendToClient(client, {\n type: HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_MESSAGE,\n data: state.turbopackUpdates,\n })\n state.turbopackUpdates.length = 0\n }\n }\n }\n const sendEnqueuedMessagesDebounce = debounce(sendEnqueuedMessages, 2)\n\n const sendHmr: SendHmr = (id: string, message: HmrMessageSentToBrowser) => {\n for (const client of clients) {\n clientStates.get(client)?.messages.set(id, message)\n }\n\n hmrEventHappened = true\n sendEnqueuedMessagesDebounce()\n }\n\n function sendTurbopackMessage(payload: TurbopackUpdate) {\n // TODO(PACK-2049): For some reason we end up emitting hundreds of issues messages on bigger apps,\n // a lot of which are duplicates.\n // They are currently not handled on the client at all, so might as well not send them for now.\n payload.diagnostics = []\n payload.issues = []\n\n for (const client of clients) {\n clientStates.get(client)?.turbopackUpdates.push(payload)\n }\n\n hmrEventHappened = true\n sendEnqueuedMessagesDebounce()\n }\n\n async function subscribeToChanges(\n key: EntryKey,\n includeIssues: boolean,\n endpoint: Endpoint,\n createMessage: (\n change: TurbopackResult,\n hash: string\n ) => Promise<HmrMessageSentToBrowser> | HmrMessageSentToBrowser | void,\n onError?: (\n error: Error\n ) => Promise<HmrMessageSentToBrowser> | HmrMessageSentToBrowser | void\n ) {\n if (changeSubscriptions.has(key)) {\n return\n }\n\n const { side } = splitEntryKey(key)\n\n const changedPromise = endpoint[`${side}Changed`](includeIssues)\n changeSubscriptions.set(key, changedPromise)\n try {\n const changed = await changedPromise\n\n for await (const change of changed) {\n processIssues(currentEntryIssues, key, change, false, true)\n // TODO: Get an actual content hash from Turbopack.\n const message = await createMessage(change, String(++hmrHash))\n if (message) {\n sendHmr(key, message)\n }\n }\n } catch (e) {\n changeSubscriptions.delete(key)\n const payload = await onError?.(e as Error)\n if (payload) {\n sendHmr(key, payload)\n }\n return\n }\n changeSubscriptions.delete(key)\n }\n\n async function unsubscribeFromChanges(key: EntryKey) {\n const subscription = await changeSubscriptions.get(key)\n if (subscription) {\n await subscription.return?.()\n changeSubscriptions.delete(key)\n }\n currentEntryIssues.delete(key)\n }\n\n async function subscribeToHmrEvents(client: ws, id: string) {\n const key = getEntryKey('assets', 'client', id)\n if (!hasEntrypointForKey(currentEntrypoints, key, assetMapper)) {\n // maybe throw an error / force the client to reload?\n return\n }\n\n const state = clientStates.get(client)\n if (!state || state.subscriptions.has(id)) {\n return\n }\n\n const subscription = project!.hmrEvents(id)\n state.subscriptions.set(id, subscription)\n\n // The subscription will always emit once, which is the initial\n // computation. This is not a change, so swallow it.\n try {\n await subscription.next()\n\n for await (const data of subscription) {\n processIssues(state.clientIssues, key, data, false, true)\n if (data.type !== 'issues') {\n sendTurbopackMessage(data)\n }\n }\n } catch (e) {\n // The client might be using an HMR session from a previous server, tell them\n // to fully reload the page to resolve the issue. We can't use\n // `hotReloader.send` since that would force every connected client to\n // reload, only this client is out of date.\n const reloadMessage: ReloadPageMessage = {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in HMR event subscription for ${id}: ${e}`,\n }\n sendToClient(client, reloadMessage)\n client.close()\n return\n }\n }\n\n function unsubscribeFromHmrEvents(client: ws, id: string) {\n const state = clientStates.get(client)\n if (!state) {\n return\n }\n\n const subscription = state.subscriptions.get(id)\n subscription?.return!()\n\n const key = getEntryKey('assets', 'client', id)\n state.clientIssues.delete(key)\n }\n\n async function handleEntrypointsSubscription() {\n for await (const entrypoints of entrypointsSubscription) {\n if (!currentEntriesHandlingResolve) {\n currentEntriesHandling = new Promise(\n // eslint-disable-next-line no-loop-func\n (resolve) => (currentEntriesHandlingResolve = resolve)\n )\n }\n\n processTopLevelIssues(currentTopLevelIssues, entrypoints)\n\n await handleEntrypoints({\n entrypoints,\n\n currentEntrypoints,\n\n currentEntryIssues,\n manifestLoader,\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n logErrors: true,\n\n dev: {\n assetMapper,\n changeSubscriptions,\n clients,\n clientStates,\n serverFields,\n\n hooks: {\n handleWrittenEndpoint: (id, result, forceDeleteCache) => {\n currentWrittenEntrypoints.set(id, result)\n return clearRequireCache(id, result, { force: forceDeleteCache })\n },\n propagateServerField: propagateServerField.bind(null, opts),\n sendHmr,\n startBuilding,\n subscribeToChanges,\n unsubscribeFromChanges,\n unsubscribeFromHmrEvents,\n },\n },\n })\n\n currentEntriesHandlingResolve!()\n currentEntriesHandlingResolve = undefined\n }\n }\n\n await mkdir(join(distDir, 'server'), { recursive: true })\n await mkdir(join(distDir, 'static', buildId), { recursive: true })\n await writeFile(\n join(distDir, 'package.json'),\n JSON.stringify(\n {\n type: 'commonjs',\n },\n null,\n 2\n )\n )\n\n const middlewares = [\n getOverlayMiddleware({\n project,\n projectPath,\n isSrcDir: opts.isSrcDir,\n }),\n getSourceMapMiddleware(project),\n getNextErrorFeedbackMiddleware(opts.telemetry),\n getDevOverlayFontMiddleware(),\n getDisableDevIndicatorMiddleware(),\n getRestartDevServerMiddleware({\n telemetry: opts.telemetry,\n turbopackProject: project,\n }),\n devToolsConfigMiddleware({\n distDir,\n sendUpdateSignal: (data) => {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.DEVTOOLS_CONFIG,\n data,\n })\n },\n }),\n ]\n\n let versionInfoCached: ReturnType<typeof getVersionInfo> | undefined\n // This fetch, even though not awaited, is not kicked off eagerly because the first `fetch()` in\n // Node.js adds roughly 20ms main-thread blocking to load the SSL certificate cache\n // We don't want that blocking time to be in the hot path for the `ready in` logging.\n // Instead, the fetch is kicked off lazily when the first `getVersionInfoCached()` is called.\n const getVersionInfoCached = (): ReturnType<typeof getVersionInfo> => {\n if (!versionInfoCached) {\n versionInfoCached = getVersionInfo()\n }\n return versionInfoCached\n }\n\n let devtoolsFrontendUrl: string | undefined\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType) {\n const debugPort = process.debugPort\n let debugInfo\n try {\n // It requires to use 127.0.0.1 instead of localhost for server-side fetching.\n const debugInfoList = await fetch(\n `http://127.0.0.1:${debugPort}/json/list`\n ).then((res) => res.json())\n debugInfo = debugInfoList[0]\n } catch {}\n if (debugInfo) {\n devtoolsFrontendUrl = debugInfo.devtoolsFrontendUrl\n }\n }\n\n const hotReloader: NextJsHotReloaderInterface = {\n turbopackProject: project,\n activeWebpackConfigs: undefined,\n serverStats: null,\n edgeServerStats: null,\n async run(req, res, _parsedUrl) {\n // intercept page chunks request and ensure them with turbopack\n if (req.url?.startsWith('/_next/static/chunks/pages/')) {\n const params = matchNextPageBundleRequest(req.url)\n\n if (params) {\n const decodedPagePath = `/${params.path\n .map((param: string) => decodeURIComponent(param))\n .join('/')}`\n\n const denormalizedPagePath = denormalizePagePath(decodedPagePath)\n\n await hotReloader\n .ensurePage({\n page: denormalizedPagePath,\n clientOnly: false,\n definition: undefined,\n url: req.url,\n })\n .catch(console.error)\n }\n }\n\n for (const middleware of middlewares) {\n let calledNext = false\n\n await middleware(req, res, () => {\n calledNext = true\n })\n\n if (!calledNext) {\n return { finished: true }\n }\n }\n\n // Request was not finished.\n return { finished: undefined }\n },\n\n // TODO: Figure out if socket type can match the NextJsHotReloaderInterface\n onHMR(req, socket: Socket, head, onUpgrade) {\n wsServer.handleUpgrade(req, socket, head, (client) => {\n onUpgrade(client)\n const clientIssues: EntryIssuesMap = new Map()\n const subscriptions: Map<string, AsyncIterator<any>> = new Map()\n\n clients.add(client)\n\n const requestId = req.url\n ? new URL(req.url, 'http://n').searchParams.get('id')\n : null\n\n if (requestId) {\n clientsByRequestId.set(requestId, client)\n }\n\n clientStates.set(client, {\n clientIssues,\n messages: new Map(),\n turbopackUpdates: [],\n subscriptions,\n })\n\n client.on('close', () => {\n // Remove active subscriptions\n for (const subscription of subscriptions.values()) {\n subscription.return?.()\n }\n clientStates.delete(client)\n clients.delete(client)\n\n if (requestId) {\n clientsByRequestId.delete(requestId)\n deleteReactDebugChannel(requestId)\n }\n })\n\n client.addEventListener('message', async ({ data }) => {\n const parsedData = JSON.parse(\n typeof data !== 'string' ? data.toString() : data\n )\n\n // Next.js messages\n switch (parsedData.event) {\n case 'span-end': {\n hotReloaderSpan.manualTraceChild(\n parsedData.spanName,\n msToNs(parsedData.startTime),\n msToNs(parsedData.endTime),\n parsedData.attributes\n )\n break\n }\n case 'client-hmr-latency': // { id, startTime, endTime, page, updatedModules, isPageHidden }\n hotReloaderSpan.manualTraceChild(\n parsedData.event,\n msToNs(parsedData.startTime),\n msToNs(parsedData.endTime),\n {\n updatedModules: parsedData.updatedModules,\n page: parsedData.page,\n isPageHidden: parsedData.isPageHidden,\n }\n )\n break\n\n case 'client-error': // { errorCount, clientId }\n case 'client-warning': // { warningCount, clientId }\n case 'client-success': // { clientId }\n case 'server-component-reload-page': // { clientId }\n case 'client-reload-page': // { clientId }\n case 'client-removed-page': // { page }\n case 'client-full-reload': // { stackTrace, hadRuntimeError }\n const { hadRuntimeError, dependencyChain } = parsedData\n if (hadRuntimeError) {\n Log.warn(FAST_REFRESH_RUNTIME_RELOAD)\n }\n if (\n Array.isArray(dependencyChain) &&\n typeof dependencyChain[0] === 'string'\n ) {\n const cleanedModulePath = dependencyChain[0]\n .replace(/^\\[project\\]/, '.')\n .replace(/ \\[.*\\] \\(.*\\)$/, '')\n Log.warn(\n `Fast Refresh had to perform a full reload when ${cleanedModulePath} changed. Read more: https://nextjs.org/docs/messages/fast-refresh-reload`\n )\n }\n break\n case 'client-added-page':\n // TODO\n break\n case 'browser-logs': {\n if (nextConfig.experimental.browserDebugInfoInTerminal) {\n await receiveBrowserLogsTurbopack({\n entries: parsedData.entries,\n router: parsedData.router,\n sourceType: parsedData.sourceType,\n project,\n projectPath,\n distDir,\n config: nextConfig.experimental.browserDebugInfoInTerminal,\n })\n }\n break\n }\n\n default:\n // Might be a Turbopack message...\n if (!parsedData.type) {\n throw new Error(`unrecognized HMR message \"${data}\"`)\n }\n }\n\n // Turbopack messages\n switch (parsedData.type) {\n case 'turbopack-subscribe':\n subscribeToHmrEvents(client, parsedData.path)\n break\n\n case 'turbopack-unsubscribe':\n unsubscribeFromHmrEvents(client, parsedData.path)\n break\n\n default:\n if (!parsedData.event) {\n throw new Error(`unrecognized Turbopack HMR message \"${data}\"`)\n }\n }\n })\n\n const turbopackConnectedMessage: TurbopackConnectedMessage = {\n type: HMR_MESSAGE_SENT_TO_BROWSER.TURBOPACK_CONNECTED,\n data: { sessionId },\n }\n sendToClient(client, turbopackConnectedMessage)\n\n const errors: CompilationError[] = []\n\n for (const entryIssues of currentEntryIssues.values()) {\n for (const issue of entryIssues.values()) {\n if (issue.severity !== 'warning') {\n errors.push({\n message: formatIssue(issue),\n })\n } else {\n printNonFatalIssue(issue)\n }\n }\n }\n\n if (devIndicatorServerState.disabledUntil < Date.now()) {\n devIndicatorServerState.disabledUntil = 0\n }\n\n ;(async function () {\n const versionInfo = await getVersionInfoCached()\n const devToolsConfig = await getDevToolsConfig(distDir)\n\n const syncMessage: SyncMessage = {\n type: HMR_MESSAGE_SENT_TO_BROWSER.SYNC,\n errors,\n warnings: [],\n hash: '',\n versionInfo,\n debug: {\n devtoolsFrontendUrl,\n },\n devIndicator: devIndicatorServerState,\n devToolsConfig,\n }\n\n sendToClient(client, syncMessage)\n\n if (requestId) {\n connectReactDebugChannel(requestId, sendToClient.bind(null, client))\n }\n })()\n })\n },\n\n send(action) {\n const payload = JSON.stringify(action)\n\n for (const client of clients) {\n client.send(payload)\n }\n },\n\n setReactDebugChannel(debugChannel, htmlRequestId, requestId) {\n // Store the debug channel, regardless of whether the client is connected.\n setReactDebugChannel(requestId, debugChannel)\n\n // If the client is connected, we can connect the debug channel\n // immediately. Otherwise, we'll do that when the client connects.\n const client = clientsByRequestId.get(htmlRequestId)\n\n if (client) {\n connectReactDebugChannel(requestId, sendToClient.bind(null, client))\n }\n },\n\n setHmrServerError(_error) {\n // Not implemented yet.\n },\n clearHmrServerError() {\n // Not implemented yet.\n },\n async start() {},\n async getCompilationErrors(page) {\n const appEntryKey = getEntryKey('app', 'server', page)\n const pagesEntryKey = getEntryKey('pages', 'server', page)\n\n const topLevelIssues = currentTopLevelIssues.values()\n\n const thisEntryIssues =\n currentEntryIssues.get(appEntryKey) ??\n currentEntryIssues.get(pagesEntryKey)\n\n if (thisEntryIssues !== undefined && thisEntryIssues.size > 0) {\n // If there is an error related to the requesting page we display it instead of the first error\n return [...topLevelIssues, ...thisEntryIssues.values()]\n .map((issue) => {\n const formattedIssue = formatIssue(issue)\n if (issue.severity === 'warning') {\n printNonFatalIssue(issue)\n return null\n } else if (isWellKnownError(issue)) {\n Log.error(formattedIssue)\n }\n\n return new Error(formattedIssue)\n })\n .filter((error) => error !== null)\n }\n\n // Otherwise, return all errors across pages\n const errors = []\n for (const issue of topLevelIssues) {\n if (issue.severity !== 'warning') {\n errors.push(new Error(formatIssue(issue)))\n }\n }\n for (const entryIssues of currentEntryIssues.values()) {\n for (const issue of entryIssues.values()) {\n if (issue.severity !== 'warning') {\n const message = formatIssue(issue)\n errors.push(new Error(message))\n } else {\n printNonFatalIssue(issue)\n }\n }\n }\n return errors\n },\n async invalidate({\n // .env files or tsconfig/jsconfig change\n reloadAfterInvalidation,\n }) {\n if (reloadAfterInvalidation) {\n for (const [key, entrypoint] of currentWrittenEntrypoints) {\n clearRequireCache(key, entrypoint, { force: true })\n }\n\n await clearAllModuleContexts()\n this.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES,\n hash: String(++hmrHash),\n })\n }\n },\n async buildFallbackError() {\n // Not implemented yet.\n },\n async ensurePage({\n page: inputPage,\n // Unused parameters\n // clientOnly,\n appPaths,\n definition,\n isApp,\n url: requestUrl,\n }) {\n // When there is no route definition this is an internal file not a route the user added.\n // Middleware and instrumentation are handled in turbpack-utils.ts handleEntrypoints instead.\n if (!definition) {\n if (inputPage === '/middleware') return\n if (inputPage === '/src/middleware') return\n if (inputPage === '/instrumentation') return\n if (inputPage === '/src/instrumentation') return\n }\n\n return hotReloaderSpan\n .traceChild('ensure-page', {\n inputPage,\n })\n .traceAsyncFn(async () => {\n if (BLOCKED_PAGES.includes(inputPage) && inputPage !== '/_error') {\n return\n }\n\n await currentEntriesHandling\n\n // TODO We shouldn't look into the filesystem again. This should use the information from entrypoints\n let routeDef: Pick<\n RouteDefinition,\n 'filename' | 'bundlePath' | 'page'\n > =\n definition ??\n (await findPagePathData(\n projectPath,\n inputPage,\n nextConfig.pageExtensions,\n opts.pagesDir,\n opts.appDir,\n !!nextConfig.experimental.globalNotFound\n ))\n\n // If the route is actually an app page route, then we should have access\n // to the app route definition, and therefore, the appPaths from it.\n if (!appPaths && definition && isAppPageRouteDefinition(definition)) {\n appPaths = definition.appPaths\n }\n\n let page = routeDef.page\n if (appPaths) {\n const normalizedPage = normalizeAppPath(page)\n\n // filter out paths that are not exact matches (e.g. catchall)\n const matchingAppPaths = appPaths.filter(\n (path) => normalizeAppPath(path) === normalizedPage\n )\n\n // the last item in the array is the root page, if there are parallel routes\n page = matchingAppPaths[matchingAppPaths.length - 1]\n }\n\n const pathname = definition?.pathname ?? inputPage\n\n if (page === '/_error') {\n let finishBuilding = startBuilding(pathname, requestUrl, false)\n try {\n await handlePagesErrorRoute({\n currentEntryIssues,\n entrypoints: currentEntrypoints,\n manifestLoader,\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n logErrors: true,\n hooks: {\n subscribeToChanges,\n handleWrittenEndpoint: (id, result, forceDeleteCache) => {\n currentWrittenEntrypoints.set(id, result)\n assetMapper.setPathsForKey(id, result.clientPaths)\n return clearRequireCache(id, result, {\n force: forceDeleteCache,\n })\n },\n },\n })\n } finally {\n finishBuilding()\n }\n return\n }\n\n const isInsideAppDir = routeDef.bundlePath.startsWith('app/')\n const isEntryMetadataRouteFile = isMetadataRouteFile(\n routeDef.filename.replace(opts.appDir || '', ''),\n nextConfig.pageExtensions,\n true\n )\n const normalizedAppPage = isEntryMetadataRouteFile\n ? normalizedPageToTurbopackStructureRoute(\n page,\n extname(routeDef.filename)\n )\n : page\n\n const route = isInsideAppDir\n ? currentEntrypoints.app.get(normalizedAppPage)\n : currentEntrypoints.page.get(page)\n\n if (!route) {\n // TODO: why is this entry missing in turbopack?\n if (page === '/middleware') return\n if (page === '/src/middleware') return\n if (page === '/instrumentation') return\n if (page === '/src/instrumentation') return\n\n throw new PageNotFoundError(`route not found ${page}`)\n }\n\n // We don't throw on ensureOpts.isApp === true for page-api\n // since this can happen when app pages make\n // api requests to page API routes.\n if (isApp && route.type === 'page') {\n throw new Error(`mis-matched route type: isApp && page for ${page}`)\n }\n\n const finishBuilding = startBuilding(pathname, requestUrl, false)\n try {\n await handleRouteType({\n dev,\n page,\n pathname,\n route,\n currentEntryIssues,\n entrypoints: currentEntrypoints,\n manifestLoader,\n readyIds,\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n logErrors: true,\n\n hooks: {\n subscribeToChanges,\n handleWrittenEndpoint: (id, result, forceDeleteCache) => {\n currentWrittenEntrypoints.set(id, result)\n assetMapper.setPathsForKey(id, result.clientPaths)\n return clearRequireCache(id, result, {\n force: forceDeleteCache,\n })\n },\n },\n })\n } finally {\n finishBuilding()\n }\n })\n },\n close() {\n for (const wsClient of clients) {\n // it's okay to not cleanly close these websocket connections, this is dev\n wsClient.terminate()\n }\n clients.clear()\n clientsByRequestId.clear()\n },\n }\n\n handleEntrypointsSubscription().catch((err) => {\n console.error(err)\n process.exit(1)\n })\n\n // Write empty manifests\n await currentEntriesHandling\n await manifestLoader.writeManifests({\n devRewrites: opts.fsChecker.rewrites,\n productionRewrites: undefined,\n entrypoints: currentEntrypoints,\n })\n\n async function handleProjectUpdates() {\n for await (const updateMessage of project.updateInfoSubscribe(30)) {\n switch (updateMessage.updateType) {\n case 'start': {\n hotReloader.send({ type: HMR_MESSAGE_SENT_TO_BROWSER.BUILDING })\n break\n }\n case 'end': {\n sendEnqueuedMessages()\n\n function addErrors(\n errorsMap: Map<string, CompilationError>,\n issues: EntryIssuesMap\n ) {\n for (const issueMap of issues.values()) {\n for (const [key, issue] of issueMap) {\n if (issue.severity === 'warning') continue\n if (errorsMap.has(key)) continue\n\n const message = formatIssue(issue)\n\n errorsMap.set(key, {\n message,\n details: issue.detail\n ? renderStyledStringToErrorAnsi(issue.detail)\n : undefined,\n })\n }\n }\n }\n\n const errors = new Map<string, CompilationError>()\n addErrors(errors, currentEntryIssues)\n\n for (const client of clients) {\n const state = clientStates.get(client)\n if (!state) {\n continue\n }\n\n const clientErrors = new Map(errors)\n addErrors(clientErrors, state.clientIssues)\n\n sendToClient(client, {\n type: HMR_MESSAGE_SENT_TO_BROWSER.BUILT,\n hash: String(++hmrHash),\n errors: [...clientErrors.values()],\n warnings: [],\n })\n }\n\n if (hmrEventHappened) {\n const time = updateMessage.value.duration\n const timeMessage =\n time > 2000 ? `${Math.round(time / 100) / 10}s` : `${time}ms`\n Log.event(`Compiled in ${timeMessage}`)\n hmrEventHappened = false\n }\n break\n }\n default:\n }\n }\n }\n\n handleProjectUpdates().catch((err) => {\n console.error(err)\n process.exit(1)\n })\n\n return hotReloader\n}\n"],"names":["mkdir","writeFile","join","extname","relative","pathToFileURL","ws","store","consoleStore","HMR_MESSAGE_SENT_TO_BROWSER","createDefineEnv","Log","getVersionInfo","matchNextPageBundleRequest","BLOCKED_PAGES","getOverlayMiddleware","getSourceMapMiddleware","PageNotFoundError","debounce","deleteCache","clearAllModuleContexts","clearModuleContext","denormalizePagePath","trace","AssetMapper","handleEntrypoints","handlePagesErrorRoute","handleRouteType","hasEntrypointForKey","msToNs","processTopLevelIssues","printNonFatalIssue","normalizedPageToTurbopackStructureRoute","propagateServerField","TurbopackManifestLoader","findPagePathData","getEntryKey","splitEntryKey","createBinaryHmrMessageData","FAST_REFRESH_RUNTIME_RELOAD","generateEncryptionKeyBase64","isAppPageRouteDefinition","normalizeAppPath","getNodeDebugType","isMetadataRouteFile","setBundlerFindSourceMapImplementation","getNextErrorFeedbackMiddleware","formatIssue","isPersistentCachingEnabled","isWellKnownError","processIssues","renderStyledStringToErrorAnsi","getDevOverlayFontMiddleware","devIndicatorServerState","getDisableDevIndicatorMiddleware","getRestartDevServerMiddleware","backgroundLogCompilationEvents","getSupportedBrowsers","receiveBrowserLogsTurbopack","normalizePath","devToolsConfigMiddleware","getDevToolsConfig","connectReactDebugChannel","deleteReactDebugChannel","setReactDebugChannel","wsServer","Server","noServer","isTestMode","process","env","NEXT_TEST_MODE","__NEXT_TEST_MODE","DEBUG","sessionId","Math","floor","Number","MAX_SAFE_INTEGER","random","rewriteTurbopackSources","projectRoot","sourceMap","section","sections","map","i","sources","length","replace","toString","getSourceMapFromTurbopack","project","sourceURL","sourceMapJson","getSourceMapSync","err","undefined","payload","JSON","parse","createHotReloaderTurbopack","opts","serverFields","distDir","resetFetch","nextConfig","dev","buildId","dir","projectPath","loadBindings","require","bindings","log","testMode","hasRewrites","fsChecker","rewrites","afterFiles","beforeFiles","fallback","hotReloaderSpan","version","__NEXT_VERSION","stop","encryptionKey","isBuild","clientRouterFilters","experimental","clientRouterFilter","supportedBrowsers","currentNodeJsVersion","versions","node","rootPath","turbopack","root","outputFileTracingRoot","turbo","createProject","watch","enable","pollIntervalMs","watchOptions","defineEnv","isTurbopack","config","fetchCacheKeyPrefix","middlewareMatchers","previewProps","prerenderManifest","preview","browserslistQuery","noMangling","persistentCaching","memoryLimit","turbopackMemoryLimit","isShortSession","eventTypes","bind","onDevServerCleanup","onExit","entrypointsSubscription","entrypointsSubscribe","currentWrittenEntrypoints","Map","currentEntrypoints","global","app","document","error","middleware","instrumentation","page","currentTopLevelIssues","currentEntryIssues","manifestLoader","changeSubscriptions","serverPathState","readyIds","Set","currentEntriesHandlingResolve","currentEntriesHandling","Promise","resolve","assetMapper","clearRequireCache","key","writtenEndpoint","force","path","contentHash","serverPaths","endsWith","localKey","set","hasChange","localHash","get","globalHash","__next__clear_chunk_cache__","p","file","buildingIds","startBuilding","id","requestUrl","forceRebuild","has","size","setState","loading","trigger","url","add","finishBuilding","delete","hmrEventHappened","hmrHash","clients","clientsByRequestId","clientStates","WeakMap","sendToClient","client","message","data","type","stringify","send","sendEnqueuedMessages","issueMap","values","filter","severity","state","clientIssues","messages","clear","turbopackUpdates","TURBOPACK_MESSAGE","sendEnqueuedMessagesDebounce","sendHmr","sendTurbopackMessage","diagnostics","issues","push","subscribeToChanges","includeIssues","endpoint","createMessage","onError","side","changedPromise","changed","change","String","e","unsubscribeFromChanges","subscription","return","subscribeToHmrEvents","subscriptions","hmrEvents","next","reloadMessage","RELOAD_PAGE","close","unsubscribeFromHmrEvents","handleEntrypointsSubscription","entrypoints","devRewrites","productionRewrites","logErrors","hooks","handleWrittenEndpoint","result","forceDeleteCache","recursive","middlewares","isSrcDir","telemetry","turbopackProject","sendUpdateSignal","hotReloader","DEVTOOLS_CONFIG","versionInfoCached","getVersionInfoCached","devtoolsFrontendUrl","nodeDebugType","debugPort","debugInfo","debugInfoList","fetch","then","res","json","activeWebpackConfigs","serverStats","edgeServerStats","run","req","_parsedUrl","startsWith","params","decodedPagePath","param","decodeURIComponent","denormalizedPagePath","ensurePage","clientOnly","definition","catch","console","calledNext","finished","onHMR","socket","head","onUpgrade","handleUpgrade","requestId","URL","searchParams","on","addEventListener","parsedData","event","manualTraceChild","spanName","startTime","endTime","attributes","updatedModules","isPageHidden","hadRuntimeError","dependencyChain","warn","Array","isArray","cleanedModulePath","browserDebugInfoInTerminal","entries","router","sourceType","Error","turbopackConnectedMessage","TURBOPACK_CONNECTED","errors","entryIssues","issue","disabledUntil","Date","now","versionInfo","devToolsConfig","syncMessage","SYNC","warnings","hash","debug","devIndicator","action","debugChannel","htmlRequestId","setHmrServerError","_error","clearHmrServerError","start","getCompilationErrors","appEntryKey","pagesEntryKey","topLevelIssues","thisEntryIssues","formattedIssue","invalidate","reloadAfterInvalidation","entrypoint","SERVER_COMPONENT_CHANGES","buildFallbackError","inputPage","appPaths","isApp","traceChild","traceAsyncFn","includes","routeDef","pageExtensions","pagesDir","appDir","globalNotFound","normalizedPage","matchingAppPaths","pathname","setPathsForKey","clientPaths","isInsideAppDir","bundlePath","isEntryMetadataRouteFile","filename","normalizedAppPage","route","wsClient","terminate","exit","writeManifests","handleProjectUpdates","updateMessage","updateInfoSubscribe","updateType","BUILDING","addErrors","errorsMap","details","detail","clientErrors","BUILT","time","value","duration","timeMessage","round"],"mappings":"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","ignoreList":[0]}
|
@@ -188,7 +188,7 @@ export default class HotReloaderWebpack {
|
|
188
188
|
this.previewProps = previewProps;
|
189
189
|
this.rewrites = rewrites;
|
190
190
|
this.hotReloaderSpan = trace('hot-reloader', undefined, {
|
191
|
-
version: "15.5.1-canary.
|
191
|
+
version: "15.5.1-canary.34"
|
192
192
|
});
|
193
193
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
194
194
|
// of the current `next dev` invocation.
|
@@ -14,7 +14,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
|
|
14
14
|
bundlerSuffix = ' (webpack)';
|
15
15
|
}
|
16
16
|
}
|
17
|
-
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.5.1-canary.
|
17
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.5.1-canary.34"}`))}${bundlerSuffix}`);
|
18
18
|
if (appUrl) {
|
19
19
|
Log.bootstrap(`- Local: ${appUrl}`);
|
20
20
|
}
|
@@ -111,7 +111,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
|
|
111
111
|
export async function startServer(serverOptions) {
|
112
112
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
113
113
|
let { port } = serverOptions;
|
114
|
-
process.title = `next-server (v${"15.5.1-canary.
|
114
|
+
process.title = `next-server (v${"15.5.1-canary.34"})`;
|
115
115
|
let handlersReady = ()=>{};
|
116
116
|
let handlersError = ()=>{};
|
117
117
|
let handlersPromise = new Promise((resolve, reject)=>{
|
@@ -103,7 +103,7 @@ const parseNodeArgs = (args)=>{
|
|
103
103
|
* them as an array of strings.
|
104
104
|
*
|
105
105
|
* @returns An array of strings with the node options.
|
106
|
-
*/ const getNodeOptionsArgs = ()=>{
|
106
|
+
*/ export const getNodeOptionsArgs = ()=>{
|
107
107
|
if (!process.env.NODE_OPTIONS) return [];
|
108
108
|
return tokenizeArgs(process.env.NODE_OPTIONS);
|
109
109
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/server/lib/utils.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\nimport { InvalidArgumentError } from 'next/dist/compiled/commander'\n\nexport function printAndExit(message: string, code = 1) {\n if (code === 0) {\n console.log(message)\n } else {\n console.error(message)\n }\n\n return process.exit(code)\n}\n\nconst parseNodeArgs = (args: string[]) => {\n const { values, tokens } = parseArgs({ args, strict: false, tokens: true })\n\n // For the `NODE_OPTIONS`, we support arguments with values without the `=`\n // sign. We need to parse them manually.\n let orphan = null\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n\n if (token.kind === 'option-terminator') {\n break\n }\n\n // When we encounter an option, if it's value is undefined, we should check\n // to see if the following tokens are positional parameters. If they are,\n // then the option is orphaned, and we can assign it.\n if (token.kind === 'option') {\n orphan = typeof token.value === 'undefined' ? token : null\n continue\n }\n\n // If the token isn't a positional one, then we can't assign it to the found\n // orphaned option.\n if (token.kind !== 'positional') {\n orphan = null\n continue\n }\n\n // If we don't have an orphan, then we can skip this token.\n if (!orphan) {\n continue\n }\n\n // If the token is a positional one, and it has a value, so add it to the\n // values object. If it already exists, append it with a space.\n if (orphan.name in values && typeof values[orphan.name] === 'string') {\n values[orphan.name] += ` ${token.value}`\n } else {\n values[orphan.name] = token.value\n }\n }\n\n return values\n}\n\n/**\n * Tokenizes the arguments string into an array of strings, supporting quoted\n * values and escaped characters.\n * Converted from: https://github.com/nodejs/node/blob/c29d53c5cfc63c5a876084e788d70c9e87bed880/src/node_options.cc#L1401\n *\n * @param input The arguments string to be tokenized.\n * @returns An array of strings with the tokenized arguments.\n */\nexport const tokenizeArgs = (input: string): string[] => {\n let args: string[] = []\n let isInString = false\n let willStartNewArg = true\n\n for (let i = 0; i < input.length; i++) {\n let char = input[i]\n\n // Skip any escaped characters in strings.\n if (char === '\\\\' && isInString) {\n // Ensure we don't have an escape character at the end.\n if (input.length === i + 1) {\n throw new Error('Invalid escape character at the end.')\n }\n\n // Skip the next character.\n char = input[++i]\n }\n // If we find a space outside of a string, we should start a new argument.\n else if (char === ' ' && !isInString) {\n willStartNewArg = true\n continue\n }\n\n // If we find a quote, we should toggle the string flag.\n else if (char === '\"') {\n isInString = !isInString\n continue\n }\n\n // If we're starting a new argument, we should add it to the array.\n if (willStartNewArg) {\n args.push(char)\n willStartNewArg = false\n }\n // Otherwise, add it to the last argument.\n else {\n args[args.length - 1] += char\n }\n }\n\n if (isInString) {\n throw new Error('Unterminated string')\n }\n\n return args\n}\n\n/**\n * Get the node options from the environment variable `NODE_OPTIONS` and returns\n * them as an array of strings.\n *\n * @returns An array of strings with the node options.\n */\nconst getNodeOptionsArgs = () => {\n if (!process.env.NODE_OPTIONS) return []\n\n return tokenizeArgs(process.env.NODE_OPTIONS)\n}\n\n/**\n * The debug address is in the form of `[host:]port`. The host is optional.\n */\ntype DebugAddress = {\n host: string | undefined\n port: number\n}\n\n/**\n * Formats the debug address into a string.\n */\nexport const formatDebugAddress = ({ host, port }: DebugAddress): string => {\n if (host) return `${host}:${port}`\n return `${port}`\n}\n\n/**\n * Get's the debug address from the `NODE_OPTIONS` environment variable. If the\n * address is not found, it returns the default host (`undefined`) and port\n * (`9229`).\n *\n * @returns An object with the host and port of the debug address.\n */\nexport const getParsedDebugAddress = (): DebugAddress => {\n const args = getNodeOptionsArgs()\n if (args.length === 0) return { host: undefined, port: 9229 }\n\n const parsed = parseNodeArgs(args)\n\n // We expect to find the debug port in one of these options. The first one\n // found will be used.\n const address =\n parsed.inspect ?? parsed['inspect-brk'] ?? parsed['inspect_brk']\n\n if (!address || typeof address !== 'string') {\n return { host: undefined, port: 9229 }\n }\n\n // The address is in the form of `[host:]port`. Let's parse the address.\n if (address.includes(':')) {\n const [host, port] = address.split(':')\n return { host, port: parseInt(port, 10) }\n }\n\n return { host: undefined, port: parseInt(address, 10) }\n}\n\n/**\n * Get the debug address from the `NODE_OPTIONS` environment variable and format\n * it into a string.\n *\n * @returns A string with the formatted debug address.\n */\nexport const getFormattedDebugAddress = () =>\n formatDebugAddress(getParsedDebugAddress())\n\n/**\n * Stringify the arguments to be used in a command line. It will ignore any\n * argument that has a value of `undefined`.\n *\n * @param args The arguments to be stringified.\n * @returns A string with the arguments.\n */\nexport function formatNodeOptions(\n args: Record<string, string | boolean | undefined>\n): string {\n return Object.entries(args)\n .map(([key, value]) => {\n if (value === true) {\n return `--${key}`\n }\n\n if (value) {\n return `--${key}=${\n // Values with spaces need to be quoted. We use JSON.stringify to\n // also escape any nested quotes.\n value.includes(' ') && !value.startsWith('\"')\n ? JSON.stringify(value)\n : value\n }`\n }\n\n return null\n })\n .filter((arg) => arg !== null)\n .join(' ')\n}\n\n/**\n * Get the node options from the `NODE_OPTIONS` environment variable and parse\n * them into an object without the inspect options.\n *\n * @returns An object with the parsed node options.\n */\nexport function getParsedNodeOptionsWithoutInspect() {\n const args = getNodeOptionsArgs()\n if (args.length === 0) return {}\n\n const parsed = parseNodeArgs(args)\n\n // Remove inspect options.\n delete parsed.inspect\n delete parsed['inspect-brk']\n delete parsed['inspect_brk']\n\n return parsed\n}\n\n/**\n * Get the node options from the `NODE_OPTIONS` environment variable and format\n * them into a string without the inspect options.\n *\n * @returns A string with the formatted node options.\n */\nexport function getFormattedNodeOptionsWithoutInspect() {\n const args = getParsedNodeOptionsWithoutInspect()\n if (Object.keys(args).length === 0) return ''\n\n return formatNodeOptions(args)\n}\n\n/**\n * Check if the value is a valid positive integer and parse it. If it's not, it will throw an error.\n *\n * @param value The value to be parsed.\n */\nexport function parseValidPositiveInteger(value: string): number {\n const parsedValue = parseInt(value, 10)\n\n if (isNaN(parsedValue) || !isFinite(parsedValue) || parsedValue < 0) {\n throw new InvalidArgumentError(`'${value}' is not a non-negative number.`)\n }\n return parsedValue\n}\n\nexport const RESTART_EXIT_CODE = 77\n\nexport type NodeInspectType = 'inspect' | 'inspect-brk' | undefined\n\n/**\n * Get the debug type from the `NODE_OPTIONS` environment variable.\n */\nexport function getNodeDebugType(): NodeInspectType {\n const args = [...process.execArgv, ...getNodeOptionsArgs()]\n if (args.length === 0) return\n\n const parsed = parseNodeArgs(args)\n\n if (parsed.inspect) return 'inspect'\n if (parsed['inspect-brk'] || parsed['inspect_brk']) return 'inspect-brk'\n}\n\n/**\n * Get the `max-old-space-size` value from the `NODE_OPTIONS` environment\n * variable.\n *\n * @returns The value of the `max-old-space-size` option as a number.\n */\nexport function getMaxOldSpaceSize() {\n const args = getNodeOptionsArgs()\n if (args.length === 0) return\n\n const parsed = parseNodeArgs(args)\n\n const size = parsed['max-old-space-size'] || parsed['max_old_space_size']\n if (!size || typeof size !== 'string') return\n\n return parseInt(size, 10)\n}\n"],"names":["parseArgs","InvalidArgumentError","printAndExit","message","code","console","log","error","process","exit","parseNodeArgs","args","values","tokens","strict","orphan","i","length","token","kind","value","name","tokenizeArgs","input","isInString","willStartNewArg","char","Error","push","getNodeOptionsArgs","env","NODE_OPTIONS","formatDebugAddress","host","port","getParsedDebugAddress","undefined","parsed","address","inspect","includes","split","parseInt","getFormattedDebugAddress","formatNodeOptions","Object","entries","map","key","startsWith","JSON","stringify","filter","arg","join","getParsedNodeOptionsWithoutInspect","getFormattedNodeOptionsWithoutInspect","keys","parseValidPositiveInteger","parsedValue","isNaN","isFinite","RESTART_EXIT_CODE","getNodeDebugType","execArgv","getMaxOldSpaceSize","size"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../../src/server/lib/utils.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\nimport { InvalidArgumentError } from 'next/dist/compiled/commander'\n\nexport function printAndExit(message: string, code = 1) {\n if (code === 0) {\n console.log(message)\n } else {\n console.error(message)\n }\n\n return process.exit(code)\n}\n\nconst parseNodeArgs = (args: string[]) => {\n const { values, tokens } = parseArgs({ args, strict: false, tokens: true })\n\n // For the `NODE_OPTIONS`, we support arguments with values without the `=`\n // sign. We need to parse them manually.\n let orphan = null\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n\n if (token.kind === 'option-terminator') {\n break\n }\n\n // When we encounter an option, if it's value is undefined, we should check\n // to see if the following tokens are positional parameters. If they are,\n // then the option is orphaned, and we can assign it.\n if (token.kind === 'option') {\n orphan = typeof token.value === 'undefined' ? token : null\n continue\n }\n\n // If the token isn't a positional one, then we can't assign it to the found\n // orphaned option.\n if (token.kind !== 'positional') {\n orphan = null\n continue\n }\n\n // If we don't have an orphan, then we can skip this token.\n if (!orphan) {\n continue\n }\n\n // If the token is a positional one, and it has a value, so add it to the\n // values object. If it already exists, append it with a space.\n if (orphan.name in values && typeof values[orphan.name] === 'string') {\n values[orphan.name] += ` ${token.value}`\n } else {\n values[orphan.name] = token.value\n }\n }\n\n return values\n}\n\n/**\n * Tokenizes the arguments string into an array of strings, supporting quoted\n * values and escaped characters.\n * Converted from: https://github.com/nodejs/node/blob/c29d53c5cfc63c5a876084e788d70c9e87bed880/src/node_options.cc#L1401\n *\n * @param input The arguments string to be tokenized.\n * @returns An array of strings with the tokenized arguments.\n */\nexport const tokenizeArgs = (input: string): string[] => {\n let args: string[] = []\n let isInString = false\n let willStartNewArg = true\n\n for (let i = 0; i < input.length; i++) {\n let char = input[i]\n\n // Skip any escaped characters in strings.\n if (char === '\\\\' && isInString) {\n // Ensure we don't have an escape character at the end.\n if (input.length === i + 1) {\n throw new Error('Invalid escape character at the end.')\n }\n\n // Skip the next character.\n char = input[++i]\n }\n // If we find a space outside of a string, we should start a new argument.\n else if (char === ' ' && !isInString) {\n willStartNewArg = true\n continue\n }\n\n // If we find a quote, we should toggle the string flag.\n else if (char === '\"') {\n isInString = !isInString\n continue\n }\n\n // If we're starting a new argument, we should add it to the array.\n if (willStartNewArg) {\n args.push(char)\n willStartNewArg = false\n }\n // Otherwise, add it to the last argument.\n else {\n args[args.length - 1] += char\n }\n }\n\n if (isInString) {\n throw new Error('Unterminated string')\n }\n\n return args\n}\n\n/**\n * Get the node options from the environment variable `NODE_OPTIONS` and returns\n * them as an array of strings.\n *\n * @returns An array of strings with the node options.\n */\nexport const getNodeOptionsArgs = () => {\n if (!process.env.NODE_OPTIONS) return []\n\n return tokenizeArgs(process.env.NODE_OPTIONS)\n}\n\n/**\n * The debug address is in the form of `[host:]port`. The host is optional.\n */\ntype DebugAddress = {\n host: string | undefined\n port: number\n}\n\n/**\n * Formats the debug address into a string.\n */\nexport const formatDebugAddress = ({ host, port }: DebugAddress): string => {\n if (host) return `${host}:${port}`\n return `${port}`\n}\n\n/**\n * Get's the debug address from the `NODE_OPTIONS` environment variable. If the\n * address is not found, it returns the default host (`undefined`) and port\n * (`9229`).\n *\n * @returns An object with the host and port of the debug address.\n */\nexport const getParsedDebugAddress = (): DebugAddress => {\n const args = getNodeOptionsArgs()\n if (args.length === 0) return { host: undefined, port: 9229 }\n\n const parsed = parseNodeArgs(args)\n\n // We expect to find the debug port in one of these options. The first one\n // found will be used.\n const address =\n parsed.inspect ?? parsed['inspect-brk'] ?? parsed['inspect_brk']\n\n if (!address || typeof address !== 'string') {\n return { host: undefined, port: 9229 }\n }\n\n // The address is in the form of `[host:]port`. Let's parse the address.\n if (address.includes(':')) {\n const [host, port] = address.split(':')\n return { host, port: parseInt(port, 10) }\n }\n\n return { host: undefined, port: parseInt(address, 10) }\n}\n\n/**\n * Get the debug address from the `NODE_OPTIONS` environment variable and format\n * it into a string.\n *\n * @returns A string with the formatted debug address.\n */\nexport const getFormattedDebugAddress = () =>\n formatDebugAddress(getParsedDebugAddress())\n\n/**\n * Stringify the arguments to be used in a command line. It will ignore any\n * argument that has a value of `undefined`.\n *\n * @param args The arguments to be stringified.\n * @returns A string with the arguments.\n */\nexport function formatNodeOptions(\n args: Record<string, string | boolean | undefined>\n): string {\n return Object.entries(args)\n .map(([key, value]) => {\n if (value === true) {\n return `--${key}`\n }\n\n if (value) {\n return `--${key}=${\n // Values with spaces need to be quoted. We use JSON.stringify to\n // also escape any nested quotes.\n value.includes(' ') && !value.startsWith('\"')\n ? JSON.stringify(value)\n : value\n }`\n }\n\n return null\n })\n .filter((arg) => arg !== null)\n .join(' ')\n}\n\n/**\n * Get the node options from the `NODE_OPTIONS` environment variable and parse\n * them into an object without the inspect options.\n *\n * @returns An object with the parsed node options.\n */\nexport function getParsedNodeOptionsWithoutInspect() {\n const args = getNodeOptionsArgs()\n if (args.length === 0) return {}\n\n const parsed = parseNodeArgs(args)\n\n // Remove inspect options.\n delete parsed.inspect\n delete parsed['inspect-brk']\n delete parsed['inspect_brk']\n\n return parsed\n}\n\n/**\n * Get the node options from the `NODE_OPTIONS` environment variable and format\n * them into a string without the inspect options.\n *\n * @returns A string with the formatted node options.\n */\nexport function getFormattedNodeOptionsWithoutInspect() {\n const args = getParsedNodeOptionsWithoutInspect()\n if (Object.keys(args).length === 0) return ''\n\n return formatNodeOptions(args)\n}\n\n/**\n * Check if the value is a valid positive integer and parse it. If it's not, it will throw an error.\n *\n * @param value The value to be parsed.\n */\nexport function parseValidPositiveInteger(value: string): number {\n const parsedValue = parseInt(value, 10)\n\n if (isNaN(parsedValue) || !isFinite(parsedValue) || parsedValue < 0) {\n throw new InvalidArgumentError(`'${value}' is not a non-negative number.`)\n }\n return parsedValue\n}\n\nexport const RESTART_EXIT_CODE = 77\n\nexport type NodeInspectType = 'inspect' | 'inspect-brk' | undefined\n\n/**\n * Get the debug type from the `NODE_OPTIONS` environment variable.\n */\nexport function getNodeDebugType(): NodeInspectType {\n const args = [...process.execArgv, ...getNodeOptionsArgs()]\n if (args.length === 0) return\n\n const parsed = parseNodeArgs(args)\n\n if (parsed.inspect) return 'inspect'\n if (parsed['inspect-brk'] || parsed['inspect_brk']) return 'inspect-brk'\n}\n\n/**\n * Get the `max-old-space-size` value from the `NODE_OPTIONS` environment\n * variable.\n *\n * @returns The value of the `max-old-space-size` option as a number.\n */\nexport function getMaxOldSpaceSize() {\n const args = getNodeOptionsArgs()\n if (args.length === 0) return\n\n const parsed = parseNodeArgs(args)\n\n const size = parsed['max-old-space-size'] || parsed['max_old_space_size']\n if (!size || typeof size !== 'string') return\n\n return parseInt(size, 10)\n}\n"],"names":["parseArgs","InvalidArgumentError","printAndExit","message","code","console","log","error","process","exit","parseNodeArgs","args","values","tokens","strict","orphan","i","length","token","kind","value","name","tokenizeArgs","input","isInString","willStartNewArg","char","Error","push","getNodeOptionsArgs","env","NODE_OPTIONS","formatDebugAddress","host","port","getParsedDebugAddress","undefined","parsed","address","inspect","includes","split","parseInt","getFormattedDebugAddress","formatNodeOptions","Object","entries","map","key","startsWith","JSON","stringify","filter","arg","join","getParsedNodeOptionsWithoutInspect","getFormattedNodeOptionsWithoutInspect","keys","parseValidPositiveInteger","parsedValue","isNaN","isFinite","RESTART_EXIT_CODE","getNodeDebugType","execArgv","getMaxOldSpaceSize","size"],"mappings":"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","ignoreList":[0]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
export function isStableBuild() {
|
2
2
|
var _process_env___NEXT_VERSION;
|
3
|
-
return !((_process_env___NEXT_VERSION = "15.5.1-canary.
|
3
|
+
return !((_process_env___NEXT_VERSION = "15.5.1-canary.34") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
4
4
|
}
|
5
5
|
export class CanaryOnlyError extends Error {
|
6
6
|
constructor(arg){
|
@@ -118,7 +118,7 @@ async function lint(baseDir, lintDirs, eslintrcFile, pkgJsonPath, { lintDuringBu
|
|
118
118
|
try {
|
119
119
|
var _mod_CLIEngine, _ESLint_getErrorResults;
|
120
120
|
// Load ESLint after we're sure it exists:
|
121
|
-
const deps =
|
121
|
+
const deps = (0, _hasnecessarydependencies.hasNecessaryDependencies)(baseDir, requiredPackages);
|
122
122
|
const packageManager = (0, _getpkgmanager.getPkgManager)(baseDir);
|
123
123
|
if (deps.missing.some((dep)=>dep.pkg === 'eslint')) {
|
124
124
|
_log.error(`ESLint must be installed${lintDuringBuild ? ' in order to run during builds:' : ':'} ${(0, _picocolors.bold)((0, _picocolors.cyan)((packageManager === 'yarn' ? 'yarn add --dev' : packageManager === 'pnpm' ? 'pnpm install --save-dev' : 'npm install --save-dev') + ' eslint'))}`);
|