@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.
- package/LICENSE.md +201 -21
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +10 -11
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cancel.d.ts +1 -0
- package/dist/commands/cancel.d.ts.map +1 -1
- package/dist/commands/dev.js +2 -2
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/inspect.d.ts +1 -0
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +21 -4
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/web.d.ts +26 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +56 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/lib/config/types.d.ts +3 -14
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/config/types.js +1 -8
- package/dist/lib/config/types.js.map +1 -1
- package/dist/lib/config/workflow-config.d.ts.map +1 -1
- package/dist/lib/config/workflow-config.js +2 -1
- package/dist/lib/config/workflow-config.js.map +1 -1
- package/dist/lib/inspect/flags.d.ts +1 -0
- package/dist/lib/inspect/flags.d.ts.map +1 -1
- package/dist/lib/inspect/flags.js +8 -0
- package/dist/lib/inspect/flags.js.map +1 -1
- package/dist/lib/inspect/output.d.ts +1 -0
- package/dist/lib/inspect/output.d.ts.map +1 -1
- package/dist/lib/inspect/output.js +105 -1
- package/dist/lib/inspect/output.js.map +1 -1
- package/dist/lib/inspect/run.d.ts.map +1 -1
- package/dist/lib/inspect/run.js +33 -5
- package/dist/lib/inspect/run.js.map +1 -1
- package/dist/lib/inspect/setup.js +2 -2
- package/dist/lib/inspect/setup.js.map +1 -1
- package/dist/lib/inspect/terminal-utils.js +1 -1
- package/dist/lib/inspect/web.d.ts.map +1 -1
- package/dist/lib/inspect/web.js +22 -8
- package/dist/lib/inspect/web.js.map +1 -1
- package/package.json +12 -14
- package/dist/lib/builders/apply-swc-transform.d.ts +0 -24
- package/dist/lib/builders/apply-swc-transform.d.ts.map +0 -1
- package/dist/lib/builders/apply-swc-transform.js +0 -38
- package/dist/lib/builders/apply-swc-transform.js.map +0 -1
- package/dist/lib/builders/base-builder.d.ts +0 -45
- package/dist/lib/builders/base-builder.d.ts.map +0 -1
- package/dist/lib/builders/base-builder.js +0 -466
- package/dist/lib/builders/base-builder.js.map +0 -1
- package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts +0 -11
- package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts.map +0 -1
- package/dist/lib/builders/discover-entries-esbuild-plugin.js +0 -84
- package/dist/lib/builders/discover-entries-esbuild-plugin.js.map +0 -1
- package/dist/lib/builders/next-build.d.ts +0 -11
- package/dist/lib/builders/next-build.d.ts.map +0 -1
- package/dist/lib/builders/next-build.js +0 -331
- package/dist/lib/builders/next-build.js.map +0 -1
- package/dist/lib/builders/node-module-esbuild-plugin.d.ts +0 -3
- package/dist/lib/builders/node-module-esbuild-plugin.d.ts.map +0 -1
- package/dist/lib/builders/node-module-esbuild-plugin.js +0 -24
- package/dist/lib/builders/node-module-esbuild-plugin.js.map +0 -1
- package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts +0 -2
- package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts.map +0 -1
- package/dist/lib/builders/node-module-esbuild-plugin.test.js +0 -128
- package/dist/lib/builders/node-module-esbuild-plugin.test.js.map +0 -1
- package/dist/lib/builders/swc-esbuild-plugin.d.ts +0 -12
- package/dist/lib/builders/swc-esbuild-plugin.d.ts.map +0 -1
- package/dist/lib/builders/swc-esbuild-plugin.js +0 -134
- package/dist/lib/builders/swc-esbuild-plugin.js.map +0 -1
- package/dist/lib/builders/vercel-build-output-api.d.ts +0 -9
- package/dist/lib/builders/vercel-build-output-api.d.ts.map +0 -1
- package/dist/lib/builders/vercel-build-output-api.js +0 -138
- package/dist/lib/builders/vercel-build-output-api.js.map +0 -1
- package/dist/lib/builders/vercel-static.d.ts +0 -7
- package/dist/lib/builders/vercel-static.d.ts.map +0 -1
- package/dist/lib/builders/vercel-static.js +0 -42
- package/dist/lib/builders/vercel-static.js.map +0 -1
- package/dist/lib/builders/webhook-route.test.d.ts +0 -2
- package/dist/lib/builders/webhook-route.test.d.ts.map +0 -1
- package/dist/lib/builders/webhook-route.test.js +0 -199
- 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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"}
|