@workflow/cli 4.0.1-beta.0

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 (140) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +3 -0
  3. package/bin/run.js +5 -0
  4. package/dist/base.d.ts +8 -0
  5. package/dist/base.d.ts.map +1 -0
  6. package/dist/base.js +14 -0
  7. package/dist/base.js.map +1 -0
  8. package/dist/commands/build.d.ts +14 -0
  9. package/dist/commands/build.d.ts.map +1 -0
  10. package/dist/commands/build.js +78 -0
  11. package/dist/commands/build.js.map +1 -0
  12. package/dist/commands/cancel.d.ts +25 -0
  13. package/dist/commands/cancel.d.ts.map +1 -0
  14. package/dist/commands/cancel.js +30 -0
  15. package/dist/commands/cancel.js.map +1 -0
  16. package/dist/commands/dev.d.ts +11 -0
  17. package/dist/commands/dev.d.ts.map +1 -0
  18. package/dist/commands/dev.js +34 -0
  19. package/dist/commands/dev.js.map +1 -0
  20. package/dist/commands/init.d.ts +11 -0
  21. package/dist/commands/init.d.ts.map +1 -0
  22. package/dist/commands/init.js +42 -0
  23. package/dist/commands/init.js.map +1 -0
  24. package/dist/commands/inspect.d.ts +31 -0
  25. package/dist/commands/inspect.d.ts.map +1 -0
  26. package/dist/commands/inspect.js +209 -0
  27. package/dist/commands/inspect.js.map +1 -0
  28. package/dist/commands/start.d.ts +26 -0
  29. package/dist/commands/start.d.ts.map +1 -0
  30. package/dist/commands/start.js +43 -0
  31. package/dist/commands/start.js.map +1 -0
  32. package/dist/commands/validate.d.ts +12 -0
  33. package/dist/commands/validate.d.ts.map +1 -0
  34. package/dist/commands/validate.js +45 -0
  35. package/dist/commands/validate.js.map +1 -0
  36. package/dist/lib/builders/apply-swc-transform.d.ts +24 -0
  37. package/dist/lib/builders/apply-swc-transform.d.ts.map +1 -0
  38. package/dist/lib/builders/apply-swc-transform.js +38 -0
  39. package/dist/lib/builders/apply-swc-transform.js.map +1 -0
  40. package/dist/lib/builders/base-builder.d.ts +45 -0
  41. package/dist/lib/builders/base-builder.d.ts.map +1 -0
  42. package/dist/lib/builders/base-builder.js +466 -0
  43. package/dist/lib/builders/base-builder.js.map +1 -0
  44. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts +11 -0
  45. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts.map +1 -0
  46. package/dist/lib/builders/discover-entries-esbuild-plugin.js +84 -0
  47. package/dist/lib/builders/discover-entries-esbuild-plugin.js.map +1 -0
  48. package/dist/lib/builders/next-build.d.ts +11 -0
  49. package/dist/lib/builders/next-build.d.ts.map +1 -0
  50. package/dist/lib/builders/next-build.js +331 -0
  51. package/dist/lib/builders/next-build.js.map +1 -0
  52. package/dist/lib/builders/node-module-esbuild-plugin.d.ts +3 -0
  53. package/dist/lib/builders/node-module-esbuild-plugin.d.ts.map +1 -0
  54. package/dist/lib/builders/node-module-esbuild-plugin.js +24 -0
  55. package/dist/lib/builders/node-module-esbuild-plugin.js.map +1 -0
  56. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts +2 -0
  57. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts.map +1 -0
  58. package/dist/lib/builders/node-module-esbuild-plugin.test.js +128 -0
  59. package/dist/lib/builders/node-module-esbuild-plugin.test.js.map +1 -0
  60. package/dist/lib/builders/swc-esbuild-plugin.d.ts +12 -0
  61. package/dist/lib/builders/swc-esbuild-plugin.d.ts.map +1 -0
  62. package/dist/lib/builders/swc-esbuild-plugin.js +134 -0
  63. package/dist/lib/builders/swc-esbuild-plugin.js.map +1 -0
  64. package/dist/lib/builders/vercel-build-output-api.d.ts +9 -0
  65. package/dist/lib/builders/vercel-build-output-api.d.ts.map +1 -0
  66. package/dist/lib/builders/vercel-build-output-api.js +138 -0
  67. package/dist/lib/builders/vercel-build-output-api.js.map +1 -0
  68. package/dist/lib/builders/vercel-static.d.ts +7 -0
  69. package/dist/lib/builders/vercel-static.d.ts.map +1 -0
  70. package/dist/lib/builders/vercel-static.js +42 -0
  71. package/dist/lib/builders/vercel-static.js.map +1 -0
  72. package/dist/lib/builders/webhook-route.test.d.ts +2 -0
  73. package/dist/lib/builders/webhook-route.test.d.ts.map +1 -0
  74. package/dist/lib/builders/webhook-route.test.js +199 -0
  75. package/dist/lib/builders/webhook-route.test.js.map +1 -0
  76. package/dist/lib/config/log.d.ts +42 -0
  77. package/dist/lib/config/log.d.ts.map +1 -0
  78. package/dist/lib/config/log.js +95 -0
  79. package/dist/lib/config/log.js.map +1 -0
  80. package/dist/lib/config/types.d.ts +28 -0
  81. package/dist/lib/config/types.d.ts.map +1 -0
  82. package/dist/lib/config/types.js +9 -0
  83. package/dist/lib/config/types.js.map +1 -0
  84. package/dist/lib/config/workflow-config.d.ts +6 -0
  85. package/dist/lib/config/workflow-config.d.ts.map +1 -0
  86. package/dist/lib/config/workflow-config.js +16 -0
  87. package/dist/lib/config/workflow-config.js.map +1 -0
  88. package/dist/lib/inspect/auth.d.ts +20 -0
  89. package/dist/lib/inspect/auth.d.ts.map +1 -0
  90. package/dist/lib/inspect/auth.js +54 -0
  91. package/dist/lib/inspect/auth.js.map +1 -0
  92. package/dist/lib/inspect/env.d.ts +25 -0
  93. package/dist/lib/inspect/env.d.ts.map +1 -0
  94. package/dist/lib/inspect/env.js +158 -0
  95. package/dist/lib/inspect/env.js.map +1 -0
  96. package/dist/lib/inspect/flags.d.ts +14 -0
  97. package/dist/lib/inspect/flags.d.ts.map +1 -0
  98. package/dist/lib/inspect/flags.js +110 -0
  99. package/dist/lib/inspect/flags.js.map +1 -0
  100. package/dist/lib/inspect/output.d.ts +31 -0
  101. package/dist/lib/inspect/output.d.ts.map +1 -0
  102. package/dist/lib/inspect/output.js +899 -0
  103. package/dist/lib/inspect/output.js.map +1 -0
  104. package/dist/lib/inspect/pagination.d.ts +55 -0
  105. package/dist/lib/inspect/pagination.d.ts.map +1 -0
  106. package/dist/lib/inspect/pagination.js +193 -0
  107. package/dist/lib/inspect/pagination.js.map +1 -0
  108. package/dist/lib/inspect/run.d.ts +9 -0
  109. package/dist/lib/inspect/run.d.ts.map +1 -0
  110. package/dist/lib/inspect/run.js +30 -0
  111. package/dist/lib/inspect/run.js.map +1 -0
  112. package/dist/lib/inspect/setup.d.ts +10 -0
  113. package/dist/lib/inspect/setup.d.ts.map +1 -0
  114. package/dist/lib/inspect/setup.js +33 -0
  115. package/dist/lib/inspect/setup.js.map +1 -0
  116. package/dist/lib/inspect/stream.d.ts +7 -0
  117. package/dist/lib/inspect/stream.d.ts.map +1 -0
  118. package/dist/lib/inspect/stream.js +50 -0
  119. package/dist/lib/inspect/stream.js.map +1 -0
  120. package/dist/lib/inspect/terminal-utils.d.ts +36 -0
  121. package/dist/lib/inspect/terminal-utils.d.ts.map +1 -0
  122. package/dist/lib/inspect/terminal-utils.js +109 -0
  123. package/dist/lib/inspect/terminal-utils.js.map +1 -0
  124. package/dist/lib/inspect/vercel-api.d.ts +12 -0
  125. package/dist/lib/inspect/vercel-api.d.ts.map +1 -0
  126. package/dist/lib/inspect/vercel-api.js +89 -0
  127. package/dist/lib/inspect/vercel-api.js.map +1 -0
  128. package/dist/lib/inspect/vercel-link.d.ts +98 -0
  129. package/dist/lib/inspect/vercel-link.d.ts.map +1 -0
  130. package/dist/lib/inspect/vercel-link.js +268 -0
  131. package/dist/lib/inspect/vercel-link.js.map +1 -0
  132. package/dist/lib/inspect/web.d.ts +9 -0
  133. package/dist/lib/inspect/web.d.ts.map +1 -0
  134. package/dist/lib/inspect/web.js +305 -0
  135. package/dist/lib/inspect/web.js.map +1 -0
  136. package/dist/lib/runtime.d.ts +2 -0
  137. package/dist/lib/runtime.d.ts.map +1 -0
  138. package/dist/lib/runtime.js +5 -0
  139. package/dist/lib/runtime.js.map +1 -0
  140. package/package.json +67 -0
