next 15.6.0-canary.19 → 15.6.0-canary.20
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 +3 -3
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/@next/font/dist/google/font-data.json +650 -34
- package/dist/compiled/@next/font/dist/google/index.d.ts +119 -2
- 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-api.runtime.prod.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.prod.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/compiled/next-server/pages.runtime.prod.js +1 -1
- package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
- package/dist/esm/build/index.js +3 -3
- 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/worker.js +19 -6
- package/dist/esm/lib/worker.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +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/shared/lib/canary-only.js +1 -1
- package/dist/lib/worker.js +19 -6
- package/dist/lib/worker.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +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/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
package/dist/esm/build/index.js
CHANGED
@@ -303,7 +303,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
303
303
|
const nextBuildSpan = trace('next-build', undefined, {
|
304
304
|
buildMode: experimentalBuildMode,
|
305
305
|
isTurboBuild: String(isTurbopack),
|
306
|
-
version: "15.6.0-canary.
|
306
|
+
version: "15.6.0-canary.20"
|
307
307
|
});
|
308
308
|
NextBuildContext.nextBuildSpan = nextBuildSpan;
|
309
309
|
NextBuildContext.dir = dir;
|
@@ -782,7 +782,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
782
782
|
// Files outside of the distDir can be "type": "module"
|
783
783
|
await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
784
784
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
785
|
-
await recordFrameworkVersion("15.6.0-canary.
|
785
|
+
await recordFrameworkVersion("15.6.0-canary.20");
|
786
786
|
await updateBuildDiagnostics({
|
787
787
|
buildStage: 'start'
|
788
788
|
});
|
@@ -2433,7 +2433,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
2433
2433
|
distDir,
|
2434
2434
|
config,
|
2435
2435
|
staticPages,
|
2436
|
-
nextVersion: "15.6.0-canary.
|
2436
|
+
nextVersion: "15.6.0-canary.20",
|
2437
2437
|
tracingRoot: outputFileTracingRoot,
|
2438
2438
|
hasNodeMiddleware,
|
2439
2439
|
hasInstrumentationHook,
|
@@ -11,7 +11,7 @@ import { isDeepStrictEqual } from 'util';
|
|
11
11
|
import { getDefineEnv } from '../define-env';
|
12
12
|
import { getReactCompilerLoader } from '../get-babel-loader-config';
|
13
13
|
import { throwTurbopackInternalError } from '../../shared/lib/turbopack/internal-error';
|
14
|
-
const nextVersion = "15.6.0-canary.
|
14
|
+
const nextVersion = "15.6.0-canary.20";
|
15
15
|
const ArchName = arch();
|
16
16
|
const PlatformName = platform();
|
17
17
|
function infoLog(...args) {
|
@@ -1603,7 +1603,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
1603
1603
|
isClient && new CopyFilePlugin({
|
1604
1604
|
// file path to build output of `@next/polyfill-nomodule`
|
1605
1605
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
1606
|
-
cacheKey: "15.6.0-canary.
|
1606
|
+
cacheKey: "15.6.0-canary.20",
|
1607
1607
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
1608
1608
|
minimize: false,
|
1609
1609
|
info: {
|
@@ -1786,7 +1786,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
1786
1786
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
1787
1787
|
// - Next.js version
|
1788
1788
|
// - next.config.js keys that affect compilation
|
1789
|
-
version: `${__dirname}|${"15.6.0-canary.
|
1789
|
+
version: `${__dirname}|${"15.6.0-canary.20"}|${configVars}`,
|
1790
1790
|
cacheDirectory: path.join(distDir, 'cache', 'webpack'),
|
1791
1791
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
1792
1792
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* - next/script with `beforeInteractive` strategy
|
6
6
|
*/ import { getAssetPrefix } from './asset-prefix';
|
7
7
|
import { setAttributesFromProps } from './set-attributes-from-props';
|
8
|
-
const version = "15.6.0-canary.
|
8
|
+
const version = "15.6.0-canary.20";
|
9
9
|
window.next = {
|
10
10
|
version,
|
11
11
|
appDir: true
|
package/dist/esm/client/index.js
CHANGED
@@ -26,7 +26,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
|
|
26
26
|
import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
|
27
27
|
import tracer from './tracing/tracer';
|
28
28
|
import { isNextRouterError } from './components/is-next-router-error';
|
29
|
-
export const version = "15.6.0-canary.
|
29
|
+
export const version = "15.6.0-canary.20";
|
30
30
|
export let router;
|
31
31
|
export const emitter = mitt();
|
32
32
|
const looseToArray = (input)=>[].slice.call(input);
|
package/dist/esm/lib/worker.js
CHANGED
@@ -43,16 +43,29 @@ export class Worker {
|
|
43
43
|
}
|
44
44
|
const createWorker = ()=>{
|
45
45
|
var _farmOptions_forkOptions;
|
46
|
+
const workerEnv = {
|
47
|
+
...process.env,
|
48
|
+
...((_farmOptions_forkOptions = farmOptions.forkOptions) == null ? void 0 : _farmOptions_forkOptions.env) || {},
|
49
|
+
IS_NEXT_WORKER: 'true',
|
50
|
+
NODE_OPTIONS: formatNodeOptions(nodeOptions)
|
51
|
+
};
|
52
|
+
if (workerEnv.FORCE_COLOR === undefined) {
|
53
|
+
var _process_stderr;
|
54
|
+
// Mirror the enablement heuristic from picocolors (see https://github.com/vercel/next.js/blob/6a40da0345939fe4f7b1ae519b296a86dd103432/packages/next/src/lib/picocolors.ts#L21-L24).
|
55
|
+
// Picocolors snapshots `process.env`/`stdout.isTTY` at module load time, so when the worker
|
56
|
+
// process bootstraps with piped stdio its own check would disable colors. Re-evaluating the
|
57
|
+
// same conditions here lets us opt the worker into color output only when the parent would
|
58
|
+
// have seen colors, while still respecting explicit opt-outs like NO_COLOR.
|
59
|
+
const supportsColors = !workerEnv.NO_COLOR && !workerEnv.CI && workerEnv.TERM !== 'dumb' && (process.stdout.isTTY || ((_process_stderr = process.stderr) == null ? void 0 : _process_stderr.isTTY));
|
60
|
+
if (supportsColors) {
|
61
|
+
workerEnv.FORCE_COLOR = '1';
|
62
|
+
}
|
63
|
+
}
|
46
64
|
this._worker = new JestWorker(workerPath, {
|
47
65
|
...farmOptions,
|
48
66
|
forkOptions: {
|
49
67
|
...farmOptions.forkOptions,
|
50
|
-
env:
|
51
|
-
...process.env,
|
52
|
-
...((_farmOptions_forkOptions = farmOptions.forkOptions) == null ? void 0 : _farmOptions_forkOptions.env) || {},
|
53
|
-
IS_NEXT_WORKER: 'true',
|
54
|
-
NODE_OPTIONS: formatNodeOptions(nodeOptions)
|
55
|
-
}
|
68
|
+
env: workerEnv
|
56
69
|
},
|
57
70
|
maxRetries: 0
|
58
71
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/worker.ts"],"sourcesContent":["import type { ChildProcess } from 'child_process'\nimport { Worker as JestWorker } from 'next/dist/compiled/jest-worker'\nimport { Transform } from 'stream'\nimport {\n formatDebugAddress,\n formatNodeOptions,\n getNodeDebugType,\n getParsedDebugAddress,\n getParsedNodeOptionsWithoutInspect,\n} from '../server/lib/utils'\n\ntype FarmOptions = NonNullable<ConstructorParameters<typeof JestWorker>[1]>\n\nconst RESTARTED = Symbol('restarted')\n\nconst cleanupWorkers = (worker: JestWorker) => {\n for (const curWorker of ((worker as any)._workerPool?._workers || []) as {\n _child?: ChildProcess\n }[]) {\n curWorker._child?.kill('SIGINT')\n }\n}\n\nexport function getNextBuildDebuggerPortOffset(_: {\n kind: 'export-page'\n}): number {\n // 0: export worker\n return 0\n}\n\nexport class Worker {\n private _worker: JestWorker | undefined\n\n constructor(\n workerPath: string,\n options: Omit<FarmOptions, 'forkOptions'> & {\n forkOptions?:\n | (Omit<NonNullable<FarmOptions['forkOptions']>, 'env'> & {\n env?: Partial<NodeJS.ProcessEnv> | undefined\n })\n | undefined\n /**\n * `-1` if not inspectable\n */\n debuggerPortOffset: number\n enableSourceMaps?: boolean\n /**\n * True if `--max-old-space-size` should not be forwarded to the worker.\n */\n isolatedMemory: boolean\n timeout?: number\n onActivity?: () => void\n onActivityAbort?: () => void\n onRestart?: (method: string, args: any[], attempts: number) => void\n logger?: Pick<typeof console, 'error' | 'info' | 'warn'>\n exposedMethods: ReadonlyArray<string>\n enableWorkerThreads?: boolean\n }\n ) {\n let {\n enableSourceMaps,\n timeout,\n onRestart,\n logger = console,\n debuggerPortOffset,\n isolatedMemory,\n ...farmOptions\n } = options\n\n let restartPromise: Promise<typeof RESTARTED>\n let resolveRestartPromise: (arg: typeof RESTARTED) => void\n let activeTasks = 0\n\n this._worker = undefined\n\n // ensure we end workers if they weren't before exit\n process.on('exit', () => {\n this.close()\n })\n\n const nodeOptions = getParsedNodeOptionsWithoutInspect()\n\n if (debuggerPortOffset !== -1) {\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType) {\n const address = getParsedDebugAddress()\n address.port =\n address.port +\n // current process runs on `address.port`\n 1 +\n debuggerPortOffset\n nodeOptions[nodeDebugType] = formatDebugAddress(address)\n }\n }\n\n if (enableSourceMaps) {\n nodeOptions['enable-source-maps'] = true\n }\n\n if (isolatedMemory) {\n delete nodeOptions['max-old-space-size']\n delete nodeOptions['max_old_space_size']\n }\n\n const createWorker = () => {\n this._worker = new JestWorker(workerPath, {\n ...farmOptions,\n forkOptions: {\n ...farmOptions.forkOptions,\n env: {\n ...process.env,\n ...((farmOptions.forkOptions?.env || {}) as any),\n IS_NEXT_WORKER: 'true',\n NODE_OPTIONS: formatNodeOptions(nodeOptions),\n } as any,\n },\n maxRetries: 0,\n }) as JestWorker\n restartPromise = new Promise(\n (resolve) => (resolveRestartPromise = resolve)\n )\n\n /**\n * Jest Worker has two worker types, ChildProcessWorker (uses child_process) and NodeThreadWorker (uses worker_threads)\n * Next.js uses ChildProcessWorker by default, but it can be switched to NodeThreadWorker with an experimental flag\n *\n * We only want to handle ChildProcessWorker's orphan process issue, so we access the private property \"_child\":\n * https://github.com/facebook/jest/blob/b38d7d345a81d97d1dc3b68b8458b1837fbf19be/packages/jest-worker/src/workers/ChildProcessWorker.ts\n *\n * But this property is not available in NodeThreadWorker, so we need to check if we are using ChildProcessWorker\n */\n if (!farmOptions.enableWorkerThreads) {\n for (const worker of ((this._worker as any)._workerPool?._workers ||\n []) as {\n _child?: ChildProcess\n }[]) {\n worker._child?.on('exit', (code, signal) => {\n if ((code || (signal && signal !== 'SIGINT')) && this._worker) {\n logger.error(\n `Next.js build worker exited with code: ${code} and signal: ${signal}`\n )\n\n // if a child process doesn't exit gracefully, we want to bubble up the exit code to the parent process\n process.exit(code ?? 1)\n }\n })\n\n // if a child process emits a particular message, we track that as activity\n // so the parent process can keep track of progress\n worker._child?.on('message', ([, data]: [number, unknown]) => {\n if (\n data &&\n typeof data === 'object' &&\n 'type' in data &&\n data.type === 'activity'\n ) {\n onActivity()\n }\n })\n }\n }\n\n let aborted = false\n const onActivityAbort = () => {\n if (!aborted) {\n options.onActivityAbort?.()\n aborted = true\n }\n }\n\n // Listen to the worker's stdout and stderr, if there's any thing logged, abort the activity first\n const abortActivityStreamOnLog = new Transform({\n transform(_chunk, _encoding, callback) {\n onActivityAbort()\n callback()\n },\n })\n // Stop the activity if there's any output from the worker\n this._worker.getStdout().pipe(abortActivityStreamOnLog)\n this._worker.getStderr().pipe(abortActivityStreamOnLog)\n\n // Pipe the worker's stdout and stderr to the parent process\n this._worker.getStdout().pipe(process.stdout)\n this._worker.getStderr().pipe(process.stderr)\n }\n createWorker()\n\n const onHanging = () => {\n const worker = this._worker\n if (!worker) return\n const resolve = resolveRestartPromise\n createWorker()\n logger.warn(\n `Sending SIGTERM signal to static worker due to timeout${\n timeout ? ` of ${timeout / 1000} seconds` : ''\n }. Subsequent errors may be a result of the worker exiting.`\n )\n worker.end().then(() => {\n resolve(RESTARTED)\n })\n }\n\n let hangingTimer: NodeJS.Timeout | false = false\n\n const onActivity = () => {\n if (hangingTimer) clearTimeout(hangingTimer)\n if (options.onActivity) options.onActivity()\n\n hangingTimer = activeTasks > 0 && setTimeout(onHanging, timeout)\n }\n\n for (const method of farmOptions.exposedMethods) {\n if (method.startsWith('_')) continue\n ;(this as any)[method] = timeout\n ? // eslint-disable-next-line no-loop-func\n async (...args: any[]) => {\n activeTasks++\n try {\n let attempts = 0\n for (;;) {\n onActivity()\n const result = await Promise.race([\n (this._worker as any)[method](...args),\n restartPromise,\n ])\n if (result !== RESTARTED) return result\n if (onRestart) onRestart(method, args, ++attempts)\n }\n } finally {\n activeTasks--\n onActivity()\n }\n }\n : (this._worker as any)[method].bind(this._worker)\n }\n }\n\n end(): ReturnType<JestWorker['end']> {\n const worker = this._worker\n if (!worker) {\n throw new Error('Farm is ended, no more calls can be done to it')\n }\n cleanupWorkers(worker)\n this._worker = undefined\n return worker.end()\n }\n\n /**\n * Quietly end the worker if it exists\n */\n close(): void {\n if (this._worker) {\n cleanupWorkers(this._worker)\n this._worker.end()\n }\n }\n}\n"],"names":["Worker","JestWorker","Transform","formatDebugAddress","formatNodeOptions","getNodeDebugType","getParsedDebugAddress","getParsedNodeOptionsWithoutInspect","RESTARTED","Symbol","cleanupWorkers","worker","curWorker","_workerPool","_workers","_child","kill","getNextBuildDebuggerPortOffset","_","constructor","workerPath","options","enableSourceMaps","timeout","onRestart","logger","console","debuggerPortOffset","isolatedMemory","farmOptions","restartPromise","resolveRestartPromise","activeTasks","_worker","undefined","process","on","close","nodeOptions","nodeDebugType","address","port","createWorker","forkOptions","env","IS_NEXT_WORKER","NODE_OPTIONS","maxRetries","Promise","resolve","enableWorkerThreads","code","signal","error","exit","data","type","onActivity","aborted","onActivityAbort","abortActivityStreamOnLog","transform","_chunk","_encoding","callback","getStdout","pipe","getStderr","stdout","stderr","onHanging","warn","end","then","hangingTimer","clearTimeout","setTimeout","method","exposedMethods","startsWith","args","attempts","result","race","bind","Error"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../src/lib/worker.ts"],"sourcesContent":["import type { ChildProcess } from 'child_process'\nimport { Worker as JestWorker } from 'next/dist/compiled/jest-worker'\nimport { Transform } from 'stream'\nimport {\n formatDebugAddress,\n formatNodeOptions,\n getNodeDebugType,\n getParsedDebugAddress,\n getParsedNodeOptionsWithoutInspect,\n} from '../server/lib/utils'\n\ntype FarmOptions = NonNullable<ConstructorParameters<typeof JestWorker>[1]>\n\nconst RESTARTED = Symbol('restarted')\n\nconst cleanupWorkers = (worker: JestWorker) => {\n for (const curWorker of ((worker as any)._workerPool?._workers || []) as {\n _child?: ChildProcess\n }[]) {\n curWorker._child?.kill('SIGINT')\n }\n}\n\nexport function getNextBuildDebuggerPortOffset(_: {\n kind: 'export-page'\n}): number {\n // 0: export worker\n return 0\n}\n\nexport class Worker {\n private _worker: JestWorker | undefined\n\n constructor(\n workerPath: string,\n options: Omit<FarmOptions, 'forkOptions'> & {\n forkOptions?:\n | (Omit<NonNullable<FarmOptions['forkOptions']>, 'env'> & {\n env?: Partial<NodeJS.ProcessEnv> | undefined\n })\n | undefined\n /**\n * `-1` if not inspectable\n */\n debuggerPortOffset: number\n enableSourceMaps?: boolean\n /**\n * True if `--max-old-space-size` should not be forwarded to the worker.\n */\n isolatedMemory: boolean\n timeout?: number\n onActivity?: () => void\n onActivityAbort?: () => void\n onRestart?: (method: string, args: any[], attempts: number) => void\n logger?: Pick<typeof console, 'error' | 'info' | 'warn'>\n exposedMethods: ReadonlyArray<string>\n enableWorkerThreads?: boolean\n }\n ) {\n let {\n enableSourceMaps,\n timeout,\n onRestart,\n logger = console,\n debuggerPortOffset,\n isolatedMemory,\n ...farmOptions\n } = options\n\n let restartPromise: Promise<typeof RESTARTED>\n let resolveRestartPromise: (arg: typeof RESTARTED) => void\n let activeTasks = 0\n\n this._worker = undefined\n\n // ensure we end workers if they weren't before exit\n process.on('exit', () => {\n this.close()\n })\n\n const nodeOptions = getParsedNodeOptionsWithoutInspect()\n\n if (debuggerPortOffset !== -1) {\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType) {\n const address = getParsedDebugAddress()\n address.port =\n address.port +\n // current process runs on `address.port`\n 1 +\n debuggerPortOffset\n nodeOptions[nodeDebugType] = formatDebugAddress(address)\n }\n }\n\n if (enableSourceMaps) {\n nodeOptions['enable-source-maps'] = true\n }\n\n if (isolatedMemory) {\n delete nodeOptions['max-old-space-size']\n delete nodeOptions['max_old_space_size']\n }\n\n const createWorker = () => {\n const workerEnv: NodeJS.ProcessEnv = {\n ...process.env,\n ...((farmOptions.forkOptions?.env || {}) as any),\n IS_NEXT_WORKER: 'true',\n NODE_OPTIONS: formatNodeOptions(nodeOptions),\n }\n\n if (workerEnv.FORCE_COLOR === undefined) {\n // Mirror the enablement heuristic from picocolors (see https://github.com/vercel/next.js/blob/6a40da0345939fe4f7b1ae519b296a86dd103432/packages/next/src/lib/picocolors.ts#L21-L24).\n // Picocolors snapshots `process.env`/`stdout.isTTY` at module load time, so when the worker\n // process bootstraps with piped stdio its own check would disable colors. Re-evaluating the\n // same conditions here lets us opt the worker into color output only when the parent would\n // have seen colors, while still respecting explicit opt-outs like NO_COLOR.\n const supportsColors =\n !workerEnv.NO_COLOR &&\n !workerEnv.CI &&\n workerEnv.TERM !== 'dumb' &&\n (process.stdout.isTTY || process.stderr?.isTTY)\n\n if (supportsColors) {\n workerEnv.FORCE_COLOR = '1'\n }\n }\n\n this._worker = new JestWorker(workerPath, {\n ...farmOptions,\n forkOptions: {\n ...farmOptions.forkOptions,\n env: workerEnv,\n },\n maxRetries: 0,\n }) as JestWorker\n restartPromise = new Promise(\n (resolve) => (resolveRestartPromise = resolve)\n )\n\n /**\n * Jest Worker has two worker types, ChildProcessWorker (uses child_process) and NodeThreadWorker (uses worker_threads)\n * Next.js uses ChildProcessWorker by default, but it can be switched to NodeThreadWorker with an experimental flag\n *\n * We only want to handle ChildProcessWorker's orphan process issue, so we access the private property \"_child\":\n * https://github.com/facebook/jest/blob/b38d7d345a81d97d1dc3b68b8458b1837fbf19be/packages/jest-worker/src/workers/ChildProcessWorker.ts\n *\n * But this property is not available in NodeThreadWorker, so we need to check if we are using ChildProcessWorker\n */\n if (!farmOptions.enableWorkerThreads) {\n for (const worker of ((this._worker as any)._workerPool?._workers ||\n []) as {\n _child?: ChildProcess\n }[]) {\n worker._child?.on('exit', (code, signal) => {\n if ((code || (signal && signal !== 'SIGINT')) && this._worker) {\n logger.error(\n `Next.js build worker exited with code: ${code} and signal: ${signal}`\n )\n\n // if a child process doesn't exit gracefully, we want to bubble up the exit code to the parent process\n process.exit(code ?? 1)\n }\n })\n\n // if a child process emits a particular message, we track that as activity\n // so the parent process can keep track of progress\n worker._child?.on('message', ([, data]: [number, unknown]) => {\n if (\n data &&\n typeof data === 'object' &&\n 'type' in data &&\n data.type === 'activity'\n ) {\n onActivity()\n }\n })\n }\n }\n\n let aborted = false\n const onActivityAbort = () => {\n if (!aborted) {\n options.onActivityAbort?.()\n aborted = true\n }\n }\n\n // Listen to the worker's stdout and stderr, if there's any thing logged, abort the activity first\n const abortActivityStreamOnLog = new Transform({\n transform(_chunk, _encoding, callback) {\n onActivityAbort()\n callback()\n },\n })\n // Stop the activity if there's any output from the worker\n this._worker.getStdout().pipe(abortActivityStreamOnLog)\n this._worker.getStderr().pipe(abortActivityStreamOnLog)\n\n // Pipe the worker's stdout and stderr to the parent process\n this._worker.getStdout().pipe(process.stdout)\n this._worker.getStderr().pipe(process.stderr)\n }\n createWorker()\n\n const onHanging = () => {\n const worker = this._worker\n if (!worker) return\n const resolve = resolveRestartPromise\n createWorker()\n logger.warn(\n `Sending SIGTERM signal to static worker due to timeout${\n timeout ? ` of ${timeout / 1000} seconds` : ''\n }. Subsequent errors may be a result of the worker exiting.`\n )\n worker.end().then(() => {\n resolve(RESTARTED)\n })\n }\n\n let hangingTimer: NodeJS.Timeout | false = false\n\n const onActivity = () => {\n if (hangingTimer) clearTimeout(hangingTimer)\n if (options.onActivity) options.onActivity()\n\n hangingTimer = activeTasks > 0 && setTimeout(onHanging, timeout)\n }\n\n for (const method of farmOptions.exposedMethods) {\n if (method.startsWith('_')) continue\n ;(this as any)[method] = timeout\n ? // eslint-disable-next-line no-loop-func\n async (...args: any[]) => {\n activeTasks++\n try {\n let attempts = 0\n for (;;) {\n onActivity()\n const result = await Promise.race([\n (this._worker as any)[method](...args),\n restartPromise,\n ])\n if (result !== RESTARTED) return result\n if (onRestart) onRestart(method, args, ++attempts)\n }\n } finally {\n activeTasks--\n onActivity()\n }\n }\n : (this._worker as any)[method].bind(this._worker)\n }\n }\n\n end(): ReturnType<JestWorker['end']> {\n const worker = this._worker\n if (!worker) {\n throw new Error('Farm is ended, no more calls can be done to it')\n }\n cleanupWorkers(worker)\n this._worker = undefined\n return worker.end()\n }\n\n /**\n * Quietly end the worker if it exists\n */\n close(): void {\n if (this._worker) {\n cleanupWorkers(this._worker)\n this._worker.end()\n }\n }\n}\n"],"names":["Worker","JestWorker","Transform","formatDebugAddress","formatNodeOptions","getNodeDebugType","getParsedDebugAddress","getParsedNodeOptionsWithoutInspect","RESTARTED","Symbol","cleanupWorkers","worker","curWorker","_workerPool","_workers","_child","kill","getNextBuildDebuggerPortOffset","_","constructor","workerPath","options","enableSourceMaps","timeout","onRestart","logger","console","debuggerPortOffset","isolatedMemory","farmOptions","restartPromise","resolveRestartPromise","activeTasks","_worker","undefined","process","on","close","nodeOptions","nodeDebugType","address","port","createWorker","workerEnv","env","forkOptions","IS_NEXT_WORKER","NODE_OPTIONS","FORCE_COLOR","supportsColors","NO_COLOR","CI","TERM","stdout","isTTY","stderr","maxRetries","Promise","resolve","enableWorkerThreads","code","signal","error","exit","data","type","onActivity","aborted","onActivityAbort","abortActivityStreamOnLog","transform","_chunk","_encoding","callback","getStdout","pipe","getStderr","onHanging","warn","end","then","hangingTimer","clearTimeout","setTimeout","method","exposedMethods","startsWith","args","attempts","result","race","bind","Error"],"mappings":"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","ignoreList":[0]}
|
@@ -90,7 +90,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
|
|
90
90
|
}
|
91
91
|
const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
|
92
92
|
const hotReloaderSpan = trace('hot-reloader', undefined, {
|
93
|
-
version: "15.6.0-canary.
|
93
|
+
version: "15.6.0-canary.20"
|
94
94
|
});
|
95
95
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
96
96
|
// of the current `next dev` invocation.
|
@@ -158,7 +158,7 @@ export default class HotReloaderWebpack {
|
|
158
158
|
this.previewProps = previewProps;
|
159
159
|
this.rewrites = rewrites;
|
160
160
|
this.hotReloaderSpan = trace('hot-reloader', undefined, {
|
161
|
-
version: "15.6.0-canary.
|
161
|
+
version: "15.6.0-canary.20"
|
162
162
|
});
|
163
163
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
164
164
|
// 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.6.0-canary.
|
17
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.6.0-canary.20"}`))}${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.6.0-canary.
|
114
|
+
process.title = `next-server (v${"15.6.0-canary.20"})`;
|
115
115
|
let handlersReady = ()=>{};
|
116
116
|
let handlersError = ()=>{};
|
117
117
|
let handlersPromise = new Promise((resolve, reject)=>{
|
@@ -1,6 +1,6 @@
|
|
1
1
|
export function isStableBuild() {
|
2
2
|
var _process_env___NEXT_VERSION;
|
3
|
-
return !((_process_env___NEXT_VERSION = "15.6.0-canary.
|
3
|
+
return !((_process_env___NEXT_VERSION = "15.6.0-canary.20") == 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){
|
package/dist/lib/worker.js
CHANGED
@@ -65,16 +65,29 @@ class Worker {
|
|
65
65
|
}
|
66
66
|
const createWorker = ()=>{
|
67
67
|
var _farmOptions_forkOptions;
|
68
|
+
const workerEnv = {
|
69
|
+
...process.env,
|
70
|
+
...((_farmOptions_forkOptions = farmOptions.forkOptions) == null ? void 0 : _farmOptions_forkOptions.env) || {},
|
71
|
+
IS_NEXT_WORKER: 'true',
|
72
|
+
NODE_OPTIONS: (0, _utils.formatNodeOptions)(nodeOptions)
|
73
|
+
};
|
74
|
+
if (workerEnv.FORCE_COLOR === undefined) {
|
75
|
+
var _process_stderr;
|
76
|
+
// Mirror the enablement heuristic from picocolors (see https://github.com/vercel/next.js/blob/6a40da0345939fe4f7b1ae519b296a86dd103432/packages/next/src/lib/picocolors.ts#L21-L24).
|
77
|
+
// Picocolors snapshots `process.env`/`stdout.isTTY` at module load time, so when the worker
|
78
|
+
// process bootstraps with piped stdio its own check would disable colors. Re-evaluating the
|
79
|
+
// same conditions here lets us opt the worker into color output only when the parent would
|
80
|
+
// have seen colors, while still respecting explicit opt-outs like NO_COLOR.
|
81
|
+
const supportsColors = !workerEnv.NO_COLOR && !workerEnv.CI && workerEnv.TERM !== 'dumb' && (process.stdout.isTTY || ((_process_stderr = process.stderr) == null ? void 0 : _process_stderr.isTTY));
|
82
|
+
if (supportsColors) {
|
83
|
+
workerEnv.FORCE_COLOR = '1';
|
84
|
+
}
|
85
|
+
}
|
68
86
|
this._worker = new _jestworker.Worker(workerPath, {
|
69
87
|
...farmOptions,
|
70
88
|
forkOptions: {
|
71
89
|
...farmOptions.forkOptions,
|
72
|
-
env:
|
73
|
-
...process.env,
|
74
|
-
...((_farmOptions_forkOptions = farmOptions.forkOptions) == null ? void 0 : _farmOptions_forkOptions.env) || {},
|
75
|
-
IS_NEXT_WORKER: 'true',
|
76
|
-
NODE_OPTIONS: (0, _utils.formatNodeOptions)(nodeOptions)
|
77
|
-
}
|
90
|
+
env: workerEnv
|
78
91
|
},
|
79
92
|
maxRetries: 0
|
80
93
|
});
|
package/dist/lib/worker.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/worker.ts"],"sourcesContent":["import type { ChildProcess } from 'child_process'\nimport { Worker as JestWorker } from 'next/dist/compiled/jest-worker'\nimport { Transform } from 'stream'\nimport {\n formatDebugAddress,\n formatNodeOptions,\n getNodeDebugType,\n getParsedDebugAddress,\n getParsedNodeOptionsWithoutInspect,\n} from '../server/lib/utils'\n\ntype FarmOptions = NonNullable<ConstructorParameters<typeof JestWorker>[1]>\n\nconst RESTARTED = Symbol('restarted')\n\nconst cleanupWorkers = (worker: JestWorker) => {\n for (const curWorker of ((worker as any)._workerPool?._workers || []) as {\n _child?: ChildProcess\n }[]) {\n curWorker._child?.kill('SIGINT')\n }\n}\n\nexport function getNextBuildDebuggerPortOffset(_: {\n kind: 'export-page'\n}): number {\n // 0: export worker\n return 0\n}\n\nexport class Worker {\n private _worker: JestWorker | undefined\n\n constructor(\n workerPath: string,\n options: Omit<FarmOptions, 'forkOptions'> & {\n forkOptions?:\n | (Omit<NonNullable<FarmOptions['forkOptions']>, 'env'> & {\n env?: Partial<NodeJS.ProcessEnv> | undefined\n })\n | undefined\n /**\n * `-1` if not inspectable\n */\n debuggerPortOffset: number\n enableSourceMaps?: boolean\n /**\n * True if `--max-old-space-size` should not be forwarded to the worker.\n */\n isolatedMemory: boolean\n timeout?: number\n onActivity?: () => void\n onActivityAbort?: () => void\n onRestart?: (method: string, args: any[], attempts: number) => void\n logger?: Pick<typeof console, 'error' | 'info' | 'warn'>\n exposedMethods: ReadonlyArray<string>\n enableWorkerThreads?: boolean\n }\n ) {\n let {\n enableSourceMaps,\n timeout,\n onRestart,\n logger = console,\n debuggerPortOffset,\n isolatedMemory,\n ...farmOptions\n } = options\n\n let restartPromise: Promise<typeof RESTARTED>\n let resolveRestartPromise: (arg: typeof RESTARTED) => void\n let activeTasks = 0\n\n this._worker = undefined\n\n // ensure we end workers if they weren't before exit\n process.on('exit', () => {\n this.close()\n })\n\n const nodeOptions = getParsedNodeOptionsWithoutInspect()\n\n if (debuggerPortOffset !== -1) {\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType) {\n const address = getParsedDebugAddress()\n address.port =\n address.port +\n // current process runs on `address.port`\n 1 +\n debuggerPortOffset\n nodeOptions[nodeDebugType] = formatDebugAddress(address)\n }\n }\n\n if (enableSourceMaps) {\n nodeOptions['enable-source-maps'] = true\n }\n\n if (isolatedMemory) {\n delete nodeOptions['max-old-space-size']\n delete nodeOptions['max_old_space_size']\n }\n\n const createWorker = () => {\n this._worker = new JestWorker(workerPath, {\n ...farmOptions,\n forkOptions: {\n ...farmOptions.forkOptions,\n env: {\n ...process.env,\n ...((farmOptions.forkOptions?.env || {}) as any),\n IS_NEXT_WORKER: 'true',\n NODE_OPTIONS: formatNodeOptions(nodeOptions),\n } as any,\n },\n maxRetries: 0,\n }) as JestWorker\n restartPromise = new Promise(\n (resolve) => (resolveRestartPromise = resolve)\n )\n\n /**\n * Jest Worker has two worker types, ChildProcessWorker (uses child_process) and NodeThreadWorker (uses worker_threads)\n * Next.js uses ChildProcessWorker by default, but it can be switched to NodeThreadWorker with an experimental flag\n *\n * We only want to handle ChildProcessWorker's orphan process issue, so we access the private property \"_child\":\n * https://github.com/facebook/jest/blob/b38d7d345a81d97d1dc3b68b8458b1837fbf19be/packages/jest-worker/src/workers/ChildProcessWorker.ts\n *\n * But this property is not available in NodeThreadWorker, so we need to check if we are using ChildProcessWorker\n */\n if (!farmOptions.enableWorkerThreads) {\n for (const worker of ((this._worker as any)._workerPool?._workers ||\n []) as {\n _child?: ChildProcess\n }[]) {\n worker._child?.on('exit', (code, signal) => {\n if ((code || (signal && signal !== 'SIGINT')) && this._worker) {\n logger.error(\n `Next.js build worker exited with code: ${code} and signal: ${signal}`\n )\n\n // if a child process doesn't exit gracefully, we want to bubble up the exit code to the parent process\n process.exit(code ?? 1)\n }\n })\n\n // if a child process emits a particular message, we track that as activity\n // so the parent process can keep track of progress\n worker._child?.on('message', ([, data]: [number, unknown]) => {\n if (\n data &&\n typeof data === 'object' &&\n 'type' in data &&\n data.type === 'activity'\n ) {\n onActivity()\n }\n })\n }\n }\n\n let aborted = false\n const onActivityAbort = () => {\n if (!aborted) {\n options.onActivityAbort?.()\n aborted = true\n }\n }\n\n // Listen to the worker's stdout and stderr, if there's any thing logged, abort the activity first\n const abortActivityStreamOnLog = new Transform({\n transform(_chunk, _encoding, callback) {\n onActivityAbort()\n callback()\n },\n })\n // Stop the activity if there's any output from the worker\n this._worker.getStdout().pipe(abortActivityStreamOnLog)\n this._worker.getStderr().pipe(abortActivityStreamOnLog)\n\n // Pipe the worker's stdout and stderr to the parent process\n this._worker.getStdout().pipe(process.stdout)\n this._worker.getStderr().pipe(process.stderr)\n }\n createWorker()\n\n const onHanging = () => {\n const worker = this._worker\n if (!worker) return\n const resolve = resolveRestartPromise\n createWorker()\n logger.warn(\n `Sending SIGTERM signal to static worker due to timeout${\n timeout ? ` of ${timeout / 1000} seconds` : ''\n }. Subsequent errors may be a result of the worker exiting.`\n )\n worker.end().then(() => {\n resolve(RESTARTED)\n })\n }\n\n let hangingTimer: NodeJS.Timeout | false = false\n\n const onActivity = () => {\n if (hangingTimer) clearTimeout(hangingTimer)\n if (options.onActivity) options.onActivity()\n\n hangingTimer = activeTasks > 0 && setTimeout(onHanging, timeout)\n }\n\n for (const method of farmOptions.exposedMethods) {\n if (method.startsWith('_')) continue\n ;(this as any)[method] = timeout\n ? // eslint-disable-next-line no-loop-func\n async (...args: any[]) => {\n activeTasks++\n try {\n let attempts = 0\n for (;;) {\n onActivity()\n const result = await Promise.race([\n (this._worker as any)[method](...args),\n restartPromise,\n ])\n if (result !== RESTARTED) return result\n if (onRestart) onRestart(method, args, ++attempts)\n }\n } finally {\n activeTasks--\n onActivity()\n }\n }\n : (this._worker as any)[method].bind(this._worker)\n }\n }\n\n end(): ReturnType<JestWorker['end']> {\n const worker = this._worker\n if (!worker) {\n throw new Error('Farm is ended, no more calls can be done to it')\n }\n cleanupWorkers(worker)\n this._worker = undefined\n return worker.end()\n }\n\n /**\n * Quietly end the worker if it exists\n */\n close(): void {\n if (this._worker) {\n cleanupWorkers(this._worker)\n this._worker.end()\n }\n }\n}\n"],"names":["Worker","getNextBuildDebuggerPortOffset","RESTARTED","Symbol","cleanupWorkers","worker","curWorker","_workerPool","_workers","_child","kill","_","constructor","workerPath","options","enableSourceMaps","timeout","onRestart","logger","console","debuggerPortOffset","isolatedMemory","farmOptions","restartPromise","resolveRestartPromise","activeTasks","_worker","undefined","process","on","close","nodeOptions","getParsedNodeOptionsWithoutInspect","nodeDebugType","getNodeDebugType","address","getParsedDebugAddress","port","formatDebugAddress","createWorker","JestWorker","forkOptions","env","IS_NEXT_WORKER","NODE_OPTIONS","formatNodeOptions","maxRetries","Promise","resolve","enableWorkerThreads","code","signal","error","exit","data","type","onActivity","aborted","onActivityAbort","abortActivityStreamOnLog","Transform","transform","_chunk","_encoding","callback","getStdout","pipe","getStderr","stdout","stderr","onHanging","warn","end","then","hangingTimer","clearTimeout","setTimeout","method","exposedMethods","startsWith","args","attempts","result","race","bind","Error"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../src/lib/worker.ts"],"sourcesContent":["import type { ChildProcess } from 'child_process'\nimport { Worker as JestWorker } from 'next/dist/compiled/jest-worker'\nimport { Transform } from 'stream'\nimport {\n formatDebugAddress,\n formatNodeOptions,\n getNodeDebugType,\n getParsedDebugAddress,\n getParsedNodeOptionsWithoutInspect,\n} from '../server/lib/utils'\n\ntype FarmOptions = NonNullable<ConstructorParameters<typeof JestWorker>[1]>\n\nconst RESTARTED = Symbol('restarted')\n\nconst cleanupWorkers = (worker: JestWorker) => {\n for (const curWorker of ((worker as any)._workerPool?._workers || []) as {\n _child?: ChildProcess\n }[]) {\n curWorker._child?.kill('SIGINT')\n }\n}\n\nexport function getNextBuildDebuggerPortOffset(_: {\n kind: 'export-page'\n}): number {\n // 0: export worker\n return 0\n}\n\nexport class Worker {\n private _worker: JestWorker | undefined\n\n constructor(\n workerPath: string,\n options: Omit<FarmOptions, 'forkOptions'> & {\n forkOptions?:\n | (Omit<NonNullable<FarmOptions['forkOptions']>, 'env'> & {\n env?: Partial<NodeJS.ProcessEnv> | undefined\n })\n | undefined\n /**\n * `-1` if not inspectable\n */\n debuggerPortOffset: number\n enableSourceMaps?: boolean\n /**\n * True if `--max-old-space-size` should not be forwarded to the worker.\n */\n isolatedMemory: boolean\n timeout?: number\n onActivity?: () => void\n onActivityAbort?: () => void\n onRestart?: (method: string, args: any[], attempts: number) => void\n logger?: Pick<typeof console, 'error' | 'info' | 'warn'>\n exposedMethods: ReadonlyArray<string>\n enableWorkerThreads?: boolean\n }\n ) {\n let {\n enableSourceMaps,\n timeout,\n onRestart,\n logger = console,\n debuggerPortOffset,\n isolatedMemory,\n ...farmOptions\n } = options\n\n let restartPromise: Promise<typeof RESTARTED>\n let resolveRestartPromise: (arg: typeof RESTARTED) => void\n let activeTasks = 0\n\n this._worker = undefined\n\n // ensure we end workers if they weren't before exit\n process.on('exit', () => {\n this.close()\n })\n\n const nodeOptions = getParsedNodeOptionsWithoutInspect()\n\n if (debuggerPortOffset !== -1) {\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType) {\n const address = getParsedDebugAddress()\n address.port =\n address.port +\n // current process runs on `address.port`\n 1 +\n debuggerPortOffset\n nodeOptions[nodeDebugType] = formatDebugAddress(address)\n }\n }\n\n if (enableSourceMaps) {\n nodeOptions['enable-source-maps'] = true\n }\n\n if (isolatedMemory) {\n delete nodeOptions['max-old-space-size']\n delete nodeOptions['max_old_space_size']\n }\n\n const createWorker = () => {\n const workerEnv: NodeJS.ProcessEnv = {\n ...process.env,\n ...((farmOptions.forkOptions?.env || {}) as any),\n IS_NEXT_WORKER: 'true',\n NODE_OPTIONS: formatNodeOptions(nodeOptions),\n }\n\n if (workerEnv.FORCE_COLOR === undefined) {\n // Mirror the enablement heuristic from picocolors (see https://github.com/vercel/next.js/blob/6a40da0345939fe4f7b1ae519b296a86dd103432/packages/next/src/lib/picocolors.ts#L21-L24).\n // Picocolors snapshots `process.env`/`stdout.isTTY` at module load time, so when the worker\n // process bootstraps with piped stdio its own check would disable colors. Re-evaluating the\n // same conditions here lets us opt the worker into color output only when the parent would\n // have seen colors, while still respecting explicit opt-outs like NO_COLOR.\n const supportsColors =\n !workerEnv.NO_COLOR &&\n !workerEnv.CI &&\n workerEnv.TERM !== 'dumb' &&\n (process.stdout.isTTY || process.stderr?.isTTY)\n\n if (supportsColors) {\n workerEnv.FORCE_COLOR = '1'\n }\n }\n\n this._worker = new JestWorker(workerPath, {\n ...farmOptions,\n forkOptions: {\n ...farmOptions.forkOptions,\n env: workerEnv,\n },\n maxRetries: 0,\n }) as JestWorker\n restartPromise = new Promise(\n (resolve) => (resolveRestartPromise = resolve)\n )\n\n /**\n * Jest Worker has two worker types, ChildProcessWorker (uses child_process) and NodeThreadWorker (uses worker_threads)\n * Next.js uses ChildProcessWorker by default, but it can be switched to NodeThreadWorker with an experimental flag\n *\n * We only want to handle ChildProcessWorker's orphan process issue, so we access the private property \"_child\":\n * https://github.com/facebook/jest/blob/b38d7d345a81d97d1dc3b68b8458b1837fbf19be/packages/jest-worker/src/workers/ChildProcessWorker.ts\n *\n * But this property is not available in NodeThreadWorker, so we need to check if we are using ChildProcessWorker\n */\n if (!farmOptions.enableWorkerThreads) {\n for (const worker of ((this._worker as any)._workerPool?._workers ||\n []) as {\n _child?: ChildProcess\n }[]) {\n worker._child?.on('exit', (code, signal) => {\n if ((code || (signal && signal !== 'SIGINT')) && this._worker) {\n logger.error(\n `Next.js build worker exited with code: ${code} and signal: ${signal}`\n )\n\n // if a child process doesn't exit gracefully, we want to bubble up the exit code to the parent process\n process.exit(code ?? 1)\n }\n })\n\n // if a child process emits a particular message, we track that as activity\n // so the parent process can keep track of progress\n worker._child?.on('message', ([, data]: [number, unknown]) => {\n if (\n data &&\n typeof data === 'object' &&\n 'type' in data &&\n data.type === 'activity'\n ) {\n onActivity()\n }\n })\n }\n }\n\n let aborted = false\n const onActivityAbort = () => {\n if (!aborted) {\n options.onActivityAbort?.()\n aborted = true\n }\n }\n\n // Listen to the worker's stdout and stderr, if there's any thing logged, abort the activity first\n const abortActivityStreamOnLog = new Transform({\n transform(_chunk, _encoding, callback) {\n onActivityAbort()\n callback()\n },\n })\n // Stop the activity if there's any output from the worker\n this._worker.getStdout().pipe(abortActivityStreamOnLog)\n this._worker.getStderr().pipe(abortActivityStreamOnLog)\n\n // Pipe the worker's stdout and stderr to the parent process\n this._worker.getStdout().pipe(process.stdout)\n this._worker.getStderr().pipe(process.stderr)\n }\n createWorker()\n\n const onHanging = () => {\n const worker = this._worker\n if (!worker) return\n const resolve = resolveRestartPromise\n createWorker()\n logger.warn(\n `Sending SIGTERM signal to static worker due to timeout${\n timeout ? ` of ${timeout / 1000} seconds` : ''\n }. Subsequent errors may be a result of the worker exiting.`\n )\n worker.end().then(() => {\n resolve(RESTARTED)\n })\n }\n\n let hangingTimer: NodeJS.Timeout | false = false\n\n const onActivity = () => {\n if (hangingTimer) clearTimeout(hangingTimer)\n if (options.onActivity) options.onActivity()\n\n hangingTimer = activeTasks > 0 && setTimeout(onHanging, timeout)\n }\n\n for (const method of farmOptions.exposedMethods) {\n if (method.startsWith('_')) continue\n ;(this as any)[method] = timeout\n ? // eslint-disable-next-line no-loop-func\n async (...args: any[]) => {\n activeTasks++\n try {\n let attempts = 0\n for (;;) {\n onActivity()\n const result = await Promise.race([\n (this._worker as any)[method](...args),\n restartPromise,\n ])\n if (result !== RESTARTED) return result\n if (onRestart) onRestart(method, args, ++attempts)\n }\n } finally {\n activeTasks--\n onActivity()\n }\n }\n : (this._worker as any)[method].bind(this._worker)\n }\n }\n\n end(): ReturnType<JestWorker['end']> {\n const worker = this._worker\n if (!worker) {\n throw new Error('Farm is ended, no more calls can be done to it')\n }\n cleanupWorkers(worker)\n this._worker = undefined\n return worker.end()\n }\n\n /**\n * Quietly end the worker if it exists\n */\n close(): void {\n if (this._worker) {\n cleanupWorkers(this._worker)\n this._worker.end()\n }\n }\n}\n"],"names":["Worker","getNextBuildDebuggerPortOffset","RESTARTED","Symbol","cleanupWorkers","worker","curWorker","_workerPool","_workers","_child","kill","_","constructor","workerPath","options","enableSourceMaps","timeout","onRestart","logger","console","debuggerPortOffset","isolatedMemory","farmOptions","restartPromise","resolveRestartPromise","activeTasks","_worker","undefined","process","on","close","nodeOptions","getParsedNodeOptionsWithoutInspect","nodeDebugType","getNodeDebugType","address","getParsedDebugAddress","port","formatDebugAddress","createWorker","workerEnv","env","forkOptions","IS_NEXT_WORKER","NODE_OPTIONS","formatNodeOptions","FORCE_COLOR","supportsColors","NO_COLOR","CI","TERM","stdout","isTTY","stderr","JestWorker","maxRetries","Promise","resolve","enableWorkerThreads","code","signal","error","exit","data","type","onActivity","aborted","onActivityAbort","abortActivityStreamOnLog","Transform","transform","_chunk","_encoding","callback","getStdout","pipe","getStderr","onHanging","warn","end","then","hangingTimer","clearTimeout","setTimeout","method","exposedMethods","startsWith","args","attempts","result","race","bind","Error"],"mappings":"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","ignoreList":[0]}
|
@@ -146,7 +146,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
|
|
146
146
|
}
|
147
147
|
const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
|
148
148
|
const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
149
|
-
version: "15.6.0-canary.
|
149
|
+
version: "15.6.0-canary.20"
|
150
150
|
});
|
151
151
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
152
152
|
// of the current `next dev` invocation.
|
@@ -226,7 +226,7 @@ class HotReloaderWebpack {
|
|
226
226
|
this.previewProps = previewProps;
|
227
227
|
this.rewrites = rewrites;
|
228
228
|
this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
229
|
-
version: "15.6.0-canary.
|
229
|
+
version: "15.6.0-canary.20"
|
230
230
|
});
|
231
231
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
232
232
|
// of the current `next dev` invocation.
|
@@ -82,7 +82,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
|
|
82
82
|
bundlerSuffix = ' (webpack)';
|
83
83
|
}
|
84
84
|
}
|
85
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.
|
85
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.20"}`))}${bundlerSuffix}`);
|
86
86
|
if (appUrl) {
|
87
87
|
_log.bootstrap(`- Local: ${appUrl}`);
|
88
88
|
}
|
@@ -179,7 +179,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
|
|
179
179
|
async function startServer(serverOptions) {
|
180
180
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
181
181
|
let { port } = serverOptions;
|
182
|
-
process.title = `next-server (v${"15.6.0-canary.
|
182
|
+
process.title = `next-server (v${"15.6.0-canary.20"})`;
|
183
183
|
let handlersReady = ()=>{};
|
184
184
|
let handlersError = ()=>{};
|
185
185
|
let handlersPromise = new Promise((resolve, reject)=>{
|
@@ -22,7 +22,7 @@ _export(exports, {
|
|
22
22
|
});
|
23
23
|
function isStableBuild() {
|
24
24
|
var _process_env___NEXT_VERSION;
|
25
|
-
return !((_process_env___NEXT_VERSION = "15.6.0-canary.
|
25
|
+
return !((_process_env___NEXT_VERSION = "15.6.0-canary.20") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
26
26
|
}
|
27
27
|
class CanaryOnlyError extends Error {
|
28
28
|
constructor(arg){
|
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
|
|
11
11
|
const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
|
12
12
|
function eventCliSessionStopped(event) {
|
13
13
|
// This should be an invariant, if it fails our build tooling is broken.
|
14
|
-
if (typeof "15.6.0-canary.
|
14
|
+
if (typeof "15.6.0-canary.20" !== 'string') {
|
15
15
|
return [];
|
16
16
|
}
|
17
17
|
const payload = {
|
18
|
-
nextVersion: "15.6.0-canary.
|
18
|
+
nextVersion: "15.6.0-canary.20",
|
19
19
|
nodeVersion: process.version,
|
20
20
|
cliCommand: event.cliCommand,
|
21
21
|
durationMilliseconds: event.durationMilliseconds,
|
@@ -12,12 +12,12 @@ const EVENT_VERSION = 'NEXT_CLI_SESSION_STARTED';
|
|
12
12
|
function eventCliSession(nextConfig, event) {
|
13
13
|
var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_experimental_reactCompiler, _nextConfig_experimental_reactCompiler1;
|
14
14
|
// This should be an invariant, if it fails our build tooling is broken.
|
15
|
-
if (typeof "15.6.0-canary.
|
15
|
+
if (typeof "15.6.0-canary.20" !== 'string') {
|
16
16
|
return [];
|
17
17
|
}
|
18
18
|
const { images, i18n } = nextConfig || {};
|
19
19
|
const payload = {
|
20
|
-
nextVersion: "15.6.0-canary.
|
20
|
+
nextVersion: "15.6.0-canary.20",
|
21
21
|
nodeVersion: process.version,
|
22
22
|
cliCommand: event.cliCommand,
|
23
23
|
isSrcDir: event.isSrcDir,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "next",
|
3
|
-
"version": "15.6.0-canary.
|
3
|
+
"version": "15.6.0-canary.20",
|
4
4
|
"description": "The React Framework",
|
5
5
|
"main": "./dist/server/next.js",
|
6
6
|
"license": "MIT",
|
@@ -102,7 +102,7 @@
|
|
102
102
|
]
|
103
103
|
},
|
104
104
|
"dependencies": {
|
105
|
-
"@next/env": "15.6.0-canary.
|
105
|
+
"@next/env": "15.6.0-canary.20",
|
106
106
|
"@swc/helpers": "0.5.15",
|
107
107
|
"caniuse-lite": "^1.0.30001579",
|
108
108
|
"postcss": "8.4.31",
|
@@ -132,14 +132,14 @@
|
|
132
132
|
},
|
133
133
|
"optionalDependencies": {
|
134
134
|
"sharp": "^0.34.4",
|
135
|
-
"@next/swc-darwin-arm64": "15.6.0-canary.
|
136
|
-
"@next/swc-darwin-x64": "15.6.0-canary.
|
137
|
-
"@next/swc-linux-arm64-gnu": "15.6.0-canary.
|
138
|
-
"@next/swc-linux-arm64-musl": "15.6.0-canary.
|
139
|
-
"@next/swc-linux-x64-gnu": "15.6.0-canary.
|
140
|
-
"@next/swc-linux-x64-musl": "15.6.0-canary.
|
141
|
-
"@next/swc-win32-arm64-msvc": "15.6.0-canary.
|
142
|
-
"@next/swc-win32-x64-msvc": "15.6.0-canary.
|
135
|
+
"@next/swc-darwin-arm64": "15.6.0-canary.20",
|
136
|
+
"@next/swc-darwin-x64": "15.6.0-canary.20",
|
137
|
+
"@next/swc-linux-arm64-gnu": "15.6.0-canary.20",
|
138
|
+
"@next/swc-linux-arm64-musl": "15.6.0-canary.20",
|
139
|
+
"@next/swc-linux-x64-gnu": "15.6.0-canary.20",
|
140
|
+
"@next/swc-linux-x64-musl": "15.6.0-canary.20",
|
141
|
+
"@next/swc-win32-arm64-msvc": "15.6.0-canary.20",
|
142
|
+
"@next/swc-win32-x64-msvc": "15.6.0-canary.20"
|
143
143
|
},
|
144
144
|
"devDependencies": {
|
145
145
|
"@ampproject/toolbox-optimizer": "2.8.3",
|
@@ -174,11 +174,11 @@
|
|
174
174
|
"@jest/types": "29.5.0",
|
175
175
|
"@mswjs/interceptors": "0.23.0",
|
176
176
|
"@napi-rs/triples": "1.2.0",
|
177
|
-
"@next/font": "15.6.0-canary.
|
178
|
-
"@next/polyfill-module": "15.6.0-canary.
|
179
|
-
"@next/polyfill-nomodule": "15.6.0-canary.
|
180
|
-
"@next/react-refresh-utils": "15.6.0-canary.
|
181
|
-
"@next/swc": "15.6.0-canary.
|
177
|
+
"@next/font": "15.6.0-canary.20",
|
178
|
+
"@next/polyfill-module": "15.6.0-canary.20",
|
179
|
+
"@next/polyfill-nomodule": "15.6.0-canary.20",
|
180
|
+
"@next/react-refresh-utils": "15.6.0-canary.20",
|
181
|
+
"@next/swc": "15.6.0-canary.20",
|
182
182
|
"@opentelemetry/api": "1.6.0",
|
183
183
|
"@playwright/test": "1.51.1",
|
184
184
|
"@rspack/core": "1.5.0",
|