@workflow/builders 4.0.1-beta.67 → 4.0.1-beta.69

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.
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Serde compliance checker for workflow custom class serialization.
3
+ *
4
+ * Analyzes source code to determine if classes with WORKFLOW_SERIALIZE /
5
+ * WORKFLOW_DESERIALIZE are correctly set up for the workflow sandbox.
6
+ *
7
+ * Used by:
8
+ * - CLI `validate` command
9
+ * - CLI `transform` command (--check-serde)
10
+ * - SWC playground serde analysis panel
11
+ * - Build-time warnings in BaseBuilder
12
+ */
13
+ import type { WorkflowManifest } from './apply-swc-transform.js';
14
+ /**
15
+ * Result of checking a single class for serde compliance.
16
+ */
17
+ export interface SerdeClassCheckResult {
18
+ /** The class name as detected in the source */
19
+ className: string;
20
+ /** The classId assigned by the SWC plugin (from the manifest) */
21
+ classId: string;
22
+ /** Whether the SWC plugin detected serde symbols on this class */
23
+ detected: boolean;
24
+ /** Whether a registration IIFE was generated in the output */
25
+ registered: boolean;
26
+ /**
27
+ * Node.js built-in module imports remaining in the workflow-mode output.
28
+ * If non-empty, the class is NOT workflow-sandbox compliant.
29
+ */
30
+ nodeImports: string[];
31
+ /** Whether the class passes all compliance checks */
32
+ compliant: boolean;
33
+ /** Human-readable descriptions of any issues found */
34
+ issues: string[];
35
+ }
36
+ /**
37
+ * Full result of serde compliance analysis for a source file.
38
+ */
39
+ export interface SerdeCheckResult {
40
+ /** Per-class analysis results */
41
+ classes: SerdeClassCheckResult[];
42
+ /** All Node.js built-in imports found in the workflow-mode output */
43
+ globalNodeImports: string[];
44
+ /** Whether the workflow-mode output contains any serde-related classes */
45
+ hasSerdeClasses: boolean;
46
+ /** The raw workflow manifest extracted from the SWC transform */
47
+ manifest: WorkflowManifest;
48
+ }
49
+ /**
50
+ * Lightweight serde compliance checker that works with pre-computed
51
+ * SWC transform results. This avoids re-running the SWC transform
52
+ * when the caller already has the outputs (e.g., the playground or builder).
53
+ */
54
+ export declare function analyzeSerdeCompliance(options: {
55
+ /** Source code (used for pattern detection) */
56
+ sourceCode: string;
57
+ /** Workflow-mode transformed output */
58
+ workflowCode: string;
59
+ /** Manifest extracted from the SWC transform */
60
+ manifest: WorkflowManifest;
61
+ }): SerdeCheckResult;
62
+ /**
63
+ * Extract class entries from a WorkflowManifest.
64
+ */
65
+ export declare function extractClassEntries(manifest: WorkflowManifest): Array<{
66
+ className: string;
67
+ classId: string;
68
+ fileName: string;
69
+ }>;
70
+ //# sourceMappingURL=serde-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serde-checker.d.ts","sourceRoot":"","sources":["../src/serde-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAiBjE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,eAAe,EAAE,OAAO,CAAC;IACzB,iEAAiE;IACjE,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,GAAG,gBAAgB,CA4EnB;AAwBD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,GACzB,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAcjE"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Serde compliance checker for workflow custom class serialization.
3
+ *
4
+ * Analyzes source code to determine if classes with WORKFLOW_SERIALIZE /
5
+ * WORKFLOW_DESERIALIZE are correctly set up for the workflow sandbox.
6
+ *
7
+ * Used by:
8
+ * - CLI `validate` command
9
+ * - CLI `transform` command (--check-serde)
10
+ * - SWC playground serde analysis panel
11
+ * - Build-time warnings in BaseBuilder
12
+ */
13
+ import builtinModules from 'builtin-modules';
14
+ // Build a regex that matches Node.js built-in module imports in transformed code.
15
+ // Handles both ESM (`from 'fs'`, `from 'node:fs'`) and CJS (`require('fs')`)
16
+ const nodeBuiltins = builtinModules.join('|');
17
+ // Regex to extract specific module names from import/require statements
18
+ const nodeImportExtractRegex = new RegExp(`(?:from\\s+['"](?:node:)?((?:${nodeBuiltins})(?:/[^'"]*)?)['"]` +
19
+ `|require\\s*\\(\\s*['"](?:node:)?((?:${nodeBuiltins})(?:/[^'"]*)?)['"]\\s*\\))`, 'g');
20
+ // Regex to detect class registration IIFEs generated by the SWC plugin
21
+ const registrationIifeRegex = /Symbol\.for\s*\(\s*["']workflow-class-registry["']\s*\)/;
22
+ /**
23
+ * Lightweight serde compliance checker that works with pre-computed
24
+ * SWC transform results. This avoids re-running the SWC transform
25
+ * when the caller already has the outputs (e.g., the playground or builder).
26
+ */
27
+ export function analyzeSerdeCompliance(options) {
28
+ const { sourceCode, workflowCode, manifest } = options;
29
+ // 1. Extract all Node.js built-in imports from the workflow output
30
+ const globalNodeImports = extractNodeImports(workflowCode);
31
+ // 2. Check if the manifest contains any serde-registered classes
32
+ const classEntries = extractClassEntries(manifest);
33
+ const hasSerdeClasses = classEntries.length > 0;
34
+ // 3. Check if the workflow output contains registration IIFEs
35
+ const hasRegistration = registrationIifeRegex.test(workflowCode);
36
+ // 4. Analyze each class
37
+ const classes = classEntries.map((entry) => {
38
+ const issues = [];
39
+ // Check for Node.js imports (these will fail in the workflow sandbox)
40
+ if (globalNodeImports.length > 0) {
41
+ issues.push(`Workflow bundle contains Node.js built-in imports: ${globalNodeImports.join(', ')}. ` +
42
+ `These will fail at runtime in the workflow sandbox. ` +
43
+ `Add "use step" to methods that depend on Node.js APIs so they are stripped from the workflow bundle.`);
44
+ }
45
+ // Check for registration
46
+ if (!hasRegistration) {
47
+ issues.push(`No class registration IIFE was generated. ` +
48
+ `Ensure WORKFLOW_SERIALIZE and WORKFLOW_DESERIALIZE are defined as static methods ` +
49
+ `inside the class body using computed property syntax: static [WORKFLOW_SERIALIZE](...) { ... }`);
50
+ }
51
+ return {
52
+ className: entry.className,
53
+ classId: entry.classId,
54
+ detected: true,
55
+ registered: hasRegistration,
56
+ nodeImports: globalNodeImports,
57
+ compliant: globalNodeImports.length === 0 && hasRegistration,
58
+ issues,
59
+ };
60
+ });
61
+ // 5. Check for classes that have serde patterns in source but weren't detected by SWC
62
+ const sourceHasSerdePatterns = /\[\s*WORKFLOW_(?:SERIALIZE|DESERIALIZE)\s*\]/.test(sourceCode) ||
63
+ /Symbol\.for\s*\(\s*['"]workflow-(?:serialize|deserialize)['"]\s*\)/.test(sourceCode);
64
+ if (sourceHasSerdePatterns && classEntries.length === 0) {
65
+ classes.push({
66
+ className: '<unknown>',
67
+ classId: '',
68
+ detected: false,
69
+ registered: false,
70
+ nodeImports: globalNodeImports,
71
+ compliant: false,
72
+ issues: [
73
+ `Source code contains WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE patterns but ` +
74
+ `the SWC plugin did not detect any serde-enabled classes. ` +
75
+ `Ensure the symbols are defined as static methods INSIDE the class body, ` +
76
+ `not assigned externally (e.g., (MyClass as any)[WORKFLOW_SERIALIZE] = ...).`,
77
+ ],
78
+ });
79
+ }
80
+ return {
81
+ classes,
82
+ globalNodeImports,
83
+ hasSerdeClasses,
84
+ manifest,
85
+ };
86
+ }
87
+ /**
88
+ * Extract Node.js built-in module names from transformed code.
89
+ */
90
+ function extractNodeImports(code) {
91
+ const imports = new Set();
92
+ // Reset regex state
93
+ nodeImportExtractRegex.lastIndex = 0;
94
+ for (let match = nodeImportExtractRegex.exec(code); match !== null; match = nodeImportExtractRegex.exec(code)) {
95
+ // match[1] is from the ESM pattern, match[2] is from the CJS pattern
96
+ const moduleName = match[1] || match[2];
97
+ if (moduleName) {
98
+ // Normalize to base module name (e.g., 'fs/promises' -> 'fs')
99
+ imports.add(moduleName.split('/')[0]);
100
+ }
101
+ }
102
+ return [...imports].sort();
103
+ }
104
+ /**
105
+ * Extract class entries from a WorkflowManifest.
106
+ */
107
+ export function extractClassEntries(manifest) {
108
+ const entries = [];
109
+ if (!manifest.classes)
110
+ return entries;
111
+ for (const [fileName, classes] of Object.entries(manifest.classes)) {
112
+ for (const [className, { classId }] of Object.entries(classes)) {
113
+ entries.push({ className, classId, fileName });
114
+ }
115
+ }
116
+ return entries;
117
+ }
118
+ //# sourceMappingURL=serde-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serde-checker.js","sourceRoot":"","sources":["../src/serde-checker.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,16 @@ export interface SwcPluginOptions {
18
18
  * breaks them because the .js file doesn't exist on disk.
19
19
  */
20
20
  rewriteTsExtensions?: boolean;
21
+ /**
22
+ * Absolute file paths of discovered workflow/step/serde entries whose
23
+ * imports must be treated as side-effectful.
24
+ *
25
+ * The SWC compiler transform injects registration calls (workflow IDs,
26
+ * step IDs, class serialization, etc.) into these files. Without this
27
+ * override, esbuild honours `"sideEffects": false` from the package's
28
+ * `package.json` and silently drops bare imports of these modules.
29
+ */
30
+ sideEffectEntries?: string[];
21
31
  }
22
32
  export declare function createSwcPlugin(options: SwcPluginOptions): Plugin;
23
33
  //# sourceMappingURL=swc-esbuild-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAOlC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAsCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA0NjE"}
1
+ {"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAOlC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAsCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAqSjE"}
@@ -55,58 +55,118 @@ export function createSwcPlugin(options) {
55
55
  return cjsResolver(context, path);
56
56
  }
57
57
  };
58
+ // Pre-compute the normalized side-effect entries set for O(1) lookups.
59
+ const normalizedSideEffectEntries = new Set(options.sideEffectEntries?.map((e) => e.replace(/\\/g, '/')));
58
60
  build.onResolve({ filter: /.*/ }, async (args) => {
59
- if (!options.entriesToBundle) {
61
+ if (args.pluginData?.skipSwcPlugin)
62
+ return null;
63
+ if (!options.entriesToBundle &&
64
+ normalizedSideEffectEntries.size === 0) {
65
+ return null;
66
+ }
67
+ // When only sideEffectEntries is set (no entriesToBundle), we only
68
+ // need to override sideEffects for top-level bare imports — typically
69
+ // from the virtual entry. Skip resolution for transitive imports
70
+ // (dynamic imports, requires, etc.) to avoid unnecessary overhead.
71
+ if (!options.entriesToBundle && args.kind !== 'import-statement') {
60
72
  return null;
61
73
  }
62
74
  try {
63
- let resolvedPath = args.path;
64
- // handle local imports e.g. ./hello or ../another
65
- if (args.path.startsWith('.')) {
66
- resolvedPath = await enhancedResolve(args.resolveDir, args.path);
75
+ const specifier = args.path;
76
+ const specifierIsPath = specifier.startsWith('.') || specifier.startsWith('/');
77
+ let resolvedPath;
78
+ // Determines whether the external path should be relativized
79
+ // (project-local file) or kept as a bare specifier (npm package).
80
+ let shouldMakeRelative = specifierIsPath;
81
+ if (specifierIsPath) {
82
+ resolvedPath = await enhancedResolve(args.resolveDir, specifier);
67
83
  }
68
84
  else {
69
- resolvedPath = await enhancedResolve(
70
- // `args.resolveDir` is not used here to ensure we only
71
- // externalize packages that can be resolved in the
72
- // project's working directory e.g. a nested dep can't
73
- // be externalized as we won't be able to resolve it once
74
- // it's parent has been bundled
75
- build.initialOptions.absWorkingDir || process.cwd(), args.path);
85
+ // Resolve from project root so nested deps aren't externalized
86
+ resolvedPath = await enhancedResolve(build.initialOptions.absWorkingDir || process.cwd(), specifier).catch(() => undefined); // swallow so esbuild fallback below can try
87
+ // Fall back to esbuild for aliases/tsconfig paths,
88
+ // but only accept project-local results
89
+ if (!resolvedPath) {
90
+ const esbuildResult = await build.resolve(specifier, {
91
+ resolveDir: args.resolveDir,
92
+ kind: args.kind,
93
+ pluginData: { skipSwcPlugin: true },
94
+ });
95
+ const didResolve = !!esbuildResult.path && !esbuildResult.errors.length;
96
+ const isProjectLocalFile = didResolve &&
97
+ !esbuildResult.path
98
+ .replace(/\\/g, '/')
99
+ .includes('/node_modules/');
100
+ if (isProjectLocalFile) {
101
+ resolvedPath = esbuildResult.path;
102
+ shouldMakeRelative = true;
103
+ }
104
+ }
76
105
  }
77
106
  if (!resolvedPath)
78
107
  return null;
79
108
  // Normalize to forward slashes for cross-platform comparison
80
109
  const normalizedResolvedPath = resolvedPath.replace(/\\/g, '/');
81
- for (const entryToBundle of options.entriesToBundle) {
82
- const normalizedEntry = entryToBundle.replace(/\\/g, '/');
83
- if (normalizedResolvedPath === normalizedEntry) {
84
- return null;
110
+ // Check if this module is a discovered entry whose SWC-transformed
111
+ // code contains side effects (workflow/step/class registration).
112
+ // Override the package.json "sideEffects": false so esbuild does not
113
+ // drop bare imports of these modules.
114
+ const hasSideEffects = normalizedSideEffectEntries.has(normalizedResolvedPath);
115
+ if (options.entriesToBundle) {
116
+ let shouldBundle = false;
117
+ for (const entryToBundle of options.entriesToBundle) {
118
+ const normalizedEntry = entryToBundle.replace(/\\/g, '/');
119
+ if (normalizedResolvedPath === normalizedEntry) {
120
+ shouldBundle = true;
121
+ break;
122
+ }
123
+ // if the current entry imports a child that needs
124
+ // to be bundled then it needs to also be bundled so
125
+ // that the child can have our transform applied
126
+ if (parentHasChild(normalizedResolvedPath, normalizedEntry)) {
127
+ shouldBundle = true;
128
+ break;
129
+ }
85
130
  }
86
- // if the current entry imports a child that needs
87
- // to be bundled then it needs to also be bundled so
88
- // that the child can have our transform applied
89
- if (parentHasChild(normalizedResolvedPath, normalizedEntry)) {
90
- return null;
131
+ if (shouldBundle) {
132
+ // Let esbuild bundle this entry, but override sideEffects if needed.
133
+ // We must return the resolved `path` alongside `sideEffects` because
134
+ // returning only `{ sideEffects: true }` without a path causes esbuild
135
+ // to fall through to its own resolver, which re-reads the package.json
136
+ // and applies `"sideEffects": false` from there.
137
+ return hasSideEffects
138
+ ? { path: resolvedPath, sideEffects: true }
139
+ : null;
91
140
  }
92
- }
93
- const isFilePath = args.path.startsWith('.') || args.path.startsWith('/');
94
- let externalPath;
95
- if (isFilePath) {
96
- externalPath = relative(options.outdir || process.cwd(), resolvedPath).replace(/\\/g, '/');
97
- if (options.rewriteTsExtensions) {
98
- // Rewrite TypeScript extensions to their JS equivalents so the
99
- // externalized import is loadable by Node's native ESM loader.
100
- externalPath = externalPath
101
- .replace(/\.tsx?$/, '.js')
102
- .replace(/\.mts$/, '.mjs')
103
- .replace(/\.cts$/, '.cjs');
141
+ let externalPath;
142
+ if (shouldMakeRelative) {
143
+ externalPath = relative(options.outdir || process.cwd(), resolvedPath).replace(/\\/g, '/');
144
+ if (options.rewriteTsExtensions) {
145
+ // Rewrite TypeScript extensions to their JS equivalents so the
146
+ // externalized import is loadable by Node's native ESM loader.
147
+ externalPath = externalPath
148
+ .replace(/\.tsx?$/, '.js')
149
+ .replace(/\.mts$/, '.mjs')
150
+ .replace(/\.cts$/, '.cjs');
151
+ }
104
152
  }
153
+ else {
154
+ externalPath = specifier;
155
+ }
156
+ return {
157
+ external: true,
158
+ path: externalPath,
159
+ sideEffects: hasSideEffects || undefined,
160
+ };
105
161
  }
106
- else {
107
- externalPath = args.path;
108
- }
109
- return { external: true, path: externalPath };
162
+ // No entriesToBundle — only override sideEffects when needed.
163
+ // We must return the resolved `path` alongside `sideEffects` because
164
+ // returning only `{ sideEffects: true }` without a path causes esbuild
165
+ // to fall through to its own resolver, which re-reads the package.json
166
+ // and applies `"sideEffects": false` from there.
167
+ return hasSideEffects
168
+ ? { path: resolvedPath, sideEffects: true }
169
+ : null;
110
170
  }
111
171
  catch (_) { }
112
172
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"swc-esbuild-plugin.js","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swc-esbuild-plugin.js","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"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"}