@workflow/builders 5.0.0-beta.4 → 5.0.0-beta.41

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.
Files changed (123) hide show
  1. package/README.md +26 -0
  2. package/dist/apply-swc-transform.d.ts +7 -2
  3. package/dist/apply-swc-transform.d.ts.map +1 -1
  4. package/dist/apply-swc-transform.js +10 -4
  5. package/dist/base-builder-logging.test.d.ts +2 -0
  6. package/dist/base-builder-logging.test.d.ts.map +1 -0
  7. package/dist/base-builder-logging.test.js +99 -0
  8. package/dist/base-builder.d.ts +132 -13
  9. package/dist/base-builder.d.ts.map +1 -1
  10. package/dist/base-builder.js +788 -92
  11. package/dist/build-queue.js +1 -1
  12. package/dist/config-helpers.d.ts +4 -1
  13. package/dist/config-helpers.d.ts.map +1 -1
  14. package/dist/config-helpers.js +63 -1
  15. package/dist/config-helpers.test.d.ts +2 -0
  16. package/dist/config-helpers.test.d.ts.map +1 -0
  17. package/dist/config-helpers.test.js +17 -0
  18. package/dist/constants.d.ts +66 -5
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +106 -19
  21. package/dist/constants.test.d.ts +2 -0
  22. package/dist/constants.test.d.ts.map +1 -0
  23. package/dist/constants.test.js +90 -0
  24. package/dist/discover-entries-esbuild-plugin.d.ts +3 -1
  25. package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
  26. package/dist/discover-entries-esbuild-plugin.js +24 -4
  27. package/dist/discover-entries-esbuild-plugin.test.js +1 -1
  28. package/dist/esbuild-tsconfig.js +1 -1
  29. package/dist/esbuild-tsconfig.test.js +1 -1
  30. package/dist/external-package-warning.test.d.ts +2 -0
  31. package/dist/external-package-warning.test.d.ts.map +1 -0
  32. package/dist/external-package-warning.test.js +219 -0
  33. package/dist/fast-discovery.d.ts +29 -0
  34. package/dist/fast-discovery.d.ts.map +1 -0
  35. package/dist/fast-discovery.js +771 -0
  36. package/dist/fast-discovery.test.d.ts +2 -0
  37. package/dist/fast-discovery.test.d.ts.map +1 -0
  38. package/dist/fast-discovery.test.js +453 -0
  39. package/dist/get-input-files.test.js +34 -2
  40. package/dist/index.d.ts +7 -4
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +8 -5
  43. package/dist/module-specifier.d.ts +20 -2
  44. package/dist/module-specifier.d.ts.map +1 -1
  45. package/dist/module-specifier.js +92 -17
  46. package/dist/module-specifier.test.js +45 -3
  47. package/dist/node-module-esbuild-plugin.d.ts.map +1 -1
  48. package/dist/node-module-esbuild-plugin.js +73 -23
  49. package/dist/node-module-esbuild-plugin.test.js +97 -1
  50. package/dist/optional-otel-api.d.ts +14 -0
  51. package/dist/optional-otel-api.d.ts.map +1 -0
  52. package/dist/optional-otel-api.js +14 -0
  53. package/dist/optional-typescript-alias.d.ts +2 -0
  54. package/dist/optional-typescript-alias.d.ts.map +1 -0
  55. package/dist/optional-typescript-alias.js +3 -0
  56. package/dist/optional-typescript.d.ts +3 -0
  57. package/dist/optional-typescript.d.ts.map +1 -0
  58. package/dist/optional-typescript.js +9 -0
  59. package/dist/optional-ws-native.d.ts +30 -0
  60. package/dist/optional-ws-native.d.ts.map +1 -0
  61. package/dist/optional-ws-native.js +33 -0
  62. package/dist/pseudo-package-esbuild-plugin.js +1 -1
  63. package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
  64. package/dist/request-converter.js +1 -1
  65. package/dist/resolve-sourcemap.test.d.ts +2 -0
  66. package/dist/resolve-sourcemap.test.d.ts.map +1 -0
  67. package/dist/resolve-sourcemap.test.js +194 -0
  68. package/dist/serde-checker.js +1 -1
  69. package/dist/standalone.d.ts +0 -3
  70. package/dist/standalone.d.ts.map +1 -1
  71. package/dist/standalone.js +17 -41
  72. package/dist/step-source-registration.test.d.ts +2 -0
  73. package/dist/step-source-registration.test.d.ts.map +1 -0
  74. package/dist/step-source-registration.test.js +82 -0
  75. package/dist/swc-esbuild-plugin.d.ts +26 -0
  76. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  77. package/dist/swc-esbuild-plugin.js +124 -14
  78. package/dist/swc-esbuild-plugin.test.js +475 -6
  79. package/dist/transform-utils.d.ts.map +1 -1
  80. package/dist/transform-utils.js +45 -6
  81. package/dist/transform-utils.test.js +78 -6
  82. package/dist/types.d.ts +73 -2
  83. package/dist/types.d.ts.map +1 -1
  84. package/dist/types.js +1 -1
  85. package/dist/vercel-build-output-api.d.ts +0 -2
  86. package/dist/vercel-build-output-api.d.ts.map +1 -1
  87. package/dist/vercel-build-output-api.js +37 -60
  88. package/dist/workflow-alias.js +1 -1
  89. package/dist/workflow-alias.test.js +2 -2
  90. package/dist/workflows-extractor.js +8 -3
  91. package/dist/workflows-extractor.test.d.ts +2 -0
  92. package/dist/workflows-extractor.test.d.ts.map +1 -0
  93. package/dist/workflows-extractor.test.js +70 -0
  94. package/package.json +8 -7
  95. package/dist/apply-swc-transform.js.map +0 -1
  96. package/dist/base-builder.js.map +0 -1
  97. package/dist/build-queue.js.map +0 -1
  98. package/dist/config-helpers.js.map +0 -1
  99. package/dist/constants.js.map +0 -1
  100. package/dist/discover-entries-esbuild-plugin.js.map +0 -1
  101. package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
  102. package/dist/esbuild-tsconfig.js.map +0 -1
  103. package/dist/esbuild-tsconfig.test.js.map +0 -1
  104. package/dist/get-input-files.test.js.map +0 -1
  105. package/dist/index.js.map +0 -1
  106. package/dist/module-specifier.js.map +0 -1
  107. package/dist/module-specifier.test.js.map +0 -1
  108. package/dist/node-module-esbuild-plugin.js.map +0 -1
  109. package/dist/node-module-esbuild-plugin.test.js.map +0 -1
  110. package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
  111. package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
  112. package/dist/request-converter.js.map +0 -1
  113. package/dist/serde-checker.js.map +0 -1
  114. package/dist/standalone.js.map +0 -1
  115. package/dist/swc-esbuild-plugin.js.map +0 -1
  116. package/dist/swc-esbuild-plugin.test.js.map +0 -1
  117. package/dist/transform-utils.js.map +0 -1
  118. package/dist/transform-utils.test.js.map +0 -1
  119. package/dist/types.js.map +0 -1
  120. package/dist/vercel-build-output-api.js.map +0 -1
  121. package/dist/workflow-alias.js.map +0 -1
  122. package/dist/workflow-alias.test.js.map +0 -1
  123. package/dist/workflows-extractor.js.map +0 -1
