@workflow/builders 4.0.1-beta.9 → 5.0.0-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 (115) hide show
  1. package/README.md +1 -1
  2. package/dist/apply-swc-transform.d.ts +19 -4
  3. package/dist/apply-swc-transform.d.ts.map +1 -1
  4. package/dist/apply-swc-transform.js +62 -7
  5. package/dist/apply-swc-transform.js.map +1 -1
  6. package/dist/base-builder.d.ts +77 -22
  7. package/dist/base-builder.d.ts.map +1 -1
  8. package/dist/base-builder.js +667 -202
  9. package/dist/base-builder.js.map +1 -1
  10. package/dist/build-queue.d.ts +18 -0
  11. package/dist/build-queue.d.ts.map +1 -0
  12. package/dist/build-queue.js +26 -0
  13. package/dist/build-queue.js.map +1 -0
  14. package/dist/config-helpers.d.ts +32 -0
  15. package/dist/config-helpers.d.ts.map +1 -1
  16. package/dist/config-helpers.js +61 -0
  17. package/dist/config-helpers.js.map +1 -1
  18. package/dist/constants.d.ts +2 -4
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +2 -4
  21. package/dist/constants.js.map +1 -1
  22. package/dist/discover-entries-esbuild-plugin.d.ts +5 -6
  23. package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
  24. package/dist/discover-entries-esbuild-plugin.js +98 -30
  25. package/dist/discover-entries-esbuild-plugin.js.map +1 -1
  26. package/dist/discover-entries-esbuild-plugin.test.d.ts +2 -0
  27. package/dist/discover-entries-esbuild-plugin.test.d.ts.map +1 -0
  28. package/dist/discover-entries-esbuild-plugin.test.js +110 -0
  29. package/dist/discover-entries-esbuild-plugin.test.js.map +1 -0
  30. package/dist/esbuild-tsconfig.d.ts +13 -0
  31. package/dist/esbuild-tsconfig.d.ts.map +1 -0
  32. package/dist/esbuild-tsconfig.js +25 -0
  33. package/dist/esbuild-tsconfig.js.map +1 -0
  34. package/dist/esbuild-tsconfig.test.d.ts +2 -0
  35. package/dist/esbuild-tsconfig.test.d.ts.map +1 -0
  36. package/dist/esbuild-tsconfig.test.js +94 -0
  37. package/dist/esbuild-tsconfig.test.js.map +1 -0
  38. package/dist/get-input-files.test.d.ts +2 -0
  39. package/dist/get-input-files.test.d.ts.map +1 -0
  40. package/dist/get-input-files.test.js +121 -0
  41. package/dist/get-input-files.test.js.map +1 -0
  42. package/dist/index.d.ts +10 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +9 -2
  45. package/dist/index.js.map +1 -1
  46. package/dist/module-specifier.d.ts +85 -0
  47. package/dist/module-specifier.d.ts.map +1 -0
  48. package/dist/module-specifier.js +448 -0
  49. package/dist/module-specifier.js.map +1 -0
  50. package/dist/module-specifier.test.d.ts +2 -0
  51. package/dist/module-specifier.test.d.ts.map +1 -0
  52. package/dist/module-specifier.test.js +240 -0
  53. package/dist/module-specifier.test.js.map +1 -0
  54. package/dist/node-module-esbuild-plugin.d.ts +37 -0
  55. package/dist/node-module-esbuild-plugin.d.ts.map +1 -1
  56. package/dist/node-module-esbuild-plugin.js +364 -7
  57. package/dist/node-module-esbuild-plugin.js.map +1 -1
  58. package/dist/node-module-esbuild-plugin.test.js +461 -146
  59. package/dist/node-module-esbuild-plugin.test.js.map +1 -1
  60. package/dist/pseudo-package-esbuild-plugin.d.ts +20 -0
  61. package/dist/pseudo-package-esbuild-plugin.d.ts.map +1 -0
  62. package/dist/pseudo-package-esbuild-plugin.js +47 -0
  63. package/dist/pseudo-package-esbuild-plugin.js.map +1 -0
  64. package/dist/pseudo-package-esbuild-plugin.test.d.ts +2 -0
  65. package/dist/pseudo-package-esbuild-plugin.test.d.ts.map +1 -0
  66. package/dist/pseudo-package-esbuild-plugin.test.js +315 -0
  67. package/dist/pseudo-package-esbuild-plugin.test.js.map +1 -0
  68. package/dist/request-converter.d.ts +3 -0
  69. package/dist/request-converter.d.ts.map +1 -0
  70. package/dist/request-converter.js +14 -0
  71. package/dist/request-converter.js.map +1 -0
  72. package/dist/serde-checker.d.ts +70 -0
  73. package/dist/serde-checker.d.ts.map +1 -0
  74. package/dist/serde-checker.js +118 -0
  75. package/dist/serde-checker.js.map +1 -0
  76. package/dist/standalone.d.ts +3 -0
  77. package/dist/standalone.d.ts.map +1 -1
  78. package/dist/standalone.js +37 -13
  79. package/dist/standalone.js.map +1 -1
  80. package/dist/swc-esbuild-plugin.d.ts +23 -2
  81. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  82. package/dist/swc-esbuild-plugin.js +133 -43
  83. package/dist/swc-esbuild-plugin.js.map +1 -1
  84. package/dist/swc-esbuild-plugin.test.d.ts +2 -0
  85. package/dist/swc-esbuild-plugin.test.d.ts.map +1 -0
  86. package/dist/swc-esbuild-plugin.test.js +493 -0
  87. package/dist/swc-esbuild-plugin.test.js.map +1 -0
  88. package/dist/transform-utils.d.ts +68 -0
  89. package/dist/transform-utils.d.ts.map +1 -0
  90. package/dist/transform-utils.js +102 -0
  91. package/dist/transform-utils.js.map +1 -0
  92. package/dist/transform-utils.test.d.ts +2 -0
  93. package/dist/transform-utils.test.d.ts.map +1 -0
  94. package/dist/transform-utils.test.js +302 -0
  95. package/dist/transform-utils.test.js.map +1 -0
  96. package/dist/types.d.ts +31 -2
  97. package/dist/types.d.ts.map +1 -1
  98. package/dist/types.js +2 -0
  99. package/dist/types.js.map +1 -1
  100. package/dist/vercel-build-output-api.d.ts.map +1 -1
  101. package/dist/vercel-build-output-api.js +38 -14
  102. package/dist/vercel-build-output-api.js.map +1 -1
  103. package/dist/workflow-alias.d.ts +3 -0
  104. package/dist/workflow-alias.d.ts.map +1 -0
  105. package/dist/workflow-alias.js +65 -0
  106. package/dist/workflow-alias.js.map +1 -0
  107. package/dist/workflow-alias.test.d.ts +2 -0
  108. package/dist/workflow-alias.test.d.ts.map +1 -0
  109. package/dist/workflow-alias.test.js +53 -0
  110. package/dist/workflow-alias.test.js.map +1 -0
  111. package/dist/workflows-extractor.d.ts +92 -0
  112. package/dist/workflows-extractor.d.ts.map +1 -0
  113. package/dist/workflows-extractor.js +1476 -0
  114. package/dist/workflows-extractor.js.map +1 -0
  115. package/package.json +14 -13