@@ -0,0 +1,134 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import enhancedResolveOrig from 'enhanced-resolve';
3
+ import { relative } from 'path';
4
+ import { promisify } from 'util';
5
+ import { applySwcTransform, } from './apply-swc-transform.js';
6
+ import { jsTsRegex, parentHasChild, } from './discover-entries-esbuild-plugin.js';
7
+ const NODE_RESOLVE_OPTIONS = {
8
+ dependencyType: 'commonjs',
9
+ modules: ['node_modules'],
10
+ exportsFields: ['exports'],
11
+ importsFields: ['imports'],
12
+ conditionNames: ['node', 'require'],
13
+ descriptionFiles: ['package.json'],
14
+ extensions: ['.ts', '.mts', '.cjs', '.js', '.json', '.node'],
15
+ enforceExtensions: false,
16
+ symlinks: true,
17
+ mainFields: ['main'],
18
+ mainFiles: ['index'],
19
+ roots: [],
20
+ fullySpecified: false,
21
+ preferRelative: false,
22
+ preferAbsolute: false,
23
+ restrictions: [],
24
+ };
25
+ const NODE_ESM_RESOLVE_OPTIONS = {
26
+ ...NODE_RESOLVE_OPTIONS,
27
+ dependencyType: 'esm',
28
+ conditionNames: ['node', 'import'],
29
+ };
30
+ export function createSwcPlugin(options) {
31
+ return {
32
+ name: 'swc-workflow-plugin',
33
+ setup(build) {
34
+ // everything is external unless explicitly configured
35
+ // to be bundled
36
+ const cjsResolver = promisify(enhancedResolveOrig.create(NODE_RESOLVE_OPTIONS));
37
+ const esmResolver = promisify(enhancedResolveOrig.create(NODE_ESM_RESOLVE_OPTIONS));
38
+ const enhancedResolve = async (context, path) => {
39
+ try {
40
+ return await esmResolver(context, path);
41
+ }
42
+ catch (_) {
43
+ return cjsResolver(context, path);
44
+ }
45
+ };
46
+ build.onResolve({ filter: /.*/ }, async (args) => {
47
+ if (!options.entriesToBundle) {
48
+ return null;
49
+ }
50
+ try {
51
+ let resolvedPath = args.path;
52
+ // handle local imports e.g. ./hello or ../another
53
+ if (args.path.startsWith('.')) {
54
+ resolvedPath = await enhancedResolve(args.resolveDir, args.path);
55
+ }
56
+ else {
57
+ resolvedPath = await enhancedResolve(
58
+ // `args.resolveDir` is not used here to ensure we only
59
+ // externalize packages that can be resolved in the
60
+ // project's working directory e.g. a nested dep can't
61
+ // be externalized as we won't be able to resolve it once
62
+ // it's parent has been bundled
63
+ build.initialOptions.absWorkingDir || process.cwd(), args.path);
64
+ }
65
+ if (!resolvedPath)
66
+ return null;
67
+ for (const entryToBundle of options.entriesToBundle) {
68
+ if (resolvedPath === entryToBundle) {
69
+ return null;
70
+ }
71
+ // if the current entry imports a child that needs
72
+ // to be bundled then it needs to also be bundled so
73
+ // that the child can have our transform applied
74
+ if (parentHasChild(resolvedPath, entryToBundle)) {
75
+ return null;
76
+ }
77
+ }
78
+ const isFilePath = args.path.startsWith('.') || args.path.startsWith('/');
79
+ return {
80
+ external: true,
81
+ path: isFilePath
82
+ ? relative(options.outdir || '', resolvedPath)
83
+ : args.path,
84
+ };
85
+ }
86
+ catch (_) { }
87
+ return null;
88
+ });
89
+ // Handle TypeScript and JavaScript files
90
+ build.onLoad({ filter: jsTsRegex }, async (args) => {
91
+ // Determine if this is a TypeScript file
92
+ const isTypeScript = args.path.endsWith('.ts') || args.path.endsWith('.tsx');
93
+ try {
94
+ // Determine the loader based on the output
95
+ let loader = 'js';
96
+ if (!isTypeScript && args.path.endsWith('.jsx')) {
97
+ loader = 'jsx';
98
+ }
99
+ const source = await readFile(args.path, 'utf8');
100
+ const { code: transformedCode, workflowManifest } = await applySwcTransform(args.path, source, options.mode,
101
+ // we need to provide the tsconfig/jsconfig
102
+ // alias via swc so that we can resolve them
103
+ // with our custom resolve logic
104
+ {
105
+ paths: options.tsPaths,
106
+ baseUrl: options.tsBaseUrl,
107
+ });
108
+ if (!options.workflowManifest) {
109
+ options.workflowManifest = {};
110
+ }
111
+ options.workflowManifest.workflows = Object.assign(options.workflowManifest.workflows || {}, workflowManifest.workflows);
112
+ options.workflowManifest.steps = Object.assign(options.workflowManifest.steps || {}, workflowManifest.steps);
113
+ return {
114
+ contents: transformedCode,
115
+ loader,
116
+ };
117
+ }
118
+ catch (error) {
119
+ const errorMessage = error instanceof Error ? error.message : String(error);
120
+ console.error(`❌ SWC transform error in ${args.path}:`, errorMessage);
121
+ return {
122
+ errors: [
123
+ {
124
+ text: `SWC transform failed: ${errorMessage}`,
125
+ location: { file: args.path, line: 0, column: 0 },
126
+ },
127
+ ],
128
+ };
129
+ }
130
+ });
131
+ },
132
+ };
133
+ }
134
+ //# sourceMappingURL=swc-esbuild-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swc-esbuild-plugin.js","sourceRoot":"","sources":["../../../src/lib/builders/swc-esbuild-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BaseBuilder } from './base-builder.js';
2
+ export declare class VercelBuildOutputAPIBuilder extends BaseBuilder {
3
+ build(): Promise<void>;
4
+ private buildStepsFunction;
5
+ private buildWorkflowsFunction;
6
+ private buildWebhookFunction;
7
+ private createBuildOutputConfig;
8
+ }
9
+ //# sourceMappingURL=vercel-build-output-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-build-output-api.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/vercel-build-output-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,2BAA4B,SAAQ,WAAW;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBd,kBAAkB;YA0DlB,sBAAsB;YAwDtB,oBAAoB;YA2CpB,uBAAuB;CA0BtC"}
@@ -0,0 +1,138 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { join, resolve } from 'node:path';
3
+ import { BaseBuilder } from './base-builder.js';
4
+ export class VercelBuildOutputAPIBuilder extends BaseBuilder {
5
+ async build() {
6
+ const outputDir = resolve(this.config.workingDir, '.vercel/output');
7
+ const functionsDir = join(outputDir, 'functions');
8
+ const workflowGeneratedDir = join(functionsDir, '.well-known/workflow/v1');
9
+ // Ensure output directories exist
10
+ await mkdir(workflowGeneratedDir, { recursive: true });
11
+ const inputFiles = await this.getInputFiles();
12
+ const tsConfig = await this.getTsConfigOptions();
13
+ const options = {
14
+ inputFiles,
15
+ workflowGeneratedDir,
16
+ tsBaseUrl: tsConfig.baseUrl,
17
+ tsPaths: tsConfig.paths,
18
+ };
19
+ await this.buildStepsFunction(options);
20
+ await this.buildWorkflowsFunction(options);
21
+ await this.buildWebhookFunction(options);
22
+ await this.createBuildOutputConfig(outputDir);
23
+ await this.buildClientLibrary();
24
+ }
25
+ async buildStepsFunction({ inputFiles, workflowGeneratedDir, tsPaths, tsBaseUrl, }) {
26
+ console.log('Creating Vercel Build Output API steps function');
27
+ const stepsFuncDir = join(workflowGeneratedDir, 'step.func');
28
+ await mkdir(stepsFuncDir, { recursive: true });
29
+ // Create steps bundle
30
+ await this.createStepsBundle({
31
+ inputFiles,
32
+ outfile: join(stepsFuncDir, 'index.js'),
33
+ tsBaseUrl,
34
+ tsPaths,
35
+ });
36
+ // Create package.json for CommonJS
37
+ const packageJson = {
38
+ type: 'commonjs',
39
+ };
40
+ await writeFile(join(stepsFuncDir, 'package.json'), JSON.stringify(packageJson, null, 2));
41
+ // Create .vc-config.json for steps function
42
+ const stepsConfig = {
43
+ runtime: 'nodejs22.x',
44
+ handler: 'index.js',
45
+ launcherType: 'Nodejs',
46
+ architecture: 'arm64',
47
+ shouldAddHelpers: true,
48
+ shouldAddSourcemapSupport: true,
49
+ experimentalTriggers: [
50
+ {
51
+ type: 'queue/v1beta',
52
+ topic: '__wkf_step_*',
53
+ consumer: 'default',
54
+ maxDeliveries: 64, // Optional: Maximum number of delivery attempts (default: 3)
55
+ retryAfterSeconds: 5, // Optional: Delay between retries (default: 60)
56
+ initialDelaySeconds: 0, // Optional: Initial delay before first delivery (default: 0)
57
+ },
58
+ ],
59
+ };
60
+ await writeFile(join(stepsFuncDir, '.vc-config.json'), JSON.stringify(stepsConfig, null, 2));
61
+ }
62
+ async buildWorkflowsFunction({ inputFiles, workflowGeneratedDir, tsPaths, tsBaseUrl, }) {
63
+ console.log('Creating Vercel Build Output API workflows function');
64
+ const workflowsFuncDir = join(workflowGeneratedDir, 'flow.func');
65
+ await mkdir(workflowsFuncDir, { recursive: true });
66
+ await this.createWorkflowsBundle({
67
+ outfile: join(workflowsFuncDir, 'index.js'),
68
+ inputFiles,
69
+ tsBaseUrl,
70
+ tsPaths,
71
+ });
72
+ // Create package.json for ESM support
73
+ const packageJson = {
74
+ type: 'commonjs',
75
+ };
76
+ await writeFile(join(workflowsFuncDir, 'package.json'), JSON.stringify(packageJson, null, 2));
77
+ // Create .vc-config.json for workflows function
78
+ const workflowsConfig = {
79
+ runtime: 'nodejs22.x',
80
+ handler: 'index.js',
81
+ launcherType: 'Nodejs',
82
+ architecture: 'arm64',
83
+ shouldAddHelpers: true,
84
+ experimentalTriggers: [
85
+ {
86
+ type: 'queue/v1beta',
87
+ topic: '__wkf_workflow_*',
88
+ consumer: 'default',
89
+ maxDeliveries: 64, // Optional: Maximum number of delivery attempts (default: 3)
90
+ retryAfterSeconds: 5, // Optional: Delay between retries (default: 60)
91
+ initialDelaySeconds: 0, // Optional: Initial delay before first delivery (default: 0)
92
+ },
93
+ ],
94
+ };
95
+ await writeFile(join(workflowsFuncDir, '.vc-config.json'), JSON.stringify(workflowsConfig, null, 2));
96
+ }
97
+ async buildWebhookFunction({ workflowGeneratedDir, bundle = true, }) {
98
+ console.log('Creating Vercel Build Output API webhook function');
99
+ const webhookFuncDir = join(workflowGeneratedDir, 'webhook/[token].func');
100
+ // Bundle the webhook route with dependencies resolved
101
+ await this.createWebhookBundle({
102
+ outfile: join(webhookFuncDir, 'index.js'),
103
+ bundle, // Build Output API needs bundling (except in tests)
104
+ });
105
+ // Create package.json for CommonJS
106
+ const packageJson = {
107
+ type: 'commonjs',
108
+ };
109
+ await writeFile(join(webhookFuncDir, 'package.json'), JSON.stringify(packageJson, null, 2));
110
+ // Create .vc-config.json for webhook function
111
+ const webhookConfig = {
112
+ runtime: 'nodejs22.x',
113
+ handler: 'index.js',
114
+ launcherType: 'Nodejs',
115
+ architecture: 'arm64',
116
+ shouldAddHelpers: false,
117
+ };
118
+ await writeFile(join(webhookFuncDir, '.vc-config.json'), JSON.stringify(webhookConfig, null, 2));
119
+ }
120
+ async createBuildOutputConfig(outputDir) {
121
+ // Create config.json for Build Output API
122
+ const buildOutputConfig = {
123
+ version: 3,
124
+ routes: [
125
+ {
126
+ src: '^\\/\\.well-known\\/workflow\\/v1\\/webhook\\/([^\\/]+)$',
127
+ dest: '/.well-known/workflow/v1/webhook/[token]',
128
+ },
129
+ ],
130
+ };
131
+ await writeFile(join(outputDir, 'config.json'), JSON.stringify(buildOutputConfig, null, 2));
132
+ console.log(`Build Output API created at ${outputDir}`);
133
+ console.log('Steps function available at /.well-known/workflow/v1/step');
134
+ console.log('Workflows function available at /.well-known/workflow/v1/flow');
135
+ console.log('Webhook function available at /.well-known/workflow/v1/webhook/[token]');
136
+ }
137
+ }
138
+ //# sourceMappingURL=vercel-build-output-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-build-output-api.js","sourceRoot":"","sources":["../../../src/lib/builders/vercel-build-output-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { BaseBuilder } from './base-builder.js';
2
+ export declare class VercelStaticBuilder extends BaseBuilder {
3
+ build(): Promise<void>;
4
+ private buildStepsBundle;
5
+ private buildWorkflowsBundle;
6
+ }
7
+ //# sourceMappingURL=vercel-static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-static.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/vercel-static.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,mBAAoB,SAAQ,WAAW;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAed,gBAAgB;YA8BhB,oBAAoB;CA6BnC"}
@@ -0,0 +1,42 @@
1
+ import { mkdir } from 'node:fs/promises';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { BaseBuilder } from './base-builder.js';
4
+ export class VercelStaticBuilder extends BaseBuilder {
5
+ async build() {
6
+ const inputFiles = await this.getInputFiles();
7
+ const tsConfig = await this.getTsConfigOptions();
8
+ const options = {
9
+ inputFiles,
10
+ tsBaseUrl: tsConfig.baseUrl,
11
+ tsPaths: tsConfig.paths,
12
+ };
13
+ await this.buildStepsBundle(options);
14
+ await this.buildWorkflowsBundle(options);
15
+ await this.buildClientLibrary();
16
+ }
17
+ async buildStepsBundle({ inputFiles, tsPaths, tsBaseUrl, }) {
18
+ console.log('Creating Vercel API steps bundle at', this.config.stepsBundlePath);
19
+ const stepsBundlePath = resolve(this.config.workingDir, this.config.stepsBundlePath);
20
+ // Ensure directory exists
21
+ await mkdir(dirname(stepsBundlePath), { recursive: true });
22
+ await this.createStepsBundle({
23
+ outfile: stepsBundlePath,
24
+ inputFiles,
25
+ tsBaseUrl,
26
+ tsPaths,
27
+ });
28
+ }
29
+ async buildWorkflowsBundle({ inputFiles, tsPaths, tsBaseUrl, }) {
30
+ console.log('Creating vercel API workflows bundle at', this.config.workflowsBundlePath);
31
+ const workflowBundlePath = resolve(this.config.workingDir, this.config.workflowsBundlePath);
32
+ // Ensure directory exists
33
+ await mkdir(dirname(workflowBundlePath), { recursive: true });
34
+ await this.createWorkflowsBundle({
35
+ outfile: workflowBundlePath,
36
+ inputFiles,
37
+ tsBaseUrl,
38
+ tsPaths,
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=vercel-static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-static.js","sourceRoot":"","sources":["../../../src/lib/builders/vercel-static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,KAAK,CAAC,KAAK;QACT,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEjD,MAAM,OAAO,GAAG;YACd,UAAU;YACV,SAAS,EAAE,QAAQ,CAAC,OAAO;YAC3B,OAAO,EAAE,QAAQ,CAAC,KAAK;SACxB,CAAC;QACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAC7B,UAAU,EACV,OAAO,EACP,SAAS,GAKV;QACC,OAAO,CAAC,GAAG,CACT,qCAAqC,EACrC,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5B,CAAC;QAEF,MAAM,eAAe,GAAG,OAAO,CAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5B,CAAC;QAEF,0BAA0B;QAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC3B,OAAO,EAAE,eAAe;YACxB,UAAU;YACV,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,EACjC,UAAU,EACV,OAAO,EACP,SAAS,GAKV;QACC,OAAO,CAAC,GAAG,CACT,yCAAyC,EACzC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAChC,CAAC;QAEF,MAAM,kBAAkB,GAAG,OAAO,CAChC,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAChC,CAAC;QAEF,0BAA0B;QAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,qBAAqB,CAAC;YAC/B,OAAO,EAAE,kBAAkB;YAC3B,UAAU;YACV,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=webhook-route.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-route.test.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/webhook-route.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,199 @@
1
+ import { mkdir, readFile, rm } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
+ import { NextBuilder } from './next-build.js';
5
+ import { VercelBuildOutputAPIBuilder } from './vercel-build-output-api.js';
6
+ describe('Webhook route generation', () => {
7
+ const testDir = join(process.cwd(), '.test-webhook-routes');
8
+ const appDir = join(testDir, 'app');
9
+ beforeEach(async () => {
10
+ await mkdir(appDir, { recursive: true });
11
+ // Create a dummy route file to satisfy NextBuilder's findAppDirectory
12
+ await mkdir(join(appDir, 'test'), { recursive: true });
13
+ await mkdir(join(appDir, 'test'), { recursive: true });
14
+ });
15
+ afterEach(async () => {
16
+ await rm(testDir, { recursive: true, force: true });
17
+ });
18
+ describe('Next.js build target', () => {
19
+ it('should create webhook route at correct location', async () => {
20
+ const config = {
21
+ buildTarget: 'next',
22
+ dirs: ['app'],
23
+ workingDir: testDir,
24
+ stepsBundlePath: '',
25
+ workflowsBundlePath: '',
26
+ watch: false,
27
+ externalPackages: [],
28
+ };
29
+ const builder = new NextBuilder(config);
30
+ // We'll call the private method indirectly through reflection
31
+ const createWebhookBundle = builder.createWebhookBundle.bind(builder);
32
+ const workflowGeneratedDir = join(appDir, '.well-known/workflow/v1');
33
+ const webhookRouteFile = join(workflowGeneratedDir, 'webhook/[token]/route.js');
34
+ await createWebhookBundle({
35
+ outfile: webhookRouteFile,
36
+ bundle: false,
37
+ });
38
+ const routePath = join(workflowGeneratedDir, 'webhook/[token]/route.js');
39
+ const routeContent = await readFile(routePath, 'utf-8');
40
+ expect(routeContent).toContain('resumeWebhook');
41
+ expect(routeContent).toContain('async function handler(request)');
42
+ expect(routeContent).toContain("url.pathname.split('/')");
43
+ expect(routeContent).toContain('decodeURIComponent(pathParts[pathParts.length - 1])');
44
+ expect(routeContent).toContain('export const GET = handler');
45
+ expect(routeContent).toContain('export const POST = handler');
46
+ expect(routeContent).toContain('export const PUT = handler');
47
+ expect(routeContent).toContain('export const PATCH = handler');
48
+ expect(routeContent).toContain('export const DELETE = handler');
49
+ });
50
+ it('should handle missing token correctly', async () => {
51
+ const config = {
52
+ buildTarget: 'next',
53
+ dirs: ['app'],
54
+ workingDir: testDir,
55
+ stepsBundlePath: '',
56
+ workflowsBundlePath: '',
57
+ watch: false,
58
+ externalPackages: [],
59
+ };
60
+ const builder = new NextBuilder(config);
61
+ const createWebhookBundle = builder.createWebhookBundle.bind(builder);
62
+ const workflowGeneratedDir = join(appDir, '.well-known/workflow/v1');
63
+ const webhookRouteFile = join(workflowGeneratedDir, 'webhook/[token]/route.js');
64
+ await createWebhookBundle({
65
+ outfile: webhookRouteFile,
66
+ bundle: false,
67
+ });
68
+ const routeContent = await readFile(webhookRouteFile, 'utf-8');
69
+ expect(routeContent).toContain('Missing token');
70
+ expect(routeContent).toContain('status: 400');
71
+ });
72
+ it('should handle webhook not found correctly', async () => {
73
+ const config = {
74
+ buildTarget: 'next',
75
+ dirs: ['app'],
76
+ workingDir: testDir,
77
+ stepsBundlePath: '',
78
+ workflowsBundlePath: '',
79
+ watch: false,
80
+ externalPackages: [],
81
+ };
82
+ const builder = new NextBuilder(config);
83
+ const createWebhookBundle = builder.createWebhookBundle.bind(builder);
84
+ const workflowGeneratedDir = join(appDir, '.well-known/workflow/v1');
85
+ const webhookRouteFile = join(workflowGeneratedDir, 'webhook/[token]/route.js');
86
+ await createWebhookBundle({
87
+ outfile: webhookRouteFile,
88
+ bundle: false,
89
+ });
90
+ const routeContent = await readFile(webhookRouteFile, 'utf-8');
91
+ expect(routeContent).toContain('new Response(null, { status: 404 })');
92
+ });
93
+ });
94
+ describe('Build Output API build target', () => {
95
+ it('should create webhook function at correct location', async () => {
96
+ const config = {
97
+ buildTarget: 'vercel-build-output-api',
98
+ dirs: ['workflows'],
99
+ workingDir: testDir,
100
+ stepsBundlePath: '',
101
+ workflowsBundlePath: '',
102
+ watch: false,
103
+ externalPackages: [],
104
+ };
105
+ const builder = new VercelBuildOutputAPIBuilder(config);
106
+ const createWebhookBundle = builder.createWebhookBundle.bind(builder);
107
+ const workflowGeneratedDir = join(testDir, '.vercel/output/functions/.well-known/workflow/v1');
108
+ const webhookFuncFile = join(workflowGeneratedDir, 'webhook/[token].func/index.js');
109
+ // Don't actually bundle in tests since it requires workflow to be installed
110
+ // Just verify the unbundled route generation works
111
+ await createWebhookBundle({
112
+ outfile: webhookFuncFile,
113
+ bundle: false,
114
+ });
115
+ const funcContent = await readFile(webhookFuncFile, 'utf-8');
116
+ // Check that the route content was generated correctly
117
+ expect(funcContent).toContain('workflow/api');
118
+ expect(funcContent).toContain('async function handler');
119
+ expect(funcContent).toContain('export const POST = handler');
120
+ });
121
+ it('should create correct .vc-config.json', async () => {
122
+ const config = {
123
+ buildTarget: 'vercel-build-output-api',
124
+ dirs: ['workflows'],
125
+ workingDir: testDir,
126
+ stepsBundlePath: '',
127
+ workflowsBundlePath: '',
128
+ watch: false,
129
+ externalPackages: [],
130
+ };
131
+ const builder = new VercelBuildOutputAPIBuilder(config);
132
+ const buildWebhookFunction = builder.buildWebhookFunction.bind(builder);
133
+ const workflowGeneratedDir = join(testDir, '.vercel/output/functions/.well-known/workflow/v1');
134
+ await mkdir(workflowGeneratedDir, { recursive: true });
135
+ await buildWebhookFunction({
136
+ inputFiles: [],
137
+ workflowGeneratedDir,
138
+ bundle: false, // Skip bundling in tests (requires workflow installed)
139
+ });
140
+ const configPath = join(workflowGeneratedDir, 'webhook/[token].func/.vc-config.json');
141
+ const configContent = await readFile(configPath, 'utf-8');
142
+ const config_parsed = JSON.parse(configContent);
143
+ expect(config_parsed.runtime).toBe('nodejs22.x');
144
+ expect(config_parsed.handler).toBe('index.js');
145
+ expect(config_parsed.launcherType).toBe('Nodejs');
146
+ expect(config_parsed.shouldAddHelpers).toBe(false);
147
+ expect(config_parsed.useWebApi).toBeUndefined();
148
+ });
149
+ it('should use CommonJS module format', async () => {
150
+ const config = {
151
+ buildTarget: 'vercel-build-output-api',
152
+ dirs: ['workflows'],
153
+ workingDir: testDir,
154
+ stepsBundlePath: '',
155
+ workflowsBundlePath: '',
156
+ watch: false,
157
+ externalPackages: [],
158
+ };
159
+ const builder = new VercelBuildOutputAPIBuilder(config);
160
+ const buildWebhookFunction = builder.buildWebhookFunction.bind(builder);
161
+ const workflowGeneratedDir = join(testDir, '.vercel/output/functions/.well-known/workflow/v1');
162
+ await mkdir(workflowGeneratedDir, { recursive: true });
163
+ await buildWebhookFunction({
164
+ inputFiles: [],
165
+ workflowGeneratedDir,
166
+ bundle: false, // Skip bundling in tests (requires workflow installed)
167
+ });
168
+ const packageJsonPath = join(workflowGeneratedDir, 'webhook/[token].func/package.json');
169
+ const packageJsonContent = await readFile(packageJsonPath, 'utf-8');
170
+ const packageJson = JSON.parse(packageJsonContent);
171
+ expect(packageJson.type).toBe('commonjs');
172
+ });
173
+ it('should add route configuration for dynamic segment', async () => {
174
+ const config = {
175
+ buildTarget: 'vercel-build-output-api',
176
+ dirs: ['workflows'],
177
+ workingDir: testDir,
178
+ stepsBundlePath: '',
179
+ workflowsBundlePath: '',
180
+ watch: false,
181
+ externalPackages: [],
182
+ };
183
+ const builder = new VercelBuildOutputAPIBuilder(config);
184
+ const createBuildOutputConfig = builder.createBuildOutputConfig.bind(builder);
185
+ const outputDir = join(testDir, '.vercel/output');
186
+ await mkdir(outputDir, { recursive: true });
187
+ await createBuildOutputConfig(outputDir);
188
+ const configPath = join(outputDir, 'config.json');
189
+ const configContent = await readFile(configPath, 'utf-8');
190
+ const config_parsed = JSON.parse(configContent);
191
+ expect(config_parsed.version).toBe(3);
192
+ expect(config_parsed.routes).toBeDefined();
193
+ expect(config_parsed.routes).toHaveLength(1);
194
+ expect(config_parsed.routes[0].src).toBe('^\\/\\.well-known\\/workflow\\/v1\\/webhook\\/([^\\/]+)$');
195
+ expect(config_parsed.routes[0].dest).toBe('/.well-known/workflow/v1/webhook/[token]');
196
+ });
197
+ });
198
+ });
199
+ //# sourceMappingURL=webhook-route.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-route.test.js","sourceRoot":"","sources":["../../../src/lib/builders/webhook-route.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export declare const LOGGING_CONFIG: {
2
+ JSON_MODE: boolean;
3
+ VERBOSE_MODE: boolean;
4
+ };
5
+ export declare const setJsonMode: (value: boolean) => void;
6
+ export declare const setVerboseMode: (value: boolean) => void;
7
+ /**
8
+ * This Logger should be unified with `core/src/logger.ts`. The main difference
9
+ * is that the CLI logger has internal handling on JSON/VERBOSE modes, but
10
+ * does not implement per-module logging and debug levels.
11
+ *
12
+ * There are four modes of operation:
13
+ * - Regular (both JSON and VERBOSE modes are off)
14
+ * - JSON mode (JSON mode is on, VERBOSE mode is off)
15
+ * - verbose mode (JSON mode is off, VERBOSE mode is on)
16
+ * - verbose JSON mode (JSON and VERBOSE modes are on)
17
+ *
18
+ * Generally, we want to hide debug logs unless verbose mode is on,
19
+ * and during JSON mode, we want to ensure no logs end up in stdout,
20
+ * because we assume the user might be piping the output to a JSON parser.
21
+ * However, during verbose JSON mode, we want to keep debug information
22
+ * without breaking the JSON output, so we redirect all logs to stderr.
23
+ */
24
+ declare class Logger {
25
+ constructor();
26
+ shouldLogToStderr: () => boolean;
27
+ shouldSkipDebugLogs: () => boolean;
28
+ private logPlain;
29
+ private logDebug;
30
+ private logWarn;
31
+ private logError;
32
+ log: (...args: any[]) => void;
33
+ info: (...args: any[]) => void;
34
+ success: (...args: any[]) => void;
35
+ debug: (...args: any[]) => void;
36
+ warn: (...args: any[]) => void;
37
+ error: (...args: any[]) => void;
38
+ showBox: (color: "yellow" | "green" | "white", ...lines: (string | undefined)[]) => void;
39
+ }
40
+ export declare const logger: Logger;
41
+ export {};
42
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/lib/config/log.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,SAEzC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,SAE5C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,cAAM,MAAM;;IAGV,iBAAiB,gBAEf;IAEF,mBAAmB,gBAEjB;IAEF,OAAO,CAAC,QAAQ,CAMd;IAEF,OAAO,CAAC,QAAQ,CASd;IAEF,OAAO,CAAC,OAAO,CAMb;IAEF,OAAO,CAAC,QAAQ,CAEd;IAEF,GAAG,GAAI,GAAG,MAAM,GAAG,EAAE,UAEnB;IAEF,IAAI,GAAI,GAAG,MAAM,GAAG,EAAE,UAEpB;IAEF,OAAO,GAAI,GAAG,MAAM,GAAG,EAAE,UAEvB;IAEF,KAAK,GAAI,GAAG,MAAM,GAAG,EAAE,UAErB;IAEF,IAAI,GAAI,GAAG,MAAM,GAAG,EAAE,UAEpB;IAEF,KAAK,GAAI,GAAG,MAAM,GAAG,EAAE,UAErB;IAEF,OAAO,GACL,OAAO,QAAQ,GAAG,OAAO,GAAG,OAAO,EACnC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,UAWhC;CACH;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}