@workflow/cli 4.0.1-beta.5 → 4.0.1-beta.50

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 (108) hide show
  1. package/LICENSE.md +201 -21
  2. package/bin/run.js +21 -0
  3. package/dist/commands/build.d.ts.map +1 -1
  4. package/dist/commands/build.js +1 -2
  5. package/dist/commands/build.js.map +1 -1
  6. package/dist/commands/cancel.d.ts +3 -0
  7. package/dist/commands/cancel.d.ts.map +1 -1
  8. package/dist/commands/cancel.js +3 -0
  9. package/dist/commands/cancel.js.map +1 -1
  10. package/dist/commands/health.d.ts +24 -0
  11. package/dist/commands/health.d.ts.map +1 -0
  12. package/dist/commands/health.js +313 -0
  13. package/dist/commands/health.js.map +1 -0
  14. package/dist/commands/inspect.d.ts +3 -0
  15. package/dist/commands/inspect.d.ts.map +1 -1
  16. package/dist/commands/inspect.js +33 -8
  17. package/dist/commands/inspect.js.map +1 -1
  18. package/dist/commands/start.d.ts +3 -0
  19. package/dist/commands/start.d.ts.map +1 -1
  20. package/dist/commands/start.js +3 -0
  21. package/dist/commands/start.js.map +1 -1
  22. package/dist/commands/web.d.ts +3 -0
  23. package/dist/commands/web.d.ts.map +1 -1
  24. package/dist/commands/web.js +4 -2
  25. package/dist/commands/web.js.map +1 -1
  26. package/dist/lib/config/types.d.ts +4 -15
  27. package/dist/lib/config/types.d.ts.map +1 -1
  28. package/dist/lib/config/types.js +1 -8
  29. package/dist/lib/config/types.js.map +1 -1
  30. package/dist/lib/config/workflow-config.d.ts.map +1 -1
  31. package/dist/lib/config/workflow-config.js +11 -1
  32. package/dist/lib/config/workflow-config.js.map +1 -1
  33. package/dist/lib/inspect/env.d.ts +4 -2
  34. package/dist/lib/inspect/env.d.ts.map +1 -1
  35. package/dist/lib/inspect/env.js +76 -32
  36. package/dist/lib/inspect/env.js.map +1 -1
  37. package/dist/lib/inspect/flags.d.ts +3 -0
  38. package/dist/lib/inspect/flags.d.ts.map +1 -1
  39. package/dist/lib/inspect/flags.js +29 -4
  40. package/dist/lib/inspect/flags.js.map +1 -1
  41. package/dist/lib/inspect/output.d.ts +54 -7
  42. package/dist/lib/inspect/output.d.ts.map +1 -1
  43. package/dist/lib/inspect/output.js +159 -141
  44. package/dist/lib/inspect/output.js.map +1 -1
  45. package/dist/lib/inspect/pagination.d.ts +4 -0
  46. package/dist/lib/inspect/pagination.d.ts.map +1 -1
  47. package/dist/lib/inspect/pagination.js +11 -5
  48. package/dist/lib/inspect/pagination.js.map +1 -1
  49. package/dist/lib/inspect/setup.d.ts +7 -1
  50. package/dist/lib/inspect/setup.d.ts.map +1 -1
  51. package/dist/lib/inspect/setup.js +53 -7
  52. package/dist/lib/inspect/setup.js.map +1 -1
  53. package/dist/lib/inspect/stream.d.ts +2 -2
  54. package/dist/lib/inspect/stream.d.ts.map +1 -1
  55. package/dist/lib/inspect/stream.js +8 -5
  56. package/dist/lib/inspect/stream.js.map +1 -1
  57. package/dist/lib/inspect/terminal-utils.d.ts.map +1 -1
  58. package/dist/lib/inspect/terminal-utils.js +0 -1
  59. package/dist/lib/inspect/terminal-utils.js.map +1 -1
  60. package/dist/lib/inspect/web.d.ts +6 -4
  61. package/dist/lib/inspect/web.d.ts.map +1 -1
  62. package/dist/lib/inspect/web.js +50 -70
  63. package/dist/lib/inspect/web.js.map +1 -1
  64. package/dist/lib/update-check.d.ts +17 -0
  65. package/dist/lib/update-check.d.ts.map +1 -0
  66. package/dist/lib/update-check.js +215 -0
  67. package/dist/lib/update-check.js.map +1 -0
  68. package/package.json +29 -30
  69. package/dist/lib/builders/apply-swc-transform.d.ts +0 -24
  70. package/dist/lib/builders/apply-swc-transform.d.ts.map +0 -1
  71. package/dist/lib/builders/apply-swc-transform.js +0 -38
  72. package/dist/lib/builders/apply-swc-transform.js.map +0 -1
  73. package/dist/lib/builders/base-builder.d.ts +0 -45
  74. package/dist/lib/builders/base-builder.d.ts.map +0 -1
  75. package/dist/lib/builders/base-builder.js +0 -466
  76. package/dist/lib/builders/base-builder.js.map +0 -1
  77. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts +0 -11
  78. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts.map +0 -1
  79. package/dist/lib/builders/discover-entries-esbuild-plugin.js +0 -84
  80. package/dist/lib/builders/discover-entries-esbuild-plugin.js.map +0 -1
  81. package/dist/lib/builders/next-build.d.ts +0 -11
  82. package/dist/lib/builders/next-build.d.ts.map +0 -1
  83. package/dist/lib/builders/next-build.js +0 -331
  84. package/dist/lib/builders/next-build.js.map +0 -1
  85. package/dist/lib/builders/node-module-esbuild-plugin.d.ts +0 -3
  86. package/dist/lib/builders/node-module-esbuild-plugin.d.ts.map +0 -1
  87. package/dist/lib/builders/node-module-esbuild-plugin.js +0 -24
  88. package/dist/lib/builders/node-module-esbuild-plugin.js.map +0 -1
  89. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts +0 -2
  90. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts.map +0 -1
  91. package/dist/lib/builders/node-module-esbuild-plugin.test.js +0 -128
  92. package/dist/lib/builders/node-module-esbuild-plugin.test.js.map +0 -1
  93. package/dist/lib/builders/standalone.d.ts +0 -8
  94. package/dist/lib/builders/standalone.d.ts.map +0 -1
  95. package/dist/lib/builders/standalone.js +0 -52
  96. package/dist/lib/builders/standalone.js.map +0 -1
  97. package/dist/lib/builders/swc-esbuild-plugin.d.ts +0 -12
  98. package/dist/lib/builders/swc-esbuild-plugin.d.ts.map +0 -1
  99. package/dist/lib/builders/swc-esbuild-plugin.js +0 -134
  100. package/dist/lib/builders/swc-esbuild-plugin.js.map +0 -1
  101. package/dist/lib/builders/vercel-build-output-api.d.ts +0 -9
  102. package/dist/lib/builders/vercel-build-output-api.d.ts.map +0 -1
  103. package/dist/lib/builders/vercel-build-output-api.js +0 -138
  104. package/dist/lib/builders/vercel-build-output-api.js.map +0 -1
  105. package/dist/lib/builders/webhook-route.test.d.ts +0 -2
  106. package/dist/lib/builders/webhook-route.test.d.ts.map +0 -1
  107. package/dist/lib/builders/webhook-route.test.js +0 -206
  108. package/dist/lib/builders/webhook-route.test.js.map +0 -1