@@ -1,24 +1,381 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { normalize, relative, resolve } from 'node:path';
3
+ import { promisify } from 'node:util';
1
4
  import { ERROR_SLUGS } from '@workflow/errors';
2
5
  import builtinModules from 'builtin-modules';
6
+ import enhancedResolveOriginal from 'enhanced-resolve';
7
+ const enhancedResolve = promisify(enhancedResolveOriginal);
3
8
  // Match exact Node.js built-in module names:
4
9
  // - "fs", "path", "stream" etc. (exact match)
5
10
  // - "node:fs", "node:path" etc. (with node: prefix)
6
11
  // But NOT "some-package/stream" or "eventsource-parser/stream"
7
- const nodeModulesRegex = new RegExp(`^(${builtinModules.join('|')})$`);
12
+ const nodeModulesPattern = `(${builtinModules.join('|')})`;
13
+ // Match Bun modules:
14
+ // - "bun" (exact match)
15
+ // - "bun:sqlite", "bun:ffi" etc. (with bun: prefix)
16
+ const bunModulesRegex = /^bun(:|$)/;
17
+ // Combined regex for both Node.js and Bun modules
18
+ const runtimeModulesRegex = new RegExp(`^((node:)?${nodeModulesPattern}|bun(:.*)?)$`);
19
+ /**
20
+ * Get the package name from a file path.
21
+ * @param filePath - The file path to get the package name from.
22
+ * @returns The package name.
23
+ */
24
+ export function getPackageName(filePath) {
25
+ const normalized = filePath.replace(/\\/g, '/');
26
+ const marker = '/node_modules/';
27
+ const idx = normalized.lastIndexOf(marker);
28
+ if (idx === -1)
29
+ return null;
30
+ const after = normalized.slice(idx + marker.length); // e.g. ".pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/index.js"
31
+ const segments = after.split('/');
32
+ if (!segments.length)
33
+ return null;
34
+ let packageName = segments[0];
35
+ // pnpm nests: ".pnpm/<pkg>@<version>/node_modules/<pkg>/..."
36
+ if (packageName === '.pnpm' && segments.length >= 3) {
37
+ packageName = segments[2];
38
+ }
39
+ else if (packageName.startsWith('@') && segments.length >= 2) {
40
+ packageName = `${segments[0]}/${segments[1]}`;
41
+ }
42
+ return packageName;
43
+ }
44
+ /**
45
+ * Get the package name from an import specifier.
46
+ * @param specifier - The import specifier to parse.
47
+ * @returns The package name (for bare package imports), otherwise null.
48
+ */
49
+ function getPackageNameFromSpecifier(specifier) {
50
+ // Not a bare package specifier (relative, absolute, or URL-like)
51
+ if (!specifier ||
52
+ specifier.startsWith('.') ||
53
+ specifier.startsWith('/') ||
54
+ /^[A-Za-z]:[\\/]/.test(specifier)) {
55
+ return null;
56
+ }
57
+ // Ignore runtime built-ins and URL-like specifiers
58
+ if (runtimeModulesRegex.test(specifier) ||
59
+ specifier.includes('://') ||
60
+ specifier.startsWith('#')) {
61
+ return null;
62
+ }
63
+ const normalized = specifier.replace(/\\/g, '/');
64
+ if (normalized.startsWith('@')) {
65
+ const [scope, name] = normalized.split('/');
66
+ if (!scope || !name) {
67
+ return null;
68
+ }
69
+ return `${scope}/${name}`;
70
+ }
71
+ const [name] = normalized.split('/');
72
+ return name ?? null;
73
+ }
74
+ /**
75
+ * Escape a regular expression string.
76
+ * @param value - The string to escape.
77
+ * @returns The escaped string.
78
+ */
79
+ export function escapeRegExp(value) {
80
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
81
+ }
82
+ /**
83
+ * Get the imported identifier from a specifier.
84
+ * @param specifier - The specifier to get the imported identifier from.
85
+ * @returns The imported identifier.
86
+ */
87
+ export function getImportedIdentifier(specifier) {
88
+ const namespaceMatch = specifier.match(/\*\s+as\s+([A-Za-z0-9_$]+)/);
89
+ if (namespaceMatch) {
90
+ return namespaceMatch[1];
91
+ }
92
+ if (specifier.includes('{')) {
93
+ const inside = specifier.replace(/^[^{]*\{/, '').replace(/\}.*$/, '');
94
+ const firstNamed = inside
95
+ .split(',')
96
+ .map((token) => token.trim())
97
+ .find(Boolean);
98
+ if (firstNamed) {
99
+ const aliasMatch = firstNamed.match(/([A-Za-z0-9_$]+)\s+as\s+([A-Za-z0-9_$]+)/);
100
+ if (aliasMatch) {
101
+ return aliasMatch[2];
102
+ }
103
+ // Validate that firstNamed is a valid identifier (not empty braces or whitespace)
104
+ const identifierMatch = firstNamed.match(/^[A-Za-z_$][A-Za-z0-9_$]*/);
105
+ if (identifierMatch) {
106
+ return identifierMatch[0];
107
+ }
108
+ }
109
+ // Empty braces or no valid identifier found - return undefined
110
+ return undefined;
111
+ }
112
+ const defaultPart = specifier.split(',')[0]?.trim();
113
+ if (defaultPart && defaultPart !== '*') {
114
+ return defaultPart;
115
+ }
116
+ }
117
+ /**
118
+ * Find the usage of an identifier in a list of lines.
119
+ * @param lines - The list of lines to search in.
120
+ * @param startIndex - The index to start searching from.
121
+ * @param identifier - The identifier to search for.
122
+ * @returns The usage of the identifier.
123
+ */
124
+ function findIdentifierUsage(lines, startIndex, identifier) {
125
+ const usageRegex = new RegExp(`\\b${escapeRegExp(identifier)}\\b`);
126
+ let inBlockComment = false;
127
+ for (let i = startIndex; i < lines.length; i += 1) {
128
+ // Strip string literals first so that comment delimiters inside strings
129
+ // (e.g. `const s = "/*";`) don't confuse the comment scanner.
130
+ const stringsStripped = lines[i]
131
+ .replace(/'(?:[^'\\]|\\.)*'/g, (s) => ' '.repeat(s.length))
132
+ .replace(/"(?:[^"\\]|\\.)*"/g, (s) => ' '.repeat(s.length))
133
+ .replace(/`(?:[^`\\]|\\.)*`/g, (s) => ' '.repeat(s.length));
134
+ let line = stringsStripped;
135
+ // Handle multi-line block comments (including JSDoc)
136
+ if (inBlockComment) {
137
+ const endIdx = line.indexOf('*/');
138
+ if (endIdx === -1) {
139
+ continue;
140
+ }
141
+ line = ' '.repeat(endIdx + 2) + line.slice(endIdx + 2);
142
+ inBlockComment = false;
143
+ }
144
+ // Scan for comments, replacing them with spaces
145
+ let processed = '';
146
+ let j = 0;
147
+ while (j < line.length) {
148
+ if (line[j] === '/' && line[j + 1] === '/') {
149
+ processed += ' '.repeat(line.length - j);
150
+ break;
151
+ }
152
+ if (line[j] === '/' && line[j + 1] === '*') {
153
+ const endIdx = line.indexOf('*/', j + 2);
154
+ if (endIdx !== -1) {
155
+ const len = endIdx + 2 - j;
156
+ processed += ' '.repeat(len);
157
+ j = endIdx + 2;
158
+ }
159
+ else {
160
+ processed += ' '.repeat(line.length - j);
161
+ inBlockComment = true;
162
+ break;
163
+ }
164
+ }
165
+ else {
166
+ processed += line[j];
167
+ j += 1;
168
+ }
169
+ }
170
+ const match = processed.match(usageRegex);
171
+ if (match && match.index !== undefined) {
172
+ return {
173
+ line: i,
174
+ column: match.index,
175
+ lineText: lines[i],
176
+ };
177
+ }
178
+ }
179
+ }
180
+ /**
181
+ * Get the location of a violation.
182
+ * @param cwd - The current working directory.
183
+ * @param relativePath - The relative path to the file.
184
+ * @param packageName - The name of the package.
185
+ * @returns The location of the violation.
186
+ */
187
+ export async function getViolationLocation(cwd, relativePath, packageName) {
188
+ try {
189
+ const absolutePath = resolve(cwd, relativePath);
190
+ const contents = await readFile(absolutePath, 'utf8');
191
+ const lines = contents.split(/\r?\n/);
192
+ const importRegex = new RegExp(`import\\s+(.+?)\\s+from\\s+['"]${escapeRegExp(packageName)}(?:/[^'"]*)?['"]`);
193
+ for (let i = 0; i < lines.length; i += 1) {
194
+ const line = lines[i];
195
+ const importMatch = line.match(importRegex);
196
+ if (importMatch && importMatch.index !== undefined) {
197
+ const specifier = importMatch[1].trim();
198
+ const identifier = getImportedIdentifier(specifier);
199
+ if (identifier) {
200
+ const usage = findIdentifierUsage(lines, i + 1, identifier);
201
+ if (usage) {
202
+ return {
203
+ file: relativePath,
204
+ line: usage.line + 1,
205
+ column: usage.column,
206
+ lineText: usage.lineText,
207
+ length: identifier.length,
208
+ };
209
+ }
210
+ // Identifier exists but is never referenced; surface no location
211
+ return undefined;
212
+ }
213
+ // Fallback: if we can't extract identifier, point to package name
214
+ const columnIndex = line.indexOf(packageName);
215
+ if (columnIndex !== -1) {
216
+ return {
217
+ file: relativePath,
218
+ line: i + 1,
219
+ column: columnIndex,
220
+ lineText: line,
221
+ length: packageName.length,
222
+ };
223
+ }
224
+ }
225
+ }
226
+ }
227
+ catch {
228
+ // ignore file read failures, fallback to no location info
229
+ }
230
+ }
231
+ /**
232
+ * Get the module type label for error messages.
233
+ * @param modulePath - The module path to check.
234
+ * @returns The module type label.
235
+ */
236
+ function getModuleTypeLabel(modulePath) {
237
+ if (bunModulesRegex.test(modulePath)) {
238
+ return 'Bun';
239
+ }
240
+ return 'Node.js';
241
+ }
242
+ /**
243
+ * Create an esbuild plugin to detect violations of the Node.js module usage rule.
244
+ * This plugin prevents workflow functions from importing Node.js or Bun built-in
245
+ * modules, which are not available in the sandboxed workflow runtime.
246
+ */
8
247
  export function createNodeModuleErrorPlugin() {
9
248
  return {
10
249
  name: 'workflow-node-module-error',
11
250
  setup(build) {
12
- build.onResolve({ filter: nodeModulesRegex }, (args) => {
251
+ const cwd = process.cwd();
252
+ const importParents = new Map();
253
+ const packageViolations = [];
254
+ const seenViolations = new Set();
255
+ // Track ALL import relationships to build the dependency graph.
256
+ // This is necessary to trace transitive dependencies back to user code.
257
+ // Performance impact is minimal as we only store path mappings.
258
+ build.onResolve({ filter: /.*/ }, async (args) => {
259
+ if (!args.importer)
260
+ return null;
261
+ const parentValue = normalize(args.importer);
262
+ const specifierPackageName = getPackageNameFromSpecifier(args.path);
263
+ try {
264
+ const resolvedChild = await enhancedResolve(args.resolveDir, args.path);
265
+ if (resolvedChild) {
266
+ const childKey = normalize(resolvedChild);
267
+ importParents.set(childKey, parentValue);
268
+ // Record the resolved package edge so transitive builtin usage can
269
+ // still trace back even when esbuild and enhanced-resolve pick
270
+ // different entry files (e.g. `module` vs `main`).
271
+ const resolvedPackageName = getPackageName(childKey);
272
+ if (resolvedPackageName) {
273
+ importParents.set(resolvedPackageName, parentValue);
274
+ }
275
+ }
276
+ // Also preserve the bare package-specifier edge (e.g. "postgres"),
277
+ // which is the fallback key used when tracing from files in
278
+ // node_modules back to user code.
279
+ if (specifierPackageName) {
280
+ importParents.set(specifierPackageName, parentValue);
281
+ }
282
+ }
283
+ catch {
284
+ // For built-in modules that can't be resolved, still track using the import path
285
+ const childKey = args.path;
286
+ importParents.set(childKey, parentValue);
287
+ if (specifierPackageName) {
288
+ importParents.set(specifierPackageName, parentValue);
289
+ }
290
+ }
291
+ return null;
292
+ });
293
+ // Detect Node.js and Bun module imports
294
+ build.onResolve({ filter: runtimeModulesRegex }, async (args) => {
295
+ const importerPath = resolve(cwd, args.importer);
296
+ let current = importerPath;
297
+ const chain = [];
298
+ const visited = new Set();
299
+ while (current) {
300
+ if (visited.has(current)) {
301
+ break;
302
+ }
303
+ visited.add(current);
304
+ chain.push(current);
305
+ let next = importParents.get(current);
306
+ // If we can't find the parent and current is in node_modules,
307
+ // try looking up by potential package import strings
308
+ if (!next && current.includes('node_modules')) {
309
+ const packageName = getPackageName(current);
310
+ if (packageName) {
311
+ // Try the package name directly
312
+ next = importParents.get(packageName);
313
+ if (!next) {
314
+ // Try with node: prefix
315
+ next = importParents.get(`node:${packageName}`);
316
+ }
317
+ }
318
+ }
319
+ current = next ?? '';
320
+ }
321
+ const filteredChain = chain.filter((path) => !path.includes('node_modules'));
322
+ const workflowFile = filteredChain[0] ?? importerPath;
323
+ if (!workflowFile || workflowFile.includes('node_modules')) {
324
+ return {
325
+ path: args.path,
326
+ external: true,
327
+ };
328
+ }
329
+ const packageName = importerPath.includes('node_modules')
330
+ ? (getPackageName(importerPath) ?? args.path)
331
+ : args.path;
332
+ const relativeWorkflowFile = relative(cwd, workflowFile);
333
+ const violationKey = `${packageName}:${relativeWorkflowFile}`;
334
+ if (!seenViolations.has(violationKey)) {
335
+ seenViolations.add(violationKey);
336
+ const location = await getViolationLocation(cwd, relativeWorkflowFile, packageName);
337
+ // Only report violations where we can find the import location.
338
+ // If we can't find it, the package is likely a transitive dependency
339
+ // that the user didn't directly import - we'll report the top-level
340
+ // package they did import instead.
341
+ if (location) {
342
+ packageViolations.push({
343
+ path: args.path,
344
+ importer: relativeWorkflowFile,
345
+ packageName,
346
+ location,
347
+ });
348
+ }
349
+ }
13
350
  return {
14
351
  path: args.path,
15
- errors: [
16
- {
17
- 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}`,
18
- },
19
- ],
352
+ external: true,
20
353
  };
