@workflow/cli 4.0.1-beta.1 → 4.0.1-beta.10

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 (85) hide show
  1. package/LICENSE.md +201 -21
  2. package/dist/commands/build.d.ts.map +1 -1
  3. package/dist/commands/build.js +10 -11
  4. package/dist/commands/build.js.map +1 -1
  5. package/dist/commands/cancel.d.ts +1 -0
  6. package/dist/commands/cancel.d.ts.map +1 -1
  7. package/dist/commands/dev.js +2 -2
  8. package/dist/commands/dev.js.map +1 -1
  9. package/dist/commands/init.js +1 -1
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/inspect.d.ts +1 -0
  12. package/dist/commands/inspect.d.ts.map +1 -1
  13. package/dist/commands/inspect.js +21 -4
  14. package/dist/commands/inspect.js.map +1 -1
  15. package/dist/commands/start.d.ts +1 -0
  16. package/dist/commands/start.d.ts.map +1 -1
  17. package/dist/commands/web.d.ts +26 -0
  18. package/dist/commands/web.d.ts.map +1 -0
  19. package/dist/commands/web.js +56 -0
  20. package/dist/commands/web.js.map +1 -0
  21. package/dist/lib/config/types.d.ts +3 -14
  22. package/dist/lib/config/types.d.ts.map +1 -1
  23. package/dist/lib/config/types.js +1 -8
  24. package/dist/lib/config/types.js.map +1 -1
  25. package/dist/lib/config/workflow-config.d.ts.map +1 -1
  26. package/dist/lib/config/workflow-config.js +2 -1
  27. package/dist/lib/config/workflow-config.js.map +1 -1
  28. package/dist/lib/inspect/flags.d.ts +1 -0
  29. package/dist/lib/inspect/flags.d.ts.map +1 -1
  30. package/dist/lib/inspect/flags.js +8 -0
  31. package/dist/lib/inspect/flags.js.map +1 -1
  32. package/dist/lib/inspect/output.d.ts +1 -0
  33. package/dist/lib/inspect/output.d.ts.map +1 -1
  34. package/dist/lib/inspect/output.js +105 -1
  35. package/dist/lib/inspect/output.js.map +1 -1
  36. package/dist/lib/inspect/run.d.ts.map +1 -1
  37. package/dist/lib/inspect/run.js +33 -5
  38. package/dist/lib/inspect/run.js.map +1 -1
  39. package/dist/lib/inspect/setup.js +2 -2
  40. package/dist/lib/inspect/setup.js.map +1 -1
  41. package/dist/lib/inspect/terminal-utils.js +1 -1
  42. package/dist/lib/inspect/web.d.ts.map +1 -1
  43. package/dist/lib/inspect/web.js +22 -8
  44. package/dist/lib/inspect/web.js.map +1 -1
  45. package/package.json +12 -14
  46. package/dist/lib/builders/apply-swc-transform.d.ts +0 -24
  47. package/dist/lib/builders/apply-swc-transform.d.ts.map +0 -1
  48. package/dist/lib/builders/apply-swc-transform.js +0 -38
  49. package/dist/lib/builders/apply-swc-transform.js.map +0 -1
  50. package/dist/lib/builders/base-builder.d.ts +0 -45
  51. package/dist/lib/builders/base-builder.d.ts.map +0 -1
  52. package/dist/lib/builders/base-builder.js +0 -466
  53. package/dist/lib/builders/base-builder.js.map +0 -1
  54. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts +0 -11
  55. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts.map +0 -1
  56. package/dist/lib/builders/discover-entries-esbuild-plugin.js +0 -84
  57. package/dist/lib/builders/discover-entries-esbuild-plugin.js.map +0 -1
  58. package/dist/lib/builders/next-build.d.ts +0 -11
  59. package/dist/lib/builders/next-build.d.ts.map +0 -1
  60. package/dist/lib/builders/next-build.js +0 -331
  61. package/dist/lib/builders/next-build.js.map +0 -1
  62. package/dist/lib/builders/node-module-esbuild-plugin.d.ts +0 -3
  63. package/dist/lib/builders/node-module-esbuild-plugin.d.ts.map +0 -1
  64. package/dist/lib/builders/node-module-esbuild-plugin.js +0 -24
  65. package/dist/lib/builders/node-module-esbuild-plugin.js.map +0 -1
  66. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts +0 -2
  67. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts.map +0 -1
  68. package/dist/lib/builders/node-module-esbuild-plugin.test.js +0 -128
  69. package/dist/lib/builders/node-module-esbuild-plugin.test.js.map +0 -1
  70. package/dist/lib/builders/swc-esbuild-plugin.d.ts +0 -12
  71. package/dist/lib/builders/swc-esbuild-plugin.d.ts.map +0 -1
  72. package/dist/lib/builders/swc-esbuild-plugin.js +0 -134
  73. package/dist/lib/builders/swc-esbuild-plugin.js.map +0 -1
  74. package/dist/lib/builders/vercel-build-output-api.d.ts +0 -9
  75. package/dist/lib/builders/vercel-build-output-api.d.ts.map +0 -1
  76. package/dist/lib/builders/vercel-build-output-api.js +0 -138
  77. package/dist/lib/builders/vercel-build-output-api.js.map +0 -1
  78. package/dist/lib/builders/vercel-static.d.ts +0 -7
  79. package/dist/lib/builders/vercel-static.d.ts.map +0 -1
  80. package/dist/lib/builders/vercel-static.js +0 -42
  81. package/dist/lib/builders/vercel-static.js.map +0 -1
  82. package/dist/lib/builders/webhook-route.test.d.ts +0 -2
  83. package/dist/lib/builders/webhook-route.test.d.ts.map +0 -1
  84. package/dist/lib/builders/webhook-route.test.js +0 -199
  85. package/dist/lib/builders/webhook-route.test.js.map +0 -1
@@ -1,199 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook-route.test.js","sourceRoot":"","sources":["../../../src/lib/builders/webhook-route.test.ts"],"names":[],"mappings":"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"}