@@ -0,0 +1,215 @@
1
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ import { logger } from './config/log.js';
4
+ // Constants
5
+ const PACKAGE_NAME = '@workflow/cli';
6
+ const NPM_REGISTRY = 'https://registry.npmjs.org';
7
+ const CACHE_DURATION_MS = 3 * 24 * 60 * 60 * 1000; // 3 days
8
+ const REQUEST_TIMEOUT_MS = 5000;
9
+ /**
10
+ * Compare two semver versions including pre-release tags
11
+ * Returns true if version a is greater than version b
12
+ */
13
+ function compareVersions(a, b) {
14
+ const parseVersion = (v) => {
15
+ const [base, prerelease] = v.split('-');
16
+ const parts = base.split('.').map(Number);
17
+ return { parts, prerelease };
18
+ };
19
+ const comparePrerelease = (pre1, pre2) => {
20
+ if (!pre1 && !pre2)
21
+ return 0; // both no prerelease
22
+ if (!pre1 && pre2)
23
+ return 1; // no prerelease > prerelease
24
+ if (pre1 && !pre2)
25
+ return -1; // prerelease < no prerelease
26
+ if (typeof pre1 !== 'string' || typeof pre2 !== 'string')
27
+ return 0;
28
+ // Both have prerelease - compare them properly
29
+ const parts1 = pre1.split('.');
30
+ const parts2 = pre2.split('.');
31
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
32
+ const p1 = parts1[i];
33
+ const p2 = parts2[i];
34
+ // If one side is missing, it's less than the other
35
+ if (p1 === undefined)
36
+ return -1;
37
+ if (p2 === undefined)
38
+ return 1;
39
+ // Try to parse as numbers for numeric comparison
40
+ const num1 = Number(p1);
41
+ const num2 = Number(p2);
42
+ const isNum1 = !Number.isNaN(num1) && p1 !== '';
43
+ const isNum2 = !Number.isNaN(num2) && p2 !== '';
44
+ if (isNum1 && isNum2) {
45
+ // Both are numbers - compare numerically
46
+ if (num1 > num2)
47
+ return 1;
48
+ if (num1 < num2)
49
+ return -1;
50
+ }
51
+ else {
52
+ // At least one is non-numeric - compare as strings
53
+ if (p1 > p2)
54
+ return 1;
55
+ if (p1 < p2)
56
+ return -1;
57
+ }
58
+ }
59
+ return 0; // equal
60
+ };
61
+ const versionA = parseVersion(a);
62
+ const versionB = parseVersion(b);
63
+ // Compare major, minor, patch
64
+ for (let i = 0; i < 3; i++) {
65
+ if (versionA.parts[i] > versionB.parts[i])
66
+ return true;
67
+ if (versionA.parts[i] < versionB.parts[i])
68
+ return false;
69
+ }
70
+ // If versions are equal up to patch level, check prerelease
71
+ // No prerelease is considered greater than prerelease
72
+ const preResult = comparePrerelease(versionA.prerelease, versionB.prerelease);
73
+ return preResult > 0;
74
+ }
75
+ /**
76
+ * Fetch the latest version from npm registry
77
+ */
78
+ async function fetchLatestVersion(currentVersion) {
79
+ try {
80
+ const controller = new AbortController();
81
+ const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
82
+ const url = `${NPM_REGISTRY}/${PACKAGE_NAME}`;
83
+ logger.debug(`Checking for updates at ${url}`);
84
+ const response = await fetch(url, {
85
+ headers: {
86
+ Accept: 'application/json',
87
+ },
88
+ signal: controller.signal,
89
+ });
90
+ clearTimeout(timeoutId);
91
+ if (!response.ok) {
92
+ logger.debug(`Failed to fetch package info: ${response.status} ${response.statusText}`);
93
+ return null;
94
+ }
95
+ const data = (await response.json());
96
+ // Always use 'latest' tag - even beta versions are published as latest
97
+ const latestVersion = data['dist-tags']['latest'];
98
+ if (!latestVersion) {
99
+ logger.debug('No latest version found in registry');
100
+ return null;
101
+ }
102
+ logger.debug(`Current: ${currentVersion}, Latest: ${latestVersion}`);
103
+ return latestVersion;
104
+ }
105
+ catch (error) {
106
+ if (error instanceof Error && error.name === 'AbortError') {
107
+ logger.debug('Version check timed out after 5 seconds');
108
+ }
109
+ else {
110
+ logger.debug(`Error fetching version: ${error}`);
111
+ }
112
+ return null;
113
+ }
114
+ }
115
+ /**
116
+ * Check if there's a new version available
117
+ * Returns the current and latest version if an update is available
118
+ */
119
+ export async function checkForUpdate(currentVersion) {
120
+ const latestVersion = await fetchLatestVersion(currentVersion);
121
+ if (!latestVersion) {
122
+ return {
123
+ currentVersion,
124
+ needsUpdate: false,
125
+ };
126
+ }
127
+ const needsUpdate = compareVersions(latestVersion, currentVersion);
128
+ return {
129
+ currentVersion,
130
+ latestVersion,
131
+ needsUpdate,
132
+ };
133
+ }
134
+ /**
135
+ * Read cached version data from file
136
+ */
137
+ async function readCache(cacheFile) {
138
+ try {
139
+ const content = await readFile(cacheFile, 'utf-8');
140
+ const data = JSON.parse(content);
141
+ return data;
142
+ }
143
+ catch {
144
+ return null;
145
+ }
146
+ }
147
+ /**
148
+ * Write version data to cache file
149
+ */
150
+ async function writeCache(cacheFile, data) {
151
+ try {
152
+ await mkdir(dirname(cacheFile), { recursive: true });
153
+ await writeFile(cacheFile, JSON.stringify(data, null, 2));
154
+ }
155
+ catch (error) {
156
+ logger.debug(`Failed to write version cache: ${error}`);
157
+ }
158
+ }
159
+ /**
160
+ * Check if cache is still valid
161
+ */
162
+ async function isCacheValid(cacheFile, currentVersion) {
163
+ try {
164
+ const cached = await readCache(cacheFile);
165
+ if (!cached)
166
+ return false;
167
+ // Cache is invalid if version changed
168
+ if (cached.currentVersion !== currentVersion) {
169
+ logger.debug('Version changed, cache invalidated');
170
+ return false;
171
+ }
172
+ // Check if cache is still fresh
173
+ const now = Date.now();
174
+ const age = now - cached.timestamp;
175
+ const isValid = age < CACHE_DURATION_MS;
176
+ if (!isValid) {
177
+ logger.debug(`Cache expired (age: ${Math.floor(age / 1000 / 60)} minutes)`);
178
+ }
179
+ return isValid;
180
+ }
181
+ catch {
182
+ return false;
183
+ }
184
+ }
185
+ /**
186
+ * Check for updates with filesystem caching
187
+ * Cache is valid unless the local version changes
188
+ */
189
+ export async function checkForUpdateCached(currentVersion, cacheFile) {
190
+ // Check if cache is valid
191
+ if (await isCacheValid(cacheFile, currentVersion)) {
192
+ logger.debug('Using cached version check result');
193
+ const cached = await readCache(cacheFile);
194
+ if (cached) {
195
+ return {
196
+ currentVersion: cached.currentVersion,
197
+ latestVersion: cached.latestVersion,
198
+ needsUpdate: compareVersions(cached.latestVersion, cached.currentVersion),
199
+ };
200
+ }
201
+ }
202
+ // Perform fresh check
203
+ logger.debug('Performing fresh version check');
204
+ const result = await checkForUpdate(currentVersion);
205
+ // Cache the result if we got a latest version
206
+ if (result.latestVersion) {
207
+ await writeCache(cacheFile, {
208
+ currentVersion: result.currentVersion,
209
+ latestVersion: result.latestVersion,
210
+ timestamp: Date.now(),
211
+ });
212
+ }
213
+ return result;
214
+ }
215
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/cli",
3
- "version": "4.0.1-beta.5",
3
+ "version": "4.0.1-beta.50",
4
4
  "description": "Command-line interface for Workflow DevKit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "publishConfig": {
