@workflow/builders 4.1.0 → 4.1.1

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 (50) hide show
  1. package/dist/apply-swc-transform.d.ts +7 -2
  2. package/dist/apply-swc-transform.d.ts.map +1 -1
  3. package/dist/apply-swc-transform.js +10 -4
  4. package/dist/base-builder-logging.test.d.ts +2 -0
  5. package/dist/base-builder-logging.test.d.ts.map +1 -0
  6. package/dist/base-builder-logging.test.js +99 -0
  7. package/dist/base-builder.d.ts +37 -14
  8. package/dist/base-builder.d.ts.map +1 -1
  9. package/dist/base-builder.js +296 -54
  10. package/dist/config-helpers.d.ts +2 -0
  11. package/dist/config-helpers.d.ts.map +1 -1
  12. package/dist/config-helpers.js +62 -1
  13. package/dist/config-helpers.test.d.ts +2 -0
  14. package/dist/config-helpers.test.d.ts.map +1 -0
  15. package/dist/config-helpers.test.js +17 -0
  16. package/dist/fast-discovery.d.ts +14 -0
  17. package/dist/fast-discovery.d.ts.map +1 -0
  18. package/dist/fast-discovery.js +663 -0
  19. package/dist/fast-discovery.test.d.ts +2 -0
  20. package/dist/fast-discovery.test.d.ts.map +1 -0
  21. package/dist/fast-discovery.test.js +338 -0
  22. package/dist/get-input-files.test.js +34 -2
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -2
  26. package/dist/module-specifier.d.ts +13 -0
  27. package/dist/module-specifier.d.ts.map +1 -1
  28. package/dist/module-specifier.js +20 -1
  29. package/dist/standalone.d.ts.map +1 -1
  30. package/dist/standalone.js +4 -4
  31. package/dist/step-source-registration.test.d.ts +2 -0
  32. package/dist/step-source-registration.test.d.ts.map +1 -0
  33. package/dist/step-source-registration.test.js +82 -0
  34. package/dist/swc-esbuild-plugin.d.ts +1 -0
  35. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  36. package/dist/swc-esbuild-plugin.js +5 -3
  37. package/dist/swc-esbuild-plugin.test.js +25 -3
  38. package/dist/transform-utils.d.ts.map +1 -1
  39. package/dist/transform-utils.js +45 -6
  40. package/dist/transform-utils.test.js +92 -1
  41. package/dist/types.d.ts +8 -2
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js +1 -1
  44. package/dist/vercel-build-output-api.d.ts.map +1 -1
  45. package/dist/vercel-build-output-api.js +8 -8
  46. package/dist/workflows-extractor.js +8 -3
  47. package/dist/workflows-extractor.test.d.ts +2 -0
  48. package/dist/workflows-extractor.test.d.ts.map +1 -0
  49. package/dist/workflows-extractor.test.js +70 -0
  50. package/package.json +3 -3
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fast-discovery.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fast-discovery.test.d.ts","sourceRoot":"","sources":["../src/fast-discovery.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,338 @@
1
+ import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync, } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { dirname, join } from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { BaseBuilder } from './base-builder.js';
6
+ import { importParents, parentHasChild, } from './discover-entries-esbuild-plugin.js';
7
+ class TestBuilder extends BaseBuilder {
8
+ async build() {
9
+ // no-op
10
+ }
11
+ discoverEntriesPublic(inputs, outdir, tsconfigPath) {
12
+ return this.discoverEntries(inputs, outdir, tsconfigPath);
13
+ }
14
+ createRouteImportSpecifierPublic(file, routeDir) {
15
+ return this.createRouteImportSpecifier(file, routeDir);
16
+ }
17
+ }
18
+ const realTmpdir = realpathSync(tmpdir());
19
+ function normalize(path) {
20
+ return path.replace(/\\/g, '/');
21
+ }
22
+ function writeFile(path, contents) {
23
+ mkdirSync(dirname(path), { recursive: true });
24
+ writeFileSync(path, contents, 'utf-8');
25
+ }
26
+ function createBuilder(workingDir) {
27
+ const config = {
28
+ buildTarget: 'standalone',
29
+ workingDir,
30
+ dirs: ['.'],
31
+ stepsBundlePath: join(workingDir, 'steps.js'),
32
+ workflowsBundlePath: join(workingDir, 'workflows.js'),
33
+ webhookBundlePath: join(workingDir, 'webhook.js'),
34
+ };
35
+ return new TestBuilder(config);
36
+ }
37
+ describe('fast workflow discovery', () => {
38
+ let testRoot;
39
+ beforeEach(() => {
40
+ testRoot = mkdtempSync(join(realTmpdir, 'workflow-fast-discovery-'));
41
+ importParents.clear();
42
+ });
43
+ afterEach(() => {
44
+ importParents.clear();
45
+ rmSync(testRoot, { recursive: true, force: true });
46
+ });
47
+ it('discovers transitive relative step imports and tracks the parent chain', async () => {
48
+ const entryFile = join(testRoot, 'src', 'entry.ts');
49
+ const workflowFile = join(testRoot, 'src', 'workflow.ts');
50
+ const stepFile = join(testRoot, 'src', 'step.ts');
51
+ writeFile(entryFile, `import './workflow';\n`);
52
+ writeFile(workflowFile, `import { doStep } from './step';\nvoid doStep;\n`);
53
+ writeFile(stepFile, `export async function doStep() {
54
+ 'use step';
55
+ return 1;
56
+ }
57
+ `);
58
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
59
+ expect(discovered.discoveredSteps).toEqual(new Set([normalize(stepFile)]));
60
+ expect(parentHasChild(normalize(entryFile), normalize(stepFile))).toBe(true);
61
+ });
62
+ it('discovers relative JS imports whose basename includes .step', async () => {
63
+ const entryFile = join(testRoot, 'src', 'entry.ts');
64
+ const workflowFile = join(testRoot, 'src', 'hello.step.js');
65
+ writeFile(entryFile, `import './hello.step';\n`);
66
+ writeFile(workflowFile, `export async function run() {
67
+ 'use workflow';
68
+ return 'ok';
69
+ }
70
+ `);
71
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
72
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(workflowFile)]));
73
+ expect(parentHasChild(normalize(entryFile), normalize(workflowFile))).toBe(true);
74
+ });
75
+ it('discovers workflow files reached through an imported package re-export', async () => {
76
+ const entryFile = join(testRoot, 'src', 'entry.ts');
77
+ const packageRoot = join(testRoot, 'node_modules', 'workflow-pkg');
78
+ const packageIndex = join(packageRoot, 'index.js');
79
+ const packageWorkflow = join(packageRoot, 'workflow.js');
80
+ writeFile(entryFile, `import { run } from 'workflow-pkg';\nvoid run;\n`);
81
+ writeFile(join(packageRoot, 'package.json'), JSON.stringify({
82
+ name: 'workflow-pkg',
83
+ version: '1.0.0',
84
+ main: 'index.js',
85
+ dependencies: {
86
+ workflow: '^1.0.0',
87
+ },
88
+ }));
89
+ writeFile(packageIndex, `export { run } from './workflow.js';\n`);
90
+ writeFile(packageWorkflow, `export async function run() {
91
+ "use workflow";
92
+ return "ok";
93
+ }
94
+ `);
95
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
96
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(packageWorkflow)]));
97
+ expect(parentHasChild(normalize(packageIndex), normalize(packageWorkflow))).toBe(true);
98
+ });
99
+ it('uses the workflow package export condition when discovering SDK stdlib steps', async () => {
100
+ const entryFile = join(testRoot, 'src', 'entry.ts');
101
+ const workflowPackageRoot = join(testRoot, 'node_modules', 'workflow');
102
+ const workflowEntry = join(workflowPackageRoot, 'workflow.js');
103
+ const workflowRequireEntry = join(workflowPackageRoot, 'typescript-plugin.cjs');
104
+ const stdlibFile = join(workflowPackageRoot, 'stdlib.js');
105
+ writeFile(entryFile, `import { fetch } from 'workflow';
106
+
107
+ export async function run() {
108
+ 'use workflow';
109
+ return fetch('https://example.com');
110
+ }
111
+ `);
112
+ writeFile(join(workflowPackageRoot, 'package.json'), JSON.stringify({
113
+ name: 'workflow',
114
+ version: '1.0.0',
115
+ exports: {
116
+ '.': {
117
+ workflow: './workflow.js',
118
+ require: './typescript-plugin.cjs',
119
+ default: './index.js',
120
+ },
121
+ },
122
+ }));
123
+ writeFile(workflowEntry, `export * from './stdlib.js';
124
+ `);
125
+ writeFile(workflowRequireEntry, `module.exports = {};
126
+ `);
127
+ writeFile(stdlibFile, `export async function fetch(...args) {
128
+ 'use step';
129
+ return globalThis.fetch(...args);
130
+ }
131
+ `);
132
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
133
+ expect(discovered.discoveredSteps).toEqual(new Set([normalize(stdlibFile)]));
134
+ expect(parentHasChild(normalize(workflowEntry), normalize(stdlibFile))).toBe(true);
135
+ });
136
+ it('discovers files reached through tsconfig path aliases', async () => {
137
+ const entryFile = join(testRoot, 'src', 'entry.ts');
138
+ const registryFile = join(testRoot, 'src', '_workflows.ts');
139
+ const workflowFile = join(testRoot, 'src', 'workflows', 'workflow.ts');
140
+ const tsconfigFile = join(testRoot, 'tsconfig.json');
141
+ writeFile(tsconfigFile, JSON.stringify({
142
+ compilerOptions: {
143
+ paths: {
144
+ '@/*': ['./src/*'],
145
+ },
146
+ },
147
+ }));
148
+ writeFile(entryFile, `import { allWorkflows } from '@/_workflows';\n`);
149
+ writeFile(registryFile, `import * as workflow from './workflows/workflow';
150
+ export const allWorkflows = { workflow };
151
+ `);
152
+ writeFile(workflowFile, `export async function run() {
153
+ 'use workflow';
154
+ return 'ok';
155
+ }
156
+ `);
157
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'), tsconfigFile);
158
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(workflowFile)]));
159
+ expect(parentHasChild(normalize(entryFile), normalize(workflowFile))).toBe(true);
160
+ });
161
+ it('discovers path aliases inherited through tsconfig extends', async () => {
162
+ const entryFile = join(testRoot, 'src', 'entry.ts');
163
+ const workflowFile = join(testRoot, 'src', 'workflows', 'workflow.ts');
164
+ const baseTsconfigFile = join(testRoot, 'tsconfig.base.json');
165
+ const tsconfigFile = join(testRoot, 'tsconfig.json');
166
+ writeFile(baseTsconfigFile, JSON.stringify({
167
+ compilerOptions: {
168
+ baseUrl: '.',
169
+ paths: {
170
+ '@base/*': ['./src/*'],
171
+ },
172
+ },
173
+ }));
174
+ writeFile(tsconfigFile, JSON.stringify({
175
+ extends: './tsconfig.base.json',
176
+ }));
177
+ writeFile(entryFile, `import { run } from '@base/workflows/workflow';\n`);
178
+ writeFile(workflowFile, `export async function run() {
179
+ 'use workflow';
180
+ return 'ok';
181
+ }
182
+ `);
183
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'), tsconfigFile);
184
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(workflowFile)]));
185
+ });
186
+ it('discovers path aliases with multiple wildcards', async () => {
187
+ const entryFile = join(testRoot, 'src', 'entry.ts');
188
+ const workflowFile = join(testRoot, 'src', 'features', 'billing', 'flows', 'charge.ts');
189
+ const tsconfigFile = join(testRoot, 'tsconfig.json');
190
+ writeFile(tsconfigFile, JSON.stringify({
191
+ compilerOptions: {
192
+ paths: {
193
+ '@feature/*/workflow/*': ['./src/features/*/flows/*'],
194
+ },
195
+ },
196
+ }));
197
+ writeFile(entryFile, `import { charge } from '@feature/billing/workflow/charge';\n`);
198
+ writeFile(workflowFile, `export async function charge() {
199
+ 'use workflow';
200
+ return 'ok';
201
+ }
202
+ `);
203
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'), tsconfigFile);
204
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(workflowFile)]));
205
+ });
206
+ it('uses nearest nested jsconfig aliases in monorepo packages', async () => {
207
+ const rootTsconfigFile = join(testRoot, 'tsconfig.json');
208
+ const packageRoot = join(testRoot, 'packages', 'app');
209
+ const entryFile = join(packageRoot, 'src', 'entry.js');
210
+ const workflowFile = join(packageRoot, 'src', 'workflow.js');
211
+ writeFile(rootTsconfigFile, JSON.stringify({
212
+ compilerOptions: {
213
+ paths: {
214
+ '@root/*': ['./root/*'],
215
+ },
216
+ },
217
+ }));
218
+ writeFile(join(packageRoot, 'jsconfig.json'), JSON.stringify({
219
+ compilerOptions: {
220
+ paths: {
221
+ '#/*': ['./src/*'],
222
+ },
223
+ },
224
+ }));
225
+ writeFile(entryFile, `import { run } from '#/workflow';\n`);
226
+ writeFile(workflowFile, `export async function run() {
227
+ "use workflow";
228
+ return "ok";
229
+ }
230
+ `);
231
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
232
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(workflowFile)]));
233
+ });
234
+ it('only treats serde files as registration candidates when they define static serde methods', async () => {
235
+ const entryFile = join(testRoot, 'src', 'entry.ts');
236
+ const reducerFile = join(testRoot, 'src', 'reducer.ts');
237
+ const serdeFile = join(testRoot, 'src', 'serde.ts');
238
+ writeFile(entryFile, `import './reducer';
239
+ import './serde';
240
+ `);
241
+ writeFile(reducerFile, `import { WORKFLOW_SERIALIZE } from '@workflow/serde';
242
+
243
+ export function reducer(value: unknown) {
244
+ return value?.constructor?.[WORKFLOW_SERIALIZE];
245
+ }
246
+ `);
247
+ writeFile(serdeFile, `import { WORKFLOW_SERIALIZE as WS } from '@workflow/serde';
248
+
249
+ export class Value {
250
+ static classId = 'Value';
251
+ static [WS](value: Value) {
252
+ return value;
253
+ }
254
+ }
255
+ `);
256
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
257
+ expect(discovered.discoveredSerdeFiles).toEqual(new Set([normalize(serdeFile)]));
258
+ });
259
+ it('categorizes step, workflow, and serde usage independently', async () => {
260
+ const entryFile = join(testRoot, 'src', 'entry.ts');
261
+ const stepFile = join(testRoot, 'src', 'step.ts');
262
+ const workflowFile = join(testRoot, 'src', 'workflow.ts');
263
+ const serdeFile = join(testRoot, 'src', 'serde.ts');
264
+ writeFile(entryFile, `import './step';
265
+ import './workflow';
266
+ import './serde';
267
+ `);
268
+ writeFile(stepFile, `export async function runStep() {
269
+ 'use step';
270
+ return 'ok';
271
+ }
272
+ `);
273
+ writeFile(workflowFile, `export async function runWorkflow() {
274
+ 'use workflow';
275
+ return 'ok';
276
+ }
277
+ `);
278
+ writeFile(serdeFile, `export class Value {
279
+ static classId = 'Value';
280
+ static [Symbol.for('workflow-serialize')](value: Value) {
281
+ return value;
282
+ }
283
+ }
284
+ `);
285
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
286
+ expect(discovered.discoveredSteps).toEqual(new Set([normalize(stepFile)]));
287
+ expect(discovered.discoveredWorkflows).toEqual(new Set([normalize(workflowFile)]));
288
+ expect(discovered.discoveredSerdeFiles).toEqual(new Set([normalize(serdeFile)]));
289
+ });
290
+ it('ignores serde examples that only appear inside comments', async () => {
291
+ const entryFile = join(testRoot, 'src', 'entry.ts');
292
+ const docsFile = join(testRoot, 'src', 'docs.ts');
293
+ writeFile(entryFile, `import './docs';\n`);
294
+ writeFile(docsFile, `/**
295
+ * import { WORKFLOW_SERIALIZE } from '@workflow/serde';
296
+ *
297
+ * class Example {
298
+ * static [WORKFLOW_SERIALIZE](value) {
299
+ * return value;
300
+ * }
301
+ * }
302
+ */
303
+ export const WORKFLOW_SERIALIZE = Symbol.for('workflow-serialize');
304
+ `);
305
+ const discovered = await createBuilder(testRoot).discoverEntriesPublic([entryFile], join(testRoot, 'out'));
306
+ expect(discovered.discoveredSerdeFiles).toEqual(new Set());
307
+ });
308
+ it('relativizes nested package step registration imports', () => {
309
+ const routeDir = join(testRoot, 'app', '.well-known', 'workflow', 'v1');
310
+ const directPackageFile = join(testRoot, 'node_modules', 'direct-pkg', 'step.js');
311
+ const nestedPackageFile = join(testRoot, 'node_modules', 'parent-pkg', 'node_modules', 'nested-pkg', 'step.js');
312
+ writeFile(join(testRoot, 'package.json'), JSON.stringify({
313
+ dependencies: {
314
+ 'direct-pkg': '1.0.0',
315
+ },
316
+ }));
317
+ writeFile(join(testRoot, 'node_modules', 'direct-pkg', 'package.json'), JSON.stringify({
318
+ name: 'direct-pkg',
319
+ version: '1.0.0',
320
+ exports: {
321
+ './step': './step.js',
322
+ },
323
+ }));
324
+ writeFile(directPackageFile, `export const step = true;\n`);
325
+ writeFile(join(testRoot, 'node_modules', 'parent-pkg', 'node_modules', 'nested-pkg', 'package.json'), JSON.stringify({
326
+ name: 'nested-pkg',
327
+ version: '1.0.0',
328
+ exports: {
329
+ './step': './step.js',
330
+ },
331
+ }));
332
+ writeFile(nestedPackageFile, `export const step = true;\n`);
333
+ const builder = createBuilder(testRoot);
334
+ expect(builder.createRouteImportSpecifierPublic(directPackageFile, routeDir)).toBe('direct-pkg/step');
335
+ expect(builder.createRouteImportSpecifierPublic(nestedPackageFile, routeDir)).toBe('../../../../node_modules/parent-pkg/node_modules/nested-pkg/step.js');
336
+ });
337
+ });
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1kaXNjb3ZlcnkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYXN0LWRpc2NvdmVyeS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsR0FDZixNQUFNLHNDQUFzQyxDQUFDO0FBRzlDLE1BQU0sV0FBWSxTQUFRLFdBQVc7SUFDbkMsS0FBSyxDQUFDLEtBQUs7UUFDVCxRQUFRO0lBQ1YsQ0FBQztJQUVNLHFCQUFxQixDQUMxQixNQUFnQixFQUNoQixNQUFjLEVBQ2QsWUFBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLGdDQUFnQyxDQUNyQyxJQUFZLEVBQ1osUUFBZ0I7UUFFaEIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFDLFNBQVMsU0FBUyxDQUFDLElBQVk7SUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENB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LFlBQVk7WUFDbEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxXQUFXO2FBQ3RCO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFDRixTQUFTLENBQUMsaUJBQWlCLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUU1RCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUNKLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FDdEUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQ0osT0FBTyxDQUFDLGdDQUFnQyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUN0RSxDQUFDLElBQUksQ0FDSixxRUFBcUUsQ0FDdEUsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFscGF0aFN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgYWZ0ZXJFYWNoLCBiZWZvcmVFYWNoLCBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBCYXNlQnVpbGRlciwgdHlwZSBEaXNjb3ZlcmVkRW50cmllcyB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmltcG9ydCB7XG4gIGltcG9ydFBhcmVudHMsXG4gIHBhcmVudEhhc0NoaWxkLFxufSBmcm9tICcuL2Rpc2NvdmVyLWVudHJpZXMtZXNidWlsZC1wbHVnaW4uanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNsYXNzIFRlc3RCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBuby1vcFxuICB9XG5cbiAgcHVibGljIGRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICBpbnB1dHM6IHN0cmluZ1tdLFxuICAgIG91dGRpcjogc3RyaW5nLFxuICAgIHRzY29uZmlnUGF0aD86IHN0cmluZ1xuICApOiBQcm9taXNlPERpc2NvdmVyZWRFbnRyaWVzPiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzY292ZXJFbnRyaWVzKGlucHV0cywgb3V0ZGlyLCB0c2NvbmZpZ1BhdGgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVJvdXRlSW1wb3J0U3BlY2lmaWVyUHVibGljKFxuICAgIGZpbGU6IHN0cmluZyxcbiAgICByb3V0ZURpcjogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlUm91dGVJbXBvcnRTcGVjaWZpZXIoZmlsZSwgcm91dGVEaXIpO1xuICB9XG59XG5cbmNvbnN0IHJlYWxUbXBkaXIgPSByZWFscGF0aFN5bmModG1wZGlyKCkpO1xuXG5mdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZpbGUocGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogdm9pZCB7XG4gIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhwYXRoLCBjb250ZW50cywgJ3V0Zi04Jyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1aWxkZXIod29ya2luZ0Rpcjogc3RyaW5nKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnc3RlcHMuanMnKSxcbiAgICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICd3b3JrZmxvd3MuanMnKSxcbiAgICB3ZWJob29rQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnd2ViaG9vay5qcycpLFxuICB9O1xuICByZXR1cm4gbmV3IFRlc3RCdWlsZGVyKGNvbmZpZyk7XG59XG5cbmRlc2NyaWJlKCdmYXN0IHdvcmtmbG93IGRpc2NvdmVyeScsICgpID0+IHtcbiAgbGV0IHRlc3RSb290OiBzdHJpbmc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGVzdFJvb3QgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICd3b3JrZmxvdy1mYXN0LWRpc2NvdmVyeS0nKSk7XG4gICAgaW1wb3J0UGFyZW50cy5jbGVhcigpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGltcG9ydFBhcmVudHMuY2xlYXIoKTtcbiAgICBybVN5bmModGVzdFJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc2NvdmVycyB0cmFuc2l0aXZlIHJlbGF0aXZlIHN0ZXAgaW1wb3J0cyBhbmQgdHJhY2tzIHRoZSBwYXJlbnQgY2hhaW4nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHdvcmtmbG93RmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnd29ya2Zsb3cudHMnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKGVudHJ5RmlsZSwgYGltcG9ydCAnLi93b3JrZmxvdyc7XFxuYCk7XG4gICAgd3JpdGVGaWxlKHdvcmtmbG93RmlsZSwgYGltcG9ydCB7IGRvU3RlcCB9IGZyb20gJy4vc3RlcCc7XFxudm9pZCBkb1N0ZXA7XFxuYCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvU3RlcCgpIHtcbiAgJ3VzZSBzdGVwJztcbiAgcmV0dXJuIDE7XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkU3RlcHMpLnRvRXF1YWwobmV3IFNldChbbm9ybWFsaXplKHN0ZXBGaWxlKV0pKTtcbiAgICBleHBlY3QocGFyZW50SGFzQ2hpbGQobm9ybWFsaXplKGVudHJ5RmlsZSksIG5vcm1hbGl6ZShzdGVwRmlsZSkpKS50b0JlKFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdkaXNjb3ZlcnMgcmVsYXRpdmUgSlMgaW1wb3J0cyB3aG9zZSBiYXNlbmFtZSBpbmNsdWRlcyAuc3RlcCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlc3RSb290LCAnc3JjJywgJ2VudHJ5LnRzJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdoZWxsby5zdGVwLmpzJyk7XG5cbiAgICB3cml0ZUZpbGUoZW50cnlGaWxlLCBgaW1wb3J0ICcuL2hlbGxvLnN0ZXAnO1xcbmApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHdvcmtmbG93RmlsZSxcbiAgICAgIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICAndXNlIHdvcmtmbG93JztcbiAgcmV0dXJuICdvayc7XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkV29ya2Zsb3dzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplKHdvcmtmbG93RmlsZSldKVxuICAgICk7XG4gICAgZXhwZWN0KHBhcmVudEhhc0NoaWxkKG5vcm1hbGl6ZShlbnRyeUZpbGUpLCBub3JtYWxpemUod29ya2Zsb3dGaWxlKSkpLnRvQmUoXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc2NvdmVycyB3b3JrZmxvdyBmaWxlcyByZWFjaGVkIHRocm91Z2ggYW4gaW1wb3J0ZWQgcGFja2FnZSByZS1leHBvcnQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHBhY2thZ2VSb290ID0gam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICd3b3JrZmxvdy1wa2cnKTtcbiAgICBjb25zdCBwYWNrYWdlSW5kZXggPSBqb2luKHBhY2thZ2VSb290LCAnaW5kZXguanMnKTtcbiAgICBjb25zdCBwYWNrYWdlV29ya2Zsb3cgPSBqb2luKHBhY2thZ2VSb290LCAnd29ya2Zsb3cuanMnKTtcblxuICAgIHdyaXRlRmlsZShlbnRyeUZpbGUsIGBpbXBvcnQgeyBydW4gfSBmcm9tICd3b3JrZmxvdy1wa2cnO1xcbnZvaWQgcnVuO1xcbmApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGFja2FnZVJvb3QsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogJ3dvcmtmbG93LXBrZycsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIG1haW46ICdpbmRleC5qcycsXG4gICAgICAgIGRlcGVuZGVuY2llczoge1xuICAgICAgICAgIHdvcmtmbG93OiAnXjEuMC4wJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUocGFja2FnZUluZGV4LCBgZXhwb3J0IHsgcnVuIH0gZnJvbSAnLi93b3JrZmxvdy5qcyc7XFxuYCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgcGFja2FnZVdvcmtmbG93LFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIFwidXNlIHdvcmtmbG93XCI7XG4gIHJldHVybiBcIm9rXCI7XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkV29ya2Zsb3dzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplKHBhY2thZ2VXb3JrZmxvdyldKVxuICAgICk7XG4gICAgZXhwZWN0KFxuICAgICAgcGFyZW50SGFzQ2hpbGQobm9ybWFsaXplKHBhY2thZ2VJbmRleCksIG5vcm1hbGl6ZShwYWNrYWdlV29ya2Zsb3cpKVxuICAgICkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3VzZXMgdGhlIHdvcmtmbG93IHBhY2thZ2UgZXhwb3J0IGNvbmRpdGlvbiB3aGVuIGRpc2NvdmVyaW5nIFNESyBzdGRsaWIgc3RlcHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHdvcmtmbG93UGFja2FnZVJvb3QgPSBqb2luKHRlc3RSb290LCAnbm9kZV9tb2R1bGVzJywgJ3dvcmtmbG93Jyk7XG4gICAgY29uc3Qgd29ya2Zsb3dFbnRyeSA9IGpvaW4od29ya2Zsb3dQYWNrYWdlUm9vdCwgJ3dvcmtmbG93LmpzJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dSZXF1aXJlRW50cnkgPSBqb2luKFxuICAgICAgd29ya2Zsb3dQYWNrYWdlUm9vdCxcbiAgICAgICd0eXBlc2NyaXB0LXBsdWdpbi5janMnXG4gICAgKTtcbiAgICBjb25zdCBzdGRsaWJGaWxlID0gam9pbih3b3JrZmxvd1BhY2thZ2VSb290LCAnc3RkbGliLmpzJyk7XG5cbiAgICB3cml0ZUZpbGUoXG4gICAgICBlbnRyeUZpbGUsXG4gICAgICBgaW1wb3J0IHsgZmV0Y2ggfSBmcm9tICd3b3JrZmxvdyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gICd1c2Ugd29ya2Zsb3cnO1xuICByZXR1cm4gZmV0Y2goJ2h0dHBzOi8vZXhhbXBsZS5jb20nKTtcbn1cbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4od29ya2Zsb3dQYWNrYWdlUm9vdCwgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAnd29ya2Zsb3cnLFxuICAgICAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICAgICAgICBleHBvcnRzOiB7XG4gICAgICAgICAgJy4nOiB7XG4gICAgICAgICAgICB3b3JrZmxvdzogJy4vd29ya2Zsb3cuanMnLFxuICAgICAgICAgICAgcmVxdWlyZTogJy4vdHlwZXNjcmlwdC1wbHVnaW4uY2pzJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcuL2luZGV4LmpzJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHdvcmtmbG93RW50cnksXG4gICAgICBgZXhwb3J0ICogZnJvbSAnLi9zdGRsaWIuanMnO1xuYFxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgd29ya2Zsb3dSZXF1aXJlRW50cnksXG4gICAgICBgbW9kdWxlLmV4cG9ydHMgPSB7fTtcbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZGxpYkZpbGUsXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoKC4uLmFyZ3MpIHtcbiAgJ3VzZSBzdGVwJztcbiAgcmV0dXJuIGdsb2JhbFRoaXMuZmV0Y2goLi4uYXJncyk7XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkU3RlcHMpLnRvRXF1YWwoXG4gICAgICBuZXcgU2V0KFtub3JtYWxpemUoc3RkbGliRmlsZSldKVxuICAgICk7XG4gICAgZXhwZWN0KFxuICAgICAgcGFyZW50SGFzQ2hpbGQobm9ybWFsaXplKHdvcmtmbG93RW50cnkpLCBub3JtYWxpemUoc3RkbGliRmlsZSkpXG4gICAgKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnZGlzY292ZXJzIGZpbGVzIHJlYWNoZWQgdGhyb3VnaCB0c2NvbmZpZyBwYXRoIGFsaWFzZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHJlZ2lzdHJ5RmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnX3dvcmtmbG93cy50cycpO1xuICAgIGNvbnN0IHdvcmtmbG93RmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnd29ya2Zsb3dzJywgJ3dvcmtmbG93LnRzJyk7XG4gICAgY29uc3QgdHNjb25maWdGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3RzY29uZmlnLmpzb24nKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIHRzY29uZmlnRmlsZSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgcGF0aHM6IHtcbiAgICAgICAgICAgICdALyonOiBbJy4vc3JjLyonXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShlbnRyeUZpbGUsIGBpbXBvcnQgeyBhbGxXb3JrZmxvd3MgfSBmcm9tICdAL193b3JrZmxvd3MnO1xcbmApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHJlZ2lzdHJ5RmlsZSxcbiAgICAgIGBpbXBvcnQgKiBhcyB3b3JrZmxvdyBmcm9tICcuL3dvcmtmbG93cy93b3JrZmxvdyc7XG5leHBvcnQgY29uc3QgYWxsV29ya2Zsb3dzID0geyB3b3JrZmxvdyB9O1xuYFxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgd29ya2Zsb3dGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gICd1c2Ugd29ya2Zsb3cnO1xuICByZXR1cm4gJ29rJztcbn1cbmBcbiAgICApO1xuXG4gICAgY29uc3QgZGlzY292ZXJlZCA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QpLmRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICAgIFtlbnRyeUZpbGVdLFxuICAgICAgam9pbih0ZXN0Um9vdCwgJ291dCcpLFxuICAgICAgdHNjb25maWdGaWxlXG4gICAgKTtcblxuICAgIGV4cGVjdChkaXNjb3ZlcmVkLmRpc2NvdmVyZWRXb3JrZmxvd3MpLnRvRXF1YWwoXG4gICAgICBuZXcgU2V0KFtub3JtYWxpemUod29ya2Zsb3dGaWxlKV0pXG4gICAgKTtcbiAgICBleHBlY3QocGFyZW50SGFzQ2hpbGQobm9ybWFsaXplKGVudHJ5RmlsZSksIG5vcm1hbGl6ZSh3b3JrZmxvd0ZpbGUpKSkudG9CZShcbiAgICAgIHRydWVcbiAgICApO1xuICB9KTtcblxuICBpdCgnZGlzY292ZXJzIHBhdGggYWxpYXNlcyBpbmhlcml0ZWQgdGhyb3VnaCB0c2NvbmZpZyBleHRlbmRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnZW50cnkudHMnKTtcbiAgICBjb25zdCB3b3JrZmxvd0ZpbGUgPSBqb2luKHRlc3RSb290LCAnc3JjJywgJ3dvcmtmbG93cycsICd3b3JrZmxvdy50cycpO1xuICAgIGNvbnN0IGJhc2VUc2NvbmZpZ0ZpbGUgPSBqb2luKHRlc3RSb290LCAndHNjb25maWcuYmFzZS5qc29uJyk7XG4gICAgY29uc3QgdHNjb25maWdGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3RzY29uZmlnLmpzb24nKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGJhc2VUc2NvbmZpZ0ZpbGUsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIGJhc2VVcmw6ICcuJyxcbiAgICAgICAgICBwYXRoczoge1xuICAgICAgICAgICAgJ0BiYXNlLyonOiBbJy4vc3JjLyonXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHRzY29uZmlnRmlsZSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZXh0ZW5kczogJy4vdHNjb25maWcuYmFzZS5qc29uJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoZW50cnlGaWxlLCBgaW1wb3J0IHsgcnVuIH0gZnJvbSAnQGJhc2Uvd29ya2Zsb3dzL3dvcmtmbG93JztcXG5gKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICB3b3JrZmxvd0ZpbGUsXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgJ3VzZSB3b3JrZmxvdyc7XG4gIHJldHVybiAnb2snO1xufVxuYFxuICAgICk7XG5cbiAgICBjb25zdCBkaXNjb3ZlcmVkID0gYXdhaXQgY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCkuZGlzY292ZXJFbnRyaWVzUHVibGljKFxuICAgICAgW2VudHJ5RmlsZV0sXG4gICAgICBqb2luKHRlc3RSb290LCAnb3V0JyksXG4gICAgICB0c2NvbmZpZ0ZpbGVcbiAgICApO1xuXG4gICAgZXhwZWN0KGRpc2NvdmVyZWQuZGlzY292ZXJlZFdvcmtmbG93cykudG9FcXVhbChcbiAgICAgIG5ldyBTZXQoW25vcm1hbGl6ZSh3b3JrZmxvd0ZpbGUpXSlcbiAgICApO1xuICB9KTtcblxuICBpdCgnZGlzY292ZXJzIHBhdGggYWxpYXNlcyB3aXRoIG11bHRpcGxlIHdpbGRjYXJkcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlc3RSb290LCAnc3JjJywgJ2VudHJ5LnRzJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dGaWxlID0gam9pbihcbiAgICAgIHRlc3RSb290LFxuICAgICAgJ3NyYycsXG4gICAgICAnZmVhdHVyZXMnLFxuICAgICAgJ2JpbGxpbmcnLFxuICAgICAgJ2Zsb3dzJyxcbiAgICAgICdjaGFyZ2UudHMnXG4gICAgKTtcbiAgICBjb25zdCB0c2NvbmZpZ0ZpbGUgPSBqb2luKHRlc3RSb290LCAndHNjb25maWcuanNvbicpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgdHNjb25maWdGaWxlLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICBwYXRoczoge1xuICAgICAgICAgICAgJ0BmZWF0dXJlLyovd29ya2Zsb3cvKic6IFsnLi9zcmMvZmVhdHVyZXMvKi9mbG93cy8qJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBlbnRyeUZpbGUsXG4gICAgICBgaW1wb3J0IHsgY2hhcmdlIH0gZnJvbSAnQGZlYXR1cmUvYmlsbGluZy93b3JrZmxvdy9jaGFyZ2UnO1xcbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHdvcmtmbG93RmlsZSxcbiAgICAgIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hhcmdlKCkge1xuICAndXNlIHdvcmtmbG93JztcbiAgcmV0dXJuICdvayc7XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKSxcbiAgICAgIHRzY29uZmlnRmlsZVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkV29ya2Zsb3dzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplKHdvcmtmbG93RmlsZSldKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCd1c2VzIG5lYXJlc3QgbmVzdGVkIGpzY29uZmlnIGFsaWFzZXMgaW4gbW9ub3JlcG8gcGFja2FnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgcm9vdFRzY29uZmlnRmlsZSA9IGpvaW4odGVzdFJvb3QsICd0c2NvbmZpZy5qc29uJyk7XG4gICAgY29uc3QgcGFja2FnZVJvb3QgPSBqb2luKHRlc3RSb290LCAncGFja2FnZXMnLCAnYXBwJyk7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbihwYWNrYWdlUm9vdCwgJ3NyYycsICdlbnRyeS5qcycpO1xuICAgIGNvbnN0IHdvcmtmbG93RmlsZSA9IGpvaW4ocGFja2FnZVJvb3QsICdzcmMnLCAnd29ya2Zsb3cuanMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIHJvb3RUc2NvbmZpZ0ZpbGUsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHBhdGhzOiB7XG4gICAgICAgICAgICAnQHJvb3QvKic6IFsnLi9yb290LyonXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGFja2FnZVJvb3QsICdqc2NvbmZpZy5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHBhdGhzOiB7XG4gICAgICAgICAgICAnIy8qJzogWycuL3NyYy8qJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoZW50cnlGaWxlLCBgaW1wb3J0IHsgcnVuIH0gZnJvbSAnIy93b3JrZmxvdyc7XFxuYCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgd29ya2Zsb3dGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIFwidXNlIHdvcmtmbG93XCI7XG4gIHJldHVybiBcIm9rXCI7XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkV29ya2Zsb3dzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplKHdvcmtmbG93RmlsZSldKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdvbmx5IHRyZWF0cyBzZXJkZSBmaWxlcyBhcyByZWdpc3RyYXRpb24gY2FuZGlkYXRlcyB3aGVuIHRoZXkgZGVmaW5lIHN0YXRpYyBzZXJkZSBtZXRob2RzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnZW50cnkudHMnKTtcbiAgICBjb25zdCByZWR1Y2VyRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAncmVkdWNlci50cycpO1xuICAgIGNvbnN0IHNlcmRlRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnc2VyZGUudHMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGVudHJ5RmlsZSxcbiAgICAgIGBpbXBvcnQgJy4vcmVkdWNlcic7XG5pbXBvcnQgJy4vc2VyZGUnO1xuYFxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgcmVkdWNlckZpbGUsXG4gICAgICBgaW1wb3J0IHsgV09SS0ZMT1dfU0VSSUFMSVpFIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZXIodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIHZhbHVlPy5jb25zdHJ1Y3Rvcj8uW1dPUktGTE9XX1NFUklBTElaRV07XG59XG5gXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzZXJkZUZpbGUsXG4gICAgICBgaW1wb3J0IHsgV09SS0ZMT1dfU0VSSUFMSVpFIGFzIFdTIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztcblxuZXhwb3J0IGNsYXNzIFZhbHVlIHtcbiAgc3RhdGljIGNsYXNzSWQgPSAnVmFsdWUnO1xuICBzdGF0aWMgW1dTXSh2YWx1ZTogVmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbmBcbiAgICApO1xuXG4gICAgY29uc3QgZGlzY292ZXJlZCA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QpLmRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICAgIFtlbnRyeUZpbGVdLFxuICAgICAgam9pbih0ZXN0Um9vdCwgJ291dCcpXG4gICAgKTtcblxuICAgIGV4cGVjdChkaXNjb3ZlcmVkLmRpc2NvdmVyZWRTZXJkZUZpbGVzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplKHNlcmRlRmlsZSldKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdjYXRlZ29yaXplcyBzdGVwLCB3b3JrZmxvdywgYW5kIHNlcmRlIHVzYWdlIGluZGVwZW5kZW50bHknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzdGVwLnRzJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICd3b3JrZmxvdy50cycpO1xuICAgIGNvbnN0IHNlcmRlRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnc2VyZGUudHMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGVudHJ5RmlsZSxcbiAgICAgIGBpbXBvcnQgJy4vc3RlcCc7XG5pbXBvcnQgJy4vd29ya2Zsb3cnO1xuaW1wb3J0ICcuL3NlcmRlJztcbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5TdGVwKCkge1xuICAndXNlIHN0ZXAnO1xuICByZXR1cm4gJ29rJztcbn1cbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHdvcmtmbG93RmlsZSxcbiAgICAgIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV29ya2Zsb3coKSB7XG4gICd1c2Ugd29ya2Zsb3cnO1xuICByZXR1cm4gJ29rJztcbn1cbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHNlcmRlRmlsZSxcbiAgICAgIGBleHBvcnQgY2xhc3MgVmFsdWUge1xuICBzdGF0aWMgY2xhc3NJZCA9ICdWYWx1ZSc7XG4gIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctc2VyaWFsaXplJyldKHZhbHVlOiBWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuYFxuICAgICk7XG5cbiAgICBjb25zdCBkaXNjb3ZlcmVkID0gYXdhaXQgY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCkuZGlzY292ZXJFbnRyaWVzUHVibGljKFxuICAgICAgW2VudHJ5RmlsZV0sXG4gICAgICBqb2luKHRlc3RSb290LCAnb3V0JylcbiAgICApO1xuXG4gICAgZXhwZWN0KGRpc2NvdmVyZWQuZGlzY292ZXJlZFN0ZXBzKS50b0VxdWFsKG5ldyBTZXQoW25vcm1hbGl6ZShzdGVwRmlsZSldKSk7XG4gICAgZXhwZWN0KGRpc2NvdmVyZWQuZGlzY292ZXJlZFdvcmtmbG93cykudG9FcXVhbChcbiAgICAgIG5ldyBTZXQoW25vcm1hbGl6ZSh3b3JrZmxvd0ZpbGUpXSlcbiAgICApO1xuICAgIGV4cGVjdChkaXNjb3ZlcmVkLmRpc2NvdmVyZWRTZXJkZUZpbGVzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplKHNlcmRlRmlsZSldKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdpZ25vcmVzIHNlcmRlIGV4YW1wbGVzIHRoYXQgb25seSBhcHBlYXIgaW5zaWRlIGNvbW1lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnZW50cnkudHMnKTtcbiAgICBjb25zdCBkb2NzRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzcmMnLCAnZG9jcy50cycpO1xuXG4gICAgd3JpdGVGaWxlKGVudHJ5RmlsZSwgYGltcG9ydCAnLi9kb2NzJztcXG5gKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBkb2NzRmlsZSxcbiAgICAgIGAvKipcbiAqIGltcG9ydCB7IFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7XG4gKlxuICogY2xhc3MgRXhhbXBsZSB7XG4gKiAgIHN0YXRpYyBbV09SS0ZMT1dfU0VSSUFMSVpFXSh2YWx1ZSkge1xuICogICAgIHJldHVybiB2YWx1ZTtcbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgY29uc3QgV09SS0ZMT1dfU0VSSUFMSVpFID0gU3ltYm9sLmZvcignd29ya2Zsb3ctc2VyaWFsaXplJyk7XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPSBhd2FpdCBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbZW50cnlGaWxlXSxcbiAgICAgIGpvaW4odGVzdFJvb3QsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3QoZGlzY292ZXJlZC5kaXNjb3ZlcmVkU2VyZGVGaWxlcykudG9FcXVhbChuZXcgU2V0KCkpO1xuICB9KTtcblxuICBpdCgncmVsYXRpdml6ZXMgbmVzdGVkIHBhY2thZ2Ugc3RlcCByZWdpc3RyYXRpb24gaW1wb3J0cycsICgpID0+IHtcbiAgICBjb25zdCByb3V0ZURpciA9IGpvaW4odGVzdFJvb3QsICdhcHAnLCAnLndlbGwta25vd24nLCAnd29ya2Zsb3cnLCAndjEnKTtcbiAgICBjb25zdCBkaXJlY3RQYWNrYWdlRmlsZSA9IGpvaW4oXG4gICAgICB0ZXN0Um9vdCxcbiAgICAgICdub2RlX21vZHVsZXMnLFxuICAgICAgJ2RpcmVjdC1wa2cnLFxuICAgICAgJ3N0ZXAuanMnXG4gICAgKTtcbiAgICBjb25zdCBuZXN0ZWRQYWNrYWdlRmlsZSA9IGpvaW4oXG4gICAgICB0ZXN0Um9vdCxcbiAgICAgICdub2RlX21vZHVsZXMnLFxuICAgICAgJ3BhcmVudC1wa2cnLFxuICAgICAgJ25vZGVfbW9kdWxlcycsXG4gICAgICAnbmVzdGVkLXBrZycsXG4gICAgICAnc3RlcC5qcydcbiAgICApO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbih0ZXN0Um9vdCwgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAnZGlyZWN0LXBrZyc6ICcxLjAuMCcsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICdkaXJlY3QtcGtnJywgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAnZGlyZWN0LXBrZycsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIGV4cG9ydHM6IHtcbiAgICAgICAgICAnLi9zdGVwJzogJy4vc3RlcC5qcycsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKGRpcmVjdFBhY2thZ2VGaWxlLCBgZXhwb3J0IGNvbnN0IHN0ZXAgPSB0cnVlO1xcbmApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4oXG4gICAgICAgIHRlc3RSb290LFxuICAgICAgICAnbm9kZV9tb2R1bGVzJyxcbiAgICAgICAgJ3BhcmVudC1wa2cnLFxuICAgICAgICAnbm9kZV9tb2R1bGVzJyxcbiAgICAgICAgJ25lc3RlZC1wa2cnLFxuICAgICAgICAncGFja2FnZS5qc29uJ1xuICAgICAgKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogJ25lc3RlZC1wa2cnLFxuICAgICAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICAgICAgICBleHBvcnRzOiB7XG4gICAgICAgICAgJy4vc3RlcCc6ICcuL3N0ZXAuanMnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShuZXN0ZWRQYWNrYWdlRmlsZSwgYGV4cG9ydCBjb25zdCBzdGVwID0gdHJ1ZTtcXG5gKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290KTtcbiAgICBleHBlY3QoXG4gICAgICBidWlsZGVyLmNyZWF0ZVJvdXRlSW1wb3J0U3BlY2lmaWVyUHVibGljKGRpcmVjdFBhY2thZ2VGaWxlLCByb3V0ZURpcilcbiAgICApLnRvQmUoJ2RpcmVjdC1wa2cvc3RlcCcpO1xuICAgIGV4cGVjdChcbiAgICAgIGJ1aWxkZXIuY3JlYXRlUm91dGVJbXBvcnRTcGVjaWZpZXJQdWJsaWMobmVzdGVkUGFja2FnZUZpbGUsIHJvdXRlRGlyKVxuICAgICkudG9CZShcbiAgICAgICcuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFyZW50LXBrZy9ub2RlX21vZHVsZXMvbmVzdGVkLXBrZy9zdGVwLmpzJ1xuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync, } from 'node:fs';
1
+ import { mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync, } from 'node:fs';
2
2
  import { tmpdir } from 'node:os';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
