@workflow/cli 4.0.1-beta.6 → 4.0.1-beta.8

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 (56) hide show
  1. package/LICENSE.md +201 -21
  2. package/dist/commands/build.d.ts.map +1 -1
  3. package/dist/commands/build.js +1 -2
  4. package/dist/commands/build.js.map +1 -1
  5. package/dist/commands/inspect.d.ts.map +1 -1
  6. package/dist/commands/inspect.js +21 -4
  7. package/dist/commands/inspect.js.map +1 -1
  8. package/dist/lib/config/types.d.ts +3 -15
  9. package/dist/lib/config/types.d.ts.map +1 -1
  10. package/dist/lib/config/types.js +1 -8
  11. package/dist/lib/config/types.js.map +1 -1
  12. package/dist/lib/inspect/output.d.ts +1 -0
  13. package/dist/lib/inspect/output.d.ts.map +1 -1
  14. package/dist/lib/inspect/output.js +105 -1
  15. package/dist/lib/inspect/output.js.map +1 -1
  16. package/package.json +12 -14
  17. package/dist/lib/builders/apply-swc-transform.d.ts +0 -24
  18. package/dist/lib/builders/apply-swc-transform.d.ts.map +0 -1
  19. package/dist/lib/builders/apply-swc-transform.js +0 -38
  20. package/dist/lib/builders/apply-swc-transform.js.map +0 -1
  21. package/dist/lib/builders/base-builder.d.ts +0 -45
  22. package/dist/lib/builders/base-builder.d.ts.map +0 -1
  23. package/dist/lib/builders/base-builder.js +0 -466
  24. package/dist/lib/builders/base-builder.js.map +0 -1
  25. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts +0 -11
  26. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts.map +0 -1
  27. package/dist/lib/builders/discover-entries-esbuild-plugin.js +0 -84
  28. package/dist/lib/builders/discover-entries-esbuild-plugin.js.map +0 -1
  29. package/dist/lib/builders/next-build.d.ts +0 -11
  30. package/dist/lib/builders/next-build.d.ts.map +0 -1
  31. package/dist/lib/builders/next-build.js +0 -331
  32. package/dist/lib/builders/next-build.js.map +0 -1
  33. package/dist/lib/builders/node-module-esbuild-plugin.d.ts +0 -3
  34. package/dist/lib/builders/node-module-esbuild-plugin.d.ts.map +0 -1
  35. package/dist/lib/builders/node-module-esbuild-plugin.js +0 -24
  36. package/dist/lib/builders/node-module-esbuild-plugin.js.map +0 -1
  37. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts +0 -2
  38. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts.map +0 -1
  39. package/dist/lib/builders/node-module-esbuild-plugin.test.js +0 -128
  40. package/dist/lib/builders/node-module-esbuild-plugin.test.js.map +0 -1
  41. package/dist/lib/builders/standalone.d.ts +0 -8
  42. package/dist/lib/builders/standalone.d.ts.map +0 -1
  43. package/dist/lib/builders/standalone.js +0 -52
  44. package/dist/lib/builders/standalone.js.map +0 -1
  45. package/dist/lib/builders/swc-esbuild-plugin.d.ts +0 -12
  46. package/dist/lib/builders/swc-esbuild-plugin.d.ts.map +0 -1
  47. package/dist/lib/builders/swc-esbuild-plugin.js +0 -134
  48. package/dist/lib/builders/swc-esbuild-plugin.js.map +0 -1
  49. package/dist/lib/builders/vercel-build-output-api.d.ts +0 -9
  50. package/dist/lib/builders/vercel-build-output-api.d.ts.map +0 -1
  51. package/dist/lib/builders/vercel-build-output-api.js +0 -138
  52. package/dist/lib/builders/vercel-build-output-api.js.map +0 -1
  53. package/dist/lib/builders/webhook-route.test.d.ts +0 -2
  54. package/dist/lib/builders/webhook-route.test.d.ts.map +0 -1
  55. package/dist/lib/builders/webhook-route.test.js +0 -206
  56. package/dist/lib/builders/webhook-route.test.js.map +0 -1
