@workflow/builders 5.0.0-beta.7 → 5.0.0-beta.8
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/apply-swc-transform.js +1 -1
- package/dist/base-builder.d.ts.map +1 -1
- package/dist/base-builder.js +2 -1
- package/dist/build-queue.js +1 -1
- package/dist/config-helpers.js +1 -1
- package/dist/constants.js +1 -1
- package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
- package/dist/discover-entries-esbuild-plugin.js +3 -2
- package/dist/discover-entries-esbuild-plugin.test.js +1 -1
- package/dist/esbuild-tsconfig.js +1 -1
- package/dist/esbuild-tsconfig.test.js +1 -1
- package/dist/external-package-warning.test.js +1 -1
- package/dist/get-input-files.test.js +1 -1
- package/dist/index.js +1 -1
- package/dist/module-specifier.js +1 -1
- package/dist/module-specifier.test.js +1 -1
- package/dist/node-module-esbuild-plugin.js +1 -1
- package/dist/node-module-esbuild-plugin.test.js +1 -1
- package/dist/pseudo-package-esbuild-plugin.js +1 -1
- package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
- package/dist/request-converter.js +1 -1
- package/dist/resolve-sourcemap.test.js +1 -1
- package/dist/serde-checker.js +1 -1
- package/dist/standalone.js +1 -1
- package/dist/swc-esbuild-plugin.js +1 -1
- package/dist/swc-esbuild-plugin.test.js +1 -1
- package/dist/transform-utils.js +1 -1
- package/dist/transform-utils.test.js +1 -1
- package/dist/types.js +1 -1
- package/dist/vercel-build-output-api.d.ts.map +1 -1
- package/dist/vercel-build-output-api.js +4 -1
- package/dist/workflow-alias.js +1 -1
- package/dist/workflow-alias.test.js +1 -1
- package/dist/workflows-extractor.js +1 -1
- package/package.json +4 -4
- package/dist/apply-swc-transform.js.map +0 -1
- package/dist/base-builder.js.map +0 -1
- package/dist/build-queue.js.map +0 -1
- package/dist/config-helpers.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/discover-entries-esbuild-plugin.js.map +0 -1
- package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
- package/dist/esbuild-tsconfig.js.map +0 -1
- package/dist/esbuild-tsconfig.test.js.map +0 -1
- package/dist/external-package-warning.test.js.map +0 -1
- package/dist/get-input-files.test.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/module-specifier.js.map +0 -1
- package/dist/module-specifier.test.js.map +0 -1
- package/dist/node-module-esbuild-plugin.js.map +0 -1
- package/dist/node-module-esbuild-plugin.test.js.map +0 -1
- package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
- package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
- package/dist/request-converter.js.map +0 -1
- package/dist/resolve-sourcemap.test.js.map +0 -1
- package/dist/serde-checker.js.map +0 -1
- package/dist/standalone.js.map +0 -1
- package/dist/swc-esbuild-plugin.js.map +0 -1
- package/dist/swc-esbuild-plugin.test.js.map +0 -1
- package/dist/transform-utils.js.map +0 -1
- package/dist/transform-utils.test.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/vercel-build-output-api.js.map +0 -1
- package/dist/workflow-alias.js.map +0 -1
- package/dist/workflow-alias.test.js.map +0 -1
- package/dist/workflows-extractor.js.map +0 -1
package/dist/base-builder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-builder.js","sourceRoot":"","sources":["../src/base-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { mkdir, readFile, realpath, rename, writeFile } from 'node:fs/promises';\nimport { createRequire } from 'node:module';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\nimport { promisify } from 'node:util';\nimport { WorkflowBuildError } from '@workflow/errors';\nimport { pluralize } from '@workflow/utils';\nimport chalk from 'chalk';\nimport enhancedResolveOriginal from 'enhanced-resolve';\nimport * as esbuild from 'esbuild';\nimport { findUp } from 'find-up';\nimport { glob } from 'tinyglobby';\nimport {\n applySwcTransform,\n type WorkflowManifest,\n} from './apply-swc-transform.js';\nimport { createDiscoverEntriesPlugin } from './discover-entries-esbuild-plugin.js';\nimport { getEsbuildTsconfigOptions } from './esbuild-tsconfig.js';\nimport { getImportPath } from './module-specifier.js';\nimport { createNodeModuleErrorPlugin } from './node-module-esbuild-plugin.js';\nimport { createPseudoPackagePlugin } from './pseudo-package-esbuild-plugin.js';\nimport { createSwcPlugin } from './swc-esbuild-plugin.js';\nimport { detectWorkflowPatterns } from './transform-utils.js';\nimport type { SourcemapMode, WorkflowConfig } from './types.js';\nimport { extractWorkflowGraphs } from './workflows-extractor.js';\n\nconst enhancedResolve = promisify(enhancedResolveOriginal);\nconst require = createRequire(import.meta.url);\n\n/**\n * Legacy opt-in for source maps on the final workflow wrapper + webhook\n * bundles (which default to off, unlike the step/interim workflow bundles\n * that default to inline). Superseded by the `sourcemap` config option and\n * the `WORKFLOW_SOURCEMAP` environment variable; kept for back-compat.\n */\nconst EMIT_SOURCEMAPS_FOR_DEBUGGING =\n process.env.WORKFLOW_EMIT_SOURCEMAPS_FOR_DEBUGGING === '1';\n\nconst VALID_SOURCEMAP_STRINGS = new Set([\n 'inline',\n 'linked',\n 'external',\n 'both',\n]);\n\n/**\n * Parse the value of the `WORKFLOW_SOURCEMAP` environment variable into a\n * `SourcemapMode`. Returns `undefined` if the env var is unset, empty, or\n * unrecognized (a warning is emitted for unrecognized values).\n */\nfunction parseSourcemapEnv(\n value: string | undefined\n): SourcemapMode | undefined {\n if (value === undefined || value === '') return undefined;\n switch (value) {\n case '0':\n case 'false':\n return false;\n case '1':\n case 'true':\n return true;\n default:\n if (VALID_SOURCEMAP_STRINGS.has(value)) {\n return value as SourcemapMode;\n }\n console.warn(\n `Ignoring unrecognized WORKFLOW_SOURCEMAP=${value}. ` +\n `Expected one of: true, false, 0, 1, inline, linked, external, both.`\n );\n return undefined;\n }\n}\n\n/**\n * Normalize an array of file paths by appending the `realpath()` of each entry\n * (to handle symlinks, e.g. pnpm/workspace layouts) and deduplicating.\n */\nasync function withRealpaths(entries: string[]): Promise<string[]> {\n return Array.from(\n new Set(\n (\n await Promise.all(\n entries.map(async (entry) => {\n const resolved = await realpath(entry).catch(() => undefined);\n return resolved ? [entry, resolved] : [entry];\n })\n )\n ).flat()\n )\n );\n}\n\nexport interface DiscoveredEntries {\n discoveredSteps: Set<string>;\n discoveredWorkflows: Set<string>;\n discoveredSerdeFiles: Set<string>;\n}\n\n/**\n * Base class for workflow builders. Provides common build logic for transforming\n * workflow source files into deployable bundles using esbuild and SWC.\n *\n * Subclasses must implement the build() method to define builder-specific logic.\n */\nexport abstract class BaseBuilder {\n protected config: WorkflowConfig;\n\n /**\n * Tracks which external packages have already been warned about\n * to avoid duplicate warnings across multiple discoverEntries() calls.\n */\n private warnedExternalPackages = new Set<string>();\n\n constructor(config: WorkflowConfig) {\n this.config = config;\n }\n\n protected get transformProjectRoot(): string {\n return this.config.projectRoot || this.config.workingDir;\n }\n\n /**\n * Whether informational BaseBuilder logs should be printed.\n * Subclasses can override this to silence progress logs while keeping warnings/errors.\n */\n protected get shouldLogBaseBuilderInfo(): boolean {\n return true;\n }\n\n protected logBaseBuilderInfo(...args: unknown[]): void {\n if (this.shouldLogBaseBuilderInfo) {\n console.log(...args);\n }\n }\n\n private logCreateWorkflowsBundleInfo(...args: unknown[]): void {\n if (!this.config.suppressCreateWorkflowsBundleLogs) {\n this.logBaseBuilderInfo(...args);\n }\n }\n\n private logCreateWebhookBundleInfo(...args: unknown[]): void {\n if (!this.config.suppressCreateWebhookBundleLogs) {\n this.logBaseBuilderInfo(...args);\n }\n }\n\n private logCreateManifestInfo(...args: unknown[]): void {\n if (!this.config.suppressCreateManifestLogs) {\n this.logBaseBuilderInfo(...args);\n }\n }\n\n /**\n * When outputting CJS, esbuild replaces `import.meta` with an empty object,\n * making `import.meta.url` (and `import.meta.resolve`) undefined. This method\n * returns banner code and `define` entries that polyfill them using CJS\n * equivalents (`__filename`, `require.resolve`) so user code (e.g. Prisma)\n * that relies on `import.meta.url` works correctly in bundled CJS output.\n */\n private getCjsImportMetaPolyfill(format: string): {\n banner: string;\n define: Record<string, string>;\n } {\n if (format !== 'cjs') return { banner: '', define: {} };\n return {\n banner:\n 'var __import_meta_url = typeof __filename !== \"undefined\" ? require(\"url\").pathToFileURL(__filename).href : undefined;\\n' +\n 'var __import_meta_resolve = typeof require !== \"undefined\" && typeof __filename !== \"undefined\" ' +\n '? (s) => require(\"url\").pathToFileURL(require.resolve(s)).href : undefined;\\n',\n define: {\n 'import.meta.url': '__import_meta_url',\n 'import.meta.resolve': '__import_meta_resolve',\n },\n };\n }\n\n /**\n * When outputting fully-bundled ESM, CJS dependencies that call require()\n * for Node.js builtins (e.g. debug → require('tty')) break because esbuild's\n * CJS-to-ESM __require shim doesn't have access to a real require function.\n * This banner provides one via createRequire so bundled CJS code works in ESM.\n */\n private getEsmRequireBanner(format: string): string {\n if (format !== 'esm') return '';\n return 'import { createRequire as __createRequire } from \"node:module\";\\nvar require = __createRequire(import.meta.url);\\n';\n }\n\n /**\n * Performs the complete build process for workflows.\n * Subclasses must implement this to define their specific build steps.\n */\n abstract build(): Promise<void>;\n\n /**\n * Finds tsconfig.json/jsconfig.json for the project.\n * Used by esbuild to properly resolve module imports during bundling.\n */\n protected async findTsConfigPath(): Promise<string | undefined> {\n const cwd = this.config.workingDir || process.cwd();\n return findUp(['tsconfig.json', 'jsconfig.json'], { cwd });\n }\n\n /**\n * Discovers all source files in the configured directories.\n * Searches for TypeScript and JavaScript files while excluding common build\n * and dependency directories.\n */\n protected async getInputFiles(): Promise<string[]> {\n const ignore = [\n '**/node_modules/**',\n '**/.git/**',\n '**/.next/**',\n '**/.nuxt/**',\n '**/.output/**',\n '**/.vercel/**',\n '**/.workflow-data/**',\n '**/.workflow-vitest/**',\n '**/.well-known/workflow/**',\n '**/.svelte-kit/**',\n '**/.turbo/**',\n '**/.cache/**',\n '**/.yarn/**',\n '**/.pnpm-store/**',\n ];\n\n // Use relative patterns with `cwd` per directory so that `dot: true`\n // applies consistently to both the search pattern *and* the ignore\n // patterns. When absolute patterns are used with tinyglobby, the `**`\n // in ignore patterns does not match dot-prefixed path segments.\n const results = await Promise.all(\n this.config.dirs.map((dir) => {\n const cwd = resolve(this.config.workingDir, dir);\n return glob(['**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}'], {\n cwd,\n ignore,\n absolute: true,\n dot: true,\n });\n })\n );\n\n return results.flat();\n }\n\n /**\n * Caches discovered workflow entries by input array reference.\n * Uses WeakMap to allow garbage collection when input arrays are no longer referenced.\n * This cache is invalidated automatically when the inputs array reference changes\n * (e.g., when files are added/removed during watch mode).\n */\n private discoveredEntries: WeakMap<string[], DiscoveredEntries> =\n new WeakMap();\n\n /**\n * Pseudo-packages that should not be checked for workflow patterns.\n */\n private static readonly PSEUDO_PACKAGES = new Set([\n 'server-only',\n 'client-only',\n ]);\n\n /**\n * Checks each package in externalPackages for workflow patterns and emits\n * warnings if any contain \"use step\", \"use workflow\" directives, or\n * serialization classes. These patterns will not be transformed by the\n * workflow compiler when the package is externalized.\n */\n private async warnAboutExternalWorkflowPackages(): Promise<void> {\n const externalPackages = this.config.externalPackages;\n if (!externalPackages?.length) return;\n\n for (const pkg of externalPackages) {\n if (BaseBuilder.PSEUDO_PACKAGES.has(pkg)) continue;\n if (this.warnedExternalPackages.has(pkg)) continue;\n\n if (\n pkg.startsWith('.') ||\n pkg.startsWith('/') ||\n pkg.startsWith('$') ||\n pkg.includes('*') ||\n pkg.includes(':')\n ) {\n continue;\n }\n\n try {\n // Check package.json dependencies for @workflow/serde (fast path)\n let hasWorkflowSerdeDep = false;\n try {\n const pkgJsonPath = require.resolve(`${pkg}/package.json`, {\n paths: [this.config.workingDir],\n });\n const pkgJsonSource = await readFile(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(pkgJsonSource) as {\n dependencies?: unknown;\n peerDependencies?: unknown;\n };\n const dependencies =\n typeof pkgJson.dependencies === 'object' &&\n pkgJson.dependencies !== null &&\n !Array.isArray(pkgJson.dependencies)\n ? (pkgJson.dependencies as Record<string, unknown>)\n : {};\n const peerDependencies =\n typeof pkgJson.peerDependencies === 'object' &&\n pkgJson.peerDependencies !== null &&\n !Array.isArray(pkgJson.peerDependencies)\n ? (pkgJson.peerDependencies as Record<string, unknown>)\n : {};\n hasWorkflowSerdeDep =\n Object.hasOwn(dependencies, '@workflow/serde') ||\n Object.hasOwn(peerDependencies, '@workflow/serde');\n } catch {\n // package.json not resolvable - continue to source check\n }\n\n // Check source patterns (thorough path).\n // Note: require.resolve only inspects the package's main entry point.\n // If workflow constructs live in sub-paths (e.g. `my-pkg/workflows`),\n // they won't be detected here. The @workflow/serde dep check above\n // partially covers serde cases. This is acceptable as a best-effort\n // heuristic — the primary fix is auto-removal in withWorkflow().\n let hasUseStep = false;\n let hasUseWorkflow = false;\n let hasSerde = hasWorkflowSerdeDep;\n try {\n const entryPath = require.resolve(pkg, {\n paths: [this.config.workingDir],\n });\n const source = await readFile(entryPath, 'utf-8');\n const patterns = detectWorkflowPatterns(source);\n hasUseStep = patterns.hasUseStep;\n hasUseWorkflow = patterns.hasUseWorkflow;\n if (!hasSerde) {\n hasSerde = patterns.hasSerde;\n }\n } catch {\n // Entry file not resolvable or not readable - use what we have\n }\n\n if (!hasUseStep && !hasUseWorkflow && !hasSerde) continue;\n\n // Build a specific description of what was found\n const issues: string[] = [];\n if (hasUseWorkflow) issues.push('\"use workflow\" functions');\n if (hasUseStep) issues.push('\"use step\" functions');\n if (hasSerde) issues.push('serialization classes');\n\n this.warnedExternalPackages.add(pkg);\n\n console.warn(\n `\\n${chalk.yellow('⚠')} Warning: ${chalk.bold(`\"${pkg}\"`)} is listed in ${chalk.bold('externalPackages')} (${chalk.bold('serverExternalPackages')} in Next.js) but contains workflow code (${issues.join(', ')}).` +\n `\\n This code will ${chalk.bold('not')} be transformed by the workflow compiler, which can cause runtime failures.` +\n `\\n Remove ${chalk.bold(`\"${pkg}\"`)} from ${chalk.bold('externalPackages')} (${chalk.bold('serverExternalPackages')} in Next.js) to fix this.\\n`\n );\n } catch {\n // Best-effort: if anything goes wrong, skip this package silently\n }\n }\n }\n\n protected async discoverEntries(\n inputs: string[],\n outdir: string,\n tsconfigPath?: string\n ): Promise<DiscoveredEntries> {\n const previousResult = this.discoveredEntries.get(inputs);\n\n if (previousResult) {\n return previousResult;\n }\n const state: DiscoveredEntries = {\n discoveredSteps: new Set(),\n discoveredWorkflows: new Set(),\n discoveredSerdeFiles: new Set(),\n };\n\n const discoverStart = Date.now();\n\n // Resolve the SDK runtime entry point so that the discovery pass\n // traces through it and discovers serde classes (like `Run`) that\n // live inside SDK packages. Without this, files like `run.js` are\n // only discovered when user code happens to import them.\n // This is resolved here (rather than in callers) so that the original\n // `inputs` array reference is preserved for WeakMap caching — callers\n // like createWorkflowsBundle and createStepsBundle can share the same\n // cache entry when they pass the same inputFiles array.\n const resolvedWorkflowRuntime = await enhancedResolve(\n outdir,\n 'workflow/runtime'\n ).catch(() => undefined);\n const entryPoints = resolvedWorkflowRuntime\n ? [...inputs, resolvedWorkflowRuntime]\n : inputs;\n\n const effectiveTsconfigPath =\n tsconfigPath ?? (await this.findTsConfigPath());\n const esbuildTsconfigOptions = await getEsbuildTsconfigOptions(\n effectiveTsconfigPath\n );\n try {\n await esbuild.build({\n treeShaking: true,\n entryPoints,\n plugins: [\n createDiscoverEntriesPlugin(state, this.transformProjectRoot),\n ],\n platform: 'node',\n write: false,\n outdir,\n bundle: true,\n sourcemap: false,\n absWorkingDir: this.config.workingDir,\n logLevel: 'silent',\n ...esbuildTsconfigOptions,\n // External packages that should not be bundled during discovery\n external: this.config.externalPackages || [],\n });\n } catch (_) {}\n\n this.logBaseBuilderInfo(\n `Discovering workflow directives`,\n `${Date.now() - discoverStart}ms`\n );\n\n // Warn about external packages that contain workflow code\n await this.warnAboutExternalWorkflowPackages();\n\n this.discoveredEntries.set(inputs, state);\n return state;\n }\n\n /**\n * Writes debug information to a JSON file for troubleshooting build issues.\n * Uses atomic write (temp file + rename) to prevent race conditions when\n * multiple builds run concurrently.\n */\n private async writeDebugFile(\n outfile: string,\n debugData: object,\n merge?: boolean\n ): Promise<void> {\n const prefix = this.config.debugFilePrefix || '';\n const targetPath = `${dirname(outfile)}/${prefix}${basename(outfile)}.debug.json`;\n let existing = {};\n\n try {\n if (merge) {\n try {\n const content = await readFile(targetPath, 'utf8');\n existing = JSON.parse(content);\n } catch (e) {\n // File doesn't exist yet or is corrupted - start fresh.\n // Don't log error for ENOENT (file not found) as that's expected on first run.\n if ((e as NodeJS.ErrnoException).code !== 'ENOENT') {\n console.warn('Error reading debug file, starting fresh:', e);\n }\n }\n }\n\n const mergedData = JSON.stringify(\n {\n ...existing,\n ...debugData,\n },\n null,\n 2\n );\n\n // Write atomically: write to temp file, then rename.\n // rename() is atomic on POSIX systems and provides best-effort atomicity on Windows.\n // Prevents race conditions where concurrent builds read partially-written files.\n const tempPath = `${targetPath}.${randomUUID()}.tmp`;\n await writeFile(tempPath, mergedData);\n await rename(tempPath, targetPath);\n } catch (error: unknown) {\n console.warn('Failed to write debug file:', error);\n }\n }\n\n /**\n * Logs and optionally throws on esbuild errors and warnings.\n * @param throwOnError - If true, throws an error when esbuild errors are present\n */\n private logEsbuildMessages(\n result: { errors?: any[]; warnings?: any[] },\n phase: string,\n throwOnError = true,\n options?: {\n suppressWarnings?: boolean;\n }\n ): void {\n if (result.errors && result.errors.length > 0) {\n console.error(`❌ esbuild errors in ${phase}:`);\n const errorMessages: string[] = [];\n for (const error of result.errors) {\n console.error(` ${error.text}`);\n errorMessages.push(error.text);\n if (error.location) {\n const location = ` at ${error.location.file}:${error.location.line}:${error.location.column}`;\n console.error(location);\n errorMessages.push(location);\n }\n }\n\n if (throwOnError) {\n throw new WorkflowBuildError(\n `Build failed during ${phase}:\\n${errorMessages.join('\\n')}`,\n {\n hint: `Review the esbuild errors above — they come from the ${phase} bundle. Fix the offending source files and re-run the build.`,\n }\n );\n }\n }\n\n if (\n !options?.suppressWarnings &&\n result.warnings &&\n result.warnings.length > 0\n ) {\n console.warn(`! esbuild warnings in ${phase}:`);\n for (const warning of result.warnings) {\n console.warn(` ${warning.text}`);\n if (warning.location) {\n console.warn(\n ` at ${warning.location.file}:${warning.location.line}:${warning.location.column}`\n );\n }\n }\n }\n }\n\n /**\n * Converts an absolute file path to a normalized relative path for the manifest.\n */\n private getRelativeFilepath(absolutePath: string): string {\n const normalizedFile = absolutePath.replace(/\\\\/g, '/');\n const normalizedWorkingDir = this.config.workingDir.replace(/\\\\/g, '/');\n let relativePath = relative(normalizedWorkingDir, normalizedFile).replace(\n /\\\\/g,\n '/'\n );\n // Handle files discovered outside the working directory\n if (relativePath.startsWith('../')) {\n relativePath = relativePath\n .split('/')\n .filter((part) => part !== '..')\n .join('/');\n }\n return relativePath;\n }\n\n /**\n * Creates a bundle for workflow step functions.\n * Steps have full Node.js runtime access and handle side effects, API calls, etc.\n *\n * @param externalizeNonSteps - If true, only bundles step entry points and externalizes other code\n * @param bundleTransitiveLocalStepDependencies - If true, also bundles project-local files imported by step entries for direct runtime loading\n * @returns Build context (for watch mode) and the collected workflow manifest\n */\n protected async createStepsBundle({\n inputFiles,\n format = 'esm',\n outfile,\n externalizeNonSteps,\n bundleTransitiveLocalStepDependencies,\n rewriteTsExtensions,\n tsconfigPath,\n discoveredEntries,\n skipEsmRequireBanner = false,\n }: {\n tsconfigPath?: string;\n inputFiles: string[];\n outfile: string;\n format?: 'cjs' | 'esm';\n externalizeNonSteps?: boolean;\n bundleTransitiveLocalStepDependencies?: boolean;\n rewriteTsExtensions?: boolean;\n discoveredEntries?: DiscoveredEntries;\n /**\n * When true, skip the `createRequire` banner on the steps bundle.\n * Used by `createCombinedBundle` with `bundleFinalOutput: true` where\n * the outer esbuild pass provides its own banner, preventing the\n * `__createRequire` identifier from being declared twice after inlining.\n */\n skipEsmRequireBanner?: boolean;\n }): Promise<{\n context: esbuild.BuildContext | undefined;\n manifest: WorkflowManifest;\n }> {\n const stepsBundleStart = Date.now();\n const workflowManifest: WorkflowManifest = {};\n const builtInSteps = 'workflow/internal/builtins';\n\n const resolvedBuiltInSteps = await enhancedResolve(\n dirname(outfile),\n 'workflow/internal/builtins'\n ).catch((err) => {\n throw new WorkflowBuildError(\n `Failed to resolve built-in steps sources.\\n\\nCaused by: ${String(err)}`,\n {\n hint: 'run `pnpm install workflow` to resolve this issue.',\n cause: err,\n }\n );\n });\n\n // Discovery of workflow/step/serde entries. The SDK runtime entry point\n // (workflow/runtime) is resolved inside discoverEntries() itself so that\n // callers can pass the original inputFiles reference and benefit from\n // WeakMap caching across createWorkflowsBundle / createStepsBundle calls.\n const discovered =\n discoveredEntries ??\n (await this.discoverEntries(inputFiles, dirname(outfile), tsconfigPath));\n const stepFiles = [...discovered.discoveredSteps].sort();\n const workflowFiles = [...discovered.discoveredWorkflows].sort();\n const serdeFiles = [...discovered.discoveredSerdeFiles].sort();\n\n // Include serde files that aren't already step files for cross-context class registration.\n // Classes need to be registered in the step bundle so they can be deserialized\n // when receiving data from workflows and serialized when returning data to workflows.\n const stepFilesSet = new Set(stepFiles);\n const serdeOnlyFiles = serdeFiles.filter((f) => !stepFilesSet.has(f));\n\n // log the step files for debugging\n await this.writeDebugFile(outfile, {\n stepFiles,\n workflowFiles,\n serdeOnlyFiles,\n });\n\n // Helper to create import statement from file path\n // For workspace/node_modules packages, uses the package name so esbuild\n // will resolve through package.json exports with the appropriate conditions\n const createImport = (file: string) => {\n const normalizedWorkspaceRoot = this.config.workingDir\n .replace(/\\\\/g, '/')\n .replace(/\\/$/, '');\n const normalizedWorkspaceFile = file.replace(/\\\\/g, '/');\n // Only use relative source paths for workspace symlinks (files\n // outside node_modules in a packages/*/src/ directory). For tarball-\n // installed packages (files inside node_modules/), fall through to\n // getImportPath which returns package specifiers — this allows the\n // SWC plugin's externalizeNonSteps to work correctly.\n const isWorkspaceSourceBackedPackageFile =\n normalizedWorkspaceFile.includes('/packages/') &&\n normalizedWorkspaceFile.includes('/src/') &&\n !normalizedWorkspaceFile.includes('/node_modules/') &&\n !(\n normalizedWorkspaceFile === normalizedWorkspaceRoot ||\n normalizedWorkspaceFile.startsWith(`${normalizedWorkspaceRoot}/`)\n );\n const isSourceBackedPackageFile = isWorkspaceSourceBackedPackageFile;\n\n if (isSourceBackedPackageFile) {\n let relativePath = relative(\n normalizedWorkspaceRoot,\n normalizedWorkspaceFile\n ).replace(/\\\\/g, '/');\n if (!relativePath.startsWith('./') && !relativePath.startsWith('../')) {\n relativePath = `./${relativePath}`;\n }\n return `import '${relativePath}';`;\n }\n\n const { importPath, isPackage } = getImportPath(\n file,\n this.config.workingDir\n );\n\n if (isPackage) {\n // Use package name - esbuild will resolve via package.json exports\n return `import '${importPath}';`;\n }\n\n // Local app file - use relative path\n // Normalize both paths to forward slashes before calling relative()\n // This is critical on Windows where relative() can produce unexpected results with mixed path formats\n const normalizedWorkingDir = this.config.workingDir.replace(/\\\\/g, '/');\n const normalizedFile = file.replace(/\\\\/g, '/');\n // Calculate relative path from working directory to the file\n let relativePath = relative(normalizedWorkingDir, normalizedFile).replace(\n /\\\\/g,\n '/'\n );\n // Ensure relative paths start with ./ so esbuild resolves them correctly.\n // Paths like \".output/...\" are not valid relative specifiers and must\n // become \"./.output/...\".\n if (!relativePath.startsWith('./') && !relativePath.startsWith('../')) {\n relativePath = `./${relativePath}`;\n }\n return `import '${relativePath}';`;\n };\n\n // Create a virtual entry that imports all files. All step definitions\n // will get registered thanks to the swc transform.\n const stepImports = stepFiles.map(createImport).join('\\n');\n\n // Include serde-only files for class registration side effects\n const serdeImports = serdeOnlyFiles.map(createImport).join('\\n');\n\n const entryContent = `\n // Built in steps\n import '${builtInSteps}';\n // User steps\n ${stepImports}\n // Serde files for cross-context class registration\n ${serdeImports}\n // Sentinel export so bundlers (rollup) don't tree-shake this module\n // when it's imported as a side-effect-only dependency.\n export const __steps_registered = true;`;\n\n // Bundle with esbuild and our custom SWC plugin\n const entriesToBundle = externalizeNonSteps\n ? [\n ...stepFiles,\n ...serdeFiles,\n ...(resolvedBuiltInSteps ? [resolvedBuiltInSteps] : []),\n ]\n : undefined;\n const normalizedEntriesToBundle = entriesToBundle\n ? await withRealpaths(entriesToBundle)\n : undefined;\n const normalizedSideEffectEntries = await withRealpaths([\n ...stepFiles,\n ...serdeOnlyFiles,\n ...(resolvedBuiltInSteps ? [resolvedBuiltInSteps] : []),\n ]);\n const esbuildTsconfigOptions =\n await getEsbuildTsconfigOptions(tsconfigPath);\n const { banner: importMetaBanner, define: importMetaDefine } =\n this.getCjsImportMetaPolyfill(format);\n const esmRequireBanner = skipEsmRequireBanner\n ? ''\n : this.getEsmRequireBanner(format);\n\n const esbuildCtx = await esbuild.context({\n banner: {\n js: `// biome-ignore-all lint: generated file\\n/* eslint-disable */\\n${importMetaBanner}${esmRequireBanner}`,\n },\n stdin: {\n contents: entryContent,\n resolveDir: this.config.workingDir,\n sourcefile: 'virtual-entry.js',\n loader: 'js',\n },\n outfile,\n absWorkingDir: this.config.workingDir,\n bundle: true,\n format,\n platform: 'node',\n conditions: ['node'],\n target: 'es2022',\n write: true,\n treeShaking: true,\n keepNames: true,\n minify: false,\n jsx: 'preserve',\n logLevel: 'error',\n // Use tsconfig for path alias resolution.\n // For symlinked configs this uses tsconfigRaw to preserve cwd-relative aliases.\n ...esbuildTsconfigOptions,\n define: importMetaDefine,\n resolveExtensions: [\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n ],\n // Inline source maps for better stack traces in step execution.\n // Steps execute in Node.js context and inline sourcemaps ensure we get\n // meaningful stack traces with proper file names and line numbers when errors\n // occur in deeply nested function calls across multiple files.\n sourcemap: this.resolveSourcemap('inline'),\n plugins: [\n // Handle pseudo-packages like 'server-only' and 'client-only' by providing\n // empty modules. Must run first to intercept these before other resolution.\n createPseudoPackagePlugin(),\n createSwcPlugin({\n mode: 'step',\n entriesToBundle: normalizedEntriesToBundle,\n outdir: outfile ? dirname(outfile) : undefined,\n projectRoot: this.transformProjectRoot,\n workflowManifest,\n bundleTransitiveLocalStepDependencies,\n rewriteTsExtensions,\n sideEffectEntries: normalizedSideEffectEntries,\n }),\n ],\n // Plugin should catch most things, but this lets users hard override\n // if the plugin misses anything that should be externalized\n external: ['bun', 'bun:*', ...(this.config.externalPackages || [])],\n });\n\n const stepsResult = await esbuildCtx.rebuild();\n\n this.logEsbuildMessages(stepsResult, 'steps bundle creation');\n this.logBaseBuilderInfo(\n 'Created steps bundle',\n `${Date.now() - stepsBundleStart}ms`\n );\n\n // Handle workflow-only files that may have been tree-shaken from the bundle.\n // These files have no steps, so esbuild removes them, but we still need their\n // workflow metadata for the manifest. Transform them separately.\n const workflowOnlyFiles = workflowFiles.filter(\n (f) => !stepFiles.includes(f)\n );\n await Promise.all(\n workflowOnlyFiles.map(async (workflowFile) => {\n try {\n const source = await readFile(workflowFile, 'utf8');\n const relativeFilepath = this.getRelativeFilepath(workflowFile);\n const { workflowManifest: fileManifest } = await applySwcTransform(\n relativeFilepath,\n source,\n 'workflow',\n workflowFile,\n this.transformProjectRoot\n );\n if (fileManifest.workflows) {\n workflowManifest.workflows = Object.assign(\n workflowManifest.workflows || {},\n fileManifest.workflows\n );\n }\n if (fileManifest.classes) {\n workflowManifest.classes = Object.assign(\n workflowManifest.classes || {},\n fileManifest.classes\n );\n }\n } catch (error) {\n // Log warning but continue - don't fail build for workflow-only file issues\n console.warn(\n `Warning: Failed to extract workflow metadata from ${workflowFile}:`,\n error instanceof Error ? error.message : String(error)\n );\n }\n })\n );\n\n // Create .gitignore in .swc directory\n await this.createSwcGitignore();\n\n if (this.config.watch) {\n return { context: esbuildCtx, manifest: workflowManifest };\n }\n await esbuildCtx.dispose();\n return { context: undefined, manifest: workflowManifest };\n }\n\n /**\n * Creates a bundle for workflow orchestration functions.\n * Workflows run in a sandboxed VM and coordinate step execution.\n *\n * @param bundleFinalOutput - If false, skips the final bundling step (used by Next.js)\n */\n protected async createWorkflowsBundle({\n inputFiles,\n format = 'esm',\n outfile,\n bundleFinalOutput = true,\n keepInterimBundleContext = this.config.watch,\n tsconfigPath,\n discoveredEntries,\n }: {\n tsconfigPath?: string;\n inputFiles: string[];\n outfile: string;\n format?: 'cjs' | 'esm';\n bundleFinalOutput?: boolean;\n keepInterimBundleContext?: boolean;\n discoveredEntries?: DiscoveredEntries;\n }): Promise<{\n manifest: WorkflowManifest;\n interimBundleCtx?: esbuild.BuildContext;\n bundleFinal?: (interimBundleResult: string) => Promise<void>;\n /** The raw workflow VM code (before wrapping with entrypoint) */\n interimBundleText?: string;\n }> {\n const discovered =\n discoveredEntries ??\n (await this.discoverEntries(inputFiles, dirname(outfile), tsconfigPath));\n const workflowFiles = [...discovered.discoveredWorkflows].sort();\n const serdeFiles = [...discovered.discoveredSerdeFiles].sort();\n\n // Include serde files that aren't already workflow files for cross-context class registration.\n // Classes need to be registered in the workflow bundle so they can be deserialized\n // when receiving data from steps or when serializing data to send to steps.\n const workflowFilesSet = new Set(workflowFiles);\n const serdeOnlyFiles = serdeFiles.filter((f) => !workflowFilesSet.has(f));\n\n // log the workflow files for debugging\n await this.writeDebugFile(outfile, { workflowFiles, serdeOnlyFiles });\n\n // Helper to create import statement from file path\n // For packages, uses the package name so esbuild will resolve through\n // package.json exports with conditions: ['workflow']\n const createImport = (file: string) => {\n const { importPath, isPackage } = getImportPath(\n file,\n this.config.workingDir\n );\n\n if (isPackage) {\n // Use package name - esbuild will resolve via package.json exports\n // and apply the 'workflow' condition\n return `import '${importPath}';`;\n }\n\n // Local app file - use relative path\n // Normalize both paths to forward slashes before calling relative()\n // This is critical on Windows where relative() can produce unexpected results with mixed path formats\n const normalizedWorkingDir = this.config.workingDir.replace(/\\\\/g, '/');\n const normalizedFile = file.replace(/\\\\/g, '/');\n // Calculate relative path from working directory to the file\n let relativePath = relative(normalizedWorkingDir, normalizedFile).replace(\n /\\\\/g,\n '/'\n );\n // Ensure relative paths start with ./ so esbuild resolves them correctly.\n // Paths like \".output/...\" are not valid relative specifiers and must\n // become \"./.output/...\".\n if (!relativePath.startsWith('./') && !relativePath.startsWith('../')) {\n relativePath = `./${relativePath}`;\n }\n return `import '${relativePath}';`;\n };\n\n // Create a virtual entry that imports all workflow files\n // The SWC plugin in workflow mode emits `globalThis.__private_workflows.set(workflowId, fn)`\n // calls directly, so we just need to import the files (Map is initialized via banner)\n const workflowImports = workflowFiles.map(createImport).join('\\n');\n\n // Include serde-only files for class registration side effects\n const serdeImports = serdeOnlyFiles.map(createImport).join('\\n');\n\n const imports = serdeImports\n ? `${workflowImports}\\n// Serde files for cross-context class registration\\n${serdeImports}`\n : workflowImports;\n\n const bundleStartTime = Date.now();\n const workflowManifest: WorkflowManifest = {};\n const esbuildTsconfigOptions =\n await getEsbuildTsconfigOptions(tsconfigPath);\n const normalizedWorkflowSideEffectEntries = await withRealpaths([\n ...workflowFiles,\n ...serdeOnlyFiles,\n ]);\n\n // Bundle with esbuild and our custom SWC plugin in workflow mode.\n // this bundle will be run inside a vm isolate\n const interimBundleCtx = await esbuild.context({\n stdin: {\n contents: imports,\n resolveDir: this.config.workingDir,\n sourcefile: 'virtual-entry.js',\n loader: 'js',\n },\n bundle: true,\n absWorkingDir: this.config.workingDir,\n format: 'cjs', // Runs inside the VM which expects cjs\n platform: 'neutral', // The platform is neither node nor browser\n mainFields: ['module', 'main'], // To support npm style imports\n conditions: ['workflow'], // Allow packages to export 'workflow' compliant versions\n target: 'es2022',\n write: false,\n treeShaking: true,\n keepNames: true,\n minify: false,\n // Initialize the workflow registry at the very top of the bundle\n // This must be in banner (not the virtual entry) because esbuild's bundling\n // can reorder code, and the .set() calls need the Map to exist first\n banner: {\n js: 'globalThis.__private_workflows = new Map();',\n },\n // Inline source maps for better stack traces in workflow VM execution.\n // This intermediate bundle is executed via runInContext() in a VM, so we need\n // inline source maps to get meaningful stack traces instead of \"evalmachine.<anonymous>\".\n sourcemap: this.resolveSourcemap('inline'),\n // Use tsconfig for path alias resolution.\n // For symlinked configs this uses tsconfigRaw to preserve cwd-relative aliases.\n ...esbuildTsconfigOptions,\n resolveExtensions: [\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n ],\n plugins: [\n // Handle pseudo-packages like 'server-only' and 'client-only' by providing\n // empty modules. Must run first to intercept these before other resolution.\n createPseudoPackagePlugin(),\n createSwcPlugin({\n mode: 'workflow',\n projectRoot: this.transformProjectRoot,\n workflowManifest,\n sideEffectEntries: normalizedWorkflowSideEffectEntries,\n }),\n // This plugin must run after the swc plugin to ensure dead code elimination\n // happens first, preventing false positives on Node.js imports in unused code paths\n createNodeModuleErrorPlugin(),\n ],\n // NOTE: We intentionally do NOT use the external option here for workflow bundles.\n // When packages are marked external with format: 'cjs', esbuild generates require() calls.\n // However, the workflow VM (vm.runInContext) does not have require() defined - it only\n // provides module.exports and exports. External packages would fail at runtime with:\n // ReferenceError: require is not defined\n // Instead, we bundle everything and rely on:\n // - createPseudoPackagePlugin() to handle server-only/client-only with empty modules\n // - createNodeModuleErrorPlugin() to catch Node.js builtin imports at build time\n });\n let shouldDisposeInterimBundleCtx = !keepInterimBundleContext;\n try {\n const interimBundle = await interimBundleCtx.rebuild();\n\n this.logEsbuildMessages(\n interimBundle,\n 'intermediate workflow bundle',\n true,\n {\n suppressWarnings: this.config.suppressCreateWorkflowsBundleWarnings,\n }\n );\n this.logCreateWorkflowsBundleInfo(\n 'Created intermediate workflow bundle',\n `${Date.now() - bundleStartTime}ms`\n );\n\n if (this.config.workflowManifestPath) {\n const resolvedPath = resolve(\n process.cwd(),\n this.config.workflowManifestPath\n );\n let prefix = '';\n\n if (resolvedPath.endsWith('.cjs')) {\n prefix = 'module.exports = ';\n } else if (\n resolvedPath.endsWith('.js') ||\n resolvedPath.endsWith('.mjs')\n ) {\n prefix = 'export default ';\n }\n\n await mkdir(dirname(resolvedPath), { recursive: true });\n await writeFile(\n resolvedPath,\n prefix + JSON.stringify(workflowManifest, null, 2)\n );\n }\n\n // Create .gitignore in .swc directory\n await this.createSwcGitignore();\n\n if (\n !interimBundle.outputFiles ||\n interimBundle.outputFiles.length === 0\n ) {\n throw new WorkflowBuildError('No output files generated from esbuild', {\n hint: 'This usually indicates a misconfigured entry point or an empty workflow directory. Check that your workflow files contain a `\"use workflow\"` or `\"use step\"` directive.',\n });\n }\n\n // Serde compliance warnings: check if workflow bundle has Node.js imports\n // alongside serde-registered classes (these will fail at runtime in the sandbox)\n if (\n workflowManifest.classes &&\n Object.keys(workflowManifest.classes).length > 0\n ) {\n const { analyzeSerdeCompliance } = await import('./serde-checker.js');\n const bundleText = interimBundle.outputFiles[0].text;\n const serdeResult = analyzeSerdeCompliance({\n sourceCode: '',\n workflowCode: bundleText,\n manifest: workflowManifest,\n });\n // De-dupe warnings: group identical issues across classes\n const issuesToClasses = new Map<string, Set<string>>();\n for (const cls of serdeResult.classes) {\n if (!cls.compliant) {\n for (const issue of cls.issues) {\n let affectedClasses = issuesToClasses.get(issue);\n if (!affectedClasses) {\n affectedClasses = new Set<string>();\n issuesToClasses.set(issue, affectedClasses);\n }\n affectedClasses.add(cls.className);\n }\n }\n }\n for (const [issue, affectedClasses] of issuesToClasses) {\n const classNames = [...affectedClasses];\n const classLabel =\n classNames.length === 1\n ? `class \"${classNames[0]}\"`\n : `classes ${classNames.map((name) => `\"${name}\"`).join(', ')}`;\n console.warn(\n chalk.yellow(`⚠ Serde warning for ${classLabel}: `) + issue\n );\n }\n }\n\n const bundleFinal = async (interimBundle: string) => {\n const workflowBundleCode = interimBundle;\n\n const workflowFunctionCode = `// biome-ignore-all lint: generated file\n/* eslint-disable */\nimport { workflowEntrypoint } from 'workflow/runtime';\n\nconst workflowCode = \\`${workflowBundleCode.replace(/[\\\\`$]/g, '\\\\$&')}\\`;\n\nexport const POST = workflowEntrypoint(workflowCode);`;\n\n // we skip the final bundling step for Next.js so it can bundle itself\n if (!bundleFinalOutput) {\n if (!outfile) {\n throw new Error(`Invariant: missing outfile for workflow bundle`);\n }\n // Ensure the output directory exists\n const outputDir = dirname(outfile);\n await mkdir(outputDir, { recursive: true });\n\n // Atomic write: write to temp file then rename to prevent\n // file watchers from reading partial file during write\n const tempPath = `${outfile}.${randomUUID()}.tmp`;\n await writeFile(tempPath, workflowFunctionCode);\n await rename(tempPath, outfile);\n return;\n }\n\n const bundleStartTime = Date.now();\n\n // Now bundle this so we can resolve the @workflow/core dependency\n // we could remove this if we do nft tracing or similar instead\n const finalEsmRequireBanner = this.getEsmRequireBanner(format);\n const finalWorkflowResult = await esbuild.build({\n banner: {\n js: `// biome-ignore-all lint: generated file\\n/* eslint-disable */\\n${finalEsmRequireBanner}`,\n },\n stdin: {\n contents: workflowFunctionCode,\n resolveDir: this.config.workingDir,\n sourcefile: 'virtual-entry.js',\n loader: 'js',\n },\n outfile,\n // Source maps for the final workflow bundle wrapper (not important since this code\n // doesn't run in the VM - only the intermediate bundle sourcemap is relevant)\n sourcemap: this.resolveSourcemap(EMIT_SOURCEMAPS_FOR_DEBUGGING),\n absWorkingDir: this.config.workingDir,\n bundle: true,\n format,\n platform: 'node',\n target: 'es2022',\n write: true,\n keepNames: true,\n minify: false,\n external: ['@aws-sdk/credential-provider-web-identity'],\n });\n\n this.logEsbuildMessages(\n finalWorkflowResult,\n 'final workflow bundle',\n true,\n {\n suppressWarnings: this.config.suppressCreateWorkflowsBundleWarnings,\n }\n );\n this.logCreateWorkflowsBundleInfo(\n 'Created final workflow bundle',\n `${Date.now() - bundleStartTime}ms`\n );\n };\n const interimBundleText = interimBundle.outputFiles[0].text;\n await bundleFinal(interimBundleText);\n\n if (keepInterimBundleContext) {\n shouldDisposeInterimBundleCtx = false;\n return {\n manifest: workflowManifest,\n interimBundleCtx,\n bundleFinal,\n interimBundleText,\n };\n }\n return { manifest: workflowManifest, interimBundleText };\n } catch (error) {\n shouldDisposeInterimBundleCtx = true;\n throw error;\n } finally {\n if (shouldDisposeInterimBundleCtx) {\n try {\n await interimBundleCtx.dispose();\n } catch (disposeError) {\n console.warn(\n 'Warning: Failed to dispose workflow bundle context',\n disposeError\n );\n }\n }\n }\n }\n\n /**\n * V2: Creates a combined bundle that includes both step registrations and\n * workflow orchestration in a single route. The combined entrypoint executes\n * steps inline when possible, reducing function invocations and queue overhead.\n *\n * This method reuses createStepsBundle (for step registrations) and\n * createWorkflowsBundle (for workflow VM code), then combines them into\n * a single route file using workflowEntrypoint().\n */\n protected async createCombinedBundle({\n inputFiles,\n stepsOutfile,\n flowOutfile,\n format = 'esm',\n bundleFinalOutput = true,\n tsconfigPath,\n externalizeNonSteps,\n bundleTransitiveLocalStepDependencies,\n discoveredEntries,\n }: {\n inputFiles: string[];\n /** Output path for the step registrations bundle (side effects only) */\n stepsOutfile: string;\n /** Output path for the combined route file */\n flowOutfile: string;\n format?: 'cjs' | 'esm';\n bundleFinalOutput?: boolean;\n tsconfigPath?: string;\n externalizeNonSteps?: boolean;\n bundleTransitiveLocalStepDependencies?: boolean;\n discoveredEntries?: DiscoveredEntries;\n }): Promise<{\n manifest: WorkflowManifest;\n stepsContext?: esbuild.BuildContext;\n interimBundleCtx?: esbuild.BuildContext;\n bundleFinal?: (interimBundleResult: string) => Promise<void>;\n }> {\n // 1. Build step registrations bundle (used as separate file for\n // bundleFinalOutput: false, or read back for inline content when true)\n const { context: stepsContext, manifest: stepsManifest } =\n await this.createStepsBundle({\n inputFiles,\n outfile: stepsOutfile,\n // When bundleFinalOutput is true, use ESM for the steps bundle\n // regardless of the final output format. The final esbuild pass\n // converts everything to the target format. Using CJS here causes\n // a module.exports collision: the steps bundle's top-level\n // module.exports overwrites the combined route's module.exports\n // when esbuild inlines the steps without a __commonJS wrapper.\n format: bundleFinalOutput ? 'esm' : format,\n externalizeNonSteps,\n bundleTransitiveLocalStepDependencies,\n tsconfigPath,\n discoveredEntries,\n // Skip the createRequire banner here — when bundleFinalOutput is true\n // the outer esbuild pass will inline this bundle and add its own\n // banner. Emitting it twice declares __createRequire twice.\n skipEsmRequireBanner: bundleFinalOutput,\n });\n\n // 2. Build workflow VM code\n const tempWorkflowOutfile = `${flowOutfile}.__wf_tmp.js`;\n const workflowsResult = await this.createWorkflowsBundle({\n inputFiles,\n outfile: tempWorkflowOutfile,\n format,\n bundleFinalOutput: false,\n tsconfigPath,\n discoveredEntries,\n });\n\n const workflowVMCode = workflowsResult.interimBundleText;\n if (!workflowVMCode) {\n throw new Error('createWorkflowsBundle did not return interimBundleText');\n }\n\n // Clean up the wrapper file\n try {\n const { unlink } = await import('node:fs/promises');\n await unlink(tempWorkflowOutfile);\n } catch {\n // Ignore cleanup errors\n }\n\n // 3. Generate combined route file\n const stepsRelativePath = './' + basename(stepsOutfile).replace(/\\\\/g, '/');\n const escapedVMCode = workflowVMCode.replace(/[\\\\`$]/g, '\\\\$&');\n\n const combinedFunctionCode = `// biome-ignore-all lint: generated file\n/* eslint-disable */\nimport { __steps_registered } from '${stepsRelativePath}';\nimport { workflowEntrypoint } from 'workflow/runtime';\n\n// Prevent rollup from tree-shaking the steps side-effect import\nvoid __steps_registered;\n\nconst workflowCode = \\`${escapedVMCode}\\`;\n\nexport const POST = workflowEntrypoint(workflowCode);`;\n\n if (!bundleFinalOutput) {\n // Write directly (Next.js will bundle)\n const tempPath = `${flowOutfile}.${randomUUID()}.tmp`;\n await writeFile(tempPath, combinedFunctionCode);\n await rename(tempPath, flowOutfile);\n } else {\n // Bundle the combined code for standalone use\n const bundleStartTime = Date.now();\n const { banner: importMetaBanner, define: importMetaDefine } =\n this.getCjsImportMetaPolyfill(format);\n // ESM banner provides `require` via createRequire(import.meta.url) so\n // CJS dependencies that call require() for Node.js builtins keep working\n // in the ESM output produced by bundleFinalOutput: true.\n const finalEsmRequireBanner = this.getEsmRequireBanner(format);\n const finalResult = await esbuild.build({\n banner: {\n js: `// biome-ignore-all lint: generated file\\n/* eslint-disable */\\n${importMetaBanner}${finalEsmRequireBanner}`,\n },\n stdin: {\n contents: combinedFunctionCode,\n resolveDir: dirname(flowOutfile),\n sourcefile: 'virtual-entry.js',\n loader: 'js',\n },\n outfile: flowOutfile,\n absWorkingDir: this.config.workingDir,\n bundle: true,\n format,\n platform: 'node',\n target: 'es2022',\n write: true,\n keepNames: true,\n minify: false,\n define: importMetaDefine,\n external: ['@aws-sdk/credential-provider-web-identity'],\n });\n this.logEsbuildMessages(finalResult, 'combined bundle', true);\n this.logBaseBuilderInfo(\n 'Created combined bundle',\n `${Date.now() - bundleStartTime}ms`\n );\n }\n\n // Merge manifests\n const manifest: WorkflowManifest = {\n ...stepsManifest,\n workflows: {\n ...stepsManifest.workflows,\n ...workflowsResult.manifest.workflows,\n },\n classes: {\n ...stepsManifest.classes,\n ...workflowsResult.manifest.classes,\n },\n };\n\n // Create a custom bundleFinal for watch mode that uses workflowEntrypoint\n const combinedBundleFinal = async (interimBundleText: string) => {\n const escaped = interimBundleText.replace(/[\\\\`$]/g, '\\\\$&');\n const code = `// biome-ignore-all lint: generated file\n/* eslint-disable */\nimport { __steps_registered } from '${stepsRelativePath}';\nimport { workflowEntrypoint } from 'workflow/runtime';\n\nvoid __steps_registered;\n\nconst workflowCode = \\`${escaped}\\`;\n\nexport const POST = workflowEntrypoint(workflowCode);`;\n\n const outputDir = dirname(flowOutfile);\n await mkdir(outputDir, { recursive: true });\n const tempPath = `${flowOutfile}.${randomUUID()}.tmp`;\n await writeFile(tempPath, code);\n await rename(tempPath, flowOutfile);\n };\n\n if (this.config.watch) {\n return {\n manifest,\n stepsContext,\n interimBundleCtx: workflowsResult.interimBundleCtx,\n bundleFinal: combinedBundleFinal,\n };\n }\n\n return { manifest };\n }\n\n /**\n * Creates a client library bundle for workflow execution.\n * The client library allows importing and calling workflows from application code.\n * Only generated if clientBundlePath is specified in config.\n */\n protected async createClientLibrary(): Promise<void> {\n if (!this.config.clientBundlePath) {\n // Silently exit since no client bundle was requested\n return;\n }\n\n this.logBaseBuilderInfo(\n 'Generating a client library at',\n this.config.clientBundlePath\n );\n this.logBaseBuilderInfo(\n 'NOTE: The recommended way to use workflow with a framework like NextJS is using the loader/plugin with webpack/turbobpack/rollup'\n );\n\n // Ensure we have the directory for the client bundle\n const outputDir = dirname(this.config.clientBundlePath);\n await mkdir(outputDir, { recursive: true });\n\n const inputFiles = await this.getInputFiles();\n\n // Discover serde files from the input files' dependency tree for cross-context class registration.\n // Classes need to be registered in the client bundle so they can be serialized\n // when passing data to workflows via start() and deserialized when receiving workflow results.\n const { discoveredSerdeFiles } = await this.discoverEntries(\n inputFiles,\n outputDir\n );\n\n // Identify serde files that aren't in the inputFiles (deduplicated)\n const inputFilesNormalized = new Set(\n inputFiles.map((f) => f.replace(/\\\\/g, '/'))\n );\n const serdeOnlyFiles = [...discoveredSerdeFiles].filter(\n (f) => !inputFilesNormalized.has(f)\n );\n\n // Re-exports for input files (user's workflow/step definitions).\n // These must use valid relative specifiers because some frameworks pass\n // generated files like \".output/server/index.mjs\" as input files.\n const reexports = inputFiles\n .map((file) => {\n const normalizedWorkingDir = this.config.workingDir.replace(/\\\\/g, '/');\n let relativePath = relative(normalizedWorkingDir, file).replace(\n /\\\\/g,\n '/'\n );\n if (!relativePath.startsWith('./') && !relativePath.startsWith('../')) {\n relativePath = `./${relativePath}`;\n }\n return `export * from '${relativePath}';`;\n })\n .join('\\n');\n\n // Side-effect imports for serde files not in inputFiles (for class registration)\n const serdeImports = serdeOnlyFiles\n .map((file) => {\n const normalizedWorkingDir = this.config.workingDir.replace(/\\\\/g, '/');\n let relativePath = relative(normalizedWorkingDir, file).replace(\n /\\\\/g,\n '/'\n );\n if (!relativePath.startsWith('./') && !relativePath.startsWith('../')) {\n relativePath = `./${relativePath}`;\n }\n return `import '${relativePath}';`;\n })\n .join('\\n');\n\n // Combine: serde imports (for registration side effects) + re-exports\n const entryContent = serdeImports\n ? `// Serde files for cross-context class registration\\n${serdeImports}\\n${reexports}`\n : reexports;\n\n // Bundle with esbuild and our custom SWC plugin\n const normalizedClientSideEffectEntries = await withRealpaths([\n ...inputFiles,\n ...serdeOnlyFiles,\n ]);\n const clientResult = await esbuild.build({\n banner: {\n js: '// biome-ignore-all lint: generated file\\n/* eslint-disable */\\n',\n },\n stdin: {\n contents: entryContent,\n resolveDir: this.config.workingDir,\n sourcefile: 'virtual-entry.js',\n loader: 'js',\n },\n outfile: this.config.clientBundlePath,\n bundle: true,\n format: 'esm',\n platform: 'node',\n jsx: 'preserve',\n target: 'es2022',\n write: true,\n treeShaking: true,\n external: ['@workflow/core'],\n resolveExtensions: [\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n ],\n plugins: [\n createSwcPlugin({\n mode: 'step',\n projectRoot: this.transformProjectRoot,\n sideEffectEntries: normalizedClientSideEffectEntries,\n }),\n ],\n });\n\n this.logEsbuildMessages(clientResult, 'client library bundle');\n\n // Create .gitignore in .swc directory\n await this.createSwcGitignore();\n }\n\n /**\n * Creates a webhook handler bundle for resuming workflows via HTTP callbacks.\n *\n * @param bundle - If true, bundles dependencies (needed for Build Output API)\n */\n protected async createWebhookBundle({\n outfile,\n bundle = false,\n }: {\n outfile: string;\n bundle?: boolean;\n }): Promise<void> {\n this.logCreateWebhookBundleInfo('Creating webhook route');\n await mkdir(dirname(outfile), { recursive: true });\n\n // Create a static route that calls resumeWebhook\n // This route works for both Next.js and Vercel Build Output API\n // Bundled Build Output API webhook functions need world.ts statically\n // present so getWorldLazy() can use the global getWorld registration\n // instead of falling back to a missing sibling import(\"./world.js\").\n const routeContent = `${bundle ? \"import 'workflow/runtime';\\n\" : ''}import { resumeWebhook } from 'workflow/api';\n\nasync function handler(request) {\n const url = new URL(request.url);\n // Extract token from pathname: /.well-known/workflow/v1/webhook/{token}\n const pathParts = url.pathname.split('/');\n const token = decodeURIComponent(pathParts[pathParts.length - 1]);\n\n if (!token) {\n return new Response('Missing token', { status: 400 });\n }\n\n try {\n const response = await resumeWebhook(token, request);\n return response;\n } catch (error) {\n // TODO: differentiate between invalid token and other errors\n console.error('Error during resumeWebhook', error);\n return new Response(null, { status: 404 });\n }\n}\n\nexport const GET = handler;\nexport const POST = handler;\nexport const PUT = handler;\nexport const PATCH = handler;\nexport const DELETE = handler;\nexport const HEAD = handler;\nexport const OPTIONS = handler;`;\n\n if (!bundle) {\n // For Next.js, just write the unbundled file\n await writeFile(outfile, routeContent);\n return;\n }\n\n // For Build Output API, bundle with esbuild to resolve imports\n\n const webhookEsmRequireBanner = this.getEsmRequireBanner('esm');\n const webhookBundleStart = Date.now();\n const result = await esbuild.build({\n banner: {\n js: `// biome-ignore-all lint: generated file\\n/* eslint-disable */\\n${webhookEsmRequireBanner}`,\n },\n stdin: {\n contents: routeContent,\n resolveDir: this.config.workingDir,\n sourcefile: 'webhook-route.js',\n loader: 'js',\n },\n outfile,\n absWorkingDir: this.config.workingDir,\n bundle: true,\n jsx: 'preserve',\n format: 'esm',\n platform: 'node',\n conditions: ['import', 'module', 'node', 'default'],\n target: 'es2022',\n write: true,\n treeShaking: true,\n keepNames: true,\n minify: false,\n resolveExtensions: [\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n ],\n sourcemap: this.resolveSourcemap(EMIT_SOURCEMAPS_FOR_DEBUGGING),\n mainFields: ['module', 'main'],\n // Don't externalize anything - bundle everything including workflow packages\n external: [],\n });\n\n this.logEsbuildMessages(result, 'webhook bundle creation');\n this.logCreateWebhookBundleInfo(\n 'Created webhook bundle',\n `${Date.now() - webhookBundleStart}ms`\n );\n }\n\n /**\n * Creates a package.json file with the specified module type.\n */\n protected async createPackageJson(\n dir: string,\n type: 'commonjs' | 'module'\n ): Promise<void> {\n const packageJson = { type };\n await writeFile(\n join(dir, 'package.json'),\n JSON.stringify(packageJson, null, 2)\n );\n }\n\n /**\n * Creates a .vc-config.json file for Vercel Build Output API functions.\n */\n protected async createVcConfig(\n dir: string,\n config: {\n runtime?: string;\n handler?: string;\n launcherType?: string;\n architecture?: string;\n shouldAddHelpers?: boolean;\n shouldAddSourcemapSupport?: boolean;\n maxDuration?: number | 'max';\n experimentalTriggers?: Array<{\n type: 'queue/v2beta';\n topic: string;\n consumer: string;\n maxDeliveries?: number;\n retryAfterSeconds?: number;\n initialDelaySeconds?: number;\n }>;\n }\n ): Promise<void> {\n const vcConfig = {\n runtime: config.runtime ?? 'nodejs22.x',\n handler: config.handler ?? 'index.mjs',\n launcherType: config.launcherType ?? 'Nodejs',\n architecture: config.architecture ?? 'arm64',\n shouldAddHelpers: config.shouldAddHelpers ?? true,\n ...(config.maxDuration !== undefined && {\n maxDuration: config.maxDuration,\n }),\n ...(config.shouldAddSourcemapSupport !== undefined && {\n shouldAddSourcemapSupport: config.shouldAddSourcemapSupport,\n }),\n ...(config.experimentalTriggers && {\n experimentalTriggers: config.experimentalTriggers,\n }),\n };\n\n await writeFile(\n join(dir, '.vc-config.json'),\n JSON.stringify(vcConfig, null, 2)\n );\n }\n\n /**\n * Resolves a path relative to the working directory.\n */\n protected resolvePath(path: string): string {\n return resolve(this.config.workingDir, path);\n }\n\n /**\n * Ensures the directory for a file path exists, creating it if necessary.\n */\n protected async ensureDirectory(filePath: string): Promise<void> {\n await mkdir(dirname(filePath), { recursive: true });\n }\n\n private async createSwcGitignore(): Promise<void> {\n try {\n await writeFile(\n join(this.config.workingDir, '.swc', '.gitignore'),\n '*\\n'\n );\n } catch {\n // We're intentionally silently ignoring this error - creating .gitignore isn't critical\n }\n }\n\n /**\n * Whether the manifest should be exposed as a public HTTP route.\n * Controlled by the `WORKFLOW_PUBLIC_MANIFEST` environment variable.\n */\n protected get shouldExposePublicManifest(): boolean {\n return process.env.WORKFLOW_PUBLIC_MANIFEST === '1';\n }\n\n /**\n * Resolves the workflow manifest diagnostics path, when this builder should\n * emit one.\n */\n protected getDiagnosticsManifestPath(): string | undefined {\n if (this.config.diagnosticsDir) {\n return resolve(\n this.config.workingDir,\n this.config.diagnosticsDir,\n 'workflows-manifest.json'\n );\n }\n\n if (this.config.buildTarget === 'vercel-build-output-api') {\n return this.resolvePath(\n '.vercel/output/diagnostics/workflows-manifest.json'\n );\n }\n }\n\n /**\n * Resolve the effective source map mode for a given call site. Precedence:\n * explicit `sourcemap` config > `WORKFLOW_SOURCEMAP` env var > the call\n * site's default. Returned value is passed directly to esbuild's\n * `sourcemap` option.\n */\n protected resolveSourcemap(defaultMode: SourcemapMode): SourcemapMode {\n if (this.config.sourcemap !== undefined) return this.config.sourcemap;\n const envMode = parseSourcemapEnv(process.env.WORKFLOW_SOURCEMAP);\n if (envMode !== undefined) return envMode;\n return defaultMode;\n }\n\n /**\n * Whether the resolved source map mode emits any source maps at all.\n * Used by consumers like the Vercel builder to decide whether to include\n * the source-map-support runtime shim in generated functions.\n */\n protected get sourcemapsEnabled(): boolean {\n return this.resolveSourcemap(true) !== false;\n }\n\n /**\n * Creates a manifest JSON file containing step/workflow/class metadata\n * and graph data for visualization.\n *\n * @returns The manifest JSON string, or undefined if manifest creation failed.\n */\n protected async createManifest({\n workflowBundlePath,\n manifestDir,\n manifest,\n }: {\n workflowBundlePath: string;\n manifestDir: string;\n manifest: WorkflowManifest;\n }): Promise<string | undefined> {\n const buildStart = Date.now();\n this.logCreateManifestInfo('Creating manifest...');\n\n try {\n const workflowGraphs = await extractWorkflowGraphs(workflowBundlePath);\n\n const steps = this.convertStepsManifest(manifest.steps);\n const workflows = this.convertWorkflowsManifest(\n manifest.workflows,\n workflowGraphs\n );\n const classes = this.convertClassesManifest(manifest.classes);\n\n const output = { version: '1.0.0', steps, workflows, classes };\n const manifestJson = JSON.stringify(output, null, 2);\n\n await mkdir(manifestDir, { recursive: true });\n await writeFile(join(manifestDir, 'manifest.json'), manifestJson);\n\n const diagnosticsManifestPath = this.getDiagnosticsManifestPath();\n if (diagnosticsManifestPath) {\n await this.ensureDirectory(diagnosticsManifestPath);\n await writeFile(diagnosticsManifestPath, manifestJson);\n }\n\n const stepCount = Object.values(steps).reduce(\n (acc, s) => acc + Object.keys(s).length,\n 0\n );\n const workflowCount = Object.values(workflows).reduce(\n (acc, w) => acc + Object.keys(w).length,\n 0\n );\n const classCount = Object.values(classes).reduce(\n (acc, c) => acc + Object.keys(c).length,\n 0\n );\n\n this.logCreateManifestInfo(\n `Created manifest with ${stepCount} ${pluralize('step', 'steps', stepCount)}, ${workflowCount} ${pluralize('workflow', 'workflows', workflowCount)}, and ${classCount} ${pluralize('class', 'classes', classCount)}`,\n `${Date.now() - buildStart}ms`\n );\n\n return manifestJson;\n } catch (error) {\n console.warn(\n 'Failed to create manifest:',\n error instanceof Error ? error.message : String(error)\n );\n return undefined;\n }\n }\n\n private convertStepsManifest(\n steps: WorkflowManifest['steps']\n ): Record<string, Record<string, { stepId: string }>> {\n const result: Record<string, Record<string, { stepId: string }>> = {};\n if (!steps) return result;\n\n for (const [filePath, entries] of Object.entries(steps)) {\n result[filePath] = {};\n for (const [name, data] of Object.entries(entries)) {\n result[filePath][name] = { stepId: data.stepId };\n }\n }\n return result;\n }\n\n private convertWorkflowsManifest(\n workflows: WorkflowManifest['workflows'],\n graphs: Record<\n string,\n Record<string, { graph: { nodes: any[]; edges: any[] } }>\n >\n ): Record<\n string,\n Record<\n string,\n { workflowId: string; graph: { nodes: any[]; edges: any[] } }\n >\n > {\n const result: Record<\n string,\n Record<\n string,\n { workflowId: string; graph: { nodes: any[]; edges: any[] } }\n >\n > = {};\n if (!workflows) return result;\n\n // Build a normalized lookup for graphs since the graph extractor uses\n // paths from workflowId (e.g. \"./workflows/hello-agent\") while the\n // manifest uses source file paths (e.g. \"workflows/hello-agent.ts\").\n // Normalize by stripping leading \"./\" and file extensions.\n const normalizedGraphs = new Map<\n string,\n Record<string, { graph: { nodes: any[]; edges: any[] } }>\n >();\n for (const [graphPath, graphEntries] of Object.entries(graphs)) {\n const normalized = graphPath\n .replace(/^\\.\\//, '')\n .replace(/\\.[^/.]+$/, '');\n normalizedGraphs.set(normalized, graphEntries);\n }\n\n for (const [filePath, entries] of Object.entries(workflows)) {\n result[filePath] = {};\n // Normalize the manifest file path for lookup\n const normalizedFilePath = filePath\n .replace(/^\\.\\//, '')\n .replace(/\\.[^/.]+$/, '');\n\n const graphEntries =\n graphs[filePath] || normalizedGraphs.get(normalizedFilePath);\n\n for (const [name, data] of Object.entries(entries)) {\n result[filePath][name] = {\n workflowId: data.workflowId,\n graph: graphEntries?.[name]?.graph || { nodes: [], edges: [] },\n };\n }\n }\n return result;\n }\n\n private convertClassesManifest(\n classes: WorkflowManifest['classes']\n ): Record<string, Record<string, { classId: string }>> {\n const result: Record<string, Record<string, { classId: string }>> = {};\n if (!classes) return result;\n\n for (const [filePath, entries] of Object.entries(classes)) {\n result[filePath] = {};\n for (const [name, data] of Object.entries(entries)) {\n result[filePath][name] = { classId: data.classId };\n }\n }\n return result;\n }\n}\n"]}
|
package/dist/build-queue.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-queue.js","sourceRoot":"","sources":["../src/build-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,IAAyB,EAAiB,EAAE;QAClD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Creates a build queue that serializes async tasks to prevent race conditions.\n *\n * When rapid file changes trigger multiple builds, this ensures they run\n * sequentially rather than concurrently, avoiding issues like:\n * - Partial file reads during writes\n * - Corrupted merge operations\n * - Duplicate/conflicting builds\n *\n * @example\n * const enqueue = createBuildQueue();\n *\n * // These will run sequentially, not concurrently\n * enqueue(() => builder.build());\n * enqueue(() => builder.build());\n */\nexport function createBuildQueue() {\n let queue = Promise.resolve();\n\n return (task: () => Promise<void>): Promise<void> => {\n queue = queue.then(task).catch((err) => {\n console.error(err);\n });\n return queue;\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-helpers.js","sourceRoot":"","sources":["../src/config-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,YAAgC;IAEhC,MAAM,cAAc,GAAqB;QACvC,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,KAAK;QACtB,iBAAiB,EAAE,KAAK;KACzB,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,QAAQ,GACZ,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QAEvD,qFAAqF;QACrF,MAAM,sBAAsB,GAC1B,eAAe,CAAC,sBAAsB,KAAK,IAAI,CAAC;QAClD,MAAM,qBAAqB,GACzB,eAAe,CAAC,qBAAqB,KAAK,IAAI,CAAC;QAEjD,OAAO;YACL,UAAU,EAAE,sBAAsB;YAClC,eAAe,EAAE,sBAAsB;YACvC,iBAAiB,EAAE,sBAAsB,IAAI,qBAAqB;SACnE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,GAAW;IAEX,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,6CAA6C,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6CAA6C,CACjE,GAAW;IAEX,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE;QAClE,GAAG;KACJ,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,UAAU,CAAC,CAAC;IAClE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAQvC;IACC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,eAAe,EAAE,EAAE,EAAE,mCAAmC;QACxD,mBAAmB,EAAE,EAAE,EAAE,mCAAmC;QAC5D,iBAAiB,EAAE,EAAE,EAAE,mCAAmC;QAC1D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;AACJ,CAAC","sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { findUp } from 'find-up';\nimport JSON5 from 'json5';\nimport type { SourcemapMode, WorkflowConfig } from './types.js';\n\nexport interface DecoratorOptions {\n decorators: boolean;\n legacyDecorator: boolean;\n decoratorMetadata: boolean;\n}\n\nexport interface DecoratorOptionsWithConfigPath {\n options: DecoratorOptions;\n configPath: string | undefined;\n}\n\n/**\n * Reads tsconfig.json and extracts decorator-related compiler options.\n * Returns decorator options based on experimentalDecorators and emitDecoratorMetadata settings.\n *\n * @param tsconfigPath - Path to tsconfig.json or jsconfig.json\n * @returns DecoratorOptions with settings based on tsconfig compilerOptions\n */\nexport async function getDecoratorOptionsFromTsConfig(\n tsconfigPath: string | undefined\n): Promise<DecoratorOptions> {\n const defaultOptions: DecoratorOptions = {\n decorators: false,\n legacyDecorator: false,\n decoratorMetadata: false,\n };\n\n if (!tsconfigPath) {\n return defaultOptions;\n }\n\n try {\n const content = await readFile(tsconfigPath, 'utf-8');\n const tsconfig: { compilerOptions?: Record<string, unknown> } =\n JSON5.parse(content);\n const compilerOptions = tsconfig.compilerOptions || {};\n\n // Match Next.js behavior: enable decorators only when experimentalDecorators is true\n const experimentalDecorators =\n compilerOptions.experimentalDecorators === true;\n const emitDecoratorMetadata =\n compilerOptions.emitDecoratorMetadata === true;\n\n return {\n decorators: experimentalDecorators,\n legacyDecorator: experimentalDecorators,\n decoratorMetadata: experimentalDecorators && emitDecoratorMetadata,\n };\n } catch {\n // If we can't read or parse the tsconfig, return defaults\n return defaultOptions;\n }\n}\n\n/**\n * Finds tsconfig.json in the given directory (or ancestors) and extracts decorator options.\n * Combines tsconfig discovery with decorator option extraction for convenience.\n *\n * @param cwd - Directory to start searching for tsconfig.json\n * @returns DecoratorOptions with settings based on tsconfig compilerOptions\n */\nexport async function getDecoratorOptionsForDirectory(\n cwd: string\n): Promise<DecoratorOptions> {\n const { options } = await getDecoratorOptionsForDirectoryWithConfigPath(cwd);\n return options;\n}\n\n/**\n * Finds tsconfig.json/jsconfig.json in the given directory tree and returns\n * both decorator options and the config path used to derive them.\n */\nexport async function getDecoratorOptionsForDirectoryWithConfigPath(\n cwd: string\n): Promise<DecoratorOptionsWithConfigPath> {\n const configPath = await findUp(['tsconfig.json', 'jsconfig.json'], {\n cwd,\n });\n const options = await getDecoratorOptionsFromTsConfig(configPath);\n return { options, configPath };\n}\n\n/**\n * Creates a partial configuration for builders that don't use bundle paths directly.\n * Used by framework integrations like Nitro where the builder computes paths internally.\n */\nexport function createBaseBuilderConfig(options: {\n workingDir: string;\n projectRoot?: string;\n dirs?: string[];\n watch?: boolean;\n externalPackages?: string[];\n runtime?: string;\n sourcemap?: SourcemapMode;\n}): Omit<WorkflowConfig, 'buildTarget'> {\n return {\n dirs: options.dirs ?? ['workflows'],\n projectRoot: options.projectRoot,\n workingDir: options.workingDir,\n watch: options.watch,\n stepsBundlePath: '', // Not used by base builder methods\n workflowsBundlePath: '', // Not used by base builder methods\n webhookBundlePath: '', // Not used by base builder methods\n externalPackages: options.externalPackages,\n runtime: options.runtime,\n sourcemap: options.sourcemap,\n };\n}\n"]}
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,cAAuB;IAC7B,KAAK,EAAE,kBAAkB;IACzB,QAAQ,EAAE,SAAS;IACnB,iBAAiB,EAAE,CAAC,EAAE,sCAAsC;IAC5D,mBAAmB,EAAE,CAAC,EAAE,mDAAmD;CAC5E,CAAC","sourcesContent":["/**\n * Queue trigger configuration for the workflow handler.\n * Handles both workflow orchestration and step execution on the same route.\n * Background steps are queued back to __wkf_workflow_* with a stepId.\n */\nexport const WORKFLOW_QUEUE_TRIGGER = {\n type: 'queue/v2beta' as const,\n topic: '__wkf_workflow_*',\n consumer: 'default',\n retryAfterSeconds: 5, // Delay between retries (default: 60)\n initialDelaySeconds: 0, // Initial delay before first delivery (default: 0)\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover-entries-esbuild-plugin.js","sourceRoot":"","sources":["../src/discover-entries-esbuild-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,uBAAuB,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,eAAe,GAAG,SAAS,CAC/B,uBAAuB,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE;QACV,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO;KACR;IACD,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;CAC9C,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,oCAAoC,CAAC;AAE9D,iEAAiE;AACjE,SAAS,kBAAkB,CACzB,OAAiD;IAEjD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAChC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAgB;IACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,CACL,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;QACpC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC;QACxC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;AAE5D,oDAAoD;AACpD,0DAA0D;AAC1D,6CAA6C;AAC7C,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,WAAmB;IAChE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAE/B,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAIC,EACD,WAAoB;IAEpB,OAAO;QACL,IAAI,EAAE,iCAAiC;QACvC,KAAK,CAAC,KAAK;YACT,oEAAoE;YACpE,uEAAuE;YACvE,gEAAgE;YAChE,8DAA8D;YAC9D,kDAAkD;YAClD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC/C,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEnE,IAAI,QAAQ,EAAE,CAAC;wBACb,6DAA6D;wBAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAC7D,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACxD,kEAAkE;wBAClE,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;wBACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;4BAC7B,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;wBAClD,CAAC;wBACD,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;gBACd,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,yCAAyC;YACzC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACjD,IAAI,CAAC;oBACH,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5C,OAAO;4BACL,QAAQ,EAAE,EAAE;4BACZ,MAAM,EAAE,IAAI;yBACb,CAAC;oBACJ,CAAC;oBAED,kEAAkE;oBAClE,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBACjD,OAAO;4BACL,QAAQ,EAAE,MAAM;4BAChB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;yBAClD,CAAC;oBACJ,CAAC;oBAED,2CAA2C;oBAC3C,IAAI,MAAM,GAAiB,IAAI,CAAC;oBAChC,MAAM,YAAY,GAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC7B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAChD,MAAM,GAAG,KAAK,CAAC;oBACjB,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAEjD,gFAAgF;oBAChF,+DAA+D;oBAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAErD,MAAM,mBAAmB,GACvB,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAErE,uBAAuB;oBACvB,mEAAmE;oBACnE,sEAAsE;oBACtE,sEAAsE;oBACtE,oEAAoE;oBACpE,qEAAqE;oBACrE,qEAAqE;oBACrE,EAAE;oBACF,mEAAmE;oBACnE,8DAA8D;oBAC9D,mEAAmE;oBACnE,mEAAmE;oBACnE,mEAAmE;oBACnE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBAEhD,IAAI,eAAuB,CAAC;oBAE5B,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBAC/C,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,iBAAiB,CACxD,cAAc,EACd,MAAM,EACN,QAAQ,EACR,cAAc,EACd,mBAAmB,CACpB,CAAC;wBACF,eAAe,GAAG,IAAI,CAAC;wBAEvB,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;4BACnD,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;wBAChD,CAAC;wBACD,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC/C,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;wBAC5C,CAAC;wBAED,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;4BACjD,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CACtC,cAAc,EACd,MAAM,EACN,KAAK,EACL,cAAc,EACd,mBAAmB,CACpB,CAAC;wBACF,eAAe,GAAG,IAAI,CAAC;oBACzB,CAAC;oBAED,OAAO;wBACL,QAAQ,EAAE,eAAe;wBACzB,MAAM;qBACP,CAAC;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,4CAA4C;oBAC5C,OAAO;wBACL,QAAQ,EAAE,EAAE;wBACZ,MAAM,EAAE,IAAI;qBACb,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { promisify } from 'node:util';\nimport enhancedResolveOriginal from 'enhanced-resolve';\nimport type { Plugin } from 'esbuild';\nimport type { WorkflowManifest } from './apply-swc-transform.js';\nimport { applySwcTransform } from './apply-swc-transform.js';\nimport {\n detectWorkflowPatterns,\n isGeneratedWorkflowFile,\n} from './transform-utils.js';\n\nconst enhancedResolve = promisify(\n enhancedResolveOriginal.create({\n extensions: [\n '.ts',\n '.tsx',\n '.mts',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n '.json',\n '.node',\n ],\n fullySpecified: false,\n conditionNames: ['node', 'import', 'require'],\n })\n);\n\nexport const jsTsRegex = /\\.(ts|tsx|js|jsx|mjs|cjs|mts|cts)$/;\n\n/** Returns true if a manifest section has at least one entry. */\nfunction hasManifestEntries(\n section: WorkflowManifest[keyof WorkflowManifest]\n): boolean {\n if (!section) return false;\n return Object.values(section).some(\n (entries) => Object.keys(entries).length > 0\n );\n}\n\nfunction isGeneratedBuildArtifactPath(filePath: string): boolean {\n const normalizedPath = filePath.replace(/\\\\/g, '/');\n return (\n normalizedPath.includes('/.output/') ||\n normalizedPath.includes('/.next/') ||\n normalizedPath.includes('/.nuxt/') ||\n normalizedPath.includes('/.svelte-kit/') ||\n normalizedPath.includes('/.vercel/')\n );\n}\n\n// parent -> children relationship (a file can import multiple files)\nexport const importParents = new Map<string, Set<string>>();\n\n// check if a parent has a child in its import chain\n// e.g. if a dependency needs to be bundled because it has\n// a 'use workflow/'use step' directive in it\nexport function parentHasChild(parent: string, childToFind: string): boolean {\n const visited = new Set<string>();\n const queue: string[] = [parent];\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (visited.has(current)) {\n continue;\n }\n visited.add(current);\n\n const children = importParents.get(current);\n if (!children) {\n continue;\n }\n\n for (const child of children) {\n if (child === childToFind) {\n return true;\n }\n queue.push(child);\n }\n }\n\n return false;\n}\n\nexport function createDiscoverEntriesPlugin(\n state: {\n discoveredSteps: Set<string>;\n discoveredWorkflows: Set<string>;\n discoveredSerdeFiles: Set<string>;\n },\n projectRoot?: string\n): Plugin {\n return {\n name: 'discover-entries-esbuild-plugin',\n setup(build) {\n // Track parent→child import relationships for ALL imports (not just\n // those with file extensions) so that `parentHasChild()` can correctly\n // identify transitive parents of serde/step files even when the\n // dependency chain passes through bare specifier imports like\n // `@workflow/core/runtime` or `workflow/runtime`.\n build.onResolve({ filter: /.*/ }, async (args) => {\n try {\n const resolved = await enhancedResolve(args.resolveDir, args.path);\n\n if (resolved) {\n // Normalize path separators for cross-platform compatibility\n const normalizedImporter = args.importer.replace(/\\\\/g, '/');\n const normalizedResolved = resolved.replace(/\\\\/g, '/');\n // A file can import multiple files, so we store a Set of children\n let children = importParents.get(normalizedImporter);\n if (!children) {\n children = new Set<string>();\n importParents.set(normalizedImporter, children);\n }\n children.add(normalizedResolved);\n }\n } catch (_) {}\n return null;\n });\n\n // Handle TypeScript and JavaScript files\n build.onLoad({ filter: jsTsRegex }, async (args) => {\n try {\n if (isGeneratedBuildArtifactPath(args.path)) {\n return {\n contents: '',\n loader: 'js',\n };\n }\n\n // Skip generated workflow route files to avoid re-processing them\n if (isGeneratedWorkflowFile(args.path)) {\n const source = await readFile(args.path, 'utf8');\n return {\n contents: source,\n loader: args.path.endsWith('.jsx') ? 'jsx' : 'js',\n };\n }\n\n // Determine the loader based on the output\n let loader: 'js' | 'jsx' = 'js';\n const isTypeScript =\n args.path.endsWith('.ts') ||\n args.path.endsWith('.tsx') ||\n args.path.endsWith('.mts') ||\n args.path.endsWith('.cts');\n if (!isTypeScript && args.path.endsWith('.jsx')) {\n loader = 'jsx';\n }\n const source = await readFile(args.path, 'utf8');\n\n // Normalize path separators to forward slashes for cross-platform compatibility\n // This is critical for Windows where paths contain backslashes\n const normalizedPath = args.path.replace(/\\\\/g, '/');\n\n const resolvedProjectRoot =\n projectRoot || build.initialOptions.absWorkingDir || process.cwd();\n\n // Two-phase discovery:\n // 1. Fast regexp pre-scan filters out the vast majority of files.\n // 2. For the small number that match, run the SWC plugin in 'detect'\n // mode to get an AST-level manifest. Detect mode walks the AST to\n // find directives and serde patterns but does NOT transform any\n // code, eliminating false positives where directive-like strings\n // appear inside template literals, regular strings, or comments.\n //\n // All files are transformed by SWC (TS→JS, decorators, etc.) since\n // esbuild does not support all TypeScript syntax (e.g. legacy\n // decorators, emitDecoratorMetadata). For regexp-matched files the\n // 'detect' call handles both the syntax transform and the manifest\n // in a single pass; for all other files a mode:false call is used.\n const patterns = detectWorkflowPatterns(source);\n\n let transformedCode: string;\n\n if (patterns.hasDirective || patterns.hasSerde) {\n const { code, workflowManifest } = await applySwcTransform(\n normalizedPath,\n source,\n 'detect',\n normalizedPath,\n resolvedProjectRoot\n );\n transformedCode = code;\n\n if (hasManifestEntries(workflowManifest.workflows)) {\n state.discoveredWorkflows.add(normalizedPath);\n }\n if (hasManifestEntries(workflowManifest.steps)) {\n state.discoveredSteps.add(normalizedPath);\n }\n\n if (hasManifestEntries(workflowManifest.classes)) {\n state.discoveredSerdeFiles.add(normalizedPath);\n }\n } else {\n const { code } = await applySwcTransform(\n normalizedPath,\n source,\n false,\n normalizedPath,\n resolvedProjectRoot\n );\n transformedCode = code;\n }\n\n return {\n contents: transformedCode,\n loader,\n };\n } catch (_) {\n // ignore trace errors during discover phase\n return {\n contents: '',\n loader: 'js',\n };\n }\n });\n },\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover-entries-esbuild-plugin.test.js","sourceRoot":"","sources":["../src/discover-entries-esbuild-plugin.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC/B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,iBAAiB,EAAE,qBAAqB;CACzC,CAAC,CAAC,CAAC;AAEJ,OAAO,EACL,2BAA2B,EAC3B,aAAa,EACb,cAAc,GACf,MAAM,sCAAsC,CAAC;AAE9C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AAE1C,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,QAAQ,GAAG,EAAE;IAC5C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,IAAI,QAAgB,CAAC;IAErB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACtE,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,qBAAqB,CAAC,SAAS,EAAE,CAAC;QAClC,qBAAqB,CAAC,kBAAkB,CACtC,KAAK,EAAE,QAAgB,EAAE,MAAc,EAAE,EAAE;YACzC,gEAAgE;YAChE,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,gBAAgB,GAA4B,EAAE,CAAC;YACrD,IAAI,WAAW,EAAE,CAAC;gBAChB,gBAAgB,CAAC,SAAS,GAAG;oBAC3B,CAAC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;iBAC9D,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAgB,CAAC,KAAK,GAAG;oBACvB,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;iBAC3C,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,SAAS,YAAY;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CACvB,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,CACpB,CAAC;QAEF,SAAS,CACP,YAAY,EACZ;;;;;CAKL,CACI,CAAC;QAEF,OAAO;YACL,OAAO;YACP,WAAW;YACX,YAAY;SACb,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG;YACZ,eAAe,EAAE,IAAI,GAAG,EAAU;YAClC,mBAAmB,EAAE,IAAI,GAAG,EAAU;YACtC,oBAAoB,EAAE,IAAI,GAAG,EAAU;SACxC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACjC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YACnC,aAAa,EAAE,OAAO,CAAC,WAAW;YAClC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,CAAC,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SAC/D,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CACvC,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAClC,CAAC;QACF,8DAA8D;QAC9D,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAChD,sBAAsB,EACtB,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EACzC,QAAQ,EACR,sBAAsB,EACtB,OAAO,CAAC,OAAO,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG;YACZ,eAAe,EAAE,IAAI,GAAG,EAAU;YAClC,mBAAmB,EAAE,IAAI,GAAG,EAAU;YACtC,oBAAoB,EAAE,IAAI,GAAG,EAAU;SACxC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACjC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YACnC,aAAa,EAAE,OAAO,CAAC,WAAW;YAClC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC9C,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CACvC,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAClC,CAAC;QACF,8DAA8D;QAC9D,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAChD,sBAAsB,EACtB,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EACzC,QAAQ,EACR,sBAAsB,EACtB,OAAO,CAAC,WAAW,CACpB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,oDAAoD;QACpD,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE3C,SAAS,CACP,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CACvD,CAAC;QACF,SAAS,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;QACzD,SAAS,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QAC9C,SAAS,CACP,SAAS,EACT,sDAAsD,CACvD,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,eAAe,EAAE,IAAI,GAAG,EAAU;YAClC,mBAAmB,EAAE,IAAI,GAAG,EAAU;YACtC,oBAAoB,EAAE,IAAI,GAAG,EAAU;SACxC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACjC,WAAW,EAAE,CAAC,SAAS,CAAC;YACxB,aAAa,EAAE,QAAQ;YACvB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC9C,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEpD,kDAAkD;QAClD,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,aAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1D,2DAA2D;QAC3D,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,WAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErD,iEAAiE;QACjE,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\n mkdirSync,\n mkdtempSync,\n realpathSync,\n rmSync,\n writeFileSync,\n} from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport * as esbuild from 'esbuild';\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\n\nconst { applySwcTransformMock } = vi.hoisted(() => ({\n applySwcTransformMock: vi.fn(),\n}));\n\nvi.mock('./apply-swc-transform.js', () => ({\n applySwcTransform: applySwcTransformMock,\n}));\n\nimport {\n createDiscoverEntriesPlugin,\n importParents,\n parentHasChild,\n} from './discover-entries-esbuild-plugin.js';\n\nconst realTmpdir = realpathSync(tmpdir());\n\nfunction normalizeSlashes(path: string): string {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction writeFile(path: string, contents = ''): void {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, contents, 'utf-8');\n}\n\ndescribe('createDiscoverEntriesPlugin projectRoot', () => {\n let testRoot: string;\n\n beforeEach(() => {\n testRoot = mkdtempSync(join(realTmpdir, 'workflow-discover-plugin-'));\n importParents.clear();\n applySwcTransformMock.mockReset();\n applySwcTransformMock.mockImplementation(\n async (filename: string, source: string) => {\n // Simulate the SWC plugin producing a manifest in 'detect' mode\n const hasWorkflow = /['\"]use workflow['\"]/.test(source);\n const hasStep = /['\"]use step['\"]/.test(source);\n const workflowManifest: Record<string, unknown> = {};\n if (hasWorkflow) {\n workflowManifest.workflows = {\n [filename]: { handleMessageWorkflow: { workflowId: 'test' } },\n };\n }\n if (hasStep) {\n workflowManifest.steps = {\n [filename]: { myStep: { stepId: 'test' } },\n };\n }\n return { code: source, workflowManifest };\n }\n );\n });\n\n afterEach(() => {\n importParents.clear();\n rmSync(testRoot, { recursive: true, force: true });\n });\n\n function setupFixture() {\n const appRoot = join(testRoot, 'apps', 'chat');\n const packageRoot = join(testRoot, 'packages', 'vade');\n const workflowFile = join(\n packageRoot,\n 'src',\n 'internal',\n 'message',\n 'workflow',\n 'handle-message.ts'\n );\n\n writeFile(\n workflowFile,\n `export async function handleMessageWorkflow(message) {\n \"use workflow\";\n\n return message;\n}\n`\n );\n\n return {\n appRoot,\n packageRoot,\n workflowFile,\n };\n }\n\n it('uses the explicit projectRoot during discovery transforms', async () => {\n const fixture = setupFixture();\n const normalizedWorkflowFile = normalizeSlashes(fixture.workflowFile);\n const state = {\n discoveredSteps: new Set<string>(),\n discoveredWorkflows: new Set<string>(),\n discoveredSerdeFiles: new Set<string>(),\n };\n\n const result = await esbuild.build({\n entryPoints: [fixture.workflowFile],\n absWorkingDir: fixture.packageRoot,\n bundle: true,\n format: 'esm',\n platform: 'node',\n write: false,\n plugins: [createDiscoverEntriesPlugin(state, fixture.appRoot)],\n });\n\n expect(result.errors).toHaveLength(0);\n expect(state.discoveredWorkflows).toEqual(\n new Set([normalizedWorkflowFile])\n );\n // Single 'detect' mode call for AST-level manifest validation\n expect(applySwcTransformMock).toHaveBeenCalledWith(\n normalizedWorkflowFile,\n expect.stringContaining('\"use workflow\"'),\n 'detect',\n normalizedWorkflowFile,\n fixture.appRoot\n );\n });\n\n it('defaults discovery transforms to absWorkingDir when projectRoot is omitted', async () => {\n const fixture = setupFixture();\n const normalizedWorkflowFile = normalizeSlashes(fixture.workflowFile);\n const state = {\n discoveredSteps: new Set<string>(),\n discoveredWorkflows: new Set<string>(),\n discoveredSerdeFiles: new Set<string>(),\n };\n\n const result = await esbuild.build({\n entryPoints: [fixture.workflowFile],\n absWorkingDir: fixture.packageRoot,\n bundle: true,\n format: 'esm',\n platform: 'node',\n write: false,\n plugins: [createDiscoverEntriesPlugin(state)],\n });\n\n expect(result.errors).toHaveLength(0);\n expect(state.discoveredWorkflows).toEqual(\n new Set([normalizedWorkflowFile])\n );\n // Single 'detect' mode call for AST-level manifest validation\n expect(applySwcTransformMock).toHaveBeenCalledWith(\n normalizedWorkflowFile,\n expect.stringContaining('\"use workflow\"'),\n 'detect',\n normalizedWorkflowFile,\n fixture.packageRoot\n );\n });\n\n it('tracks importParents through bare specifier imports', async () => {\n // Simulate: entry.ts -> bare-pkg -> ./serde-file.ts\n // The bare specifier \"bare-pkg\" should not break the parent-child chain.\n const entryFile = join(testRoot, 'entry.ts');\n const pkgDir = join(testRoot, 'node_modules', 'bare-pkg');\n const pkgIndex = join(pkgDir, 'index.js');\n const serdeFile = join(pkgDir, 'serde.js');\n\n writeFile(\n join(pkgDir, 'package.json'),\n JSON.stringify({ name: 'bare-pkg', main: 'index.js' })\n );\n writeFile(pkgIndex, `export { Foo } from './serde.js';`);\n writeFile(serdeFile, `export class Foo {}\\n`);\n writeFile(\n entryFile,\n `import { Foo } from 'bare-pkg';\\nconsole.log(Foo);\\n`\n );\n\n const state = {\n discoveredSteps: new Set<string>(),\n discoveredWorkflows: new Set<string>(),\n discoveredSerdeFiles: new Set<string>(),\n };\n\n const result = await esbuild.build({\n entryPoints: [entryFile],\n absWorkingDir: testRoot,\n bundle: true,\n format: 'esm',\n platform: 'node',\n write: false,\n plugins: [createDiscoverEntriesPlugin(state)],\n });\n\n expect(result.errors).toHaveLength(0);\n\n const normalizedEntry = normalizeSlashes(entryFile);\n const normalizedPkgIndex = normalizeSlashes(pkgIndex);\n const normalizedSerde = normalizeSlashes(serdeFile);\n\n // entry.ts -> bare-pkg/index.js should be tracked\n const entryChildren = importParents.get(normalizedEntry);\n expect(entryChildren).toBeDefined();\n expect(entryChildren!.has(normalizedPkgIndex)).toBe(true);\n\n // bare-pkg/index.js -> bare-pkg/serde.js should be tracked\n const pkgChildren = importParents.get(normalizedPkgIndex);\n expect(pkgChildren).toBeDefined();\n expect(pkgChildren!.has(normalizedSerde)).toBe(true);\n\n // parentHasChild should transitively find serde.js from entry.ts\n expect(parentHasChild(normalizedEntry, normalizedSerde)).toBe(true);\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-tsconfig.js","sourceRoot":"","sources":["../src/esbuild-tsconfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOnD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,YAAgC;IAEhC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACpC,CAAC;AACH,CAAC","sourcesContent":["import { lstat, readFile } from 'node:fs/promises';\n\nexport type EsbuildTsconfigOptions = {\n tsconfig?: string;\n tsconfigRaw?: string;\n};\n\n/**\n * Returns the appropriate tsconfig options for esbuild.\n *\n * For symlinked tsconfig files we pass `tsconfigRaw` instead of `tsconfig` so\n * path aliases (for example `@/*`) are resolved relative to the current\n * working directory instead of the symlink target directory.\n */\nexport async function getEsbuildTsconfigOptions(\n tsconfigPath: string | undefined\n): Promise<EsbuildTsconfigOptions> {\n if (!tsconfigPath) {\n return {};\n }\n\n try {\n const stats = await lstat(tsconfigPath);\n if (!stats.isSymbolicLink()) {\n return { tsconfig: tsconfigPath };\n }\n\n const tsconfigRaw = await readFile(tsconfigPath, 'utf8');\n return { tsconfigRaw };\n } catch {\n return { tsconfig: tsconfigPath };\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-tsconfig.test.js","sourceRoot":"","sources":["../src/esbuild-tsconfig.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AAE1C,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB;IAC/C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EACzB,UAAU,EACV,eAAe,GAIhB;IACC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;QACjC,aAAa,EAAE,UAAU;QACzB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE;YACL,QAAQ,EAAE,yEAAyE;YACnF,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,IAAI;SACb;QACD,GAAG,eAAe;KACnB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACzE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAEvD,SAAS,CACP,YAAY,EACZ,IAAI,CAAC,SAAS,CACZ;YACE,eAAe,EAAE;gBACf,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC,KAAK,CAAC;iBACf;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,WAAW,CACT,4EAA4E,EAC5E,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACzE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAE9D,SAAS,CACP,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,IAAI,CAAC,SAAS,CACZ;YACE,eAAe,EAAE;gBACf,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC,KAAK,CAAC;iBACf;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QAEF,SAAS,CACP,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,EACvC,8BAA8B,CAC/B,CAAC;QACF,SAAS,CACP,IAAI,CAAC,UAAU,EAAE,mCAAmC,CAAC,EACrD,kCAAkC,CACnC,CAAC;QACF,SAAS,CACP,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EACtC,gCAAgC,CACjC,CAAC;QACF,SAAS,CACP,IAAI,CAAC,SAAS,EAAE,mCAAmC,CAAC,EACpD,oCAAoC,CACrC,CAAC;QAEF,WAAW,CACT,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,mBAAmB,EACnB,MAAM,CACP,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC;YACrC,UAAU;YACV,eAAe,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE;SACnD,CAAC,CAAC;QACH,MAAM,CACJ,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1B,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CACpD,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACJ,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1B,KAAK,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAClE,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;QAEzC,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC;YACzC,UAAU;YACV,eAAe,EAAE,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,CACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CACpD,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CACpD,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,CACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,KAAK,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAClE,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import {\n mkdirSync,\n mkdtempSync,\n realpathSync,\n rmSync,\n symlinkSync,\n writeFileSync,\n} from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport * as esbuild from 'esbuild';\nimport { afterEach, describe, expect, it } from 'vitest';\nimport { getEsbuildTsconfigOptions } from './esbuild-tsconfig.js';\n\nconst realTmpdir = realpathSync(tmpdir());\n\nfunction writeFile(path: string, contents: string): void {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, contents, 'utf8');\n}\n\nfunction normalize(paths: string[]): string[] {\n return paths.map((p) => p.replace(/\\\\/g, '/'));\n}\n\nasync function buildInputs({\n workingDir,\n tsconfigOptions,\n}: {\n workingDir: string;\n tsconfigOptions: { tsconfig?: string; tsconfigRaw?: string };\n}): Promise<string[]> {\n const result = await esbuild.build({\n absWorkingDir: workingDir,\n bundle: true,\n format: 'esm',\n platform: 'node',\n write: false,\n logLevel: 'silent',\n metafile: true,\n stdin: {\n contents: `import '@/workflows/target'; import '@/app/.well-known/agent/v1/steps';`,\n resolveDir: workingDir,\n sourcefile: 'entry.ts',\n loader: 'ts',\n },\n ...tsconfigOptions,\n });\n\n return normalize(Object.keys(result.metafile.inputs));\n}\n\ndescribe('getEsbuildTsconfigOptions', () => {\n const createdRoots: string[] = [];\n const symlinkTest = process.platform === 'win32' ? it.skip : it;\n\n afterEach(() => {\n for (const root of createdRoots.splice(0)) {\n rmSync(root, { recursive: true, force: true });\n }\n });\n\n it('returns tsconfig for regular files', async () => {\n const root = mkdtempSync(join(realTmpdir, 'workflow-tsconfig-regular-'));\n createdRoots.push(root);\n const workingDir = join(root, 'app');\n const tsconfigPath = join(workingDir, 'tsconfig.json');\n\n writeFile(\n tsconfigPath,\n JSON.stringify(\n {\n compilerOptions: {\n paths: {\n '@/*': ['./*'],\n },\n },\n },\n null,\n 2\n )\n );\n\n const options = await getEsbuildTsconfigOptions(tsconfigPath);\n expect(options).toEqual({ tsconfig: tsconfigPath });\n });\n\n symlinkTest(\n 'uses tsconfigRaw for symlinked configs so aliases resolve from working dir',\n async () => {\n const root = mkdtempSync(join(realTmpdir, 'workflow-tsconfig-symlink-'));\n createdRoots.push(root);\n const workingDir = join(root, 'webpack-app');\n const sourceDir = join(root, 'turbopack-app');\n const symlinkTsconfigPath = join(workingDir, 'tsconfig.json');\n\n writeFile(\n join(sourceDir, 'tsconfig.json'),\n JSON.stringify(\n {\n compilerOptions: {\n paths: {\n '@/*': ['./*'],\n },\n },\n },\n null,\n 2\n )\n );\n\n writeFile(\n join(workingDir, 'workflows/target.ts'),\n 'export const id = \"webpack\";'\n );\n writeFile(\n join(workingDir, 'app/.well-known/agent/v1/steps.ts'),\n 'export const id = \"webpack-app\";'\n );\n writeFile(\n join(sourceDir, 'workflows/target.ts'),\n 'export const id = \"turbopack\";'\n );\n writeFile(\n join(sourceDir, 'app/.well-known/agent/v1/steps.ts'),\n 'export const id = \"turbopack-app\";'\n );\n\n symlinkSync(\n join(sourceDir, 'tsconfig.json'),\n symlinkTsconfigPath,\n 'file'\n );\n\n const directInputs = await buildInputs({\n workingDir,\n tsconfigOptions: { tsconfig: symlinkTsconfigPath },\n });\n expect(\n directInputs.some((input) =>\n input.includes('turbopack-app/workflows/target.ts')\n )\n ).toBe(true);\n expect(\n directInputs.some((input) =>\n input.includes('turbopack-app/app/.well-known/agent/v1/steps.ts')\n )\n ).toBe(true);\n\n const options = await getEsbuildTsconfigOptions(symlinkTsconfigPath);\n expect(typeof options.tsconfigRaw).toBe('string');\n expect(options.tsconfig).toBeUndefined();\n\n const normalizedInputs = await buildInputs({\n workingDir,\n tsconfigOptions: options,\n });\n\n expect(\n normalizedInputs.some((input) => input.endsWith('workflows/target.ts'))\n ).toBe(true);\n expect(\n normalizedInputs.some((input) =>\n input.endsWith('app/.well-known/agent/v1/steps.ts')\n )\n ).toBe(true);\n expect(\n normalizedInputs.some((input) =>\n input.includes('turbopack-app/workflows/target.ts')\n )\n ).toBe(false);\n expect(\n normalizedInputs.some((input) =>\n input.includes('turbopack-app/app/.well-known/agent/v1/steps.ts')\n )\n ).toBe(false);\n }\n );\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"external-package-warning.test.js","sourceRoot":"","sources":["../src/external-package-warning.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n mkdirSync,\n mkdtempSync,\n realpathSync,\n rmSync,\n writeFileSync,\n} from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nimport { BaseBuilder, type DiscoveredEntries } from './base-builder.js';\nimport type { StandaloneConfig } from './types.js';\n\n/**\n * Minimal subclass to expose the protected `discoverEntries()` for testing.\n */\nclass TestBuilder extends BaseBuilder {\n async build(): Promise<void> {\n // no-op\n }\n\n // Expose for tests\n public discoverEntriesPublic(\n inputs: string[],\n outdir: string\n ): Promise<DiscoveredEntries> {\n return this.discoverEntries(inputs, outdir);\n }\n}\n\n// Resolve symlinks in tmpdir to avoid macOS /var -> /private/var issues\nconst realTmpdir = realpathSync(tmpdir());\n\nfunction writeFile(path: string, contents: string): void {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, contents, 'utf-8');\n}\n\nfunction createBuilder(\n workingDir: string,\n externalPackages: string[]\n): TestBuilder {\n const config: StandaloneConfig = {\n buildTarget: 'standalone',\n workingDir,\n dirs: ['.'],\n externalPackages,\n stepsBundlePath: join(workingDir, 'steps.js'),\n workflowsBundlePath: join(workingDir, 'workflows.js'),\n webhookBundlePath: join(workingDir, 'webhook.js'),\n };\n return new TestBuilder(config);\n}\n\ndescribe('warnAboutExternalWorkflowPackages', () => {\n let testRoot: string;\n let warnSpy: ReturnType<typeof vi.spyOn>;\n\n beforeEach(() => {\n testRoot = mkdtempSync(join(realTmpdir, 'workflow-external-pkg-warning-'));\n warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});\n });\n\n afterEach(() => {\n warnSpy.mockRestore();\n rmSync(testRoot, { recursive: true, force: true });\n });\n\n it('warns when an external package depends on @workflow/serde', async () => {\n // Create a mock project with a node_modules package\n const projectDir = join(testRoot, 'project');\n\n // Create a minimal entry file for the project\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n // Create the external package with @workflow/serde dependency\n writeFile(\n join(projectDir, 'node_modules', 'my-serde-pkg', 'package.json'),\n JSON.stringify({\n name: 'my-serde-pkg',\n version: '1.0.0',\n main: 'index.js',\n dependencies: {\n '@workflow/serde': '^1.0.0',\n },\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'my-serde-pkg', 'index.js'),\n 'export class Foo {}'\n );\n\n const builder = createBuilder(projectDir, ['my-serde-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).toHaveBeenCalled();\n const warnMessage = warnSpy.mock.calls[0]?.[0] as string;\n expect(warnMessage).toContain('my-serde-pkg');\n expect(warnMessage).toContain('serverExternalPackages');\n expect(warnMessage).toContain('serialization classes');\n });\n\n it('warns when an external package source contains serde symbols', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n // Package without @workflow/serde dep but with Symbol.for patterns in source\n writeFile(\n join(projectDir, 'node_modules', 'my-symbol-pkg', 'package.json'),\n JSON.stringify({\n name: 'my-symbol-pkg',\n version: '1.0.0',\n main: 'index.js',\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'my-symbol-pkg', 'index.js'),\n `export class Bar {\n static [Symbol.for('workflow-serialize')](instance) { return {}; }\n static [Symbol.for('workflow-deserialize')](data) { return new Bar(); }\n}`\n );\n\n const builder = createBuilder(projectDir, ['my-symbol-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).toHaveBeenCalled();\n const warnMessage = warnSpy.mock.calls[0]?.[0] as string;\n expect(warnMessage).toContain('my-symbol-pkg');\n expect(warnMessage).toContain('serialization classes');\n });\n\n it('warns when an external package contains \"use step\" directives', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n writeFile(\n join(projectDir, 'node_modules', 'my-step-pkg', 'package.json'),\n JSON.stringify({\n name: 'my-step-pkg',\n version: '1.0.0',\n main: 'index.js',\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'my-step-pkg', 'index.js'),\n `export async function doWork() {\n \"use step\";\n return 42;\n}`\n );\n\n const builder = createBuilder(projectDir, ['my-step-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).toHaveBeenCalled();\n const warnMessage = warnSpy.mock.calls[0]?.[0] as string;\n expect(warnMessage).toContain('my-step-pkg');\n expect(warnMessage).toContain('\"use step\" functions');\n });\n\n it('warns when an external package contains \"use workflow\" directives', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n writeFile(\n join(projectDir, 'node_modules', 'my-workflow-pkg', 'package.json'),\n JSON.stringify({\n name: 'my-workflow-pkg',\n version: '1.0.0',\n main: 'index.js',\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'my-workflow-pkg', 'index.js'),\n `export async function runJob() {\n \"use workflow\";\n return \"done\";\n}`\n );\n\n const builder = createBuilder(projectDir, ['my-workflow-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).toHaveBeenCalled();\n const warnMessage = warnSpy.mock.calls[0]?.[0] as string;\n expect(warnMessage).toContain('my-workflow-pkg');\n expect(warnMessage).toContain('\"use workflow\" functions');\n });\n\n it('does not warn for packages without workflow patterns', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n writeFile(\n join(projectDir, 'node_modules', 'plain-pkg', 'package.json'),\n JSON.stringify({\n name: 'plain-pkg',\n version: '1.0.0',\n main: 'index.js',\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'plain-pkg', 'index.js'),\n 'export const hello = \"world\";'\n );\n\n const builder = createBuilder(projectDir, ['plain-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('does not warn for pseudo-packages (server-only, client-only)', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n const builder = createBuilder(projectDir, ['server-only', 'client-only']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('does not warn when externalPackages is empty', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n const builder = createBuilder(projectDir, []);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('warns only once per package across multiple discoverEntries calls', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n writeFile(join(projectDir, 'other.ts'), 'export const y = 2;');\n\n writeFile(\n join(projectDir, 'node_modules', 'my-serde-pkg', 'package.json'),\n JSON.stringify({\n name: 'my-serde-pkg',\n version: '1.0.0',\n main: 'index.js',\n dependencies: { '@workflow/serde': '^1.0.0' },\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'my-serde-pkg', 'index.js'),\n 'export class Foo {}'\n );\n\n const builder = createBuilder(projectDir, ['my-serde-pkg']);\n\n // Call discoverEntries twice with different inputs\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n await builder.discoverEntriesPublic(\n [join(projectDir, 'other.ts')],\n join(projectDir, 'out2')\n );\n\n // Should only warn once\n const warnCalls = warnSpy.mock.calls.filter((call: unknown[]) =>\n (call[0] as string).includes('my-serde-pkg')\n );\n expect(warnCalls).toHaveLength(1);\n });\n\n it('lists multiple detected issues in the warning message', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n writeFile(\n join(projectDir, 'node_modules', 'multi-pkg', 'package.json'),\n JSON.stringify({\n name: 'multi-pkg',\n version: '1.0.0',\n main: 'index.js',\n dependencies: { '@workflow/serde': '^1.0.0' },\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'multi-pkg', 'index.js'),\n `export async function doWork() {\n \"use step\";\n return 42;\n}\nexport class Foo {\n static [Symbol.for('workflow-serialize')](instance) { return {}; }\n static [Symbol.for('workflow-deserialize')](data) { return new Foo(); }\n}`\n );\n\n const builder = createBuilder(projectDir, ['multi-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).toHaveBeenCalled();\n const warnMessage = warnSpy.mock.calls[0]?.[0] as string;\n expect(warnMessage).toContain('\"use step\" functions');\n expect(warnMessage).toContain('serialization classes');\n });\n\n it('warns via entry-file detection when package.json has no serde dep', async () => {\n const projectDir = join(testRoot, 'project');\n\n writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');\n\n // Package without @workflow/serde in deps, but entry has \"use step\"\n writeFile(\n join(projectDir, 'node_modules', 'no-serde-dep-pkg', 'package.json'),\n JSON.stringify({\n name: 'no-serde-dep-pkg',\n version: '1.0.0',\n main: 'index.js',\n })\n );\n writeFile(\n join(projectDir, 'node_modules', 'no-serde-dep-pkg', 'index.js'),\n `export async function doWork() {\n \"use step\";\n return 42;\n}`\n );\n\n const builder = createBuilder(projectDir, ['no-serde-dep-pkg']);\n await builder.discoverEntriesPublic(\n [join(projectDir, 'index.ts')],\n join(projectDir, 'out')\n );\n\n expect(warnSpy).toHaveBeenCalled();\n const warnMessage = warnSpy.mock.calls[0]?.[0] as string;\n expect(warnMessage).toContain('no-serde-dep-pkg');\n expect(warnMessage).toContain('\"use step\" functions');\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-input-files.test.js","sourceRoot":"","sources":["../src/get-input-files.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n mkdirSync,\n mkdtempSync,\n realpathSync,\n rmSync,\n writeFileSync,\n} from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { dirname, join } from 'node:path';\nimport { afterEach, beforeEach, describe, expect, it } from 'vitest';\nimport { BaseBuilder } from './base-builder.js';\nimport type { StandaloneConfig, VercelBuildOutputConfig } from './types.js';\n\n/**\n * Minimal subclass to expose the protected `getInputFiles()` for testing.\n */\nclass TestBuilder extends BaseBuilder {\n async build(): Promise<void> {\n // no-op\n }\n\n // Expose for tests\n public getInputFiles(): Promise<string[]> {\n return super.getInputFiles();\n }\n\n public getDiagnosticsManifestPath(): string | undefined {\n return super.getDiagnosticsManifestPath();\n }\n}\n\n// Resolve symlinks in tmpdir to avoid macOS /var -> /private/var issues\nconst realTmpdir = realpathSync(tmpdir());\n\n/**\n * Normalize a path to forward slashes for cross-platform comparison.\n * tinyglobby always returns forward-slash paths, even on Windows,\n * while Node's `path.join()` uses backslashes on Windows.\n */\nfunction normalize(p: string): string {\n return p.replace(/\\\\/g, '/');\n}\n\nfunction writeFile(dir: string, relativePath: string, content = ''): string {\n const fullPath = join(dir, relativePath);\n mkdirSync(dirname(fullPath), { recursive: true });\n writeFileSync(fullPath, content, 'utf-8');\n return fullPath;\n}\n\nfunction createBuilder(\n workingDir: string,\n dirs: string[],\n configOverrides: Partial<StandaloneConfig> = {}\n): TestBuilder {\n const config: StandaloneConfig = {\n buildTarget: 'standalone',\n workingDir,\n dirs,\n stepsBundlePath: join(workingDir, 'steps.js'),\n workflowsBundlePath: join(workingDir, 'workflows.js'),\n webhookBundlePath: join(workingDir, 'webhook.js'),\n ...configOverrides,\n };\n return new TestBuilder(config);\n}\n\ndescribe('getInputFiles', () => {\n let testRoot: string;\n\n beforeEach(() => {\n testRoot = mkdtempSync(join(realTmpdir, 'get-input-files-'));\n });\n\n afterEach(() => {\n rmSync(testRoot, { recursive: true, force: true });\n });\n\n it('discovers files inside dot-prefixed directories', async () => {\n const srcDir = join(testRoot, 'src');\n writeFile(srcDir, '.hidden/step.ts', \"'use step';\");\n writeFile(srcDir, '.config/workflow.ts', \"'use workflow';\");\n writeFile(srcDir, 'regular/step.ts', \"'use step';\");\n\n const builder = createBuilder(testRoot, ['src']);\n const files = (await builder.getInputFiles()).map(normalize);\n\n expect(files).toContain(normalize(join(srcDir, '.hidden/step.ts')));\n expect(files).toContain(normalize(join(srcDir, '.config/workflow.ts')));\n expect(files).toContain(normalize(join(srcDir, 'regular/step.ts')));\n });\n\n it('discovers dot-prefixed files', async () => {\n const srcDir = join(testRoot, 'src');\n writeFile(srcDir, '.hidden-step.ts', \"'use step';\");\n writeFile(srcDir, 'visible-step.ts', \"'use step';\");\n\n const builder = createBuilder(testRoot, ['src']);\n const files = (await builder.getInputFiles()).map(normalize);\n\n expect(files).toContain(normalize(join(srcDir, '.hidden-step.ts')));\n expect(files).toContain(normalize(join(srcDir, 'visible-step.ts')));\n });\n\n it('still excludes explicitly ignored dot-directories', async () => {\n const srcDir = join(testRoot, 'src');\n writeFile(srcDir, '.git/hooks/pre-commit.ts');\n writeFile(srcDir, '.next/server/page.ts');\n writeFile(srcDir, '.nuxt/workflow/steps.mjs');\n writeFile(srcDir, '.vercel/output/step.ts');\n writeFile(srcDir, '.svelte-kit/output/step.ts');\n writeFile(srcDir, '.workflow-data/state.ts');\n writeFile(srcDir, '.workflow-vitest/workflows.mjs');\n writeFile(srcDir, '.well-known/workflow/route.ts');\n writeFile(srcDir, '.turbo/cache/build.ts');\n writeFile(srcDir, '.cache/babel/plugin.js');\n writeFile(srcDir, '.yarn/releases/yarn.cjs');\n writeFile(srcDir, '.pnpm-store/v3/files.ts');\n writeFile(srcDir, 'node_modules/pkg/index.ts');\n // This one should still be found\n writeFile(srcDir, '.custom/step.ts', \"'use step';\");\n\n const builder = createBuilder(testRoot, ['src']);\n const files = (await builder.getInputFiles()).map(normalize);\n\n expect(files).not.toContain(\n normalize(join(srcDir, '.git/hooks/pre-commit.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.next/server/page.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.nuxt/workflow/steps.mjs'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.vercel/output/step.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.svelte-kit/output/step.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.workflow-data/state.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.workflow-vitest/workflows.mjs'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.well-known/workflow/route.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.turbo/cache/build.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.cache/babel/plugin.js'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.yarn/releases/yarn.cjs'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, '.pnpm-store/v3/files.ts'))\n );\n expect(files).not.toContain(\n normalize(join(srcDir, 'node_modules/pkg/index.ts'))\n );\n expect(files).toContain(normalize(join(srcDir, '.custom/step.ts')));\n });\n\n it('discovers files with various supported extensions in dot-directories', async () => {\n const srcDir = join(testRoot, 'src');\n writeFile(srcDir, '.api/route.tsx');\n writeFile(srcDir, '.api/handler.mts');\n writeFile(srcDir, '.api/utils.js');\n writeFile(srcDir, '.api/config.cjs');\n\n const builder = createBuilder(testRoot, ['src']);\n const files = (await builder.getInputFiles()).map(normalize);\n\n expect(files).toContain(normalize(join(srcDir, '.api/route.tsx')));\n expect(files).toContain(normalize(join(srcDir, '.api/handler.mts')));\n expect(files).toContain(normalize(join(srcDir, '.api/utils.js')));\n expect(files).toContain(normalize(join(srcDir, '.api/config.cjs')));\n });\n});\n\ndescribe('getDiagnosticsManifestPath', () => {\n let testRoot: string;\n\n beforeEach(() => {\n testRoot = mkdtempSync(join(realTmpdir, 'diagnostics-path-'));\n });\n\n afterEach(() => {\n rmSync(testRoot, { recursive: true, force: true });\n });\n\n it('uses an explicit diagnosticsDir when configured', () => {\n const builder = createBuilder(testRoot, ['src'], {\n diagnosticsDir: '.next/diagnostics',\n });\n\n expect(builder.getDiagnosticsManifestPath()).toBe(\n join(testRoot, '.next/diagnostics/workflows-manifest.json')\n );\n });\n\n it('does not emit Vercel diagnostics for non-Vercel builder targets', () => {\n const previousTargetWorld = process.env.WORKFLOW_TARGET_WORLD;\n process.env.WORKFLOW_TARGET_WORLD = 'vercel';\n try {\n const builder = createBuilder(testRoot, ['src']);\n\n expect(builder.getDiagnosticsManifestPath()).toBeUndefined();\n } finally {\n if (previousTargetWorld === undefined) {\n delete process.env.WORKFLOW_TARGET_WORLD;\n } else {\n process.env.WORKFLOW_TARGET_WORLD = previousTargetWorld;\n }\n }\n });\n\n it('falls back to Vercel output diagnostics for the Vercel builder', () => {\n const config: VercelBuildOutputConfig = {\n buildTarget: 'vercel-build-output-api',\n workingDir: testRoot,\n dirs: ['src'],\n stepsBundlePath: join(testRoot, 'steps.js'),\n workflowsBundlePath: join(testRoot, 'workflows.js'),\n webhookBundlePath: join(testRoot, 'webhook.js'),\n };\n const builder = new TestBuilder(config);\n\n expect(builder.getDiagnosticsManifestPath()).toBe(\n join(testRoot, '.vercel/output/diagnostics/workflows-manifest.json')\n );\n });\n});\n"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,uBAAuB,EAGvB,+BAA+B,EAC/B,6CAA6C,GAC9C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGb,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EACL,yBAAyB,EACzB,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAElB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export type { WorkflowManifest } from './apply-swc-transform.js';\nexport { applySwcTransform } from './apply-swc-transform.js';\nexport { BaseBuilder } from './base-builder.js';\nexport { createBuildQueue } from './build-queue.js';\nexport {\n createBaseBuilderConfig,\n type DecoratorOptions,\n type DecoratorOptionsWithConfigPath,\n getDecoratorOptionsForDirectory,\n getDecoratorOptionsForDirectoryWithConfigPath,\n} from './config-helpers.js';\nexport { WORKFLOW_QUEUE_TRIGGER } from './constants.js';\nexport { createDiscoverEntriesPlugin } from './discover-entries-esbuild-plugin.js';\nexport {\n clearModuleSpecifierCache,\n getImportPath,\n type ImportPathResult,\n type ModuleSpecifierResult,\n resolveModuleSpecifier,\n} from './module-specifier.js';\nexport { createNodeModuleErrorPlugin } from './node-module-esbuild-plugin.js';\nexport {\n createPseudoPackagePlugin,\n PSEUDO_PACKAGES,\n} from './pseudo-package-esbuild-plugin.js';\nexport { NORMALIZE_REQUEST_CODE } from './request-converter.js';\nexport {\n analyzeSerdeCompliance,\n extractClassEntries,\n type SerdeCheckResult,\n type SerdeClassCheckResult,\n} from './serde-checker.js';\nexport { StandaloneBuilder } from './standalone.js';\nexport { createSwcPlugin } from './swc-esbuild-plugin.js';\nexport {\n detectWorkflowPatterns,\n generatedWorkflowPathPattern,\n isGeneratedWorkflowFile,\n shouldTransformFile,\n turbopackContentPattern,\n useStepPattern,\n useWorkflowPattern,\n type WorkflowPatternMatch,\n workflowSerdeImportPattern,\n workflowSerdeSymbolPattern,\n} from './transform-utils.js';\nexport type {\n AstroConfig,\n BuildTarget,\n NextConfig,\n StandaloneConfig,\n SvelteKitConfig,\n VercelBuildOutputConfig,\n WorkflowConfig,\n} from './types.js';\nexport { isValidBuildTarget, validBuildTargets } from './types.js';\nexport { VercelBuildOutputAPIBuilder } from './vercel-build-output-api.js';\nexport { resolveWorkflowAliasRelativePath } from './workflow-alias.js';\n"]}
|