package/README.md CHANGED
@@ -30,6 +30,32 @@ class MyBuilder extends BaseBuilder {
30
30
  }
31
31
  ```
32
32
 
33
+ ### Observing transforms
34
+
35
+ Builder configurations can provide an optional `onAfterTransform` observer for
36
+ tooling that derives metadata from the exact SWC output used by a build:
37
+
38
+ ```typescript
39
+ import type { WorkflowAfterTransformHook } from '@workflow/builders';
40
+
41
+ // Pass as `onAfterTransform` in the builder configuration.
42
+ const onAfterTransform: WorkflowAfterTransformHook = async ({
43
+ mode,
44
+ filename,
45
+ absolutePath,
46
+ source,
47
+ code,
48
+ workflowManifest,
49
+ }) => {
50
+ // Observe the accepted transform result.
51
+ };
52
+ ```
53
+
54
+ The observer is awaited after the transform's manifest entries have been
55
+ accepted. It cannot replace the generated code, and throwing aborts the build.
56
+ A source file may be observed multiple times across transform modes, bundles,
57
+ and watch rebuilds, so consumers should deduplicate results when necessary.
58
+
33
59
  ## Architecture
34
60
 
35
61
  The builder system uses:
@@ -29,10 +29,15 @@ export declare function applySwcTransform(filename: string, source: string, mode
29
29
  */
30
30
  absolutePath?: string,
31
31
  /**
32
- * Optional project root used for module specifier resolution.
32
+ * Optional project root used for transform context such as tsconfig lookup.
33
33
  * Defaults to process.cwd() for backwards compatibility.
34
34
  */
35
- projectRoot?: string): Promise<{
35
+ projectRoot?: string,
36
+ /**
37
+ * Optional project root used for package/workspace module-specifier
38
+ * resolution. Defaults to projectRoot for backwards compatibility.
39
+ */
40
+ moduleSpecifierRoot?: string): Promise<{
36
41
  code: string;
37
42
  workflowManifest: WorkflowManifest;
38
43
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"apply-swc-transform.d.ts","sourceRoot":"","sources":["../src/apply-swc-transform.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE;QACN,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;IACF,SAAS,CAAC,EAAE;QACV,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,UAAU,EAAE,MAAM,CAAC;aACpB,CAAC;SACH,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE;QACR,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,SAAS,EAAE,MAAM,GAAG;gBACnB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK;AAC5C;;;;GAIG;AACH,YAAY,CAAC,EAAE,MAAM;AACrB;;;GAGG;AACH,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC,CA6ED"}
1
+ {"version":3,"file":"apply-swc-transform.d.ts","sourceRoot":"","sources":["../src/apply-swc-transform.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE;QACN,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;IACF,SAAS,CAAC,EAAE;QACV,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,UAAU,EAAE,MAAM,CAAC;aACpB,CAAC;SACH,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE;QACR,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,SAAS,EAAE,MAAM,GAAG;gBACnB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK;AAC5C;;;;GAIG;AACH,YAAY,CAAC,EAAE,MAAM;AACrB;;;GAGG;AACH,WAAW,CAAC,EAAE,MAAM;AACpB;;;GAGG;AACH,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC,CA+ED"}
@@ -24,11 +24,17 @@ export async function applySwcTransform(filename, source, mode,
24
24
  */
25
25
  absolutePath,
26
26
  /**
27
- * Optional project root used for module specifier resolution.
27
+ * Optional project root used for transform context such as tsconfig lookup.
28
28
  * Defaults to process.cwd() for backwards compatibility.
29
29
  */
30
- projectRoot) {
30
+ projectRoot,
31
+ /**
32
+ * Optional project root used for package/workspace module-specifier
33
+ * resolution. Defaults to projectRoot for backwards compatibility.
34
+ */
35
+ moduleSpecifierRoot) {
31
36
  const resolvedProjectRoot = projectRoot ?? process.cwd();
37
+ const resolvedModuleSpecifierRoot = moduleSpecifierRoot ?? resolvedProjectRoot;
32
38
  const decoratorOptions = await getDecoratorOptions(resolvedProjectRoot);
33
39
  const swcPluginPath = require.resolve('@workflow/swc-plugin', {
34
40
  paths: [dirname(fileURLToPath(import.meta.url))],
@@ -44,7 +50,7 @@ projectRoot) {
44
50
  : isAbsolute(filename)
45
51
  ? filename
46
52
  : join(resolvedProjectRoot, filename);
47
- const { moduleSpecifier } = resolveModuleSpecifier(absoluteFilename, resolvedProjectRoot);
53
+ const { moduleSpecifier } = resolveModuleSpecifier(absoluteFilename, resolvedModuleSpecifierRoot);
48
54
  // Transform with SWC to support syntax esbuild doesn't
49
55
  const result = await transform(source, {
50
56
  filename,
@@ -90,4 +96,4 @@ projectRoot) {
90
96
  workflowManifest: parsedWorkflows || {},
91
97
  };
92
98
  }
93
- //# sourceMappingURL=apply-swc-transform.js.map
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktc3djLXRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBseS1zd2MtdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUvQyxpRkFBaUY7QUFDakYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFHbEMsQ0FBQztBQUVKLFNBQVMsbUJBQW1CLENBQUMsV0FBb0I7SUFDL0MsTUFBTSxHQUFHLEdBQUcsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QyxJQUFJLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxHQUFHLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUEwQkQsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLElBQTRD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QUk7UUFDakIsZ0JBQWdCLEVBQUUsZUFBZSxJQUFJLEVBQUU7S0FDeEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgZGlybmFtZSwgaXNBYnNvbHV0ZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnQHN3Yy9jb3JlJztcbmltcG9ydCB7IGdldERlY29yYXRvck9wdGlvbnNGb3JEaXJlY3RvcnkgfSBmcm9tICcuL2NvbmZpZy1oZWxwZXJzLmpzJztcbmltcG9ydCB7IHJlc29sdmVNb2R1bGVTcGVjaWZpZXIgfSBmcm9tICcuL21vZHVsZS1zcGVjaWZpZXIuanMnO1xuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG4vLyBDYWNoZSBkZWNvcmF0b3Igb3B0aW9ucyBwZXIgZGlyZWN0b3J5IC0gdHNjb25maWcgZG9lc24ndCBjaGFuZ2UgZHVyaW5nIGEgYnVpbGRcbmNvbnN0IGRlY29yYXRvck9wdGlvbnNDYWNoZSA9IG5ldyBNYXA8XG4gIHN0cmluZyxcbiAgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RGVjb3JhdG9yT3B0aW9uc0ZvckRpcmVjdG9yeT5cbj4oKTtcblxuZnVuY3Rpb24gZ2V0RGVjb3JhdG9yT3B0aW9ucyhwcm9qZWN0Um9vdD86IHN0cmluZykge1xuICBjb25zdCBjd2QgPSBwcm9qZWN0Um9vdCA/PyBwcm9jZXNzLmN3ZCgpO1xuICBsZXQgY2FjaGVkID0gZGVjb3JhdG9yT3B0aW9uc0NhY2hlLmdldChjd2QpO1xuICBpZiAoIWNhY2hlZCkge1xuICAgIGNhY2hlZCA9IGdldERlY29yYXRvck9wdGlvbnNGb3JEaXJlY3RvcnkoY3dkKTtcbiAgICBkZWNvcmF0b3JPcHRpb25zQ2FjaGUuc2V0KGN3ZCwgY2FjaGVkKTtcbiAgfVxuICByZXR1cm4gY2FjaGVkO1xufVxuXG5leHBvcnQgdHlwZSBXb3JrZmxvd01hbmlmZXN0ID0ge1xuICBzdGVwcz86IHtcbiAgICBbcmVsYXRpdmVGaWxlTmFtZTogc3RyaW5nXToge1xuICAgICAgW2Z1bmN0aW9uTmFtZTogc3RyaW5nXToge1xuICAgICAgICBzdGVwSWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgd29ya2Zsb3dzPzoge1xuICAgIFtyZWxhdGl2ZUZpbGVOYW1lOiBzdHJpbmddOiB7XG4gICAgICBbZnVuY3Rpb25OYW1lOiBzdHJpbmddOiB7XG4gICAgICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgY2xhc3Nlcz86IHtcbiAgICBbcmVsYXRpdmVGaWxlTmFtZTogc3RyaW5nXToge1xuICAgICAgW2NsYXNzTmFtZTogc3RyaW5nXToge1xuICAgICAgICBjbGFzc0lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlTd2NUcmFuc2Zvcm0oXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIHNvdXJjZTogc3RyaW5nLFxuICBtb2RlOiAnd29ya2Zsb3cnIHwgJ3N0ZXAnIHwgJ2RldGVjdCcgfCBmYWxzZSxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFic29sdXRlIHBhdGggdG8gdGhlIGZpbGUgYmVpbmcgdHJhbnNmb3JtZWQuXG4gICAqIFVzZWQgZm9yIG1vZHVsZSBzcGVjaWZpZXIgcmVzb2x1dGlvbiB3aGVuIGZpbGVuYW1lIGlzIHJlbGF0aXZlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGZpbGVuYW1lIGlzIGpvaW5lZCB3aXRoIHByb2Nlc3MuY3dkKCkuXG4gICAqL1xuICBhYnNvbHV0ZVBhdGg/OiBzdHJpbmcsXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcm9qZWN0IHJvb3QgdXNlZCBmb3IgdHJhbnNmb3JtIGNvbnRleHQgc3VjaCBhcyB0c2NvbmZpZyBsb29rdXAuXG4gICAqIERlZmF1bHRzIHRvIHByb2Nlc3MuY3dkKCkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcHJvamVjdFJvb3Q/OiBzdHJpbmcsXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcm9qZWN0IHJvb3QgdXNlZCBmb3IgcGFja2FnZS93b3Jrc3BhY2UgbW9kdWxlLXNwZWNpZmllclxuICAgKiByZXNvbHV0aW9uLiBEZWZhdWx0cyB0byBwcm9qZWN0Um9vdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBtb2R1bGVTcGVjaWZpZXJSb290Pzogc3RyaW5nXG4pOiBQcm9taXNlPHtcbiAgY29kZTogc3RyaW5nO1xuICB3b3JrZmxvd01hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0O1xufT4ge1xuICBjb25zdCByZXNvbHZlZFByb2plY3RSb290ID0gcHJvamVjdFJvb3QgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgcmVzb2x2ZWRNb2R1bGVTcGVjaWZpZXJSb290ID1cbiAgICBtb2R1bGVTcGVjaWZpZXJSb290ID8/IHJlc29sdmVkUHJvamVjdFJvb3Q7XG4gIGNvbnN0IGRlY29yYXRvck9wdGlvbnMgPSBhd2FpdCBnZXREZWNvcmF0b3JPcHRpb25zKHJlc29sdmVkUHJvamVjdFJvb3QpO1xuXG4gIGNvbnN0IHN3Y1BsdWdpblBhdGggPSByZXF1aXJlLnJlc29sdmUoJ0B3b3JrZmxvdy9zd2MtcGx1Z2luJywge1xuICAgIHBhdGhzOiBbZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpXSxcbiAgfSk7XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBUeXBlU2NyaXB0IGZpbGVcbiAgY29uc3QgaXNUeXBlU2NyaXB0ID1cbiAgICBmaWxlbmFtZS5lbmRzV2l0aCgnLnRzJykgfHxcbiAgICBmaWxlbmFtZS5lbmRzV2l0aCgnLnRzeCcpIHx8XG4gICAgZmlsZW5hbWUuZW5kc1dpdGgoJy5tdHMnKSB8fFxuICAgIGZpbGVuYW1lLmVuZHNXaXRoKCcuY3RzJyk7XG5cbiAgLy8gUmVzb2x2ZSBtb2R1bGUgc3BlY2lmaWVyIGZvciBwYWNrYWdlcyAobm9kZV9tb2R1bGVzIG9yIHdvcmtzcGFjZSBwYWNrYWdlcylcbiAgY29uc3QgYWJzb2x1dGVGaWxlbmFtZSA9IGFic29sdXRlUGF0aFxuICAgID8gYWJzb2x1dGVQYXRoXG4gICAgOiBpc0Fic29sdXRlKGZpbGVuYW1lKVxuICAgICAgPyBmaWxlbmFtZVxuICAgICAgOiBqb2luKHJlc29sdmVkUHJvamVjdFJvb3QsIGZpbGVuYW1lKTtcbiAgY29uc3QgeyBtb2R1bGVTcGVjaWZpZXIgfSA9IHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoXG4gICAgYWJzb2x1dGVGaWxlbmFtZSxcbiAgICByZXNvbHZlZE1vZHVsZVNwZWNpZmllclJvb3RcbiAgKTtcblxuICAvLyBUcmFuc2Zvcm0gd2l0aCBTV0MgdG8gc3VwcG9ydCBzeW50YXggZXNidWlsZCBkb2Vzbid0XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybShzb3VyY2UsIHtcbiAgICBmaWxlbmFtZSxcbiAgICBzd2NyYzogZmFsc2UsXG4gICAganNjOiB7XG4gICAgICBwYXJzZXI6IHtcbiAgICAgICAgLi4uKGlzVHlwZVNjcmlwdFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBzeW50YXg6ICd0eXBlc2NyaXB0JyxcbiAgICAgICAgICAgICAgdHN4OiBmaWxlbmFtZS5lbmRzV2l0aCgnLnRzeCcpLFxuICAgICAgICAgICAgICBkZWNvcmF0b3JzOiBkZWNvcmF0b3JPcHRpb25zLmRlY29yYXRvcnMsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHN5bnRheDogJ2VjbWFzY3JpcHQnLFxuICAgICAgICAgICAgICBqc3g6IGZpbGVuYW1lLmVuZHNXaXRoKCcuanN4JyksXG4gICAgICAgICAgICAgIGRlY29yYXRvcnM6IGRlY29yYXRvck9wdGlvbnMuZGVjb3JhdG9ycyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIHRhcmdldDogJ2VzMjAyMicsXG4gICAgICBleHBlcmltZW50YWw6IG1vZGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwbHVnaW5zOiBbW3N3Y1BsdWdpblBhdGgsIHsgbW9kZSwgbW9kdWxlU3BlY2lmaWVyIH1dXSxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgIHJlYWN0OiB7XG4gICAgICAgICAgcnVudGltZTogJ3ByZXNlcnZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGVnYWN5RGVjb3JhdG9yOiBkZWNvcmF0b3JPcHRpb25zLmxlZ2FjeURlY29yYXRvcixcbiAgICAgICAgZGVjb3JhdG9yTWV0YWRhdGE6IGRlY29yYXRvck9wdGlvbnMuZGVjb3JhdG9yTWV0YWRhdGEsXG4gICAgICB9LFxuICAgIH0sXG4gICAgLy8gVE9ETzogaW52ZXN0aWdhdGUgcHJvcGVyIHNvdXJjZSBtYXAgc3VwcG9ydCBhcyB0aGV5XG4gICAgLy8gd29uJ3QgZXZlbiBiZSB1c2VkIGluIE5vZGUuanMgYnkgZGVmYXVsdCB1bmxlc3Mgd2VcbiAgICAvLyBpbnRlcmNlcHQgZXJyb3JzIGFuZCBhcHBseSB0aGVtIG91cnNlbHZlc1xuICAgIHNvdXJjZU1hcHM6IGZhbHNlLFxuICAgIG1pbmlmeTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHdvcmtmbG93Q29tbWVudE1hdGNoID0gcmVzdWx0LmNvZGUubWF0Y2goXG4gICAgL1xcL1xcKlxcKl9faW50ZXJuYWxfd29ya2Zsb3dzKHsuKj99KVxcKlxcLy9zXG4gICk7XG5cbiAgY29uc3QgcGFyc2VkV29ya2Zsb3dzID0gSlNPTi5wYXJzZShcbiAgICB3b3JrZmxvd0NvbW1lbnRNYXRjaD8uWzFdIHx8ICd7fSdcbiAgKSBhcyBXb3JrZmxvd01hbmlmZXN0O1xuXG4gIHJldHVybiB7XG4gICAgY29kZTogcmVzdWx0LmNvZGUsXG4gICAgd29ya2Zsb3dNYW5pZmVzdDogcGFyc2VkV29ya2Zsb3dzIHx8IHt9LFxuICB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=base-builder-logging.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-builder-logging.test.d.ts","sourceRoot":"","sources":["../src/base-builder-logging.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
+ import { BaseBuilder } from './base-builder.js';
6
+ class TestBuilder extends BaseBuilder {
7
+ async build() {
8
+ // no-op
9
+ }
10
+ logProgress(...args) {
11
+ this.logBaseBuilderInfo(...args);
12
+ }
13
+ createTestManifest(args) {
14
+ return this.createManifest(args);
15
+ }
16
+ }
17
+ function createBuilder(workingDir) {
18
+ const config = {
19
+ buildTarget: 'standalone',
20
+ workingDir,
21
+ dirs: ['.'],
22
+ stepsBundlePath: join(workingDir, '.workflow', 'steps.js'),
23
+ workflowsBundlePath: join(workingDir, '.workflow', 'workflows.js'),
24
+ webhookBundlePath: join(workingDir, '.workflow', 'webhook.js'),
25
+ };
26
+ return new TestBuilder(config);
27
+ }
28
+ describe('base builder logging', () => {
29
+ let testRoot;
30
+ let debugSpy;
31
+ let logSpy;
32
+ beforeEach(() => {
33
+ testRoot = mkdtempSync(join(tmpdir(), 'workflow-builder-logging-'));
34
+ debugSpy = vi.spyOn(console, 'debug').mockImplementation(() => { });
35
+ logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
36
+ });
37
+ afterEach(() => {
38
+ vi.unstubAllEnvs();
39
+ debugSpy.mockRestore();
40
+ logSpy.mockRestore();
41
+ rmSync(testRoot, { recursive: true, force: true });
42
+ });
43
+ it('hides progress logs by default', () => {
44
+ createBuilder(testRoot).logProgress('Created step registrations', '10ms');
45
+ expect(debugSpy).not.toHaveBeenCalled();
46
+ });
47
+ it('shows progress logs when DEBUG matches workflow:build', () => {
48
+ vi.stubEnv('DEBUG', 'workflow:build');
49
+ createBuilder(testRoot).logProgress('Created step registrations', '10ms');
50
+ expect(debugSpy).toHaveBeenCalledWith('[workflow:build] Created step registrations 10ms', '');
51
+ });
52
+ it.each([
53
+ 'workflow:*',
54
+ '*',
55
+ ])('shows progress logs when DEBUG wildcard %s matches workflow:build', (debugPattern) => {
56
+ vi.stubEnv('DEBUG', debugPattern);
57
+ createBuilder(testRoot).logProgress('Created step registrations', '10ms');
58
+ expect(debugSpy).toHaveBeenCalledWith('[workflow:build] Created step registrations 10ms', '');
59
+ });
60
+ it('hides progress logs when DEBUG negates workflow:build', () => {
61
+ vi.stubEnv('DEBUG', 'workflow:*,-workflow:build');
62
+ createBuilder(testRoot).logProgress('Created step registrations', '10ms');
63
+ expect(debugSpy).not.toHaveBeenCalled();
64
+ });
65
+ it('emits Next-like workflow compile summaries when manifests are created', async () => {
66
+ const workflowBundlePath = join(testRoot, 'workflow.js');
67
+ const manifestDir = join(testRoot, '.well-known/workflow/v1');
68
+ mkdirSync(manifestDir, { recursive: true });
69
+ writeFileSync(workflowBundlePath, '', 'utf-8');
70
+ const builder = createBuilder(testRoot);
71
+ const manifest = {
72
+ steps: {
73
+ 'src/workflow.ts': {
74
+ stepOne: { stepId: 'step//src/workflow.ts//stepOne' },
75
+ stepTwo: { stepId: 'step//src/workflow.ts//stepTwo' },
76
+ },
77
+ },
78
+ workflows: {
79
+ 'src/workflow.ts': {
80
+ run: { workflowId: 'workflow//src/workflow.ts//run' },
81
+ },
82
+ },
83
+ };
84
+ await builder.createTestManifest({
85
+ workflowBundlePath,
86
+ manifestDir,
87
+ manifest,
88
+ });
89
+ await builder.createTestManifest({
90
+ workflowBundlePath,
91
+ manifestDir,
92
+ manifest,
93
+ });
94
+ expect(logSpy).toHaveBeenCalledTimes(2);
95
+ expect(logSpy.mock.calls[0]?.[0]).toMatch(/^✓ Compiled workflows in \d+(?:ms|\.\d+s) \(2 steps, 1 workflow\)$/);
96
+ expect(logSpy.mock.calls[1]?.[0]).toMatch(/^✓ Compiled workflows in \d+(?:ms|\.\d+s) \(2 steps, 1 workflow\)$/);
97
+ });
98
+ });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1idWlsZGVyLWxvZ2dpbmcudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlLWJ1aWxkZXItbG9nZ2luZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsTUFBTSxXQUFZLFNBQVEsV0FBVztJQUNuQyxLQUFLLENBQUMsS0FBSztRQUNULFFBQVE7SUFDVixDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQUcsSUFBZTtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFJekI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBRUQsU0FBUyxhQUFhLENBQUMsVUFBa0I7SUFDdkMsTUFBTSxNQUFNLEdBQXFCO1FBQy9CLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLFVBQVU7UUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDWCxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDO1FBQzFELG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQztRQUNsRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUM7S0FDL0QsQ0FBQztJQUNGLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksUUFBcUMsQ0FBQztJQUMxQyxJQUFJLE1BQW1DLENBQUM7SUFFeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLDJCQUEyQixDQUFDLENBQUMsQ0FBQztRQUNwRSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtRQUN4QyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxHQUFHLEVBQUU7UUFDL0QsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUV0QyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0IsQ0FDbkMsa0RBQWtELEVBQ2xELEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sWUFBWTtRQUNaLEdBQUc7S0FDSixDQUFDLENBQUMsbUVBQW1FLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtRQUN2RixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVsQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0IsQ0FDbkMsa0RBQWtELEVBQ2xELEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFFbEQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUVBQXVFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUM5RCxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUvQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQXFCO1lBQ2pDLEtBQUssRUFBRTtnQkFDTCxpQkFBaUIsRUFBRTtvQkFDakIsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLGdDQUFnQyxFQUFFO29CQUNyRCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0NBQWdDLEVBQUU7aUJBQ3REO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsaUJBQWlCLEVBQUU7b0JBQ2pCLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxnQ0FBZ0MsRUFBRTtpQkFDdEQ7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUMvQixrQkFBa0I7WUFDbEIsV0FBVztZQUNYLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFDSCxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUMvQixrQkFBa0I7WUFDbEIsV0FBVztZQUNYLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3ZDLG9FQUFvRSxDQUNyRSxDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3ZDLG9FQUFvRSxDQUNyRSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1rZGlyU3luYywgbWtkdGVtcFN5bmMsIHJtU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQsIHZpIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dNYW5pZmVzdCB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5pbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhbmRhbG9uZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5jbGFzcyBUZXN0QnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gbm8tb3BcbiAgfVxuXG4gIHB1YmxpYyBsb2dQcm9ncmVzcyguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyguLi5hcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUZXN0TWFuaWZlc3QoYXJnczoge1xuICAgIHdvcmtmbG93QnVuZGxlUGF0aDogc3RyaW5nO1xuICAgIG1hbmlmZXN0RGlyOiBzdHJpbmc7XG4gICAgbWFuaWZlc3Q6IFdvcmtmbG93TWFuaWZlc3Q7XG4gIH0pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU1hbmlmZXN0KGFyZ3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1aWxkZXIod29ya2luZ0Rpcjogc3RyaW5nKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnLndvcmtmbG93JywgJ3N0ZXBzLmpzJyksXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnLndvcmtmbG93JywgJ3dvcmtmbG93cy5qcycpLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICcud29ya2Zsb3cnLCAnd2ViaG9vay5qcycpLFxuICB9O1xuICByZXR1cm4gbmV3IFRlc3RCdWlsZGVyKGNvbmZpZyk7XG59XG5cbmRlc2NyaWJlKCdiYXNlIGJ1aWxkZXIgbG9nZ2luZycsICgpID0+IHtcbiAgbGV0IHRlc3RSb290OiBzdHJpbmc7XG4gIGxldCBkZWJ1Z1NweTogUmV0dXJuVHlwZTx0eXBlb2Ygdmkuc3B5T24+O1xuICBsZXQgbG9nU3B5OiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5zcHlPbj47XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGVzdFJvb3QgPSBta2R0ZW1wU3luYyhqb2luKHRtcGRpcigpLCAnd29ya2Zsb3ctYnVpbGRlci1sb2dnaW5nLScpKTtcbiAgICBkZWJ1Z1NweSA9IHZpLnNweU9uKGNvbnNvbGUsICdkZWJ1ZycpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gICAgbG9nU3B5ID0gdmkuc3B5T24oY29uc29sZSwgJ2xvZycpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgdmkudW5zdHViQWxsRW52cygpO1xuICAgIGRlYnVnU3B5Lm1vY2tSZXN0b3JlKCk7XG4gICAgbG9nU3B5Lm1vY2tSZXN0b3JlKCk7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdoaWRlcyBwcm9ncmVzcyBsb2dzIGJ5IGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCkubG9nUHJvZ3Jlc3MoJ0NyZWF0ZWQgc3RlcCByZWdpc3RyYXRpb25zJywgJzEwbXMnKTtcblxuICAgIGV4cGVjdChkZWJ1Z1NweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3dzIHByb2dyZXNzIGxvZ3Mgd2hlbiBERUJVRyBtYXRjaGVzIHdvcmtmbG93OmJ1aWxkJywgKCkgPT4ge1xuICAgIHZpLnN0dWJFbnYoJ0RFQlVHJywgJ3dvcmtmbG93OmJ1aWxkJyk7XG5cbiAgICBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5sb2dQcm9ncmVzcygnQ3JlYXRlZCBzdGVwIHJlZ2lzdHJhdGlvbnMnLCAnMTBtcycpO1xuXG4gICAgZXhwZWN0KGRlYnVnU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICdbd29ya2Zsb3c6YnVpbGRdIENyZWF0ZWQgc3RlcCByZWdpc3RyYXRpb25zIDEwbXMnLFxuICAgICAgJydcbiAgICApO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICAnd29ya2Zsb3c6KicsXG4gICAgJyonLFxuICBdKSgnc2hvd3MgcHJvZ3Jlc3MgbG9ncyB3aGVuIERFQlVHIHdpbGRjYXJkICVzIG1hdGNoZXMgd29ya2Zsb3c6YnVpbGQnLCAoZGVidWdQYXR0ZXJuKSA9PiB7XG4gICAgdmkuc3R1YkVudignREVCVUcnLCBkZWJ1Z1BhdHRlcm4pO1xuXG4gICAgY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCkubG9nUHJvZ3Jlc3MoJ0NyZWF0ZWQgc3RlcCByZWdpc3RyYXRpb25zJywgJzEwbXMnKTtcblxuICAgIGV4cGVjdChkZWJ1Z1NweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAnW3dvcmtmbG93OmJ1aWxkXSBDcmVhdGVkIHN0ZXAgcmVnaXN0cmF0aW9ucyAxMG1zJyxcbiAgICAgICcnXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2hpZGVzIHByb2dyZXNzIGxvZ3Mgd2hlbiBERUJVRyBuZWdhdGVzIHdvcmtmbG93OmJ1aWxkJywgKCkgPT4ge1xuICAgIHZpLnN0dWJFbnYoJ0RFQlVHJywgJ3dvcmtmbG93OiosLXdvcmtmbG93OmJ1aWxkJyk7XG5cbiAgICBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5sb2dQcm9ncmVzcygnQ3JlYXRlZCBzdGVwIHJlZ2lzdHJhdGlvbnMnLCAnMTBtcycpO1xuXG4gICAgZXhwZWN0KGRlYnVnU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnZW1pdHMgTmV4dC1saWtlIHdvcmtmbG93IGNvbXBpbGUgc3VtbWFyaWVzIHdoZW4gbWFuaWZlc3RzIGFyZSBjcmVhdGVkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtmbG93QnVuZGxlUGF0aCA9IGpvaW4odGVzdFJvb3QsICd3b3JrZmxvdy5qcycpO1xuICAgIGNvbnN0IG1hbmlmZXN0RGlyID0gam9pbih0ZXN0Um9vdCwgJy53ZWxsLWtub3duL3dvcmtmbG93L3YxJyk7XG4gICAgbWtkaXJTeW5jKG1hbmlmZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKHdvcmtmbG93QnVuZGxlUGF0aCwgJycsICd1dGYtOCcpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QpO1xuICAgIGNvbnN0IG1hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0ID0ge1xuICAgICAgc3RlcHM6IHtcbiAgICAgICAgJ3NyYy93b3JrZmxvdy50cyc6IHtcbiAgICAgICAgICBzdGVwT25lOiB7IHN0ZXBJZDogJ3N0ZXAvL3NyYy93b3JrZmxvdy50cy8vc3RlcE9uZScgfSxcbiAgICAgICAgICBzdGVwVHdvOiB7IHN0ZXBJZDogJ3N0ZXAvL3NyYy93b3JrZmxvdy50cy8vc3RlcFR3bycgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd3M6IHtcbiAgICAgICAgJ3NyYy93b3JrZmxvdy50cyc6IHtcbiAgICAgICAgICBydW46IHsgd29ya2Zsb3dJZDogJ3dvcmtmbG93Ly9zcmMvd29ya2Zsb3cudHMvL3J1bicgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGJ1aWxkZXIuY3JlYXRlVGVzdE1hbmlmZXN0KHtcbiAgICAgIHdvcmtmbG93QnVuZGxlUGF0aCxcbiAgICAgIG1hbmlmZXN0RGlyLFxuICAgICAgbWFuaWZlc3QsXG4gICAgfSk7XG4gICAgYXdhaXQgYnVpbGRlci5jcmVhdGVUZXN0TWFuaWZlc3Qoe1xuICAgICAgd29ya2Zsb3dCdW5kbGVQYXRoLFxuICAgICAgbWFuaWZlc3REaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIGV4cGVjdChsb2dTcHkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgICBleHBlY3QobG9nU3B5Lm1vY2suY2FsbHNbMF0/LlswXSkudG9NYXRjaChcbiAgICAgIC9e4pyTIENvbXBpbGVkIHdvcmtmbG93cyBpbiBcXGQrKD86bXN8XFwuXFxkK3MpIFxcKDIgc3RlcHMsIDEgd29ya2Zsb3dcXCkkL1xuICAgICk7XG4gICAgZXhwZWN0KGxvZ1NweS5tb2NrLmNhbGxzWzFdPy5bMF0pLnRvTWF0Y2goXG4gICAgICAvXuKckyBDb21waWxlZCB3b3JrZmxvd3MgaW4gXFxkKyg/Om1zfFxcLlxcZCtzKSBcXCgyIHN0ZXBzLCAxIHdvcmtmbG93XFwpJC9cbiAgICApO1xuICB9KTtcbn0pO1xuIl19
@@ -1,11 +1,8 @@
1
1
  import * as esbuild from 'esbuild';
2
2
  import { type WorkflowManifest } from './apply-swc-transform.js';
3
- import type { WorkflowConfig } from './types.js';
4
- export interface DiscoveredEntries {
5
- discoveredSteps: Set<string>;
6
- discoveredWorkflows: Set<string>;
7
- discoveredSerdeFiles: Set<string>;
8
- }
3
+ import { type DiscoveredEntries } from './fast-discovery.js';
4
+ import type { SourcemapMode, WorkflowConfig } from './types.js';
5
+ export type { DiscoveredEntries } from './fast-discovery.js';
9
6
  /**
10
7
  * Base class for workflow builders. Provides common build logic for transforming
11
8
  * workflow source files into deployable bundles using esbuild and SWC.
@@ -14,14 +11,21 @@ export interface DiscoveredEntries {
14
11
  */
15
12
  export declare abstract class BaseBuilder {
16
13
  protected config: WorkflowConfig;
17
- constructor(config: WorkflowConfig);
18
- protected get transformProjectRoot(): string;
19
14
  /**
20
- * Whether informational BaseBuilder logs should be printed.
21
- * Subclasses can override this to silence progress logs while keeping warnings/errors.
15
+ * Tracks which external packages have already been warned about
16
+ * to avoid duplicate warnings across multiple discoverEntries() calls.
22
17
  */
23
- protected get shouldLogBaseBuilderInfo(): boolean;
18
+ private warnedExternalPackages;
19
+ private workflowBuildStartTime;
20
+ private manifestTransformCache;
21
+ constructor(config: WorkflowConfig);
22
+ protected get transformProjectRoot(): string;
23
+ protected get moduleSpecifierRoot(): string;
24
24
  protected logBaseBuilderInfo(...args: unknown[]): void;
25
+ private startWorkflowBuildTimer;
26
+ private getWorkflowBuildDuration;
27
+ private resetWorkflowBuildTimer;
28
+ private getWorkflowBuildSummary;
25
29
  private logCreateWorkflowsBundleInfo;
26
30
  private logCreateWebhookBundleInfo;
27
31
  private logCreateManifestInfo;
@@ -63,7 +67,27 @@ export declare abstract class BaseBuilder {
63
67
  * (e.g., when files are added/removed during watch mode).
64
68
  */
65
69
  private discoveredEntries;
70
+ clearDiscoveredEntriesCache(): void;
71
+ clearManifestTransformCache(): void;
72
+ /**
73
+ * Pseudo-packages that should not be checked for workflow patterns.
74
+ */
75
+ private static readonly PSEUDO_PACKAGES;
76
+ /**
77
+ * Checks each package in externalPackages for workflow patterns and emits
78
+ * warnings if any contain "use step", "use workflow" directives, or
79
+ * serialization classes. These patterns will not be transformed by the
80
+ * workflow compiler when the package is externalized.
81
+ */
82
+ private warnAboutExternalWorkflowPackages;
66
83
  protected discoverEntries(inputs: string[], outdir: string, tsconfigPath?: string): Promise<DiscoveredEntries>;
84
+ /**
85
+ * Writes generated files atomically where possible. On Windows, Next.js can
86
+ * briefly hold generated route files open while compiling them, which makes
87
+ * rename-over-existing fail with EPERM/EACCES. In that case, fall back to a
88
+ * direct overwrite so watch rebuilds can still make progress.
89
+ */
90
+ private writeGeneratedFile;
67
91
  /**
68
92
  * Writes debug information to a JSON file for troubleshooting build issues.
69
93
  * Uses atomic write (temp file + rename) to prevent race conditions when
@@ -79,21 +103,40 @@ export declare abstract class BaseBuilder {
79
103
  * Converts an absolute file path to a normalized relative path for the manifest.
80
104
  */
81
105
  private getRelativeFilepath;
106
+ private getCachedManifestTransform;
107
+ protected createRouteImportSpecifier(file: string, routeDir: string): string;
108
+ protected createStepSourceRegistrationFile({ inputFiles, outfile, tsconfigPath, discoveredEntries, }: {
109
+ inputFiles: string[];
110
+ outfile: string;
111
+ tsconfigPath?: string;
112
+ discoveredEntries?: DiscoveredEntries;
113
+ }): Promise<WorkflowManifest>;
82
114
  /**
83
115
  * Creates a bundle for workflow step functions.
84
116
  * Steps have full Node.js runtime access and handle side effects, API calls, etc.
85
117
  *
86
118
  * @param externalizeNonSteps - If true, only bundles step entry points and externalizes other code
119
+ * @param sourceStepRegistrationImports - If true, emits a source import registration file instead of bundling step registrations
120
+ * @param bundleTransitiveLocalStepDependencies - If true, also bundles project-local files imported by step entries for direct runtime loading
87
121
  * @returns Build context (for watch mode) and the collected workflow manifest
88
122
  */
89
- protected createStepsBundle({ inputFiles, format, outfile, externalizeNonSteps, rewriteTsExtensions, tsconfigPath, discoveredEntries, }: {
123
+ protected createStepsBundle({ inputFiles, format, outfile, externalizeNonSteps, bundleTransitiveLocalStepDependencies, sourceStepRegistrationImports, rewriteTsExtensions, tsconfigPath, discoveredEntries, skipEsmRequireBanner, }: {
90
124
  tsconfigPath?: string;
91
125
  inputFiles: string[];
92
126
  outfile: string;
93
127
  format?: 'cjs' | 'esm';
94
128
  externalizeNonSteps?: boolean;
129
+ bundleTransitiveLocalStepDependencies?: boolean;
130
+ sourceStepRegistrationImports?: boolean;
95
131
  rewriteTsExtensions?: boolean;
96
132
  discoveredEntries?: DiscoveredEntries;
133
+ /**
134
+ * When true, skip the `createRequire` banner on the steps bundle.
135
+ * Used by `createCombinedBundle` with `bundleFinalOutput: true` where
136
+ * the outer esbuild pass provides its own banner, preventing the
137
+ * `__createRequire` identifier from being declared twice after inlining.
138
+ */
139
+ skipEsmRequireBanner?: boolean;
97
140
  }): Promise<{
98
141
  context: esbuild.BuildContext | undefined;
99
142
  manifest: WorkflowManifest;
@@ -116,6 +159,39 @@ export declare abstract class BaseBuilder {
116
159
  manifest: WorkflowManifest;
117
160
  interimBundleCtx?: esbuild.BuildContext;
118
161
  bundleFinal?: (interimBundleResult: string) => Promise<void>;
162
+ /** The raw workflow VM code (before wrapping with entrypoint) */
163
+ interimBundleText?: string;
164
+ }>;
165
+ /**
166
+ * V2: Creates a combined bundle that includes both step registrations and
167
+ * workflow orchestration in a single route. The combined entrypoint executes
168
+ * steps inline when possible, reducing function invocations and queue overhead.
169
+ *
170
+ * This method reuses createStepsBundle (for step registrations) and
171
+ * createWorkflowsBundle (for workflow VM code), then combines them into
172
+ * a single route file using workflowEntrypoint().
173
+ */
174
+ protected createCombinedBundle({ inputFiles, stepsOutfile, flowOutfile, format, bundleFinalOutput, tsconfigPath, externalizeNonSteps, bundleTransitiveLocalStepDependencies, sourceStepRegistrationImports, discoveredEntries, }: {
175
+ inputFiles: string[];
176
+ /** Output path for the step registrations bundle (side effects only) */
177
+ stepsOutfile: string;
178
+ /** Output path for the combined route file */
179
+ flowOutfile: string;
180
+ format?: 'cjs' | 'esm';
181
+ bundleFinalOutput?: boolean;
182
+ tsconfigPath?: string;
183
+ externalizeNonSteps?: boolean;
184
+ bundleTransitiveLocalStepDependencies?: boolean;
185
+ sourceStepRegistrationImports?: boolean;
186
+ discoveredEntries?: DiscoveredEntries;
187
+ }): Promise<{
188
+ manifest: WorkflowManifest;
189
+ stepsContext?: esbuild.BuildContext;
190
+ interimBundleCtx?: esbuild.BuildContext;
191
+ bundleFinal?: (interimBundleResult: string) => Promise<void>;
192
+ discoveredEntries: DiscoveredEntries;
193
+ stepsManifest: WorkflowManifest;
194
+ workflowsManifest: WorkflowManifest;
119
195
  }>;
120
196
  /**
121
197
  * Creates a client library bundle for workflow execution.
@@ -152,6 +228,7 @@ export declare abstract class BaseBuilder {
152
228
  topic: string;
153
229
  consumer: string;
154
230
  maxDeliveries?: number;
231
+ maxConcurrency?: number;
155
232
  retryAfterSeconds?: number;
156
233
  initialDelaySeconds?: number;
157
234
  }>;
@@ -164,7 +241,9 @@ export declare abstract class BaseBuilder {
164
241
  * Ensures the directory for a file path exists, creating it if necessary.
165
242
  */
166
243
  protected ensureDirectory(filePath: string): Promise<void>;
167
- private createSwcGitignore;
244
+ protected ensureSwcIgnored(): Promise<void>;
245
+ private ensureProjectSwcGitignoreEntry;
246
+ private createSwcDirectoryGitignore;
168
247
  /**
169
248
  * Whether the manifest should be exposed as a public HTTP route.
170
249
  * Controlled by the `WORKFLOW_PUBLIC_MANIFEST` environment variable.
@@ -175,6 +254,46 @@ export declare abstract class BaseBuilder {
175
254
  * emit one.
176
255
  */
177
256
  protected getDiagnosticsManifestPath(): string | undefined;
257
+ /**
258
+ * Whether this is a development/watch build (e.g. `next dev`, `nitro dev`,
259
+ * or a Vite-based dev server for astro/sveltekit/vite). `config.watch` is
260
+ * plumbed by the builders that own a dev server (next, nitro, nest); the
261
+ * Vite-based integrations don't set it but run with
262
+ * `NODE_ENV === 'development'`. When neither signal is present we treat the
263
+ * build as production, so CLI/Vercel production builds default to off.
264
+ */
265
+ protected get isDevelopmentBuild(): boolean;
266
+ /**
267
+ * Default source map mode for the stack-relevant bundles (steps + the
268
+ * intermediate workflow VM bundle): inline source maps in development so
269
+ * stack traces point at source files, and off in production so function
270
+ * bundles stay small (helps stay under the Vercel 250MB function limit) and
271
+ * skip the source-map-support runtime shim. The `sourcemap` config option
272
+ * and `WORKFLOW_SOURCEMAP` env var override this in either environment.
273
+ */
274
+ protected get defaultSourcemapMode(): SourcemapMode;
275
+ /**
276
+ * Resolve the effective source map mode for a given call site. Precedence:
277
+ * explicit `sourcemap` config > `WORKFLOW_SOURCEMAP` env var > the call
278
+ * site's default. Returned value is passed directly to esbuild's
279
+ * `sourcemap` option.
280
+ */
281
+ protected resolveSourcemap(defaultMode: SourcemapMode): SourcemapMode;
282
+ /**
283
+ * Resolve whether workflow/step files under `node_modules` are discovered.
284
+ * Precedence: explicit `discoverWorkflowsInNodeModules` config > the
285
+ * `WORKFLOW_DISCOVER_NODE_MODULES` env var (`0`/`false` disables) > the
286
+ * default (`true`, discover them).
287
+ */
288
+ protected resolveDiscoverWorkflowsInNodeModules(): boolean;
289
+ /**
290
+ * Whether the resolved source map mode emits any source maps at all.
291
+ * Used by consumers like the Vercel builder to decide whether to include
292
+ * the source-map-support runtime shim in generated functions. Uses the same
293
+ * environment-aware default (`defaultSourcemapMode`) as the step/workflow
294
+ * bundles, so a production build with no override omits the shim.
295
+ */
296
+ protected get sourcemapsEnabled(): boolean;
178
297
  /**
179
298
  * Creates a manifest JSON file containing step/workflow/class metadata
180
299
  * and graph data for visualization.
@@ -1 +1 @@
1
- {"version":3,"file":"base-builder.d.ts","sourceRoot":"","sources":["../src/base-builder.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2BjD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,EAAE,cAAc;IAIlC,SAAS,KAAK,oBAAoB,IAAI,MAAM,CAE3C;IAED;;;OAGG;IACH,SAAS,KAAK,wBAAwB,IAAI,OAAO,CAEhD;IAED,SAAS,CAAC,kBAAkB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMtD,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,qBAAqB;IAM7B;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B;;;OAGG;cACa,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK/D;;;;OAIG;cACa,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAqClD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CACT;cAEA,eAAe,CAC7B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAgE7B;;;;OAIG;YACW,cAAc;IA2C5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6C1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;;;;OAMG;cACa,iBAAiB,CAAC,EAChC,UAAU,EACV,MAAc,EACd,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,EAAE;QACD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;QACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC,GAAG,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;QAC1C,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IA0OF;;;;;OAKG;cACa,qBAAqB,CAAC,EACpC,UAAU,EACV,MAAc,EACd,OAAO,EACP,iBAAwB,EACxB,wBAA4C,EAC5C,YAAY,EACZ,iBAAiB,GAClB,EAAE;QACD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC,GAAG,OAAO,CAAC;QACV,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;QACxC,WAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9D,CAAC;IAqUF;;;;OAIG;cACa,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0HpD;;;;OAIG;cACa,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAc,GACf,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2FjB;;OAEG;cACa,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,GAAG,QAAQ,GAC1B,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;cACa,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,cAAc,CAAC;YACrB,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC;YACjB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;SAC9B,CAAC,CAAC;KACJ,GACA,OAAO,CAAC,IAAI,CAAC;IAwBhB;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;cACa,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAIlD,kBAAkB;IAWhC;;;OAGG;IACH,SAAS,KAAK,0BAA0B,IAAI,OAAO,CAElD;IAED;;;OAGG;IACH,SAAS,CAAC,0BAA0B,IAAI,MAAM,GAAG,SAAS;IAgB1D;;;;;OAKG;cACa,cAAc,CAAC,EAC7B,kBAAkB,EAClB,WAAW,EACX,QAAQ,GACT,EAAE;QACD,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAsD/B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,wBAAwB;IAyDhC,OAAO,CAAC,sBAAsB;CAc/B"}
1
+ {"version":3,"file":"base-builder.d.ts","sourceRoot":"","sources":["../src/base-builder.ts"],"names":[],"mappings":"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"}