@workflow/next 4.0.5 → 4.0.7
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/builder-deferred.d.ts.map +1 -1
- package/dist/builder-deferred.js +7 -3
- package/dist/builder-deferred.js.map +1 -1
- package/dist/builder-eager.d.ts.map +1 -1
- package/dist/builder-eager.js +8 -0
- package/dist/builder-eager.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +151 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +27 -2
- package/dist/loader.js.map +1 -1
- package/dist/socket-server.d.ts +20 -0
- package/dist/socket-server.d.ts.map +1 -1
- package/dist/socket-server.js +28 -1
- package/dist/socket-server.js.map +1 -1
- package/docs/api-reference/with-workflow.mdx +10 -0
- package/docs/next.mdx +5 -3
- package/package.json +4 -4
package/dist/builder-eager.js
CHANGED
|
@@ -8,6 +8,7 @@ const node_fs_1 = require("node:fs");
|
|
|
8
8
|
const promises_1 = require("node:fs/promises");
|
|
9
9
|
const node_path_1 = require("node:path");
|
|
10
10
|
const watchpack_1 = __importDefault(require("watchpack"));
|
|
11
|
+
const socket_server_js_1 = require("./socket-server.js");
|
|
11
12
|
let CachedNextBuilderEager;
|
|
12
13
|
// Create the eager Next builder dynamically by extending the ESM BaseBuilder.
|
|
13
14
|
// Exported as getNextBuilderEager() to allow CommonJS modules to import from
|
|
@@ -21,6 +22,10 @@ async function getNextBuilderEager() {
|
|
|
21
22
|
} = (await eval('import("@workflow/builders")'));
|
|
22
23
|
class NextBuilder extends BaseBuilderClass {
|
|
23
24
|
async build() {
|
|
25
|
+
// Eager mode never starts a discovery socket server, so any leftover
|
|
26
|
+
// workflow-socket.json is from a previous deferred-mode build and
|
|
27
|
+
// would make the webpack loader connect to a dead port.
|
|
28
|
+
await (0, socket_server_js_1.cleanupStaleSocketInfoFiles)((0, node_path_1.join)(this.config.workingDir, this.config.distDir || '.next'));
|
|
24
29
|
const outputDir = await this.findAppDirectory();
|
|
25
30
|
const workflowGeneratedDir = (0, node_path_1.join)(outputDir, '.well-known/workflow/v1');
|
|
26
31
|
// Ensure output directories exist
|
|
@@ -61,6 +66,9 @@ async function getNextBuilderEager() {
|
|
|
61
66
|
if (this.shouldExposePublicManifest && manifestJson) {
|
|
62
67
|
const publicManifestDir = (0, node_path_1.join)(this.config.workingDir, 'public/.well-known/workflow/v1');
|
|
63
68
|
await (0, promises_1.mkdir)(publicManifestDir, { recursive: true });
|
|
69
|
+
if (process.env.VERCEL_DEPLOYMENT_ID === undefined) {
|
|
70
|
+
await (0, promises_1.writeFile)((0, node_path_1.join)(publicManifestDir, '.gitignore'), '*');
|
|
71
|
+
}
|
|
64
72
|
await (0, promises_1.copyFile)((0, node_path_1.join)(workflowGeneratedDir, 'manifest.json'), (0, node_path_1.join)(publicManifestDir, 'manifest.json'));
|
|
65
73
|
}
|
|
66
74
|
await this.writeFunctionsConfig(outputDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder-eager.js","sourceRoot":"","sources":["../src/builder-eager.ts"],"names":[],"mappings":"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","sourcesContent":["import { constants } from 'node:fs';\nimport { access, copyFile, mkdir, stat, writeFile } from 'node:fs/promises';\nimport { extname, join, resolve } from 'node:path';\nimport Watchpack from 'watchpack';\n\nlet CachedNextBuilderEager: any;\n\n// Create the eager Next builder dynamically by extending the ESM BaseBuilder.\n// Exported as getNextBuilderEager() to allow CommonJS modules to import from\n// the ESM @workflow/builders package via dynamic import at runtime.\nexport async function getNextBuilderEager() {\n if (CachedNextBuilderEager) {\n return CachedNextBuilderEager;\n }\n\n const {\n BaseBuilder: BaseBuilderClass,\n STEP_QUEUE_TRIGGER,\n WORKFLOW_QUEUE_TRIGGER,\n // biome-ignore lint/security/noGlobalEval: Need to use eval here to avoid TypeScript from transpiling the import statement into `require()`\n } = (await eval(\n 'import(\"@workflow/builders\")'\n )) as typeof import('@workflow/builders');\n\n class NextBuilder extends BaseBuilderClass {\n async build() {\n const outputDir = await this.findAppDirectory();\n const workflowGeneratedDir = join(outputDir, '.well-known/workflow/v1');\n\n // Ensure output directories exist\n await mkdir(workflowGeneratedDir, { recursive: true });\n // ignore the generated assets\n\n await writeFile(join(workflowGeneratedDir, '.gitignore'), '*');\n\n const inputFiles = await this.getInputFiles();\n const tsconfigPath = await this.findTsConfigPath();\n\n const options = {\n inputFiles,\n workflowGeneratedDir,\n tsconfigPath,\n };\n\n const { manifest: stepsManifest, context: stepsBuildContext } =\n await this.buildStepsFunction(options);\n const workflowsBundle = await this.buildWorkflowsFunction(options);\n await this.buildWebhookRoute({ workflowGeneratedDir });\n\n // Merge manifests from both bundles\n const manifest = {\n steps: { ...stepsManifest.steps, ...workflowsBundle?.manifest?.steps },\n workflows: {\n ...stepsManifest.workflows,\n ...workflowsBundle?.manifest?.workflows,\n },\n classes: {\n ...stepsManifest.classes,\n ...workflowsBundle?.manifest?.classes,\n },\n };\n\n // Write unified manifest to workflow generated directory\n const workflowBundlePath = join(workflowGeneratedDir, 'flow/route.js');\n const manifestJson = await this.createManifest({\n workflowBundlePath,\n manifestDir: workflowGeneratedDir,\n manifest,\n });\n\n // Expose manifest as a static file when WORKFLOW_PUBLIC_MANIFEST=1.\n // Next.js serves files from public/ at the root URL.\n if (this.shouldExposePublicManifest && manifestJson) {\n const publicManifestDir = join(\n this.config.workingDir,\n 'public/.well-known/workflow/v1'\n );\n await mkdir(publicManifestDir, { recursive: true });\n await copyFile(\n join(workflowGeneratedDir, 'manifest.json'),\n join(publicManifestDir, 'manifest.json')\n );\n }\n\n await this.writeFunctionsConfig(outputDir);\n\n if (this.config.watch) {\n if (!stepsBuildContext) {\n throw new Error(\n 'Invariant: expected steps build context in watch mode'\n );\n }\n if (\n !workflowsBundle?.interimBundleCtx ||\n !workflowsBundle?.bundleFinal\n ) {\n throw new Error('Invariant: expected workflows bundle in watch mode');\n }\n\n let stepsCtx = stepsBuildContext;\n // These are safe to assert as non-null because we checked above\n let workflowsCtx = {\n interimBundleCtx: workflowsBundle.interimBundleCtx!,\n bundleFinal: workflowsBundle.bundleFinal!,\n };\n\n const normalizePath = (pathname: string) =>\n pathname.replace(/\\\\/g, '/');\n const knownFiles = new Set<string>();\n type WatchpackTimeInfoEntry = {\n safeTime: number;\n timestamp?: number;\n };\n let previousTimeInfo = new Map<string, WatchpackTimeInfoEntry>();\n\n const watchableExtensions = new Set([\n '.js',\n '.jsx',\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.cjs',\n '.mjs',\n ]);\n const ignoredPathFragments = [\n '/.git/',\n '/node_modules/',\n '/.next/',\n '/.turbo/',\n '/.vercel/',\n '/dist/',\n '/build/',\n '/out/',\n '/.cache/',\n '/.yarn/',\n '/.pnpm-store/',\n '/.parcel-cache/',\n '/.well-known/workflow/',\n ];\n const normalizedGeneratedDir = workflowGeneratedDir.replace(/\\\\/g, '/');\n ignoredPathFragments.push(normalizedGeneratedDir);\n\n // There is a node.js bug on MacOS which causes closing file watchers to be really slow.\n // This limits the number of watchers to mitigate the issue.\n // https://github.com/nodejs/node/issues/29949\n process.env.WATCHPACK_WATCHER_LIMIT =\n process.platform === 'darwin' ? '20' : undefined;\n\n const watcher = new Watchpack({\n // Watchpack default is 200ms which adds 200ms of dead time on bootup.\n aggregateTimeout: 5,\n ignored: (pathname: string) => {\n const normalizedPath = pathname.replace(/\\\\/g, '/');\n const extension = extname(normalizedPath);\n if (extension && !watchableExtensions.has(extension)) {\n return true;\n }\n if (normalizedPath.startsWith(normalizedGeneratedDir)) {\n return true;\n }\n for (const fragment of ignoredPathFragments) {\n if (normalizedPath.includes(fragment)) {\n return true;\n }\n }\n return false;\n },\n });\n\n const readTimeInfoEntries = () => {\n const rawEntries = watcher.getTimeInfoEntries() as Map<\n string,\n WatchpackTimeInfoEntry\n >;\n const normalizedEntries = new Map<string, WatchpackTimeInfoEntry>();\n for (const [path, info] of rawEntries) {\n normalizedEntries.set(normalizePath(path), info);\n }\n return normalizedEntries;\n };\n\n let rebuildQueue = Promise.resolve();\n\n const enqueue = (task: () => Promise<void>) => {\n rebuildQueue = rebuildQueue.then(task).catch((error) => {\n console.error('Failed to process file change', error);\n });\n return rebuildQueue;\n };\n\n const fullRebuild = async () => {\n const newInputFiles = await this.getInputFiles();\n options.inputFiles = newInputFiles;\n\n await stepsCtx.dispose();\n const { context: newStepsCtx } =\n await this.buildStepsFunction(options);\n if (!newStepsCtx) {\n throw new Error(\n 'Invariant: expected steps build context after rebuild'\n );\n }\n stepsCtx = newStepsCtx;\n\n await workflowsCtx.interimBundleCtx.dispose();\n const newWorkflowsCtx = await this.buildWorkflowsFunction(options);\n if (\n !newWorkflowsCtx?.interimBundleCtx ||\n !newWorkflowsCtx?.bundleFinal\n ) {\n throw new Error(\n 'Invariant: expected workflows bundle context after rebuild'\n );\n }\n workflowsCtx = {\n interimBundleCtx: newWorkflowsCtx.interimBundleCtx,\n bundleFinal: newWorkflowsCtx.bundleFinal,\n };\n };\n\n const logBuildMessages = (\n result: {\n errors?: import('esbuild').Message[];\n warnings?: import('esbuild').Message[];\n },\n label: string\n ) => {\n const logByType = (\n messages: import('esbuild').Message[] | undefined,\n method: 'error' | 'warn'\n ) => {\n if (!messages || messages.length === 0) {\n return;\n }\n const descriptor = method === 'error' ? 'errors' : 'warnings';\n console[method](`${descriptor} while rebuilding ${label}`);\n for (const message of messages) {\n console[method](message);\n }\n };\n\n logByType(result.errors, 'error');\n logByType(result.warnings, 'warn');\n };\n\n const rebuildExistingFiles = async () => {\n const rebuiltStepStart = Date.now();\n const stepsResult = await stepsCtx.rebuild();\n logBuildMessages(stepsResult, 'steps bundle');\n console.log(\n 'Rebuilt steps bundle',\n `${Date.now() - rebuiltStepStart}ms`\n );\n\n const rebuiltWorkflowStart = Date.now();\n const workflowResult = await workflowsCtx.interimBundleCtx.rebuild();\n logBuildMessages(workflowResult, 'workflows bundle');\n\n if (\n !workflowResult.outputFiles ||\n workflowResult.outputFiles.length === 0\n ) {\n console.error(\n 'No output generated while rebuilding workflows bundle'\n );\n return;\n }\n await workflowsCtx.bundleFinal(workflowResult.outputFiles[0].text);\n console.log(\n 'Rebuilt workflow bundle',\n `${Date.now() - rebuiltWorkflowStart}ms`\n );\n };\n\n const isWatchableFile = (path: string) =>\n watchableExtensions.has(extname(path));\n\n const getComparableTimestamp = (entry: WatchpackTimeInfoEntry) =>\n entry.timestamp ?? entry.safeTime;\n\n const findRemovedFiles = (\n currentEntries: Map<string, WatchpackTimeInfoEntry>,\n previousEntries: Map<string, WatchpackTimeInfoEntry>\n ) => {\n const removed: string[] = [];\n for (const path of previousEntries.keys()) {\n if (!currentEntries.has(path) && isWatchableFile(path)) {\n removed.push(path);\n }\n }\n return removed;\n };\n\n const findAddedAndModifiedFiles = (\n currentEntries: Map<string, WatchpackTimeInfoEntry>,\n previousEntries: Map<string, WatchpackTimeInfoEntry>\n ) => {\n const added: string[] = [];\n const modified: string[] = [];\n\n for (const [path, info] of currentEntries) {\n if (!isWatchableFile(path)) {\n continue;\n }\n\n const previous = previousEntries.get(path);\n if (!previous) {\n added.push(path);\n continue;\n }\n\n if (\n getComparableTimestamp(info) !== getComparableTimestamp(previous)\n ) {\n modified.push(path);\n }\n }\n\n return { added, modified };\n };\n\n const determineFileChanges = (\n currentEntries: Map<string, WatchpackTimeInfoEntry>,\n previousEntries: Map<string, WatchpackTimeInfoEntry>\n ) => {\n const removedFiles = findRemovedFiles(\n currentEntries,\n previousEntries\n );\n const { added, modified } = findAddedAndModifiedFiles(\n currentEntries,\n previousEntries\n );\n\n return {\n addedFiles: added,\n modifiedFiles: modified,\n removedFiles,\n };\n };\n\n let isInitial = true;\n\n watcher.on('aggregated', () => {\n const currentEntries = readTimeInfoEntries();\n const { addedFiles, modifiedFiles, removedFiles } =\n determineFileChanges(currentEntries, previousTimeInfo);\n\n previousTimeInfo = currentEntries;\n\n if (isInitial) {\n isInitial = false;\n return;\n }\n\n if (\n addedFiles.length === 0 &&\n modifiedFiles.length === 0 &&\n removedFiles.length === 0\n ) {\n return;\n }\n\n for (const removal of removedFiles) {\n knownFiles.delete(removal);\n }\n for (const added of addedFiles) {\n knownFiles.add(added);\n }\n\n enqueue(async () => {\n if (addedFiles.length > 0 || removedFiles.length > 0) {\n await fullRebuild();\n return;\n }\n\n if (modifiedFiles.length > 0) {\n await rebuildExistingFiles();\n }\n });\n });\n\n watcher.watch({\n directories: [this.config.workingDir],\n startTime: 0,\n });\n }\n }\n\n protected async getInputFiles(): Promise<string[]> {\n const inputFiles = await super.getInputFiles();\n return inputFiles.filter((item) => {\n // Match App Router entrypoints: route.ts, page.ts, layout.ts in app/ or src/app/ directories\n // Matches: /app/page.ts, /app/dashboard/page.ts, /src/app/route.ts, etc.\n if (\n item.match(\n /(^|.*[/\\\\])(app|src[/\\\\]app)([/\\\\](route|page|layout)\\.|[/\\\\].*[/\\\\](route|page|layout)\\.)/\n )\n ) {\n return true;\n }\n // Match Pages Router entrypoints: files in pages/ or src/pages/\n if (item.match(/[/\\\\](pages|src[/\\\\]pages)[/\\\\]/)) {\n return true;\n }\n return false;\n });\n }\n\n private async writeFunctionsConfig(outputDir: string) {\n // we don't run this in development mode as it's not needed\n if (process.env.NODE_ENV === 'development') {\n return;\n }\n const generatedConfig = {\n version: '0',\n steps: {\n maxDuration: 'max',\n experimentalTriggers: [STEP_QUEUE_TRIGGER],\n },\n workflows: {\n maxDuration: 'max',\n experimentalTriggers: [WORKFLOW_QUEUE_TRIGGER],\n },\n };\n\n // We write this file to the generated directory for\n // the Next.js builder to consume\n await writeFile(\n join(outputDir, '.well-known/workflow/v1/config.json'),\n JSON.stringify(generatedConfig, null, 2)\n );\n }\n\n private async buildStepsFunction({\n inputFiles,\n workflowGeneratedDir,\n tsconfigPath,\n }: {\n inputFiles: string[];\n workflowGeneratedDir: string;\n tsconfigPath?: string;\n }) {\n // Create steps bundle\n const stepsRouteDir = join(workflowGeneratedDir, 'step');\n await mkdir(stepsRouteDir, { recursive: true });\n return await this.createStepsBundle({\n // If any dynamic requires are used when bundling with ESM\n // esbuild will create a too dynamic wrapper around require\n // which turbopack/webpack fail to analyze. If we externalize\n // correctly this shouldn't be an issue although we might want\n // to use cjs as alternative to avoid\n format: 'esm',\n inputFiles,\n outfile: join(stepsRouteDir, 'route.js'),\n externalizeNonSteps: true,\n tsconfigPath,\n });\n }\n\n private async buildWorkflowsFunction({\n inputFiles,\n workflowGeneratedDir,\n tsconfigPath,\n }: {\n inputFiles: string[];\n workflowGeneratedDir: string;\n tsconfigPath?: string;\n }) {\n const workflowsRouteDir = join(workflowGeneratedDir, 'flow');\n await mkdir(workflowsRouteDir, { recursive: true });\n return await this.createWorkflowsBundle({\n format: 'esm',\n outfile: join(workflowsRouteDir, 'route.js'),\n bundleFinalOutput: false,\n inputFiles,\n tsconfigPath,\n });\n }\n\n private async buildWebhookRoute({\n workflowGeneratedDir,\n }: {\n workflowGeneratedDir: string;\n }): Promise<void> {\n const webhookRouteFile = join(\n workflowGeneratedDir,\n 'webhook/[token]/route.js'\n );\n await this.createWebhookBundle({\n outfile: webhookRouteFile,\n bundle: false, // Next.js doesn't need bundling\n });\n }\n\n private async findAppDirectory(): Promise<string> {\n const appDir = resolve(this.config.workingDir, 'app');\n const srcAppDir = resolve(this.config.workingDir, 'src/app');\n const pagesDir = resolve(this.config.workingDir, 'pages');\n const srcPagesDir = resolve(this.config.workingDir, 'src/pages');\n\n // Helper to check if a path exists and is a directory\n const isDirectory = async (path: string): Promise<boolean> => {\n try {\n await access(path, constants.F_OK);\n const stats = await stat(path);\n if (!stats.isDirectory()) {\n throw new Error(`Path exists but is not a directory: ${path}`);\n }\n return true;\n } catch (e) {\n if (e instanceof Error && e.message.includes('not a directory')) {\n throw e;\n }\n return false;\n }\n };\n\n // Check if app directory exists\n if (await isDirectory(appDir)) {\n return appDir;\n }\n\n // Check if src/app directory exists\n if (await isDirectory(srcAppDir)) {\n return srcAppDir;\n }\n\n // If no app directory exists, check for pages directory and create app next to it\n if (await isDirectory(pagesDir)) {\n // Create app directory next to pages directory\n await mkdir(appDir, { recursive: true });\n return appDir;\n }\n\n if (await isDirectory(srcPagesDir)) {\n // Create src/app directory next to src/pages directory\n await mkdir(srcAppDir, { recursive: true });\n return srcAppDir;\n }\n\n throw new Error(\n 'Could not find Next.js app or pages directory. Expected one of: \"app\", \"src/app\", \"pages\", or \"src/pages\" to exist.'\n );\n }\n }\n\n CachedNextBuilderEager = NextBuilder;\n return NextBuilder;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"builder-eager.js","sourceRoot":"","sources":["../src/builder-eager.ts"],"names":[],"mappings":"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","sourcesContent":["import { constants } from 'node:fs';\nimport { access, copyFile, mkdir, stat, writeFile } from 'node:fs/promises';\nimport { extname, join, resolve } from 'node:path';\nimport Watchpack from 'watchpack';\nimport { cleanupStaleSocketInfoFiles } from './socket-server.js';\n\nlet CachedNextBuilderEager: any;\n\n// Create the eager Next builder dynamically by extending the ESM BaseBuilder.\n// Exported as getNextBuilderEager() to allow CommonJS modules to import from\n// the ESM @workflow/builders package via dynamic import at runtime.\nexport async function getNextBuilderEager() {\n if (CachedNextBuilderEager) {\n return CachedNextBuilderEager;\n }\n\n const {\n BaseBuilder: BaseBuilderClass,\n STEP_QUEUE_TRIGGER,\n WORKFLOW_QUEUE_TRIGGER,\n // biome-ignore lint/security/noGlobalEval: Need to use eval here to avoid TypeScript from transpiling the import statement into `require()`\n } = (await eval(\n 'import(\"@workflow/builders\")'\n )) as typeof import('@workflow/builders');\n\n class NextBuilder extends BaseBuilderClass {\n async build() {\n // Eager mode never starts a discovery socket server, so any leftover\n // workflow-socket.json is from a previous deferred-mode build and\n // would make the webpack loader connect to a dead port.\n await cleanupStaleSocketInfoFiles(\n join(\n this.config.workingDir,\n (this.config as { distDir?: string }).distDir || '.next'\n )\n );\n\n const outputDir = await this.findAppDirectory();\n const workflowGeneratedDir = join(outputDir, '.well-known/workflow/v1');\n\n // Ensure output directories exist\n await mkdir(workflowGeneratedDir, { recursive: true });\n // ignore the generated assets\n\n await writeFile(join(workflowGeneratedDir, '.gitignore'), '*');\n\n const inputFiles = await this.getInputFiles();\n const tsconfigPath = await this.findTsConfigPath();\n\n const options = {\n inputFiles,\n workflowGeneratedDir,\n tsconfigPath,\n };\n\n const { manifest: stepsManifest, context: stepsBuildContext } =\n await this.buildStepsFunction(options);\n const workflowsBundle = await this.buildWorkflowsFunction(options);\n await this.buildWebhookRoute({ workflowGeneratedDir });\n\n // Merge manifests from both bundles\n const manifest = {\n steps: { ...stepsManifest.steps, ...workflowsBundle?.manifest?.steps },\n workflows: {\n ...stepsManifest.workflows,\n ...workflowsBundle?.manifest?.workflows,\n },\n classes: {\n ...stepsManifest.classes,\n ...workflowsBundle?.manifest?.classes,\n },\n };\n\n // Write unified manifest to workflow generated directory\n const workflowBundlePath = join(workflowGeneratedDir, 'flow/route.js');\n const manifestJson = await this.createManifest({\n workflowBundlePath,\n manifestDir: workflowGeneratedDir,\n manifest,\n });\n\n // Expose manifest as a static file when WORKFLOW_PUBLIC_MANIFEST=1.\n // Next.js serves files from public/ at the root URL.\n if (this.shouldExposePublicManifest && manifestJson) {\n const publicManifestDir = join(\n this.config.workingDir,\n 'public/.well-known/workflow/v1'\n );\n await mkdir(publicManifestDir, { recursive: true });\n if (process.env.VERCEL_DEPLOYMENT_ID === undefined) {\n await writeFile(join(publicManifestDir, '.gitignore'), '*');\n }\n await copyFile(\n join(workflowGeneratedDir, 'manifest.json'),\n join(publicManifestDir, 'manifest.json')\n );\n }\n\n await this.writeFunctionsConfig(outputDir);\n\n if (this.config.watch) {\n if (!stepsBuildContext) {\n throw new Error(\n 'Invariant: expected steps build context in watch mode'\n );\n }\n if (\n !workflowsBundle?.interimBundleCtx ||\n !workflowsBundle?.bundleFinal\n ) {\n throw new Error('Invariant: expected workflows bundle in watch mode');\n }\n\n let stepsCtx = stepsBuildContext;\n // These are safe to assert as non-null because we checked above\n let workflowsCtx = {\n interimBundleCtx: workflowsBundle.interimBundleCtx!,\n bundleFinal: workflowsBundle.bundleFinal!,\n };\n\n const normalizePath = (pathname: string) =>\n pathname.replace(/\\\\/g, '/');\n const knownFiles = new Set<string>();\n type WatchpackTimeInfoEntry = {\n safeTime: number;\n timestamp?: number;\n };\n let previousTimeInfo = new Map<string, WatchpackTimeInfoEntry>();\n\n const watchableExtensions = new Set([\n '.js',\n '.jsx',\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.cjs',\n '.mjs',\n ]);\n const ignoredPathFragments = [\n '/.git/',\n '/node_modules/',\n '/.next/',\n '/.turbo/',\n '/.vercel/',\n '/dist/',\n '/build/',\n '/out/',\n '/.cache/',\n '/.yarn/',\n '/.pnpm-store/',\n '/.parcel-cache/',\n '/.well-known/workflow/',\n ];\n const normalizedGeneratedDir = workflowGeneratedDir.replace(/\\\\/g, '/');\n ignoredPathFragments.push(normalizedGeneratedDir);\n\n // There is a node.js bug on MacOS which causes closing file watchers to be really slow.\n // This limits the number of watchers to mitigate the issue.\n // https://github.com/nodejs/node/issues/29949\n process.env.WATCHPACK_WATCHER_LIMIT =\n process.platform === 'darwin' ? '20' : undefined;\n\n const watcher = new Watchpack({\n // Watchpack default is 200ms which adds 200ms of dead time on bootup.\n aggregateTimeout: 5,\n ignored: (pathname: string) => {\n const normalizedPath = pathname.replace(/\\\\/g, '/');\n const extension = extname(normalizedPath);\n if (extension && !watchableExtensions.has(extension)) {\n return true;\n }\n if (normalizedPath.startsWith(normalizedGeneratedDir)) {\n return true;\n }\n for (const fragment of ignoredPathFragments) {\n if (normalizedPath.includes(fragment)) {\n return true;\n }\n }\n return false;\n },\n });\n\n const readTimeInfoEntries = () => {\n const rawEntries = watcher.getTimeInfoEntries() as Map<\n string,\n WatchpackTimeInfoEntry\n >;\n const normalizedEntries = new Map<string, WatchpackTimeInfoEntry>();\n for (const [path, info] of rawEntries) {\n normalizedEntries.set(normalizePath(path), info);\n }\n return normalizedEntries;\n };\n\n let rebuildQueue = Promise.resolve();\n\n const enqueue = (task: () => Promise<void>) => {\n rebuildQueue = rebuildQueue.then(task).catch((error) => {\n console.error('Failed to process file change', error);\n });\n return rebuildQueue;\n };\n\n const fullRebuild = async () => {\n const newInputFiles = await this.getInputFiles();\n options.inputFiles = newInputFiles;\n\n await stepsCtx.dispose();\n const { context: newStepsCtx } =\n await this.buildStepsFunction(options);\n if (!newStepsCtx) {\n throw new Error(\n 'Invariant: expected steps build context after rebuild'\n );\n }\n stepsCtx = newStepsCtx;\n\n await workflowsCtx.interimBundleCtx.dispose();\n const newWorkflowsCtx = await this.buildWorkflowsFunction(options);\n if (\n !newWorkflowsCtx?.interimBundleCtx ||\n !newWorkflowsCtx?.bundleFinal\n ) {\n throw new Error(\n 'Invariant: expected workflows bundle context after rebuild'\n );\n }\n workflowsCtx = {\n interimBundleCtx: newWorkflowsCtx.interimBundleCtx,\n bundleFinal: newWorkflowsCtx.bundleFinal,\n };\n };\n\n const logBuildMessages = (\n result: {\n errors?: import('esbuild').Message[];\n warnings?: import('esbuild').Message[];\n },\n label: string\n ) => {\n const logByType = (\n messages: import('esbuild').Message[] | undefined,\n method: 'error' | 'warn'\n ) => {\n if (!messages || messages.length === 0) {\n return;\n }\n const descriptor = method === 'error' ? 'errors' : 'warnings';\n console[method](`${descriptor} while rebuilding ${label}`);\n for (const message of messages) {\n console[method](message);\n }\n };\n\n logByType(result.errors, 'error');\n logByType(result.warnings, 'warn');\n };\n\n const rebuildExistingFiles = async () => {\n const rebuiltStepStart = Date.now();\n const stepsResult = await stepsCtx.rebuild();\n logBuildMessages(stepsResult, 'steps bundle');\n console.log(\n 'Rebuilt steps bundle',\n `${Date.now() - rebuiltStepStart}ms`\n );\n\n const rebuiltWorkflowStart = Date.now();\n const workflowResult = await workflowsCtx.interimBundleCtx.rebuild();\n logBuildMessages(workflowResult, 'workflows bundle');\n\n if (\n !workflowResult.outputFiles ||\n workflowResult.outputFiles.length === 0\n ) {\n console.error(\n 'No output generated while rebuilding workflows bundle'\n );\n return;\n }\n await workflowsCtx.bundleFinal(workflowResult.outputFiles[0].text);\n console.log(\n 'Rebuilt workflow bundle',\n `${Date.now() - rebuiltWorkflowStart}ms`\n );\n };\n\n const isWatchableFile = (path: string) =>\n watchableExtensions.has(extname(path));\n\n const getComparableTimestamp = (entry: WatchpackTimeInfoEntry) =>\n entry.timestamp ?? entry.safeTime;\n\n const findRemovedFiles = (\n currentEntries: Map<string, WatchpackTimeInfoEntry>,\n previousEntries: Map<string, WatchpackTimeInfoEntry>\n ) => {\n const removed: string[] = [];\n for (const path of previousEntries.keys()) {\n if (!currentEntries.has(path) && isWatchableFile(path)) {\n removed.push(path);\n }\n }\n return removed;\n };\n\n const findAddedAndModifiedFiles = (\n currentEntries: Map<string, WatchpackTimeInfoEntry>,\n previousEntries: Map<string, WatchpackTimeInfoEntry>\n ) => {\n const added: string[] = [];\n const modified: string[] = [];\n\n for (const [path, info] of currentEntries) {\n if (!isWatchableFile(path)) {\n continue;\n }\n\n const previous = previousEntries.get(path);\n if (!previous) {\n added.push(path);\n continue;\n }\n\n if (\n getComparableTimestamp(info) !== getComparableTimestamp(previous)\n ) {\n modified.push(path);\n }\n }\n\n return { added, modified };\n };\n\n const determineFileChanges = (\n currentEntries: Map<string, WatchpackTimeInfoEntry>,\n previousEntries: Map<string, WatchpackTimeInfoEntry>\n ) => {\n const removedFiles = findRemovedFiles(\n currentEntries,\n previousEntries\n );\n const { added, modified } = findAddedAndModifiedFiles(\n currentEntries,\n previousEntries\n );\n\n return {\n addedFiles: added,\n modifiedFiles: modified,\n removedFiles,\n };\n };\n\n let isInitial = true;\n\n watcher.on('aggregated', () => {\n const currentEntries = readTimeInfoEntries();\n const { addedFiles, modifiedFiles, removedFiles } =\n determineFileChanges(currentEntries, previousTimeInfo);\n\n previousTimeInfo = currentEntries;\n\n if (isInitial) {\n isInitial = false;\n return;\n }\n\n if (\n addedFiles.length === 0 &&\n modifiedFiles.length === 0 &&\n removedFiles.length === 0\n ) {\n return;\n }\n\n for (const removal of removedFiles) {\n knownFiles.delete(removal);\n }\n for (const added of addedFiles) {\n knownFiles.add(added);\n }\n\n enqueue(async () => {\n if (addedFiles.length > 0 || removedFiles.length > 0) {\n await fullRebuild();\n return;\n }\n\n if (modifiedFiles.length > 0) {\n await rebuildExistingFiles();\n }\n });\n });\n\n watcher.watch({\n directories: [this.config.workingDir],\n startTime: 0,\n });\n }\n }\n\n protected async getInputFiles(): Promise<string[]> {\n const inputFiles = await super.getInputFiles();\n return inputFiles.filter((item) => {\n // Match App Router entrypoints: route.ts, page.ts, layout.ts in app/ or src/app/ directories\n // Matches: /app/page.ts, /app/dashboard/page.ts, /src/app/route.ts, etc.\n if (\n item.match(\n /(^|.*[/\\\\])(app|src[/\\\\]app)([/\\\\](route|page|layout)\\.|[/\\\\].*[/\\\\](route|page|layout)\\.)/\n )\n ) {\n return true;\n }\n // Match Pages Router entrypoints: files in pages/ or src/pages/\n if (item.match(/[/\\\\](pages|src[/\\\\]pages)[/\\\\]/)) {\n return true;\n }\n return false;\n });\n }\n\n private async writeFunctionsConfig(outputDir: string) {\n // we don't run this in development mode as it's not needed\n if (process.env.NODE_ENV === 'development') {\n return;\n }\n const generatedConfig = {\n version: '0',\n steps: {\n maxDuration: 'max',\n experimentalTriggers: [STEP_QUEUE_TRIGGER],\n },\n workflows: {\n maxDuration: 'max',\n experimentalTriggers: [WORKFLOW_QUEUE_TRIGGER],\n },\n };\n\n // We write this file to the generated directory for\n // the Next.js builder to consume\n await writeFile(\n join(outputDir, '.well-known/workflow/v1/config.json'),\n JSON.stringify(generatedConfig, null, 2)\n );\n }\n\n private async buildStepsFunction({\n inputFiles,\n workflowGeneratedDir,\n tsconfigPath,\n }: {\n inputFiles: string[];\n workflowGeneratedDir: string;\n tsconfigPath?: string;\n }) {\n // Create steps bundle\n const stepsRouteDir = join(workflowGeneratedDir, 'step');\n await mkdir(stepsRouteDir, { recursive: true });\n return await this.createStepsBundle({\n // If any dynamic requires are used when bundling with ESM\n // esbuild will create a too dynamic wrapper around require\n // which turbopack/webpack fail to analyze. If we externalize\n // correctly this shouldn't be an issue although we might want\n // to use cjs as alternative to avoid\n format: 'esm',\n inputFiles,\n outfile: join(stepsRouteDir, 'route.js'),\n externalizeNonSteps: true,\n tsconfigPath,\n });\n }\n\n private async buildWorkflowsFunction({\n inputFiles,\n workflowGeneratedDir,\n tsconfigPath,\n }: {\n inputFiles: string[];\n workflowGeneratedDir: string;\n tsconfigPath?: string;\n }) {\n const workflowsRouteDir = join(workflowGeneratedDir, 'flow');\n await mkdir(workflowsRouteDir, { recursive: true });\n return await this.createWorkflowsBundle({\n format: 'esm',\n outfile: join(workflowsRouteDir, 'route.js'),\n bundleFinalOutput: false,\n inputFiles,\n tsconfigPath,\n });\n }\n\n private async buildWebhookRoute({\n workflowGeneratedDir,\n }: {\n workflowGeneratedDir: string;\n }): Promise<void> {\n const webhookRouteFile = join(\n workflowGeneratedDir,\n 'webhook/[token]/route.js'\n );\n await this.createWebhookBundle({\n outfile: webhookRouteFile,\n bundle: false, // Next.js doesn't need bundling\n });\n }\n\n private async findAppDirectory(): Promise<string> {\n const appDir = resolve(this.config.workingDir, 'app');\n const srcAppDir = resolve(this.config.workingDir, 'src/app');\n const pagesDir = resolve(this.config.workingDir, 'pages');\n const srcPagesDir = resolve(this.config.workingDir, 'src/pages');\n\n // Helper to check if a path exists and is a directory\n const isDirectory = async (path: string): Promise<boolean> => {\n try {\n await access(path, constants.F_OK);\n const stats = await stat(path);\n if (!stats.isDirectory()) {\n throw new Error(`Path exists but is not a directory: ${path}`);\n }\n return true;\n } catch (e) {\n if (e instanceof Error && e.message.includes('not a directory')) {\n throw e;\n }\n return false;\n }\n };\n\n // Check if app directory exists\n if (await isDirectory(appDir)) {\n return appDir;\n }\n\n // Check if src/app directory exists\n if (await isDirectory(srcAppDir)) {\n return srcAppDir;\n }\n\n // If no app directory exists, check for pages directory and create app next to it\n if (await isDirectory(pagesDir)) {\n // Create app directory next to pages directory\n await mkdir(appDir, { recursive: true });\n return appDir;\n }\n\n if (await isDirectory(srcPagesDir)) {\n // Create src/app directory next to src/pages directory\n await mkdir(srcAppDir, { recursive: true });\n return srcAppDir;\n }\n\n throw new Error(\n 'Could not find Next.js app or pages directory. Expected one of: \"app\", \"src/app\", \"pages\", or \"src/pages\" to exist.'\n );\n }\n }\n\n CachedNextBuilderEager = NextBuilder;\n return NextBuilder;\n}\n"]}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAmMvC,wBAAgB,YAAY,CAC1B,cAAc,EACV,UAAU,GACV,CAAC,CACC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE;IAAE,aAAa,EAAE,UAAU,CAAA;CAAE,KAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,EAC7B,EACE,SAAS,GACV,GAAE;IACD,SAAS,CAAC,EAAE;QACV,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACE,IAsBJ,OAAO,MAAM,EACb,KAAK;IAAE,aAAa,EAAE,UAAU,CAAA;CAAE,yBA8NrC"}
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,130 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.withWorkflow = withWorkflow;
|
|
7
|
+
const promises_1 = require("node:fs/promises");
|
|
7
8
|
const semver_1 = __importDefault(require("semver"));
|
|
8
9
|
const builder_js_1 = require("./builder.js");
|
|
10
|
+
const useWorkflowPattern = /^\s*(['"])use workflow\1;?\s*$/m;
|
|
11
|
+
const useStepPattern = /^\s*(['"])use step\1;?\s*$/m;
|
|
12
|
+
const workflowSerdeImportPattern = /from\s+(['"])@workflow\/serde\1/;
|
|
13
|
+
const workflowSerdeSymbolPattern = /Symbol\.for\s*\(\s*(['"])workflow-(?:serialize|deserialize)\1\s*\)/;
|
|
14
|
+
const workflowSerdeComputedPropertyPattern = /\[\s*WORKFLOW_(?:SERIALIZE|DESERIALIZE)\s*\]/;
|
|
15
|
+
const PSEUDO_EXTERNAL_PACKAGES = new Set(['server-only', 'client-only']);
|
|
16
|
+
const warnedAutoRemovedServerExternalPackages = new Set();
|
|
17
|
+
function isPlainObject(value) {
|
|
18
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
19
|
+
}
|
|
20
|
+
function isResolvablePackageSpecifier(specifier) {
|
|
21
|
+
if (specifier.startsWith('.') || specifier.startsWith('/')) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (specifier.startsWith('$')) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (specifier.includes('*') || specifier.includes(':')) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
function detectWorkflowPatterns(source) {
|
|
33
|
+
const hasUseWorkflow = useWorkflowPattern.test(source);
|
|
34
|
+
const hasUseStep = useStepPattern.test(source);
|
|
35
|
+
const hasSerdeImport = workflowSerdeImportPattern.test(source);
|
|
36
|
+
const hasSerdeSymbol = workflowSerdeSymbolPattern.test(source);
|
|
37
|
+
const hasSerdeComputedProperty = workflowSerdeComputedPropertyPattern.test(source);
|
|
38
|
+
return {
|
|
39
|
+
hasUseWorkflow,
|
|
40
|
+
hasUseStep,
|
|
41
|
+
hasSerde: hasSerdeImport || hasSerdeSymbol || hasSerdeComputedProperty,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function getIssueLabels(detected) {
|
|
45
|
+
const issues = [];
|
|
46
|
+
if (detected.hasUseWorkflow) {
|
|
47
|
+
issues.push('"use workflow" functions');
|
|
48
|
+
}
|
|
49
|
+
if (detected.hasUseStep) {
|
|
50
|
+
issues.push('"use step" functions');
|
|
51
|
+
}
|
|
52
|
+
if (detected.hasSerde) {
|
|
53
|
+
issues.push('serialization classes');
|
|
54
|
+
}
|
|
55
|
+
return issues;
|
|
56
|
+
}
|
|
57
|
+
function hasWorkflowSerdeDependency(packageJson) {
|
|
58
|
+
if (!isPlainObject(packageJson)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const dependencies = isPlainObject(packageJson.dependencies)
|
|
62
|
+
? packageJson.dependencies
|
|
63
|
+
: {};
|
|
64
|
+
const peerDependencies = isPlainObject(packageJson.peerDependencies)
|
|
65
|
+
? packageJson.peerDependencies
|
|
66
|
+
: {};
|
|
67
|
+
return (Object.hasOwn(dependencies, '@workflow/serde') ||
|
|
68
|
+
Object.hasOwn(peerDependencies, '@workflow/serde'));
|
|
69
|
+
}
|
|
70
|
+
async function detectServerExternalPackage(packageName, workingDir) {
|
|
71
|
+
if (!isResolvablePackageSpecifier(packageName)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
let hasUseWorkflow = false;
|
|
75
|
+
let hasUseStep = false;
|
|
76
|
+
let hasSerde = false;
|
|
77
|
+
try {
|
|
78
|
+
const packageJsonPath = require.resolve(`${packageName}/package.json`, {
|
|
79
|
+
paths: [workingDir],
|
|
80
|
+
});
|
|
81
|
+
const packageJsonSource = await (0, promises_1.readFile)(packageJsonPath, 'utf-8');
|
|
82
|
+
const packageJson = JSON.parse(packageJsonSource);
|
|
83
|
+
hasSerde = hasWorkflowSerdeDependency(packageJson);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Best-effort only. Continue to source scanning.
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const entryPath = require.resolve(packageName, {
|
|
90
|
+
paths: [workingDir],
|
|
91
|
+
});
|
|
92
|
+
const source = await (0, promises_1.readFile)(entryPath, 'utf-8');
|
|
93
|
+
const patterns = detectWorkflowPatterns(source);
|
|
94
|
+
hasUseWorkflow = patterns.hasUseWorkflow;
|
|
95
|
+
hasUseStep = patterns.hasUseStep;
|
|
96
|
+
hasSerde ||= patterns.hasSerde;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Best-effort only. Use whichever signal we already have.
|
|
100
|
+
}
|
|
101
|
+
if (!hasUseWorkflow && !hasUseStep && !hasSerde) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
packageName,
|
|
106
|
+
hasUseWorkflow,
|
|
107
|
+
hasUseStep,
|
|
108
|
+
hasSerde,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function warnAboutAutoRemovedServerExternalPackages(detectedPackages) {
|
|
112
|
+
const newlyDetectedPackages = detectedPackages.filter(({ packageName }) => {
|
|
113
|
+
return !warnedAutoRemovedServerExternalPackages.has(packageName);
|
|
114
|
+
});
|
|
115
|
+
if (newlyDetectedPackages.length === 0) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
for (const { packageName } of newlyDetectedPackages) {
|
|
119
|
+
warnedAutoRemovedServerExternalPackages.add(packageName);
|
|
120
|
+
}
|
|
121
|
+
const packageDescriptions = newlyDetectedPackages
|
|
122
|
+
.map((detected) => `"${detected.packageName}" (${getIssueLabels(detected).join(', ')})`)
|
|
123
|
+
.join(', ');
|
|
124
|
+
const packageNames = newlyDetectedPackages
|
|
125
|
+
.map((detected) => `"${detected.packageName}"`)
|
|
126
|
+
.join(', ');
|
|
127
|
+
console.warn(`\n⚠ Workflow removed ${packageDescriptions} from serverExternalPackages for this build.` +
|
|
128
|
+
`\n These packages contain workflow code and must be transformed by the workflow compiler.` +
|
|
129
|
+
`\n Remove ${packageNames} from serverExternalPackages in next.config to silence this warning.\n`);
|
|
130
|
+
}
|
|
9
131
|
function resolveNextVersion(workingDir) {
|
|
10
132
|
const fallbackVersion = require('next/package.json').version;
|
|
11
133
|
try {
|
|
@@ -52,6 +174,34 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
52
174
|
}
|
|
53
175
|
// shallow clone to avoid read-only on top-level
|
|
54
176
|
nextConfig = Object.assign({}, nextConfig);
|
|
177
|
+
const configuredServerExternalPackages = Array.isArray(nextConfig.serverExternalPackages)
|
|
178
|
+
? nextConfig.serverExternalPackages
|
|
179
|
+
: [];
|
|
180
|
+
let effectiveServerExternalPackages = configuredServerExternalPackages;
|
|
181
|
+
if (configuredServerExternalPackages.length > 0) {
|
|
182
|
+
const detectedWorkflowPackages = [];
|
|
183
|
+
for (const packageName of configuredServerExternalPackages) {
|
|
184
|
+
if (PSEUDO_EXTERNAL_PACKAGES.has(packageName)) {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
const detected = await detectServerExternalPackage(packageName, process.cwd());
|
|
189
|
+
if (detected) {
|
|
190
|
+
detectedWorkflowPackages.push(detected);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// Best-effort only. Never block config generation.
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (detectedWorkflowPackages.length > 0) {
|
|
198
|
+
const removedPackages = new Set(detectedWorkflowPackages.map((detected) => detected.packageName));
|
|
199
|
+
effectiveServerExternalPackages =
|
|
200
|
+
configuredServerExternalPackages.filter((packageName) => !removedPackages.has(packageName));
|
|
201
|
+
nextConfig.serverExternalPackages = effectiveServerExternalPackages;
|
|
202
|
+
warnAboutAutoRemovedServerExternalPackages(detectedWorkflowPackages);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
55
205
|
// configure the loader if turbopack is being used
|
|
56
206
|
if (!nextConfig.turbopack) {
|
|
57
207
|
nextConfig.turbopack = {};
|
|
@@ -94,7 +244,7 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
94
244
|
// See: https://nextjs.org/docs/app/getting-started/server-and-client-components
|
|
95
245
|
'server-only',
|
|
96
246
|
'client-only',
|
|
97
|
-
...
|
|
247
|
+
...effectiveServerExternalPackages,
|
|
98
248
|
],
|
|
99
249
|
});
|
|
100
250
|
})();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NextConfig } from 'next';\nimport semver from 'semver';\nimport {\n getNextBuilder,\n shouldUseDeferredBuilder,\n WORKFLOW_DEFERRED_ENTRIES,\n} from './builder.js';\n\nfunction resolveNextVersion(workingDir: string): string {\n const fallbackVersion = require('next/package.json').version as string;\n\n try {\n const packageJsonPath = require.resolve('next/package.json', {\n paths: [workingDir],\n });\n const resolvedPackageJson = require(packageJsonPath) as {\n version?: unknown;\n };\n return typeof resolvedPackageJson.version === 'string'\n ? resolvedPackageJson.version\n : fallbackVersion;\n } catch {\n return fallbackVersion;\n }\n}\n\nexport function withWorkflow(\n nextConfigOrFn:\n | NextConfig\n | ((\n phase: string,\n ctx: { defaultConfig: NextConfig }\n ) => Promise<NextConfig>),\n {\n workflows,\n }: {\n workflows?: {\n lazyDiscovery?: boolean;\n local?: {\n port?: number;\n };\n };\n } = {}\n) {\n if (workflows?.lazyDiscovery) {\n process.env.WORKFLOW_NEXT_LAZY_DISCOVERY = '1';\n }\n\n if (!process.env.VERCEL_DEPLOYMENT_ID) {\n if (!process.env.WORKFLOW_TARGET_WORLD) {\n process.env.WORKFLOW_TARGET_WORLD = 'local';\n process.env.WORKFLOW_LOCAL_DATA_DIR = '.next/workflow-data';\n }\n const maybePort = workflows?.local?.port;\n if (maybePort) {\n process.env.PORT = maybePort.toString();\n }\n } else {\n if (!process.env.WORKFLOW_TARGET_WORLD) {\n process.env.WORKFLOW_TARGET_WORLD = 'vercel';\n }\n }\n\n return async function buildConfig(\n phase: string,\n ctx: { defaultConfig: NextConfig }\n ) {\n const loaderPath = require.resolve('./loader');\n let runDeferredBuildFromCallback: (() => Promise<void>) | undefined;\n\n let nextConfig: NextConfig;\n\n if (typeof nextConfigOrFn === 'function') {\n nextConfig = await nextConfigOrFn(phase, ctx);\n } else {\n nextConfig = nextConfigOrFn;\n }\n // shallow clone to avoid read-only on top-level\n nextConfig = Object.assign({}, nextConfig);\n\n // configure the loader if turbopack is being used\n if (!nextConfig.turbopack) {\n nextConfig.turbopack = {};\n }\n if (!nextConfig.turbopack.rules) {\n nextConfig.turbopack.rules = {};\n }\n const existingRules = nextConfig.turbopack.rules as any;\n const nextVersion = resolveNextVersion(process.cwd());\n const supportsTurboCondition = semver.gte(nextVersion, 'v16.0.0');\n const useDeferredBuilder = shouldUseDeferredBuilder(nextVersion);\n\n // Deferred builder discovers files via loader socket notifications, so\n // turbopack content conditions are only needed with the eager builder.\n const shouldApplyTurboCondition =\n supportsTurboCondition && !useDeferredBuilder;\n const shouldWatch = process.env.NODE_ENV === 'development';\n let workflowBuilderPromise: Promise<any> | undefined;\n\n const getWorkflowBuilder = async () => {\n if (!workflowBuilderPromise) {\n workflowBuilderPromise = (async () => {\n const NextBuilder = await getNextBuilder(nextVersion);\n return new NextBuilder({\n watch: shouldWatch,\n // discover workflows from pages/app entries\n dirs: ['pages', 'app', 'src/pages', 'src/app'],\n projectRoot: nextConfig.outputFileTracingRoot,\n workingDir: process.cwd(),\n distDir: nextConfig.distDir || '.next',\n buildTarget: 'next',\n workflowsBundlePath: '', // not used in base\n stepsBundlePath: '', // not used in base\n webhookBundlePath: '', // node used in base\n suppressCreateWorkflowsBundleLogs: useDeferredBuilder,\n suppressCreateWorkflowsBundleWarnings: useDeferredBuilder,\n suppressCreateWebhookBundleLogs: useDeferredBuilder,\n suppressCreateManifestLogs: useDeferredBuilder,\n externalPackages: [\n // server-only and client-only are pseudo-packages handled by Next.js\n // during its build process. We mark them as external to prevent esbuild\n // from failing when bundling code that imports them.\n // See: https://nextjs.org/docs/app/getting-started/server-and-client-components\n 'server-only',\n 'client-only',\n ...(nextConfig.serverExternalPackages || []),\n ],\n });\n })();\n }\n\n return workflowBuilderPromise;\n };\n\n if (useDeferredBuilder) {\n runDeferredBuildFromCallback = async () => {\n const workflowBuilder = await getWorkflowBuilder();\n if (typeof workflowBuilder.onBeforeDeferredEntries === 'function') {\n await workflowBuilder.onBeforeDeferredEntries();\n }\n };\n\n const existingExperimental = (nextConfig.experimental ?? {}) as Record<\n string,\n any\n >;\n const existingDeferredEntries = Array.isArray(\n existingExperimental.deferredEntries\n )\n ? existingExperimental.deferredEntries\n : [];\n const existingOnBeforeDeferredEntries =\n typeof existingExperimental.onBeforeDeferredEntries === 'function'\n ? existingExperimental.onBeforeDeferredEntries\n : undefined;\n\n nextConfig.experimental = {\n ...existingExperimental,\n\n // biome-ignore lint/suspicious/noTsIgnore: expect-error is wrong as it will work on valid version\n // @ts-ignore this is only available in canary Next.js\n deferredEntries: [\n ...new Set([\n ...existingDeferredEntries,\n ...WORKFLOW_DEFERRED_ENTRIES,\n ]),\n ],\n onBeforeDeferredEntries: async (...args: unknown[]) => {\n if (existingOnBeforeDeferredEntries) {\n await existingOnBeforeDeferredEntries(...args);\n }\n if (runDeferredBuildFromCallback) {\n await runDeferredBuildFromCallback();\n }\n },\n };\n }\n\n for (const key of [\n '*.tsx',\n '*.ts',\n '*.jsx',\n '*.js',\n '*.mjs',\n '*.mts',\n '*.cjs',\n '*.cts',\n ]) {\n nextConfig.turbopack.rules[key] = {\n ...(shouldApplyTurboCondition\n ? {\n condition: {\n // Use 'all' to combine: must match content AND must NOT be in generated path\n // Merge with any existing 'all' conditions from user config\n all: [\n ...(existingRules[key]?.condition?.all || []),\n // Exclude generated workflow route files from transformation\n { not: { path: /[/\\\\]\\.well-known[/\\\\]workflow[/\\\\]/ } },\n // Match files with workflow directives or custom serialization patterns\n // Uses backreferences (\\2, \\3) to ensure matching quote types\n {\n content:\n /(use workflow|use step|from\\s+(['\"])@workflow\\/serde\\2|Symbol\\.for\\s*\\(\\s*(['\"])workflow-(?:serialize|deserialize)\\3\\s*\\))/,\n },\n ],\n },\n }\n : {}),\n loaders: [...(existingRules[key]?.loaders || []), loaderPath],\n };\n }\n\n // configure the loader for webpack\n const existingWebpackModify = nextConfig.webpack;\n nextConfig.webpack = (...args) => {\n const [webpackConfig] = args;\n if (!webpackConfig.module) {\n webpackConfig.module = {};\n }\n if (!webpackConfig.module.rules) {\n webpackConfig.module.rules = [];\n }\n // loaders in webpack apply bottom->up so ensure\n // ours comes before the default swc transform\n webpackConfig.module.rules.push({\n test: /.*\\.(mjs|cjs|cts|ts|tsx|js|jsx)$/,\n loader: loaderPath,\n });\n\n return existingWebpackModify\n ? existingWebpackModify(...args)\n : webpackConfig;\n };\n // only run this in the main process so it only runs once\n // as Next.js uses child processes for different builds\n if (\n !process.env.WORKFLOW_NEXT_PRIVATE_BUILT &&\n phase !== 'phase-production-server'\n ) {\n const workflowBuilder = await getWorkflowBuilder();\n\n await workflowBuilder.build();\n process.env.WORKFLOW_NEXT_PRIVATE_BUILT = '1';\n }\n\n return nextConfig;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile } from 'node:fs/promises';\nimport type { NextConfig } from 'next';\nimport semver from 'semver';\nimport {\n getNextBuilder,\n shouldUseDeferredBuilder,\n WORKFLOW_DEFERRED_ENTRIES,\n} from './builder.js';\n\nconst useWorkflowPattern = /^\\s*(['\"])use workflow\\1;?\\s*$/m;\nconst useStepPattern = /^\\s*(['\"])use step\\1;?\\s*$/m;\nconst workflowSerdeImportPattern = /from\\s+(['\"])@workflow\\/serde\\1/;\nconst workflowSerdeSymbolPattern =\n /Symbol\\.for\\s*\\(\\s*(['\"])workflow-(?:serialize|deserialize)\\1\\s*\\)/;\nconst workflowSerdeComputedPropertyPattern =\n /\\[\\s*WORKFLOW_(?:SERIALIZE|DESERIALIZE)\\s*\\]/;\n\nconst PSEUDO_EXTERNAL_PACKAGES = new Set(['server-only', 'client-only']);\nconst warnedAutoRemovedServerExternalPackages = new Set<string>();\n\ninterface WorkflowPatternMatch {\n hasUseWorkflow: boolean;\n hasUseStep: boolean;\n hasSerde: boolean;\n}\n\ninterface DetectedServerExternalPackage {\n packageName: string;\n hasUseWorkflow: boolean;\n hasUseStep: boolean;\n hasSerde: boolean;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isResolvablePackageSpecifier(specifier: string): boolean {\n if (specifier.startsWith('.') || specifier.startsWith('/')) {\n return false;\n }\n if (specifier.startsWith('$')) {\n return false;\n }\n if (specifier.includes('*') || specifier.includes(':')) {\n return false;\n }\n\n return true;\n}\n\nfunction detectWorkflowPatterns(source: string): WorkflowPatternMatch {\n const hasUseWorkflow = useWorkflowPattern.test(source);\n const hasUseStep = useStepPattern.test(source);\n const hasSerdeImport = workflowSerdeImportPattern.test(source);\n const hasSerdeSymbol = workflowSerdeSymbolPattern.test(source);\n const hasSerdeComputedProperty =\n workflowSerdeComputedPropertyPattern.test(source);\n\n return {\n hasUseWorkflow,\n hasUseStep,\n hasSerde: hasSerdeImport || hasSerdeSymbol || hasSerdeComputedProperty,\n };\n}\n\nfunction getIssueLabels(detected: DetectedServerExternalPackage): string[] {\n const issues: string[] = [];\n if (detected.hasUseWorkflow) {\n issues.push('\"use workflow\" functions');\n }\n if (detected.hasUseStep) {\n issues.push('\"use step\" functions');\n }\n if (detected.hasSerde) {\n issues.push('serialization classes');\n }\n return issues;\n}\n\nfunction hasWorkflowSerdeDependency(packageJson: unknown): boolean {\n if (!isPlainObject(packageJson)) {\n return false;\n }\n\n const dependencies = isPlainObject(packageJson.dependencies)\n ? packageJson.dependencies\n : {};\n const peerDependencies = isPlainObject(packageJson.peerDependencies)\n ? packageJson.peerDependencies\n : {};\n\n return (\n Object.hasOwn(dependencies, '@workflow/serde') ||\n Object.hasOwn(peerDependencies, '@workflow/serde')\n );\n}\n\nasync function detectServerExternalPackage(\n packageName: string,\n workingDir: string\n): Promise<DetectedServerExternalPackage | null> {\n if (!isResolvablePackageSpecifier(packageName)) {\n return null;\n }\n\n let hasUseWorkflow = false;\n let hasUseStep = false;\n let hasSerde = false;\n\n try {\n const packageJsonPath = require.resolve(`${packageName}/package.json`, {\n paths: [workingDir],\n });\n const packageJsonSource = await readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonSource) as unknown;\n hasSerde = hasWorkflowSerdeDependency(packageJson);\n } catch {\n // Best-effort only. Continue to source scanning.\n }\n\n try {\n const entryPath = require.resolve(packageName, {\n paths: [workingDir],\n });\n const source = await readFile(entryPath, 'utf-8');\n const patterns = detectWorkflowPatterns(source);\n hasUseWorkflow = patterns.hasUseWorkflow;\n hasUseStep = patterns.hasUseStep;\n hasSerde ||= patterns.hasSerde;\n } catch {\n // Best-effort only. Use whichever signal we already have.\n }\n\n if (!hasUseWorkflow && !hasUseStep && !hasSerde) {\n return null;\n }\n\n return {\n packageName,\n hasUseWorkflow,\n hasUseStep,\n hasSerde,\n };\n}\n\nfunction warnAboutAutoRemovedServerExternalPackages(\n detectedPackages: DetectedServerExternalPackage[]\n): void {\n const newlyDetectedPackages = detectedPackages.filter(({ packageName }) => {\n return !warnedAutoRemovedServerExternalPackages.has(packageName);\n });\n\n if (newlyDetectedPackages.length === 0) {\n return;\n }\n\n for (const { packageName } of newlyDetectedPackages) {\n warnedAutoRemovedServerExternalPackages.add(packageName);\n }\n\n const packageDescriptions = newlyDetectedPackages\n .map(\n (detected) =>\n `\"${detected.packageName}\" (${getIssueLabels(detected).join(', ')})`\n )\n .join(', ');\n const packageNames = newlyDetectedPackages\n .map((detected) => `\"${detected.packageName}\"`)\n .join(', ');\n\n console.warn(\n `\\n⚠ Workflow removed ${packageDescriptions} from serverExternalPackages for this build.` +\n `\\n These packages contain workflow code and must be transformed by the workflow compiler.` +\n `\\n Remove ${packageNames} from serverExternalPackages in next.config to silence this warning.\\n`\n );\n}\n\nfunction resolveNextVersion(workingDir: string): string {\n const fallbackVersion = require('next/package.json').version as string;\n\n try {\n const packageJsonPath = require.resolve('next/package.json', {\n paths: [workingDir],\n });\n const resolvedPackageJson = require(packageJsonPath) as {\n version?: unknown;\n };\n return typeof resolvedPackageJson.version === 'string'\n ? resolvedPackageJson.version\n : fallbackVersion;\n } catch {\n return fallbackVersion;\n }\n}\n\nexport function withWorkflow(\n nextConfigOrFn:\n | NextConfig\n | ((\n phase: string,\n ctx: { defaultConfig: NextConfig }\n ) => Promise<NextConfig>),\n {\n workflows,\n }: {\n workflows?: {\n lazyDiscovery?: boolean;\n local?: {\n port?: number;\n };\n };\n } = {}\n) {\n if (workflows?.lazyDiscovery) {\n process.env.WORKFLOW_NEXT_LAZY_DISCOVERY = '1';\n }\n\n if (!process.env.VERCEL_DEPLOYMENT_ID) {\n if (!process.env.WORKFLOW_TARGET_WORLD) {\n process.env.WORKFLOW_TARGET_WORLD = 'local';\n process.env.WORKFLOW_LOCAL_DATA_DIR = '.next/workflow-data';\n }\n const maybePort = workflows?.local?.port;\n if (maybePort) {\n process.env.PORT = maybePort.toString();\n }\n } else {\n if (!process.env.WORKFLOW_TARGET_WORLD) {\n process.env.WORKFLOW_TARGET_WORLD = 'vercel';\n }\n }\n\n return async function buildConfig(\n phase: string,\n ctx: { defaultConfig: NextConfig }\n ) {\n const loaderPath = require.resolve('./loader');\n let runDeferredBuildFromCallback: (() => Promise<void>) | undefined;\n\n let nextConfig: NextConfig;\n\n if (typeof nextConfigOrFn === 'function') {\n nextConfig = await nextConfigOrFn(phase, ctx);\n } else {\n nextConfig = nextConfigOrFn;\n }\n // shallow clone to avoid read-only on top-level\n nextConfig = Object.assign({}, nextConfig);\n\n const configuredServerExternalPackages = Array.isArray(\n nextConfig.serverExternalPackages\n )\n ? nextConfig.serverExternalPackages\n : [];\n let effectiveServerExternalPackages = configuredServerExternalPackages;\n\n if (configuredServerExternalPackages.length > 0) {\n const detectedWorkflowPackages: DetectedServerExternalPackage[] = [];\n for (const packageName of configuredServerExternalPackages) {\n if (PSEUDO_EXTERNAL_PACKAGES.has(packageName)) {\n continue;\n }\n\n try {\n const detected = await detectServerExternalPackage(\n packageName,\n process.cwd()\n );\n if (detected) {\n detectedWorkflowPackages.push(detected);\n }\n } catch {\n // Best-effort only. Never block config generation.\n }\n }\n\n if (detectedWorkflowPackages.length > 0) {\n const removedPackages = new Set(\n detectedWorkflowPackages.map((detected) => detected.packageName)\n );\n effectiveServerExternalPackages =\n configuredServerExternalPackages.filter(\n (packageName) => !removedPackages.has(packageName)\n );\n nextConfig.serverExternalPackages = effectiveServerExternalPackages;\n warnAboutAutoRemovedServerExternalPackages(detectedWorkflowPackages);\n }\n }\n\n // configure the loader if turbopack is being used\n if (!nextConfig.turbopack) {\n nextConfig.turbopack = {};\n }\n if (!nextConfig.turbopack.rules) {\n nextConfig.turbopack.rules = {};\n }\n const existingRules = nextConfig.turbopack.rules as any;\n const nextVersion = resolveNextVersion(process.cwd());\n const supportsTurboCondition = semver.gte(nextVersion, 'v16.0.0');\n const useDeferredBuilder = shouldUseDeferredBuilder(nextVersion);\n\n // Deferred builder discovers files via loader socket notifications, so\n // turbopack content conditions are only needed with the eager builder.\n const shouldApplyTurboCondition =\n supportsTurboCondition && !useDeferredBuilder;\n const shouldWatch = process.env.NODE_ENV === 'development';\n let workflowBuilderPromise: Promise<any> | undefined;\n\n const getWorkflowBuilder = async () => {\n if (!workflowBuilderPromise) {\n workflowBuilderPromise = (async () => {\n const NextBuilder = await getNextBuilder(nextVersion);\n return new NextBuilder({\n watch: shouldWatch,\n // discover workflows from pages/app entries\n dirs: ['pages', 'app', 'src/pages', 'src/app'],\n projectRoot: nextConfig.outputFileTracingRoot,\n workingDir: process.cwd(),\n distDir: nextConfig.distDir || '.next',\n buildTarget: 'next',\n workflowsBundlePath: '', // not used in base\n stepsBundlePath: '', // not used in base\n webhookBundlePath: '', // node used in base\n suppressCreateWorkflowsBundleLogs: useDeferredBuilder,\n suppressCreateWorkflowsBundleWarnings: useDeferredBuilder,\n suppressCreateWebhookBundleLogs: useDeferredBuilder,\n suppressCreateManifestLogs: useDeferredBuilder,\n externalPackages: [\n // server-only and client-only are pseudo-packages handled by Next.js\n // during its build process. We mark them as external to prevent esbuild\n // from failing when bundling code that imports them.\n // See: https://nextjs.org/docs/app/getting-started/server-and-client-components\n 'server-only',\n 'client-only',\n ...effectiveServerExternalPackages,\n ],\n });\n })();\n }\n\n return workflowBuilderPromise;\n };\n\n if (useDeferredBuilder) {\n runDeferredBuildFromCallback = async () => {\n const workflowBuilder = await getWorkflowBuilder();\n if (typeof workflowBuilder.onBeforeDeferredEntries === 'function') {\n await workflowBuilder.onBeforeDeferredEntries();\n }\n };\n\n const existingExperimental = (nextConfig.experimental ?? {}) as Record<\n string,\n any\n >;\n const existingDeferredEntries = Array.isArray(\n existingExperimental.deferredEntries\n )\n ? existingExperimental.deferredEntries\n : [];\n const existingOnBeforeDeferredEntries =\n typeof existingExperimental.onBeforeDeferredEntries === 'function'\n ? existingExperimental.onBeforeDeferredEntries\n : undefined;\n\n nextConfig.experimental = {\n ...existingExperimental,\n\n // biome-ignore lint/suspicious/noTsIgnore: expect-error is wrong as it will work on valid version\n // @ts-ignore this is only available in canary Next.js\n deferredEntries: [\n ...new Set([\n ...existingDeferredEntries,\n ...WORKFLOW_DEFERRED_ENTRIES,\n ]),\n ],\n onBeforeDeferredEntries: async (...args: unknown[]) => {\n if (existingOnBeforeDeferredEntries) {\n await existingOnBeforeDeferredEntries(...args);\n }\n if (runDeferredBuildFromCallback) {\n await runDeferredBuildFromCallback();\n }\n },\n };\n }\n\n for (const key of [\n '*.tsx',\n '*.ts',\n '*.jsx',\n '*.js',\n '*.mjs',\n '*.mts',\n '*.cjs',\n '*.cts',\n ]) {\n nextConfig.turbopack.rules[key] = {\n ...(shouldApplyTurboCondition\n ? {\n condition: {\n // Use 'all' to combine: must match content AND must NOT be in generated path\n // Merge with any existing 'all' conditions from user config\n all: [\n ...(existingRules[key]?.condition?.all || []),\n // Exclude generated workflow route files from transformation\n { not: { path: /[/\\\\]\\.well-known[/\\\\]workflow[/\\\\]/ } },\n // Match files with workflow directives or custom serialization patterns\n // Uses backreferences (\\2, \\3) to ensure matching quote types\n {\n content:\n /(use workflow|use step|from\\s+(['\"])@workflow\\/serde\\2|Symbol\\.for\\s*\\(\\s*(['\"])workflow-(?:serialize|deserialize)\\3\\s*\\))/,\n },\n ],\n },\n }\n : {}),\n loaders: [...(existingRules[key]?.loaders || []), loaderPath],\n };\n }\n\n // configure the loader for webpack\n const existingWebpackModify = nextConfig.webpack;\n nextConfig.webpack = (...args) => {\n const [webpackConfig] = args;\n if (!webpackConfig.module) {\n webpackConfig.module = {};\n }\n if (!webpackConfig.module.rules) {\n webpackConfig.module.rules = [];\n }\n // loaders in webpack apply bottom->up so ensure\n // ours comes before the default swc transform\n webpackConfig.module.rules.push({\n test: /.*\\.(mjs|cjs|cts|ts|tsx|js|jsx)$/,\n loader: loaderPath,\n });\n\n return existingWebpackModify\n ? existingWebpackModify(...args)\n : webpackConfig;\n };\n // only run this in the main process so it only runs once\n // as Next.js uses child processes for different builds\n if (\n !process.env.WORKFLOW_NEXT_PRIVATE_BUILT &&\n phase !== 'phase-production-server'\n ) {\n const workflowBuilder = await getWorkflowBuilder();\n\n await workflowBuilder.build();\n process.env.WORKFLOW_NEXT_PRIVATE_BUILT = '1';\n }\n\n return nextConfig;\n };\n}\n"]}
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AA0dA,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CACZ,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,GAAG,KACZ,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,SAAS,EAAE,GAAG,GACb,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAyJjC"}
|
package/dist/loader.js
CHANGED
|
@@ -17,6 +17,31 @@ let cachedLoaderStaticDependencies = null;
|
|
|
17
17
|
let socketClientPromise = null;
|
|
18
18
|
let socketClient = null;
|
|
19
19
|
let socketClientKey = null;
|
|
20
|
+
/**
|
|
21
|
+
* Wrap a TCP connect failure with context about where the connection was
|
|
22
|
+
* attempted, where the credentials came from, and which source file was
|
|
23
|
+
* being processed when it failed. ECONNREFUSED is the common case here, and
|
|
24
|
+
* the message points the user at the most likely root cause (stale
|
|
25
|
+
* socket-info file).
|
|
26
|
+
*/
|
|
27
|
+
function annotateConnectionError(originalError, credentials) {
|
|
28
|
+
const errorCode = originalError instanceof Error &&
|
|
29
|
+
'code' in originalError &&
|
|
30
|
+
typeof originalError.code === 'string'
|
|
31
|
+
? originalError.code
|
|
32
|
+
: undefined;
|
|
33
|
+
const errorMessage = originalError instanceof Error
|
|
34
|
+
? originalError.message
|
|
35
|
+
: String(originalError);
|
|
36
|
+
const lines = [
|
|
37
|
+
`Workflow discovery socket connect failed: ${errorCode ?? errorMessage} (127.0.0.1:${credentials.port})`,
|
|
38
|
+
];
|
|
39
|
+
const annotated = new Error(lines.join('\n'));
|
|
40
|
+
if (originalError instanceof Error) {
|
|
41
|
+
annotated.cause = originalError;
|
|
42
|
+
}
|
|
43
|
+
return annotated;
|
|
44
|
+
}
|
|
20
45
|
function registerFileDependency(loaderContext, dependencyPath) {
|
|
21
46
|
loaderContext.addDependency?.(dependencyPath);
|
|
22
47
|
loaderContext.addBuildDependency?.(dependencyPath);
|
|
@@ -161,12 +186,12 @@ async function getSocketClient() {
|
|
|
161
186
|
};
|
|
162
187
|
const onError = (error) => {
|
|
163
188
|
cleanup();
|
|
164
|
-
reject(error);
|
|
189
|
+
reject(annotateConnectionError(error, socketCredentials));
|
|
165
190
|
};
|
|
166
191
|
const timeout = setTimeout(() => {
|
|
167
192
|
cleanup();
|
|
168
193
|
socket.destroy();
|
|
169
|
-
reject(new Error('Socket connection timeout'));
|
|
194
|
+
reject(annotateConnectionError(new Error('Socket connection timeout'), socketCredentials));
|
|
170
195
|
}, 1000);
|
|
171
196
|
const cleanup = () => {
|
|
172
197
|
clearTimeout(timeout);
|