@@ -1,331 +0,0 @@
1
- import { constants } from 'node:fs';
2
- import { access, mkdir, stat, writeFile } from 'node:fs/promises';
3
- import { extname, join, resolve } from 'node:path';
4
- import Watchpack from 'watchpack';
5
- import { BaseBuilder } from './base-builder.js';
6
- export class NextBuilder extends BaseBuilder {
7
- async build() {
8
- const outputDir = await this.findAppDirectory();
9
- const workflowGeneratedDir = join(outputDir, '.well-known/workflow/v1');
10
- // Ensure output directories exist
11
- await mkdir(workflowGeneratedDir, { recursive: true });
12
- // ignore the generated assets
13
- await writeFile(join(workflowGeneratedDir, '.gitignore'), '*');
14
- const inputFiles = await this.getInputFiles();
15
- const tsConfig = await this.getTsConfigOptions();
16
- const options = {
17
- inputFiles,
18
- workflowGeneratedDir,
19
- tsBaseUrl: tsConfig.baseUrl,
20
- tsPaths: tsConfig.paths,
21
- };
22
- const stepsBuildContext = await this.buildStepsFunction(options);
23
- const workflowsBundle = await this.buildWorkflowsFunction(options);
24
- await this.buildWebhookRoute({ workflowGeneratedDir });
25
- await this.writeFunctionsConfig(outputDir);
26
- if (this.config.watch) {
27
- if (!stepsBuildContext) {
28
- throw new Error('Invariant: expected steps build context in watch mode');
29
- }
30
- if (!workflowsBundle) {
31
- throw new Error('Invariant: expected workflows bundle in watch mode');
32
- }
33
- let stepsCtx = stepsBuildContext;
34
- let workflowsCtx = workflowsBundle;
35
- const normalizePath = (pathname) => pathname.replace(/\\/g, '/');
36
- const knownFiles = new Set();
37
- let previousTimeInfo = new Map();
38
- const watchableExtensions = new Set([
39
- '.js',
40
- '.jsx',
41
- '.ts',
42
- '.tsx',
43
- '.mts',
44
- '.cjs',
45
- '.mjs',
46
- ]);
47
- const ignoredPathFragments = [
48
- '/.git/',
49
- '/node_modules/',
50
- '/.next/',
51
- '/.turbo/',
52
- '/.vercel/',
53
- '/dist/',
54
- '/build/',
55
- '/out/',
56
- '/.cache/',
57
- '/.yarn/',
58
- '/.pnpm-store/',
59
- '/.parcel-cache/',
60
- '/.well-known/workflow/',
61
- ];
62
- const normalizedGeneratedDir = workflowGeneratedDir.replace(/\\/g, '/');
63
- ignoredPathFragments.push(normalizedGeneratedDir);
64
- // There is a node.js bug on MacOS which causes closing file watchers to be really slow.
65
- // This limits the number of watchers to mitigate the issue.
66
- // https://github.com/nodejs/node/issues/29949
67
- process.env.WATCHPACK_WATCHER_LIMIT =
68
- process.platform === 'darwin' ? '20' : undefined;
69
- const watcher = new Watchpack({
70
- // Watchpack default is 200ms which adds 200ms of dead time on bootup.
71
- aggregateTimeout: 5,
72
- ignored: (pathname) => {
73
- const normalizedPath = pathname.replace(/\\/g, '/');
74
- const extension = extname(normalizedPath);
75
- if (extension && !watchableExtensions.has(extension)) {
76
- return true;
77
- }
78
- if (normalizedPath.startsWith(normalizedGeneratedDir)) {
79
- return true;
80
- }
81
- for (const fragment of ignoredPathFragments) {
82
- if (normalizedPath.includes(fragment)) {
83
- return true;
84
- }
85
- }
86
- return false;
87
- },
88
- });
89
- const readTimeInfoEntries = () => {
90
- const rawEntries = watcher.getTimeInfoEntries();
91
- const normalizedEntries = new Map();
92
- for (const [path, info] of rawEntries) {
93
- normalizedEntries.set(normalizePath(path), info);
94
- }
95
- return normalizedEntries;
96
- };
97
- let rebuildQueue = Promise.resolve();
98
- const enqueue = (task) => {
99
- rebuildQueue = rebuildQueue.then(task).catch((error) => {
100
- console.error('Failed to process file change', error);
101
- });
102
- return rebuildQueue;
103
- };
104
- const fullRebuild = async () => {
105
- const newInputFiles = await this.getInputFiles();
106
- options.inputFiles = newInputFiles;
107
- await stepsCtx.dispose();
108
- const newStepsCtx = await this.buildStepsFunction(options);
109
- if (!newStepsCtx) {
110
- throw new Error('Invariant: expected steps build context after rebuild');
111
- }
112
- stepsCtx = newStepsCtx;
113
- await workflowsCtx.interimBundleCtx.dispose();
114
- const newWorkflowsCtx = await this.buildWorkflowsFunction(options);
115
- if (!newWorkflowsCtx) {
116
- throw new Error('Invariant: expected workflows bundle context after rebuild');
117
- }
118
- workflowsCtx = newWorkflowsCtx;
119
- };
120
- const logBuildMessages = (result, label) => {
121
- const logByType = (messages, method) => {
122
- if (!messages || messages.length === 0) {
123
- return;
124
- }
125
- const descriptor = method === 'error' ? 'errors' : 'warnings';
126
- console[method](`${descriptor} while rebuilding ${label}`);
127
- for (const message of messages) {
128
- console[method](message);
129
- }
130
- };
131
- logByType(result.errors, 'error');
132
- logByType(result.warnings, 'warn');
133
- };
134
- const rebuildExistingFiles = async () => {
135
- const rebuiltStepStart = Date.now();
136
- const stepsResult = await stepsCtx.rebuild();
137
- logBuildMessages(stepsResult, 'steps bundle');
138
- console.log('Rebuilt steps bundle', `${Date.now() - rebuiltStepStart}ms`);
139
- const rebuiltWorkflowStart = Date.now();
140
- const workflowResult = await workflowsCtx.interimBundleCtx.rebuild();
141
- logBuildMessages(workflowResult, 'workflows bundle');
142
- if (!workflowResult.outputFiles ||
143
- workflowResult.outputFiles.length === 0) {
144
- console.error('No output generated while rebuilding workflows bundle');
145
- return;
146
- }
147
- await workflowsCtx.bundleFinal(workflowResult.outputFiles[0].text);
148
- console.log('Rebuilt workflow bundle', `${Date.now() - rebuiltWorkflowStart}ms`);
149
- };
150
- const isWatchableFile = (path) => watchableExtensions.has(extname(path));
151
- const getComparableTimestamp = (entry) => entry.timestamp ?? entry.safeTime;
152
- const findRemovedFiles = (currentEntries, previousEntries) => {
153
- const removed = [];
154
- for (const path of previousEntries.keys()) {
155
- if (!currentEntries.has(path) && isWatchableFile(path)) {
156
- removed.push(path);
157
- }
158
- }
159
- return removed;
160
- };
161
- const findAddedAndModifiedFiles = (currentEntries, previousEntries) => {
162
- const added = [];
163
- const modified = [];
164
- for (const [path, info] of currentEntries) {
165
- if (!isWatchableFile(path)) {
166
- continue;
167
- }
168
- const previous = previousEntries.get(path);
169
- if (!previous) {
170
- added.push(path);
171
- continue;
172
- }
173
- if (getComparableTimestamp(info) !== getComparableTimestamp(previous)) {
174
- modified.push(path);
175
- }
176
- }
177
- return { added, modified };
178
- };
179
- const determineFileChanges = (currentEntries, previousEntries) => {
180
- const removedFiles = findRemovedFiles(currentEntries, previousEntries);
181
- const { added, modified } = findAddedAndModifiedFiles(currentEntries, previousEntries);
182
- return {
183
- addedFiles: added,
184
- modifiedFiles: modified,
185
- removedFiles,
186
- };
187
- };
188
- let isInitial = true;
189
- watcher.on('aggregated', () => {
190
- const currentEntries = readTimeInfoEntries();
191
- const { addedFiles, modifiedFiles, removedFiles } = determineFileChanges(currentEntries, previousTimeInfo);
192
- previousTimeInfo = currentEntries;
193
- if (isInitial) {
194
- isInitial = false;
195
- return;
196
- }
197
- if (addedFiles.length === 0 &&
198
- modifiedFiles.length === 0 &&
199
- removedFiles.length === 0) {
200
- return;
201
- }
202
- for (const removal of removedFiles) {
203
- knownFiles.delete(removal);
204
- }
205
- for (const added of addedFiles) {
206
- knownFiles.add(added);
207
- }
208
- enqueue(async () => {
209
- if (addedFiles.length > 0 || removedFiles.length > 0) {
210
- await fullRebuild();
211
- return;
212
- }
213
- if (modifiedFiles.length > 0) {
214
- await rebuildExistingFiles();
215
- }
216
- });
217
- });
218
- watcher.watch({
219
- directories: [this.config.workingDir],
220
- startTime: 0,
221
- });
222
- }
223
- }
224
- async getInputFiles() {
225
- const inputFiles = await super.getInputFiles();
226
- return inputFiles.filter((item) =>
227
- // non-exact pattern match to try to narrow
228
- // down to just app route entrypoints, this will
229
- // not be valid when pages router support is added
230
- item.match(/[/\\](route|page|layout)\./));
231
- }
232
- async writeFunctionsConfig(outputDir) {
233
- // we don't run this in development mode as it's not needed
234
- if (process.env.NODE_ENV === 'development') {
235
- return;
236
- }
237
- const generatedConfig = {
238
- version: '0',
239
- steps: {
240
- experimentalTriggers: [
241
- {
242
- type: 'queue/v1beta',
243
- topic: '__wkf_step_*',
244
- consumer: 'default',
245
- maxDeliveries: 64,
246
- retryAfterSeconds: 5,
247
- initialDelaySeconds: 0,
248
- },
249
- ],
250
- },
251
- workflows: {
252
- experimentalTriggers: [
253
- {
254
- type: 'queue/v1beta',
255
- topic: '__wkf_workflow_*',
256
- consumer: 'default',
257
- maxDeliveries: 64,
258
- retryAfterSeconds: 5,
259
- initialDelaySeconds: 0,
260
- },
261
- ],
262
- },
263
- };
264
- // We write this file to the generated directory for
265
- // the Next.js builder to consume
266
- await writeFile(join(outputDir, '.well-known/workflow/v1/config.json'), JSON.stringify(generatedConfig, null, 2));
267
- }
268
- async buildStepsFunction({ inputFiles, workflowGeneratedDir, tsPaths, tsBaseUrl, }) {
269
- // Create steps bundle
270
- const stepsRouteDir = join(workflowGeneratedDir, 'step');
271
- await mkdir(stepsRouteDir, { recursive: true });
272
- return await this.createStepsBundle({
273
- // If any dynamic requires are used when bundling with ESM
274
- // esbuild will create a too dynamic wrapper around require
275
- // which turbopack/webpack fail to analyze. If we externalize
276
- // correctly this shouldn't be an issue although we might want
277
- // to use cjs as alternative to avoid
278
- format: 'esm',
279
- inputFiles,
280
- outfile: join(stepsRouteDir, 'route.js'),
281
- externalizeNonSteps: true,
282
- tsBaseUrl,
283
- tsPaths,
284
- });
285
- }
286
- async buildWorkflowsFunction({ inputFiles, workflowGeneratedDir, tsPaths, tsBaseUrl, }) {
287
- const workflowsRouteDir = join(workflowGeneratedDir, 'flow');
288
- await mkdir(workflowsRouteDir, { recursive: true });
289
- return await this.createWorkflowsBundle({
290
- format: 'esm',
291
- outfile: join(workflowsRouteDir, 'route.js'),
292
- bundleFinalOutput: false,
293
- inputFiles,
294
- tsBaseUrl,
295
- tsPaths,
296
- });
297
- }
298
- async buildWebhookRoute({ workflowGeneratedDir, }) {
299
- const webhookRouteFile = join(workflowGeneratedDir, 'webhook/[token]/route.js');
300
- await this.createWebhookBundle({
301
- outfile: webhookRouteFile,
302
- bundle: false, // Next.js doesn't need bundling
303
- });
304
- }
305
- async findAppDirectory() {
306
- const appDir = resolve(this.config.workingDir, 'app');
307
- const srcAppDir = resolve(this.config.workingDir, 'src/app');
308
- try {
309
- await access(appDir, constants.F_OK);
310
- const appStats = await stat(appDir);
311
- if (!appStats.isDirectory()) {
312
- throw new Error(`Path exists but is not a directory: ${appDir}`);
313
- }
314
- return appDir;
315
- }
316
- catch {
317
- try {
318
- await access(srcAppDir, constants.F_OK);
319
- const srcAppStats = await stat(srcAppDir);
320
- if (!srcAppStats.isDirectory()) {
321
- throw new Error(`Path exists but is not a directory: ${srcAppDir}`);
322
- }
323
- return srcAppDir;
324
- }
325
- catch {
326
- throw new Error('Could not find Next.js app directory. Expected either "app" or "src/app" to exist.');
327
- }
328
- }
329
- }
330
- }
331
- //# sourceMappingURL=next-build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-build.js","sourceRoot":"","sources":["../../../src/lib/builders/next-build.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type * as esbuild from 'esbuild';
2
- export declare function createNodeModuleErrorPlugin(): esbuild.Plugin;
3
- //# sourceMappingURL=node-module-esbuild-plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-module-esbuild-plugin.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/node-module-esbuild-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,CAAC;AAIxC,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAmB5D"}
@@ -1,24 +0,0 @@
1
- import { ERROR_SLUGS } from '@workflow/errors';
2
- import builtinModules from 'builtin-modules';
3
- const nodeModulesRegex = new RegExp(`^(${builtinModules.join('|')})`);
4
- export function createNodeModuleErrorPlugin() {
5
- return {
6
- name: 'workflow-node-module-error',
7
- setup(build) {
8
- build.onResolve({ filter: nodeModulesRegex }, (args) => {
9
- // Ignore if the import is coming from a node_modules folder
10
- if (args.importer.includes('node_modules'))
11
- return null;
12
- return {
13
- path: args.path,
14
- errors: [
15
- {
16
- text: `Cannot use Node.js module "${args.path}" in workflow functions. Move this module to a step function.\n\nLearn more: https://useworkflow.dev/err/${ERROR_SLUGS.NODE_JS_MODULE_IN_WORKFLOW}`,
17
- },
18
- ],
19
- };
20
- });
21
- },
22
- };
23
- }
24
- //# sourceMappingURL=node-module-esbuild-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-module-esbuild-plugin.js","sourceRoot":"","sources":["../../../src/lib/builders/node-module-esbuild-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAG7C,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtE,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrD,4DAA4D;gBAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAExD,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,8BAA8B,IAAI,CAAC,IAAI,4GAA4G,WAAW,CAAC,0BAA0B,EAAE;yBAClM;qBACF;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=node-module-esbuild-plugin.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-module-esbuild-plugin.test.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/node-module-esbuild-plugin.test.ts"],"names":[],"mappings":""}
@@ -1,128 +0,0 @@
1
- import * as esbuild from 'esbuild';
2
- import { describe, expect, it } from 'vitest';
3
- import { createNodeModuleErrorPlugin } from './node-module-esbuild-plugin.js';
4
- describe('workflow-node-module-error plugin', () => {
5
- it('should error on fs import', async () => {
6
- const testCode = `
7
- import { readFile } from "fs";
8
- export function workflow() {
9
- return readFile("test.txt");
10
- }
11
- `;
12
- await expect(esbuild.build({
13
- stdin: {
14
- contents: testCode,
15
- resolveDir: process.cwd(),
16
- sourcefile: 'test-workflow.ts',
17
- loader: 'ts',
18
- },
19
- bundle: true,
20
- write: false,
21
- platform: 'neutral',
22
- plugins: [createNodeModuleErrorPlugin()],
23
- logLevel: 'silent',
24
- })).rejects.toThrow(/Cannot use Node\.js module "fs"/);
25
- });
26
- it('should error on path import', async () => {
27
- const testCode = `
28
- import { join } from "path";
29
- export function workflow() {
30
- return join("a", "b");
31
- }
32
- `;
33
- await expect(esbuild.build({
34
- stdin: {
35
- contents: testCode,
36
- resolveDir: process.cwd(),
37
- sourcefile: 'test-workflow.ts',
38
- loader: 'ts',
39
- },
40
- format: 'cjs',
41
- bundle: true,
42
- write: false,
43
- platform: 'neutral',
44
- plugins: [createNodeModuleErrorPlugin()],
45
- logLevel: 'silent',
46
- })).rejects.toThrow(/Cannot use Node\.js module "path"/);
47
- });
48
- it('should error on node: prefixed imports', async () => {
49
- const testCode = `
50
- import { readFile } from "node:fs";
51
- export function workflow() {
52
- return readFile;
53
- }
54
- `;
55
- await expect(esbuild.build({
56
- stdin: {
57
- contents: testCode,
58
- resolveDir: process.cwd(),
59
- sourcefile: 'test-workflow.ts',
60
- loader: 'ts',
61
- },
62
- bundle: true,
63
- write: false,
64
- platform: 'neutral',
65
- format: 'cjs',
66
- plugins: [createNodeModuleErrorPlugin()],
67
- logLevel: 'silent',
68
- })).rejects.toThrow(/Cannot use Node\.js module/);
69
- });
70
- it('should error on multiple Node.js imports', async () => {
71
- const testCode = `
72
- import { readFile } from "fs";
73
- import { join } from "path";
74
- export function workflow() {
75
- return readFile(join("a", "b"));
76
- }
77
- `;
78
- const result = esbuild.build({
79
- stdin: {
80
- contents: testCode,
81
- resolveDir: process.cwd(),
82
- sourcefile: 'test-workflow.ts',
83
- loader: 'ts',
84
- },
85
- format: 'cjs',
86
- bundle: true,
87
- write: false,
88
- platform: 'neutral',
89
- plugins: [createNodeModuleErrorPlugin()],
90
- logLevel: 'silent',
91
- });
92
- await expect(result).rejects.toThrow();
93
- // Verify we get errors for both imports
94
- try {
95
- await result;
96
- }
97
- catch (error) {
98
- expect(error.message).toMatch(/fs/);
99
- expect(error.message).toMatch(/path/);
100
- }
101
- });
102
- it('should allow non-Node.js npm package imports', async () => {
103
- const testCode = `
104
- // This should NOT error - it's not a built-in Node.js module
105
- import { someFunction } from "some-random-package";
106
- export function workflow() {
107
- return "ok";
108
- }
109
- `;
110
- // This will fail because the package doesn't exist, but it shouldn't
111
- // fail with our plugin's error message
112
- await expect(esbuild.build({
113
- stdin: {
114
- contents: testCode,
115
- resolveDir: process.cwd(),
116
- sourcefile: 'test-workflow.ts',
117
- loader: 'ts',
118
- },
119
- bundle: true,
120
- write: false,
121
- platform: 'neutral',
122
- plugins: [createNodeModuleErrorPlugin()],
123
- logLevel: 'silent',
124
- external: ['some-random-package'], // Mark as external so it doesn't fail resolution
125
- })).resolves.toBeDefined();
126
- });
127
- });
128
- //# sourceMappingURL=node-module-esbuild-plugin.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-module-esbuild-plugin.test.js","sourceRoot":"","sources":["../../../src/lib/builders/node-module-esbuild-plugin.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { BaseBuilder } from './base-builder.js';
2
- export declare class StandaloneBuilder extends BaseBuilder {
3
- build(): Promise<void>;
4
- private buildStepsBundle;
5
- private buildWorkflowsBundle;
6
- private buildWebhookFunction;
7
- }
8
- //# sourceMappingURL=standalone.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/standalone.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,iBAAkB,SAAQ,WAAW;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgBd,gBAAgB;YA8BhB,oBAAoB;YA8BpB,oBAAoB;CAkBnC"}
@@ -1,52 +0,0 @@
1
- import { mkdir } from 'node:fs/promises';
2
- import { dirname, resolve } from 'node:path';
3
- import { BaseBuilder } from './base-builder.js';
4
- export class StandaloneBuilder 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.buildWebhookFunction();
16
- await this.buildClientLibrary();
17
- }
18
- async buildStepsBundle({ inputFiles, tsPaths, tsBaseUrl, }) {
19
- console.log('Creating Vercel API steps bundle at', this.config.stepsBundlePath);
20
- const stepsBundlePath = resolve(this.config.workingDir, this.config.stepsBundlePath);
21
- // Ensure directory exists
22
- await mkdir(dirname(stepsBundlePath), { recursive: true });
23
- await this.createStepsBundle({
24
- outfile: stepsBundlePath,
25
- inputFiles,
26
- tsBaseUrl,
27
- tsPaths,
28
- });
29
- }
30
- async buildWorkflowsBundle({ inputFiles, tsPaths, tsBaseUrl, }) {
31
- console.log('Creating vercel API workflows bundle at', this.config.workflowsBundlePath);
32
- const workflowBundlePath = resolve(this.config.workingDir, this.config.workflowsBundlePath);
33
- // Ensure directory exists
34
- await mkdir(dirname(workflowBundlePath), { recursive: true });
35
- await this.createWorkflowsBundle({
36
- outfile: workflowBundlePath,
37
- inputFiles,
38
- tsBaseUrl,
39
- tsPaths,
40
- });
41
- }
42
- async buildWebhookFunction() {
43
- console.log('Creating vercel API webhook bundle at', this.config.webhookBundlePath);
44
- const webhookBundlePath = resolve(this.config.workingDir, this.config.webhookBundlePath);
45
- // Ensure directory exists
46
- await mkdir(dirname(webhookBundlePath), { recursive: true });
47
- await this.createWebhookBundle({
48
- outfile: webhookBundlePath,
49
- });
50
- }
51
- }
52
- //# sourceMappingURL=standalone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../../src/lib/builders/standalone.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,iBAAkB,SAAQ,WAAW;IAChD,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;QACzC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAElC,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;IAEO,KAAK,CAAC,oBAAoB;QAChC,OAAO,CAAC,GAAG,CACT,uCAAuC,EACvC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAC9B,CAAC;QAEF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAC9B,CAAC;QAEF,0BAA0B;QAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC7B,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { Plugin } from 'esbuild';
2
- import { type WorkflowManifest } from './apply-swc-transform.js';
3
- export interface SwcPluginOptions {
4
- mode: 'step' | 'workflow' | 'client';
5
- entriesToBundle?: string[];
6
- outdir?: string;
7
- tsPaths?: Record<string, string[]>;
8
- tsBaseUrl?: string;
9
- workflowManifest?: WorkflowManifest;
10
- }
11
- export declare function createSwcPlugin(options: SwcPluginOptions): Plugin;
12
- //# sourceMappingURL=swc-esbuild-plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAMlC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AA2BD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAsIjE"}