@@ -14,6 +14,9 @@ class TestBuilder extends BaseBuilder {
14
14
  getInputFiles() {
15
15
  return super.getInputFiles();
16
16
  }
17
+ ensureSwcIgnored() {
18
+ return super.ensureSwcIgnored();
19
+ }
17
20
  }
18
21
  // Resolve symlinks in tmpdir to avoid macOS /var -> /private/var issues
19
22
  const realTmpdir = realpathSync(tmpdir());
@@ -80,6 +83,7 @@ describe('getInputFiles', () => {
80
83
  writeFile(srcDir, '.workflow-data/state.ts');
81
84
  writeFile(srcDir, '.workflow-vitest/workflows.mjs');
82
85
  writeFile(srcDir, '.well-known/workflow/route.ts');
86
+ writeFile(srcDir, '.swc/cache/plugin-output.ts');
83
87
  writeFile(srcDir, '.turbo/cache/build.ts');
84
88
  writeFile(srcDir, '.cache/babel/plugin.js');
85
89
  writeFile(srcDir, '.yarn/releases/yarn.cjs');
@@ -97,6 +101,7 @@ describe('getInputFiles', () => {
97
101
  expect(files).not.toContain(normalize(join(srcDir, '.workflow-data/state.ts')));
98
102
  expect(files).not.toContain(normalize(join(srcDir, '.workflow-vitest/workflows.mjs')));
99
103
  expect(files).not.toContain(normalize(join(srcDir, '.well-known/workflow/route.ts')));
104
+ expect(files).not.toContain(normalize(join(srcDir, '.swc/cache/plugin-output.ts')));
100
105
  expect(files).not.toContain(normalize(join(srcDir, '.turbo/cache/build.ts')));
101
106
  expect(files).not.toContain(normalize(join(srcDir, '.cache/babel/plugin.js')));
102
107
  expect(files).not.toContain(normalize(join(srcDir, '.yarn/releases/yarn.cjs')));
@@ -118,4 +123,31 @@ describe('getInputFiles', () => {
118
123
  expect(files).toContain(normalize(join(srcDir, '.api/config.cjs')));
119
124
  });
120
125
  });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWlucHV0LWZpbGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LWlucHV0LWZpbGVzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQ7O0dBRUc7QUFDSCxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFRCxtQkFBbUI7SUFDWixhQUFhO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUVELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxQzs7OztHQUlHO0FBQ0gsU0FBUyxTQUFTLENBQUMsQ0FBUztJQUMxQixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFXLEVBQUUsWUFBb0IsRUFBRSxPQUFPLEdBQUcsRUFBRTtJQUNoRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUs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LFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsU0FBUyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbkMsU0FBUyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXJDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWxwYXRoU3luYyxcbiAgcm1TeW5jLFxuICB3cml0ZUZpbGVTeW5jLFxufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogTWluaW1hbCBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHByb3RlY3RlZCBgZ2V0SW5wdXRGaWxlcygpYCBmb3IgdGVzdGluZy5cbiAqL1xuY2xhc3MgVGVzdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICAvLyBFeHBvc2UgZm9yIHRlc3RzXG4gIHB1YmxpYyBnZXRJbnB1dEZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0SW5wdXRGaWxlcygpO1xuICB9XG59XG5cbi8vIFJlc29sdmUgc3ltbGlua3MgaW4gdG1wZGlyIHRvIGF2b2lkIG1hY09TIC92YXIgLT4gL3ByaXZhdGUvdmFyIGlzc3Vlc1xuY29uc3QgcmVhbFRtcGRpciA9IHJlYWxwYXRoU3luYyh0bXBkaXIoKSk7XG5cbi8qKlxuICogTm9ybWFsaXplIGEgcGF0aCB0byBmb3J3YXJkIHNsYXNoZXMgZm9yIGNyb3NzLXBsYXRmb3JtIGNvbXBhcmlzb24uXG4gKiB0aW55Z2xvYmJ5IGFsd2F5cyByZXR1cm5zIGZvcndhcmQtc2xhc2ggcGF0aHMsIGV2ZW4gb24gV2luZG93cyxcbiAqIHdoaWxlIE5vZGUncyBgcGF0aC5qb2luKClgIHVzZXMgYmFja3NsYXNoZXMgb24gV2luZG93cy5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKHA6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVGaWxlKGRpcjogc3RyaW5nLCByZWxhdGl2ZVBhdGg6IHN0cmluZywgY29udGVudCA9ICcnKTogc3RyaW5nIHtcbiAgY29uc3QgZnVsbFBhdGggPSBqb2luKGRpciwgcmVsYXRpdmVQYXRoKTtcbiAgbWtkaXJTeW5jKGRpcm5hbWUoZnVsbFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhmdWxsUGF0aCwgY29udGVudCwgJ3V0Zi04Jyk7XG4gIHJldHVybiBmdWxsUGF0aDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVpbGRlcih3b3JraW5nRGlyOiBzdHJpbmcsIGRpcnM6IHN0cmluZ1tdKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnMsXG4gICAgc3RlcHNCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICdzdGVwcy5qcycpLFxuICAgIHdvcmtmbG93c0J1bmRsZVBhdGg6IGpvaW4od29ya2luZ0RpciwgJ3dvcmtmbG93cy5qcycpLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICd3ZWJob29rLmpzJyksXG4gIH07XG4gIHJldHVybiBuZXcgVGVzdEJ1aWxkZXIoY29uZmlnKTtcbn1cblxuZGVzY3JpYmUoJ2dldElucHV0RmlsZXMnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnZ2V0LWlucHV0LWZpbGVzLScpKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBybVN5bmModGVzdFJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc2NvdmVycyBmaWxlcyBpbnNpZGUgZG90LXByZWZpeGVkIGRpcmVjdG9yaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmhpZGRlbi9zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmNvbmZpZy93b3JrZmxvdy50cycsIFwiJ3VzZSB3b3JrZmxvdyc7XCIpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICdyZWd1bGFyL3N0ZXAudHMnLCBcIid1c2Ugc3RlcCc7XCIpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QsIFsnc3JjJ10pO1xuICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IGJ1aWxkZXIuZ2V0SW5wdXRGaWxlcygpKS5tYXAobm9ybWFsaXplKTtcblxuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5oaWRkZW4vc3RlcC50cycpKSk7XG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmNvbmZpZy93b3JrZmxvdy50cycpKSk7XG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAncmVndWxhci9zdGVwLnRzJykpKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc2NvdmVycyBkb3QtcHJlZml4ZWQgZmlsZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuaGlkZGVuLXN0ZXAudHMnLCBcIid1c2Ugc3RlcCc7XCIpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICd2aXNpYmxlLXN0ZXAudHMnLCBcIid1c2Ugc3RlcCc7XCIpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QsIFsnc3JjJ10pO1xuICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IGJ1aWxkZXIuZ2V0SW5wdXRGaWxlcygpKS5tYXAobm9ybWFsaXplKTtcblxuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5oaWRkZW4tc3RlcC50cycpKSk7XG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAndmlzaWJsZS1zdGVwLnRzJykpKTtcbiAgfSk7XG5cbiAgaXQoJ3N0aWxsIGV4Y2x1ZGVzIGV4cGxpY2l0bHkgaWdub3JlZCBkb3QtZGlyZWN0b3JpZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuZ2l0L2hvb2tzL3ByZS1jb21taXQudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLm5leHQvc2VydmVyL3BhZ2UudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLm51eHQvd29ya2Zsb3cvc3RlcHMubWpzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy52ZXJjZWwvb3V0cHV0L3N0ZXAudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLnN2ZWx0ZS1raXQvb3V0cHV0L3N0ZXAudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLndvcmtmbG93LWRhdGEvc3RhdGUudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLndvcmtmbG93LXZpdGVzdC93b3JrZmxvd3MubWpzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy53ZWxsLWtub3duL3dvcmtmbG93L3JvdXRlLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy50dXJiby9jYWNoZS9idWlsZC50cycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuY2FjaGUvYmFiZWwvcGx1Z2luLmpzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy55YXJuL3JlbGVhc2VzL3lhcm4uY2pzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5wbnBtLXN0b3JlL3YzL2ZpbGVzLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJ25vZGVfbW9kdWxlcy9wa2cvaW5kZXgudHMnKTtcbiAgICAvLyBUaGlzIG9uZSBzaG91bGQgc3RpbGwgYmUgZm91bmRcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmN1c3RvbS9zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddKTtcbiAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBidWlsZGVyLmdldElucHV0RmlsZXMoKSkubWFwKG5vcm1hbGl6ZSk7XG5cbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcuZ2l0L2hvb2tzL3ByZS1jb21taXQudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5uZXh0L3NlcnZlci9wYWdlLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcubnV4dC93b3JrZmxvdy9zdGVwcy5tanMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy52ZXJjZWwvb3V0cHV0L3N0ZXAudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5zdmVsdGUta2l0L291dHB1dC9zdGVwLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcud29ya2Zsb3ctZGF0YS9zdGF0ZS50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLndvcmtmbG93LXZpdGVzdC93b3JrZmxvd3MubWpzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcud2VsbC1rbm93bi93b3JrZmxvdy9yb3V0ZS50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLnR1cmJvL2NhY2hlL2J1aWxkLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcuY2FjaGUvYmFiZWwvcGx1Z2luLmpzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcueWFybi9yZWxlYXNlcy95YXJuLmNqcycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLnBucG0tc3RvcmUvdjMvZmlsZXMudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJ25vZGVfbW9kdWxlcy9wa2cvaW5kZXgudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5jdXN0b20vc3RlcC50cycpKSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNjb3ZlcnMgZmlsZXMgd2l0aCB2YXJpb3VzIHN1cHBvcnRlZCBleHRlbnNpb25zIGluIGRvdC1kaXJlY3RvcmllcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5hcGkvcm91dGUudHN4Jyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5hcGkvaGFuZGxlci5tdHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmFwaS91dGlscy5qcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuYXBpL2NvbmZpZy5janMnKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddKTtcbiAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBidWlsZGVyLmdldElucHV0RmlsZXMoKSkubWFwKG5vcm1hbGl6ZSk7XG5cbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuYXBpL3JvdXRlLnRzeCcpKSk7XG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmFwaS9oYW5kbGVyLm10cycpKSk7XG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmFwaS91dGlscy5qcycpKSk7XG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmFwaS9jb25maWcuY2pzJykpKTtcbiAgfSk7XG59KTtcbiJdfQ==
126
+ describe('ensureSwcIgnored', () => {
127
+ let testRoot;
128
+ beforeEach(() => {
129
+ testRoot = mkdtempSync(join(realTmpdir, 'swc-gitignore-'));
130
+ });
131
+ afterEach(() => {
132
+ rmSync(testRoot, { recursive: true, force: true });
133
+ });
134
+ it('adds .swc to the project .gitignore once', async () => {
135
+ writeFile(testRoot, '.gitignore', 'node_modules\n');
136
+ const builder = createBuilder(testRoot, ['src']);
137
+ await builder.ensureSwcIgnored();
138
+ await builder.ensureSwcIgnored();
139
+ const gitignore = readFileSync(join(testRoot, '.gitignore'), 'utf-8');
140
+ const swcEntries = gitignore
141
+ .split(/\r?\n/)
142
+ .filter((line) => line.trim() === '/.swc');
143
+ expect(gitignore).toBe('node_modules\n/.swc\n');
144
+ expect(swcEntries).toHaveLength(1);
145
+ });
146
+ it('preserves existing .swc gitignore variants', async () => {
147
+ writeFile(testRoot, '.gitignore', 'node_modules\n.swc/\n');
148
+ const builder = createBuilder(testRoot, ['src']);
149
+ await builder.ensureSwcIgnored();
150
+ expect(readFileSync(join(testRoot, '.gitignore'), 'utf-8')).toBe('node_modules\n.swc/\n');
151
+ });
152
+ });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWlucHV0LWZpbGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LWlucHV0LWZpbGVzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hEOztHQUVHO0FBQ0gsTUFBTSxXQUFZLFNBQVEsV0FBVztJQUNuQyxLQUFLLENBQUMsS0FBSztRQUNULFFBQVE7SUFDVixDQUFDO0lBRUQsbUJBQW1CO0lBQ1osYUFBYTtRQUNsQixPQUFPLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFDOzs7O0dBSUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxDQUFTO0lBQzFCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEdBQVcsRUFBRSxZQUFvQixFQUFFLE9BQU8sR0FBRyxFQUFFO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLElBQUks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QUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMxRCxTQUFTLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBRTNELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpELE1BQU0sT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5RCx1QkFBdUIsQ0FDeEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJlYWxwYXRoU3luYyxcbiAgcm1TeW5jLFxuICB3cml0ZUZpbGVTeW5jLFxufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogTWluaW1hbCBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHByb3RlY3RlZCBgZ2V0SW5wdXRGaWxlcygpYCBmb3IgdGVzdGluZy5cbiAqL1xuY2xhc3MgVGVzdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICAvLyBFeHBvc2UgZm9yIHRlc3RzXG4gIHB1YmxpYyBnZXRJbnB1dEZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0SW5wdXRGaWxlcygpO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZVN3Y0lnbm9yZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHN1cGVyLmVuc3VyZVN3Y0lnbm9yZWQoKTtcbiAgfVxufVxuXG4vLyBSZXNvbHZlIHN5bWxpbmtzIGluIHRtcGRpciB0byBhdm9pZCBtYWNPUyAvdmFyIC0+IC9wcml2YXRlL3ZhciBpc3N1ZXNcbmNvbnN0IHJlYWxUbXBkaXIgPSByZWFscGF0aFN5bmModG1wZGlyKCkpO1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHBhdGggdG8gZm9yd2FyZCBzbGFzaGVzIGZvciBjcm9zcy1wbGF0Zm9ybSBjb21wYXJpc29uLlxuICogdGlueWdsb2JieSBhbHdheXMgcmV0dXJucyBmb3J3YXJkLXNsYXNoIHBhdGhzLCBldmVuIG9uIFdpbmRvd3MsXG4gKiB3aGlsZSBOb2RlJ3MgYHBhdGguam9pbigpYCB1c2VzIGJhY2tzbGFzaGVzIG9uIFdpbmRvd3MuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZShwOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZShkaXI6IHN0cmluZywgcmVsYXRpdmVQYXRoOiBzdHJpbmcsIGNvbnRlbnQgPSAnJyk6IHN0cmluZyB7XG4gIGNvbnN0IGZ1bGxQYXRoID0gam9pbihkaXIsIHJlbGF0aXZlUGF0aCk7XG4gIG1rZGlyU3luYyhkaXJuYW1lKGZ1bGxQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIHdyaXRlRmlsZVN5bmMoZnVsbFBhdGgsIGNvbnRlbnQsICd1dGYtOCcpO1xuICByZXR1cm4gZnVsbFBhdGg7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1aWxkZXIod29ya2luZ0Rpcjogc3RyaW5nLCBkaXJzOiBzdHJpbmdbXSk6IFRlc3RCdWlsZGVyIHtcbiAgY29uc3QgY29uZmlnOiBTdGFuZGFsb25lQ29uZmlnID0ge1xuICAgIGJ1aWxkVGFyZ2V0OiAnc3RhbmRhbG9uZScsXG4gICAgd29ya2luZ0RpcixcbiAgICBkaXJzLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnc3RlcHMuanMnKSxcbiAgICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICd3b3JrZmxvd3MuanMnKSxcbiAgICB3ZWJob29rQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnd2ViaG9vay5qcycpLFxuICB9O1xuICByZXR1cm4gbmV3IFRlc3RCdWlsZGVyKGNvbmZpZyk7XG59XG5cbmRlc2NyaWJlKCdnZXRJbnB1dEZpbGVzJywgKCkgPT4ge1xuICBsZXQgdGVzdFJvb3Q6IHN0cmluZztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0ZXN0Um9vdCA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ2dldC1pbnB1dC1maWxlcy0nKSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNjb3ZlcnMgZmlsZXMgaW5zaWRlIGRvdC1wcmVmaXhlZCBkaXJlY3RvcmllcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5oaWRkZW4vc3RlcC50cycsIFwiJ3VzZSBzdGVwJztcIik7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5jb25maWcvd29ya2Zsb3cudHMnLCBcIid1c2Ugd29ya2Zsb3cnO1wiKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAncmVndWxhci9zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddKTtcbiAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBidWlsZGVyLmdldElucHV0RmlsZXMoKSkubWFwKG5vcm1hbGl6ZSk7XG5cbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuaGlkZGVuL3N0ZXAudHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5jb25maWcvd29ya2Zsb3cudHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJ3JlZ3VsYXIvc3RlcC50cycpKSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNjb3ZlcnMgZG90LXByZWZpeGVkIGZpbGVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmhpZGRlbi1zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAndmlzaWJsZS1zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddKTtcbiAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBidWlsZGVyLmdldElucHV0RmlsZXMoKSkubWFwKG5vcm1hbGl6ZSk7XG5cbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuaGlkZGVuLXN0ZXAudHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJ3Zpc2libGUtc3RlcC50cycpKSk7XG4gIH0pO1xuXG4gIGl0KCdzdGlsbCBleGNsdWRlcyBleHBsaWNpdGx5IGlnbm9yZWQgZG90LWRpcmVjdG9yaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmdpdC9ob29rcy9wcmUtY29tbWl0LnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5uZXh0L3NlcnZlci9wYWdlLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5udXh0L3dvcmtmbG93L3N0ZXBzLm1qcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcudmVyY2VsL291dHB1dC9zdGVwLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5zdmVsdGUta2l0L291dHB1dC9zdGVwLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy53b3JrZmxvdy1kYXRhL3N0YXRlLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy53b3JrZmxvdy12aXRlc3Qvd29ya2Zsb3dzLm1qcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcud2VsbC1rbm93bi93b3JrZmxvdy9yb3V0ZS50cycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuc3djL2NhY2hlL3BsdWdpbi1vdXRwdXQudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLnR1cmJvL2NhY2hlL2J1aWxkLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5jYWNoZS9iYWJlbC9wbHVnaW4uanMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLnlhcm4vcmVsZWFzZXMveWFybi5janMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLnBucG0tc3RvcmUvdjMvZmlsZXMudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnbm9kZV9tb2R1bGVzL3BrZy9pbmRleC50cycpO1xuICAgIC8vIFRoaXMgb25lIHNob3VsZCBzdGlsbCBiZSBmb3VuZFxuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuY3VzdG9tL3N0ZXAudHMnLCBcIid1c2Ugc3RlcCc7XCIpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QsIFsnc3JjJ10pO1xuICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IGJ1aWxkZXIuZ2V0SW5wdXRGaWxlcygpKS5tYXAobm9ybWFsaXplKTtcblxuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5naXQvaG9va3MvcHJlLWNvbW1pdC50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLm5leHQvc2VydmVyL3BhZ2UudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5udXh0L3dvcmtmbG93L3N0ZXBzLm1qcycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLnZlcmNlbC9vdXRwdXQvc3RlcC50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLnN2ZWx0ZS1raXQvb3V0cHV0L3N0ZXAudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy53b3JrZmxvdy1kYXRhL3N0YXRlLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcud29ya2Zsb3ctdml0ZXN0L3dvcmtmbG93cy5tanMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy53ZWxsLWtub3duL3dvcmtmbG93L3JvdXRlLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcuc3djL2NhY2hlL3BsdWdpbi1vdXRwdXQudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy50dXJiby9jYWNoZS9idWlsZC50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmNhY2hlL2JhYmVsL3BsdWdpbi5qcycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLnlhcm4vcmVsZWFzZXMveWFybi5janMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5wbnBtLXN0b3JlL3YzL2ZpbGVzLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICdub2RlX21vZHVsZXMvcGtnL2luZGV4LnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuY3VzdG9tL3N0ZXAudHMnKSkpO1xuICB9KTtcblxuICBpdCgnZGlzY292ZXJzIGZpbGVzIHdpdGggdmFyaW91cyBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpbiBkb3QtZGlyZWN0b3JpZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuYXBpL3JvdXRlLnRzeCcpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuYXBpL2hhbmRsZXIubXRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5hcGkvdXRpbHMuanMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmFwaS9jb25maWcuY2pzJyk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCwgWydzcmMnXSk7XG4gICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgYnVpbGRlci5nZXRJbnB1dEZpbGVzKCkpLm1hcChub3JtYWxpemUpO1xuXG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmFwaS9yb3V0ZS50c3gnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5hcGkvaGFuZGxlci5tdHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5hcGkvdXRpbHMuanMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5hcGkvY29uZmlnLmNqcycpKSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdlbnN1cmVTd2NJZ25vcmVkJywgKCkgPT4ge1xuICBsZXQgdGVzdFJvb3Q6IHN0cmluZztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0ZXN0Um9vdCA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ3N3Yy1naXRpZ25vcmUtJykpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHJtU3luYyh0ZXN0Um9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9KTtcblxuICBpdCgnYWRkcyAuc3djIHRvIHRoZSBwcm9qZWN0IC5naXRpZ25vcmUgb25jZScsIGFzeW5jICgpID0+IHtcbiAgICB3cml0ZUZpbGUodGVzdFJvb3QsICcuZ2l0aWdub3JlJywgJ25vZGVfbW9kdWxlc1xcbicpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QsIFsnc3JjJ10pO1xuXG4gICAgYXdhaXQgYnVpbGRlci5lbnN1cmVTd2NJZ25vcmVkKCk7XG4gICAgYXdhaXQgYnVpbGRlci5lbnN1cmVTd2NJZ25vcmVkKCk7XG5cbiAgICBjb25zdCBnaXRpZ25vcmUgPSByZWFkRmlsZVN5bmMoam9pbih0ZXN0Um9vdCwgJy5naXRpZ25vcmUnKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3Qgc3djRW50cmllcyA9IGdpdGlnbm9yZVxuICAgICAgLnNwbGl0KC9cXHI/XFxuLylcbiAgICAgIC5maWx0ZXIoKGxpbmUpID0+IGxpbmUudHJpbSgpID09PSAnLy5zd2MnKTtcblxuICAgIGV4cGVjdChnaXRpZ25vcmUpLnRvQmUoJ25vZGVfbW9kdWxlc1xcbi8uc3djXFxuJyk7XG4gICAgZXhwZWN0KHN3Y0VudHJpZXMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXNlcnZlcyBleGlzdGluZyAuc3djIGdpdGlnbm9yZSB2YXJpYW50cycsIGFzeW5jICgpID0+IHtcbiAgICB3cml0ZUZpbGUodGVzdFJvb3QsICcuZ2l0aWdub3JlJywgJ25vZGVfbW9kdWxlc1xcbi5zd2MvXFxuJyk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCwgWydzcmMnXSk7XG5cbiAgICBhd2FpdCBidWlsZGVyLmVuc3VyZVN3Y0lnbm9yZWQoKTtcblxuICAgIGV4cGVjdChyZWFkRmlsZVN5bmMoam9pbih0ZXN0Um9vdCwgJy5naXRpZ25vcmUnKSwgJ3V0Zi04JykpLnRvQmUoXG4gICAgICAnbm9kZV9tb2R1bGVzXFxuLnN3Yy9cXG4nXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export type { WorkflowManifest } from './apply-swc-transform.js';
2
2
  export { applySwcTransform } from './apply-swc-transform.js';
3
- export { BaseBuilder } from './base-builder.js';
3
+ export { BaseBuilder, type DiscoveredEntries } from './base-builder.js';
4
4
  export { createBuildQueue } from './build-queue.js';
5
- export { createBaseBuilderConfig, type DecoratorOptions, type DecoratorOptionsWithConfigPath, getDecoratorOptionsForDirectory, getDecoratorOptionsForDirectoryWithConfigPath, } from './config-helpers.js';
5
+ export { createBaseBuilderConfig, type DecoratorOptions, type DecoratorOptionsWithConfigPath, getDecoratorOptionsForDirectory, getDecoratorOptionsForDirectoryWithConfigPath, resolveConfiguredProjectRoot, resolveProjectRoot, } from './config-helpers.js';
6
6
  export { createStepQueueTrigger, createWorkflowEntrypointOptionsCode, createWorkflowQueueTrigger, STEP_QUEUE_TRIGGER, WORKFLOW_QUEUE_TRIGGER, } from './constants.js';
7
7
  export { createDiscoverEntriesPlugin } from './discover-entries-esbuild-plugin.js';
8
8
  export { clearModuleSpecifierCache, getImportPath, type ImportPathResult, type ModuleSpecifierResult, resolveModuleSpecifier, } from './module-specifier.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,8BAA8B,EACnC,+BAA+B,EAC/B,6CAA6C,GAC9C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,mCAAmC,EACnC,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EACL,yBAAyB,EACzB,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,8BAA8B,EACnC,+BAA+B,EAC/B,6CAA6C,EAC7C,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,mCAAmC,EACnC,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EACL,yBAAyB,EACzB,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { applySwcTransform } from './apply-swc-transform.js';
2
2
  export { BaseBuilder } from './base-builder.js';
3
3
  export { createBuildQueue } from './build-queue.js';
4
- export { createBaseBuilderConfig, getDecoratorOptionsForDirectory, getDecoratorOptionsForDirectoryWithConfigPath, } from './config-helpers.js';
4
+ export { createBaseBuilderConfig, getDecoratorOptionsForDirectory, getDecoratorOptionsForDirectoryWithConfigPath, resolveConfiguredProjectRoot, resolveProjectRoot, } from './config-helpers.js';
5
5
  export { createStepQueueTrigger, createWorkflowEntrypointOptionsCode, createWorkflowQueueTrigger, STEP_QUEUE_TRIGGER, WORKFLOW_QUEUE_TRIGGER, } from './constants.js';
6
6
  export { createDiscoverEntriesPlugin } from './discover-entries-esbuild-plugin.js';
7
7
  export { clearModuleSpecifierCache, getImportPath, resolveModuleSpecifier, } from './module-specifier.js';
@@ -15,4 +15,4 @@ export { detectWorkflowPatterns, generatedWorkflowPathPattern, isGeneratedWorkfl
15
15
  export { isValidBuildTarget, validBuildTargets } from './types.js';
16
16
  export { VercelBuildOutputAPIBuilder } from './vercel-build-output-api.js';
17
17
  export { resolveWorkflowAliasRelativePath } from './workflow-alias.js';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFDTCx1QkFBdUIsRUFHdkIsK0JBQStCLEVBQy9CLDZDQUE2QyxHQUM5QyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUNBQW1DLEVBQ25DLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkYsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixhQUFhLEVBR2Isc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsR0FDNUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUdwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLGtCQUFrQixFQUVsQixzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLDBCQUEwQixHQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBVTlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgV29ya2Zsb3dNYW5pZmVzdCB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5leHBvcnQgeyBhcHBseVN3Y1RyYW5zZm9ybSB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5leHBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmV4cG9ydCB7IGNyZWF0ZUJ1aWxkUXVldWUgfSBmcm9tICcuL2J1aWxkLXF1ZXVlLmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZUJhc2VCdWlsZGVyQ29uZmlnLFxuICB0eXBlIERlY29yYXRvck9wdGlvbnMsXG4gIHR5cGUgRGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoLFxuICBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5LFxuICBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGgsXG59IGZyb20gJy4vY29uZmlnLWhlbHBlcnMuanMnO1xuZXhwb3J0IHtcbiAgY3JlYXRlU3RlcFF1ZXVlVHJpZ2dlcixcbiAgY3JlYXRlV29ya2Zsb3dFbnRyeXBvaW50T3B0aW9uc0NvZGUsXG4gIGNyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyLFxuICBTVEVQX1FVRVVFX1RSSUdHRVIsXG4gIFdPUktGTE9XX1FVRVVFX1RSSUdHRVIsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJztcbmV4cG9ydCB7IGNyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbiB9IGZyb20gJy4vZGlzY292ZXItZW50cmllcy1lc2J1aWxkLXBsdWdpbi5qcyc7XG5leHBvcnQge1xuICBjbGVhck1vZHVsZVNwZWNpZmllckNhY2hlLFxuICBnZXRJbXBvcnRQYXRoLFxuICB0eXBlIEltcG9ydFBhdGhSZXN1bHQsXG4gIHR5cGUgTW9kdWxlU3BlY2lmaWVyUmVzdWx0LFxuICByZXNvbHZlTW9kdWxlU3BlY2lmaWVyLFxufSBmcm9tICcuL21vZHVsZS1zcGVjaWZpZXIuanMnO1xuZXhwb3J0IHsgY3JlYXRlTm9kZU1vZHVsZUVycm9yUGx1Z2luIH0gZnJvbSAnLi9ub2RlLW1vZHVsZS1lc2J1aWxkLXBsdWdpbi5qcyc7XG5leHBvcnQge1xuICBjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luLFxuICBQU0VVRE9fUEFDS0FHRVMsXG59IGZyb20gJy4vcHNldWRvLXBhY2thZ2UtZXNidWlsZC1wbHVnaW4uanMnO1xuZXhwb3J0IHtcbiAgTk9STUFMSVpFX1JFUVVFU1RfQ09ERSxcbiAgcmVwbGFjZUdlbmVyYXRlZFJvdXRlRXhwb3J0LFxufSBmcm9tICcuL3JlcXVlc3QtY29udmVydGVyLmpzJztcbmV4cG9ydCB7XG4gIGFuYWx5emVTZXJkZUNvbXBsaWFuY2UsXG4gIGV4dHJhY3RDbGFzc0VudHJpZXMsXG4gIHR5cGUgU2VyZGVDaGVja1Jlc3VsdCxcbiAgdHlwZSBTZXJkZUNsYXNzQ2hlY2tSZXN1bHQsXG59IGZyb20gJy4vc2VyZGUtY2hlY2tlci5qcyc7XG5leHBvcnQgeyBTdGFuZGFsb25lQnVpbGRlciB9IGZyb20gJy4vc3RhbmRhbG9uZS5qcyc7XG5leHBvcnQgeyBjcmVhdGVTd2NQbHVnaW4gfSBmcm9tICcuL3N3Yy1lc2J1aWxkLXBsdWdpbi5qcyc7XG5leHBvcnQge1xuICBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zLFxuICBnZW5lcmF0ZWRXb3JrZmxvd1BhdGhQYXR0ZXJuLFxuICBpc0dlbmVyYXRlZFdvcmtmbG93RmlsZSxcbiAgaXNXb3JrZmxvd1Nka0ZpbGUsXG4gIHNob3VsZFRyYW5zZm9ybUZpbGUsXG4gIHR1cmJvcGFja0NvbnRlbnRQYXR0ZXJuLFxuICB1c2VTdGVwUGF0dGVybixcbiAgdXNlV29ya2Zsb3dQYXR0ZXJuLFxuICB0eXBlIFdvcmtmbG93UGF0dGVybk1hdGNoLFxuICB3b3JrZmxvd1Nka1BhdGhQYXR0ZXJuLFxuICB3b3JrZmxvd1NlcmRlSW1wb3J0UGF0dGVybixcbiAgd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4sXG59IGZyb20gJy4vdHJhbnNmb3JtLXV0aWxzLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQXN0cm9Db25maWcsXG4gIEJ1aWxkVGFyZ2V0LFxuICBOZXh0Q29uZmlnLFxuICBTdGFuZGFsb25lQ29uZmlnLFxuICBTdmVsdGVLaXRDb25maWcsXG4gIFZlcmNlbEJ1aWxkT3V0cHV0Q29uZmlnLFxuICBXb3JrZmxvd0NvbmZpZyxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5leHBvcnQgeyBpc1ZhbGlkQnVpbGRUYXJnZXQsIHZhbGlkQnVpbGRUYXJnZXRzIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5leHBvcnQgeyBWZXJjZWxCdWlsZE91dHB1dEFQSUJ1aWxkZXIgfSBmcm9tICcuL3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpLmpzJztcbmV4cG9ydCB7IHJlc29sdmVXb3JrZmxvd0FsaWFzUmVsYXRpdmVQYXRoIH0gZnJvbSAnLi93b3JrZmxvdy1hbGlhcy5qcyc7XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsdUJBQXVCLEVBR3ZCLCtCQUErQixFQUMvQiw2Q0FBNkMsRUFDN0MsNEJBQTRCLEVBQzVCLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUNBQW1DLEVBQ25DLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkYsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixhQUFhLEVBR2Isc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsR0FDNUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUdwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLGtCQUFrQixFQUVsQixzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLDBCQUEwQixHQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBVTlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgV29ya2Zsb3dNYW5pZmVzdCB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5leHBvcnQgeyBhcHBseVN3Y1RyYW5zZm9ybSB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5leHBvcnQgeyBCYXNlQnVpbGRlciwgdHlwZSBEaXNjb3ZlcmVkRW50cmllcyB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmV4cG9ydCB7IGNyZWF0ZUJ1aWxkUXVldWUgfSBmcm9tICcuL2J1aWxkLXF1ZXVlLmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZUJhc2VCdWlsZGVyQ29uZmlnLFxuICB0eXBlIERlY29yYXRvck9wdGlvbnMsXG4gIHR5cGUgRGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoLFxuICBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5LFxuICBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGgsXG4gIHJlc29sdmVDb25maWd1cmVkUHJvamVjdFJvb3QsXG4gIHJlc29sdmVQcm9qZWN0Um9vdCxcbn0gZnJvbSAnLi9jb25maWctaGVscGVycy5qcyc7XG5leHBvcnQge1xuICBjcmVhdGVTdGVwUXVldWVUcmlnZ2VyLFxuICBjcmVhdGVXb3JrZmxvd0VudHJ5cG9pbnRPcHRpb25zQ29kZSxcbiAgY3JlYXRlV29ya2Zsb3dRdWV1ZVRyaWdnZXIsXG4gIFNURVBfUVVFVUVfVFJJR0dFUixcbiAgV09SS0ZMT1dfUVVFVUVfVFJJR0dFUixcbn0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuZXhwb3J0IHsgY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luIH0gZnJvbSAnLi9kaXNjb3Zlci1lbnRyaWVzLWVzYnVpbGQtcGx1Z2luLmpzJztcbmV4cG9ydCB7XG4gIGNsZWFyTW9kdWxlU3BlY2lmaWVyQ2FjaGUsXG4gIGdldEltcG9ydFBhdGgsXG4gIHR5cGUgSW1wb3J0UGF0aFJlc3VsdCxcbiAgdHlwZSBNb2R1bGVTcGVjaWZpZXJSZXN1bHQsXG4gIHJlc29sdmVNb2R1bGVTcGVjaWZpZXIsXG59IGZyb20gJy4vbW9kdWxlLXNwZWNpZmllci5qcyc7XG5leHBvcnQgeyBjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4gfSBmcm9tICcuL25vZGUtbW9kdWxlLWVzYnVpbGQtcGx1Z2luLmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZVBzZXVkb1BhY2thZ2VQbHVnaW4sXG4gIFBTRVVET19QQUNLQUdFUyxcbn0gZnJvbSAnLi9wc2V1ZG8tcGFja2FnZS1lc2J1aWxkLXBsdWdpbi5qcyc7XG5leHBvcnQge1xuICBOT1JNQUxJWkVfUkVRVUVTVF9DT0RFLFxuICByZXBsYWNlR2VuZXJhdGVkUm91dGVFeHBvcnQsXG59IGZyb20gJy4vcmVxdWVzdC1jb252ZXJ0ZXIuanMnO1xuZXhwb3J0IHtcbiAgYW5hbHl6ZVNlcmRlQ29tcGxpYW5jZSxcbiAgZXh0cmFjdENsYXNzRW50cmllcyxcbiAgdHlwZSBTZXJkZUNoZWNrUmVzdWx0LFxuICB0eXBlIFNlcmRlQ2xhc3NDaGVja1Jlc3VsdCxcbn0gZnJvbSAnLi9zZXJkZS1jaGVja2VyLmpzJztcbmV4cG9ydCB7IFN0YW5kYWxvbmVCdWlsZGVyIH0gZnJvbSAnLi9zdGFuZGFsb25lLmpzJztcbmV4cG9ydCB7IGNyZWF0ZVN3Y1BsdWdpbiB9IGZyb20gJy4vc3djLWVzYnVpbGQtcGx1Z2luLmpzJztcbmV4cG9ydCB7XG4gIGRldGVjdFdvcmtmbG93UGF0dGVybnMsXG4gIGdlbmVyYXRlZFdvcmtmbG93UGF0aFBhdHRlcm4sXG4gIGlzR2VuZXJhdGVkV29ya2Zsb3dGaWxlLFxuICBpc1dvcmtmbG93U2RrRmlsZSxcbiAgc2hvdWxkVHJhbnNmb3JtRmlsZSxcbiAgdHVyYm9wYWNrQ29udGVudFBhdHRlcm4sXG4gIHVzZVN0ZXBQYXR0ZXJuLFxuICB1c2VXb3JrZmxvd1BhdHRlcm4sXG4gIHR5cGUgV29ya2Zsb3dQYXR0ZXJuTWF0Y2gsXG4gIHdvcmtmbG93U2RrUGF0aFBhdHRlcm4sXG4gIHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLFxuICB3b3JrZmxvd1NlcmRlU3ltYm9sUGF0dGVybixcbn0gZnJvbSAnLi90cmFuc2Zvcm0tdXRpbHMuanMnO1xuZXhwb3J0IHR5cGUge1xuICBBc3Ryb0NvbmZpZyxcbiAgQnVpbGRUYXJnZXQsXG4gIE5leHRDb25maWcsXG4gIFN0YW5kYWxvbmVDb25maWcsXG4gIFN2ZWx0ZUtpdENvbmZpZyxcbiAgVmVyY2VsQnVpbGRPdXRwdXRDb25maWcsXG4gIFdvcmtmbG93Q29uZmlnLFxufSBmcm9tICcuL3R5cGVzLmpzJztcbmV4cG9ydCB7IGlzVmFsaWRCdWlsZFRhcmdldCwgdmFsaWRCdWlsZFRhcmdldHMgfSBmcm9tICcuL3R5cGVzLmpzJztcbmV4cG9ydCB7IFZlcmNlbEJ1aWxkT3V0cHV0QVBJQnVpbGRlciB9IGZyb20gJy4vdmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkuanMnO1xuZXhwb3J0IHsgcmVzb2x2ZVdvcmtmbG93QWxpYXNSZWxhdGl2ZVBhdGggfSBmcm9tICcuL3dvcmtmbG93LWFsaWFzLmpzJztcbiJdfQ==