15
15
  "access": "public"
16
16
  },
17
- "license": "MIT",
17
+ "license": "Apache-2.0",
18
18
  "repository": {
19
19
  "type": "git",
20
20
  "url": "https://github.com/vercel/workflow.git",
@@ -30,45 +30,44 @@
30
30
  "topicSeparator": " "
31
31
  },
32
32
  "devDependencies": {
33
- "@types/node": "24.6.2",
34
- "@types/watchpack": "2.4.4",
33
+ "@types/node": "22.19.0",
35
34
  "@workflow/tsconfig": "4.0.1-beta.0"
36
35
  },
37
36
  "dependencies": {
38
- "@oclif/core": "^4.0.0",
39
- "@oclif/plugin-help": "^6.0.0",
40
- "@swc/core": "1.11.24",
41
- "boxen": "^8.0.1",
42
- "builtin-modules": "^5.0.0",
43
- "chalk": "^5.6.2",
44
- "chokidar": "^4.0.3",
45
- "comment-json": "4.2.5",
46
- "date-fns": "^4.1.0",
47
- "easy-table": "^1.2.0",
37
+ "@oclif/core": "4.0.0",
38
+ "@oclif/plugin-help": "6.2.31",
39
+ "@swc/core": "1.15.3",
40
+ "boxen": "8.0.1",
41
+ "builtin-modules": "5.0.0",
42
+ "chalk": "5.6.2",
43
+ "chokidar": "4.0.3",
44
+ "date-fns": "4.1.0",
45
+ "dotenv": "^16.4.7",
46
+ "easy-table": "1.2.0",
48
47
  "enhanced-resolve": "5.18.2",
49
- "esbuild": "^0.25.6",
48
+ "esbuild": "^0.25.11",
50
49
  "find-up": "7.0.0",
51
- "mixpart": "^0.0.4",
52
- "open": "^10.2.0",
53
- "ora": "^8.2.0",
54
- "terminal-link": "^5.0.0",
55
- "tinyglobby": "^0.2.14",
56
- "watchpack": "2.4.4",
57
- "xdg-app-paths": "^5.1.0",
50
+ "mixpart": "0.0.4",
51
+ "open": "10.2.0",
52
+ "ora": "8.2.0",
53
+ "terminal-link": "5.0.0",
54
+ "tinyglobby": "0.2.14",
55
+ "xdg-app-paths": "5.1.0",
58
56
  "zod": "4.1.11",
59
- "@workflow/swc-plugin": "4.0.1-beta.1",
60
- "@workflow/errors": "4.0.1-beta.1",
61
- "@workflow/core": "4.0.1-beta.4",
62
- "@workflow/web": "4.0.1-beta.5",
63
- "@workflow/world-local": "4.0.1-beta.2",
64
- "@workflow/world-vercel": "4.0.1-beta.3",
65
- "@workflow/world": "4.0.1-beta.2"
57
+ "@workflow/builders": "4.0.1-beta.41",
58
+ "@workflow/swc-plugin": "4.0.1-beta.14",
59
+ "@workflow/utils": "4.0.1-beta.10",
60
+ "@workflow/errors": "4.0.1-beta.13",
61
+ "@workflow/core": "4.0.1-beta.41",
62
+ "@workflow/web": "4.0.1-beta.30",
63
+ "@workflow/world": "4.0.1-beta.13",
64
+ "@workflow/world-local": "4.0.1-beta.27",
65
+ "@workflow/world-vercel": "4.0.1-beta.28"
66
66
  },