21
354
  });
355
+ // Report all violations at the end of the build
356
+ build.onEnd(() => {
357
+ if (packageViolations.length > 0) {
358
+ return {
359
+ errors: packageViolations.map((violation) => {
360
+ const isBuiltinModule = runtimeModulesRegex.test(violation.packageName);
361
+ const moduleType = getModuleTypeLabel(violation.path);
362
+ // Different messages for built-in modules vs npm packages that use them
363
+ const text = isBuiltinModule
364
+ ? `You are attempting to use "${violation.packageName}" which is a ${moduleType} module. ${moduleType} modules are not available in workflow functions.\n\nLearn more: https://useworkflow.dev/err/${ERROR_SLUGS.NODE_JS_MODULE_IN_WORKFLOW}`
365
+ : `You are attempting to use "${violation.packageName}" which depends on ${moduleType} modules. Packages that depend on ${moduleType} modules are not available in workflow functions.\n\nLearn more: https://useworkflow.dev/err/${ERROR_SLUGS.NODE_JS_MODULE_IN_WORKFLOW}`;
366
+ return {
367
+ text,
368
+ location: violation.location
369
+ ? {
370
+ ...violation.location,
371
+ suggestion: 'Move this function into a step function.',
372
+ }
373
+ : undefined,
374
+ };
375
+ }),
376
+ };
377
+ }
378
+ });
22
379
  },
23
380
  };
24
381
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-module-esbuild-plugin.js","sourceRoot":"","sources":["../src/node-module-esbuild-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAG7C,6CAA6C;AAC7C,8CAA8C;AAC9C,oDAAoD;AACpD,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEvE,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,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
+ {"version":3,"file":"node-module-esbuild-plugin.js","sourceRoot":"","sources":["../src/node-module-esbuild-plugin.ts"],"names":[],"mappings":"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"}