67
67
  "scripts": {
68
68
  "build": "tsc && chmod +x bin/run.js",
69
69
  "clean": "tsc --build --clean && rm -r dist ||:",
70
70
  "dev": "tsc --watch",
71
- "test": "vitest run src",
72
71
  "typecheck": "tsc --noEmit"
73
72
  }
74
73
  }
@@ -1,24 +0,0 @@
1
- export type WorkflowManifest = {
2
- steps?: {
3
- [relativeFileName: string]: {
4
- [functionName: string]: {
5
- stepId: string;
6
- };
7
- };
8
- };
9
- workflows?: {
10
- [relativeFileName: string]: {
11
- [functionName: string]: {
12
- workflowId: string;
13
- };
14
- };
15
- };
16
- };
17
- export declare function applySwcTransform(filename: string, source: string, mode: 'workflow' | 'step' | 'client' | false, jscConfig?: {
18
- paths?: Record<string, string[]>;
19
- baseUrl?: string;
20
- }): Promise<{
21
- code: string;
22
- workflowManifest: WorkflowManifest;
23
- }>;
24
- //# sourceMappingURL=apply-swc-transform.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-swc-transform.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/apply-swc-transform.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE;QACN,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;IACF,SAAS,CAAC,EAAE;QACV,CAAC,gBAAgB,EAAE,MAAM,GAAG;YAC1B,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,UAAU,EAAE,MAAM,CAAC;aACpB,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,EAC5C,SAAS,CAAC,EAAE;IACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC,CAyCD"}
@@ -1,38 +0,0 @@
1
- import { transform } from '@swc/core';
2
- import { createRequire } from 'module';
3
- const require = createRequire(import.meta.filename);
4
- export async function applySwcTransform(filename, source, mode, jscConfig) {
5
- // Determine if this is a TypeScript file
6
- const isTypeScript = filename.endsWith('.ts') || filename.endsWith('.tsx');
7
- const isTsx = filename.endsWith('.tsx');
8
- // Transform with SWC to support syntax esbuild doesn't
9
- const result = await transform(source, {
10
- filename,
11
- swcrc: false,
12
- jsc: {
13
- parser: {
14
- syntax: isTypeScript ? 'typescript' : 'ecmascript',
15
- tsx: isTsx,
16
- },
17
- target: 'es2022',
18
- experimental: mode
19
- ? {
20
- plugins: [[require.resolve('@workflow/swc-plugin'), { mode }]],
21
- }
22
- : undefined,
23
- ...jscConfig,
24
- },
25
- // TODO: investigate proper source map support as they
26
- // won't even be used in Node.js by default unless we
27
- // intercept errors and apply them ourselves
28
- sourceMaps: false,
29
- minify: false,
30
- });
31
- const workflowCommentMatch = result.code.match(/\/\*\*__internal_workflows({.*?})\*\//s);
32
- const parsedWorkflows = JSON.parse(workflowCommentMatch?.[1] || '{}');
33
- return {
34
- code: result.code,
35
- workflowManifest: parsedWorkflows || {},
36
- };
37
- }
38
- //# sourceMappingURL=apply-swc-transform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-swc-transform.js","sourceRoot":"","sources":["../../../src/lib/builders/apply-swc-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAmBpD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,MAAc,EACd,IAA4C,EAC5C,SAIC;IAKD,yCAAyC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExC,uDAAuD;IACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE;QACrC,QAAQ;QACR,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;gBAClD,GAAG,EAAE,KAAK;aACX;YACD,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;gBAChB,CAAC,CAAC;oBACE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC/D;gBACH,CAAC,CAAC,SAAS;YACb,GAAG,SAAS;SACb;QACD,sDAAsD;QACtD,qDAAqD;QACrD,4CAA4C;QAC5C,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAC5C,wCAAwC,CACzC,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CACd,CAAC;IAEtB,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,gBAAgB,EAAE,eAAe,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC"}
@@ -1,45 +0,0 @@
1
- import * as esbuild from 'esbuild';
2
- import type { WorkflowConfig } from '../config/types.js';
3
- export declare abstract class BaseBuilder {
4
- protected config: WorkflowConfig;
5
- constructor(config: WorkflowConfig);
6
- abstract build(): Promise<void>;
7
- protected getTsConfigOptions(): Promise<{
8
- baseUrl?: string;
9
- paths?: Record<string, string[]>;
10
- }>;
11
- protected getInputFiles(): Promise<string[]>;
12
- private discoveredEntries;
13
- protected discoverEntries(inputs: string[], outdir: string): Promise<{
14
- discoveredSteps: string[];
15
- discoveredWorkflows: string[];
16
- }>;
17
- private writeDebugFile;
18
- private logEsbuildMessages;
19
- protected createStepsBundle({ inputFiles, format, outfile, externalizeNonSteps, tsBaseUrl, tsPaths, }: {
20
- tsPaths?: Record<string, string[]>;
21
- tsBaseUrl?: string;
22
- inputFiles: string[];
23
- outfile: string;
24
- format?: 'cjs' | 'esm';
25
- externalizeNonSteps?: boolean;
26
- }): Promise<esbuild.BuildContext | undefined>;
27
- protected createWorkflowsBundle({ inputFiles, format, outfile, bundleFinalOutput, tsBaseUrl, tsPaths, }: {
28
- tsPaths?: Record<string, string[]>;
29
- tsBaseUrl?: string;
30
- inputFiles: string[];
31
- outfile: string;
32
- format?: 'cjs' | 'esm';
33
- bundleFinalOutput?: boolean;
34
- }): Promise<void | {
35
- interimBundleCtx: esbuild.BuildContext;
36
- bundleFinal: (interimBundleResult: string) => Promise<void>;
37
- }>;
38
- protected buildClientLibrary(): Promise<void>;
39
- protected createWebhookBundle({ outfile, bundle, }: {
40
- outfile: string;
41
- bundle?: boolean;
42
- }): Promise<void>;
43
- private createSwcGitignore;
44
- }
45
- //# sourceMappingURL=base-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/builders/base-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAWzD,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,EAAE,cAAc;IAIlC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAEf,kBAAkB,IAAI,OAAO,CAAC;QAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KAClC,CAAC;cA0Cc,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBlD,OAAO,CAAC,iBAAiB,CAMP;cAEF,eAAe,CAC7B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QACT,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;YAyCY,cAAc;IA4B5B,OAAO,CAAC,kBAAkB;cA6BV,iBAAiB,CAAC,EAChC,UAAU,EACV,MAAc,EACd,OAAO,EACP,mBAAmB,EACnB,SAAS,EACT,OAAO,GACR,EAAE;QACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;QACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;cA6G7B,qBAAqB,CAAC,EACpC,UAAU,EACV,MAAc,EACd,OAAO,EACP,iBAAwB,EACxB,SAAS,EACT,OAAO,GACR,EAAE;QACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC,IAAI,GAAG;QACjB,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC;QACvC,WAAW,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC;cA8Kc,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;cAmDnC,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAc,GACf,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;YAiFH,kBAAkB;CAUjC"}