@workflow/builders 5.0.0-beta.0 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apply-swc-transform.d.ts +1 -1
- package/dist/apply-swc-transform.d.ts.map +1 -1
- package/dist/apply-swc-transform.js +1 -1
- package/dist/base-builder.d.ts +79 -5
- package/dist/base-builder.d.ts.map +1 -1
- package/dist/base-builder.js +424 -44
- package/dist/build-queue.js +1 -1
- package/dist/config-helpers.d.ts +2 -1
- package/dist/config-helpers.d.ts.map +1 -1
- package/dist/config-helpers.js +2 -1
- package/dist/constants.d.ts +3 -13
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -14
- package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
- package/dist/discover-entries-esbuild-plugin.js +27 -10
- package/dist/discover-entries-esbuild-plugin.test.js +42 -2
- package/dist/esbuild-tsconfig.js +1 -1
- package/dist/esbuild-tsconfig.test.js +1 -1
- package/dist/external-package-warning.test.d.ts +2 -0
- package/dist/external-package-warning.test.d.ts.map +1 -0
- package/dist/external-package-warning.test.js +219 -0
- package/dist/get-input-files.test.js +49 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/module-specifier.d.ts.map +1 -1
- package/dist/module-specifier.js +48 -10
- package/dist/module-specifier.test.js +21 -1
- package/dist/node-module-esbuild-plugin.d.ts.map +1 -1
- package/dist/node-module-esbuild-plugin.js +73 -23
- package/dist/node-module-esbuild-plugin.test.js +97 -1
- package/dist/pseudo-package-esbuild-plugin.js +1 -1
- package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
- package/dist/request-converter.js +1 -1
- package/dist/resolve-sourcemap.test.d.ts +2 -0
- package/dist/resolve-sourcemap.test.d.ts.map +1 -0
- package/dist/resolve-sourcemap.test.js +126 -0
- package/dist/serde-checker.js +1 -1
- package/dist/standalone.d.ts +0 -3
- package/dist/standalone.d.ts.map +1 -1
- package/dist/standalone.js +11 -40
- package/dist/swc-esbuild-plugin.d.ts +10 -1
- package/dist/swc-esbuild-plugin.d.ts.map +1 -1
- package/dist/swc-esbuild-plugin.js +73 -9
- package/dist/swc-esbuild-plugin.test.js +280 -4
- package/dist/transform-utils.d.ts +3 -9
- package/dist/transform-utils.d.ts.map +1 -1
- package/dist/transform-utils.js +5 -30
- package/dist/transform-utils.test.js +37 -17
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/vercel-build-output-api.d.ts +0 -2
- package/dist/vercel-build-output-api.d.ts.map +1 -1
- package/dist/vercel-build-output-api.js +32 -57
- package/dist/workflow-alias.js +1 -1
- package/dist/workflow-alias.test.js +1 -1
- package/dist/workflows-extractor.js +1 -1
- package/package.json +5 -5
- package/dist/apply-swc-transform.js.map +0 -1
- package/dist/base-builder.js.map +0 -1
- package/dist/build-queue.js.map +0 -1
- package/dist/config-helpers.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/discover-entries-esbuild-plugin.js.map +0 -1
- package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
- package/dist/esbuild-tsconfig.js.map +0 -1
- package/dist/esbuild-tsconfig.test.js.map +0 -1
- package/dist/get-input-files.test.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/module-specifier.js.map +0 -1
- package/dist/module-specifier.test.js.map +0 -1
- package/dist/node-module-esbuild-plugin.js.map +0 -1
- package/dist/node-module-esbuild-plugin.test.js.map +0 -1
- package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
- package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
- package/dist/request-converter.js.map +0 -1
- package/dist/serde-checker.js.map +0 -1
- package/dist/standalone.js.map +0 -1
- package/dist/swc-esbuild-plugin.js.map +0 -1
- package/dist/swc-esbuild-plugin.test.js.map +0 -1
- package/dist/transform-utils.js.map +0 -1
- package/dist/transform-utils.test.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/vercel-build-output-api.js.map +0 -1
- package/dist/workflow-alias.js.map +0 -1
- package/dist/workflow-alias.test.js.map +0 -1
- package/dist/workflows-extractor.js.map +0 -1
|
@@ -0,0 +1,219 @@
|
|
|
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, vi } from 'vitest';
|
|
5
|
+
import { BaseBuilder } from './base-builder.js';
|
|
6
|
+
/**
|
|
7
|
+
* Minimal subclass to expose the protected `discoverEntries()` for testing.
|
|
8
|
+
*/
|
|
9
|
+
class TestBuilder extends BaseBuilder {
|
|
10
|
+
async build() {
|
|
11
|
+
// no-op
|
|
12
|
+
}
|
|
13
|
+
// Expose for tests
|
|
14
|
+
discoverEntriesPublic(inputs, outdir) {
|
|
15
|
+
return this.discoverEntries(inputs, outdir);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Resolve symlinks in tmpdir to avoid macOS /var -> /private/var issues
|
|
19
|
+
const realTmpdir = realpathSync(tmpdir());
|
|
20
|
+
function writeFile(path, contents) {
|
|
21
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
22
|
+
writeFileSync(path, contents, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
function createBuilder(workingDir, externalPackages) {
|
|
25
|
+
const config = {
|
|
26
|
+
buildTarget: 'standalone',
|
|
27
|
+
workingDir,
|
|
28
|
+
dirs: ['.'],
|
|
29
|
+
externalPackages,
|
|
30
|
+
stepsBundlePath: join(workingDir, 'steps.js'),
|
|
31
|
+
workflowsBundlePath: join(workingDir, 'workflows.js'),
|
|
32
|
+
webhookBundlePath: join(workingDir, 'webhook.js'),
|
|
33
|
+
};
|
|
34
|
+
return new TestBuilder(config);
|
|
35
|
+
}
|
|
36
|
+
describe('warnAboutExternalWorkflowPackages', () => {
|
|
37
|
+
let testRoot;
|
|
38
|
+
let warnSpy;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
testRoot = mkdtempSync(join(realTmpdir, 'workflow-external-pkg-warning-'));
|
|
41
|
+
warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
42
|
+
});
|
|
43
|
+
afterEach(() => {
|
|
44
|
+
warnSpy.mockRestore();
|
|
45
|
+
rmSync(testRoot, { recursive: true, force: true });
|
|
46
|
+
});
|
|
47
|
+
it('warns when an external package depends on @workflow/serde', async () => {
|
|
48
|
+
// Create a mock project with a node_modules package
|
|
49
|
+
const projectDir = join(testRoot, 'project');
|
|
50
|
+
// Create a minimal entry file for the project
|
|
51
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
52
|
+
// Create the external package with @workflow/serde dependency
|
|
53
|
+
writeFile(join(projectDir, 'node_modules', 'my-serde-pkg', 'package.json'), JSON.stringify({
|
|
54
|
+
name: 'my-serde-pkg',
|
|
55
|
+
version: '1.0.0',
|
|
56
|
+
main: 'index.js',
|
|
57
|
+
dependencies: {
|
|
58
|
+
'@workflow/serde': '^1.0.0',
|
|
59
|
+
},
|
|
60
|
+
}));
|
|
61
|
+
writeFile(join(projectDir, 'node_modules', 'my-serde-pkg', 'index.js'), 'export class Foo {}');
|
|
62
|
+
const builder = createBuilder(projectDir, ['my-serde-pkg']);
|
|
63
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
64
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
65
|
+
const warnMessage = warnSpy.mock.calls[0]?.[0];
|
|
66
|
+
expect(warnMessage).toContain('my-serde-pkg');
|
|
67
|
+
expect(warnMessage).toContain('serverExternalPackages');
|
|
68
|
+
expect(warnMessage).toContain('serialization classes');
|
|
69
|
+
});
|
|
70
|
+
it('warns when an external package source contains serde symbols', async () => {
|
|
71
|
+
const projectDir = join(testRoot, 'project');
|
|
72
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
73
|
+
// Package without @workflow/serde dep but with Symbol.for patterns in source
|
|
74
|
+
writeFile(join(projectDir, 'node_modules', 'my-symbol-pkg', 'package.json'), JSON.stringify({
|
|
75
|
+
name: 'my-symbol-pkg',
|
|
76
|
+
version: '1.0.0',
|
|
77
|
+
main: 'index.js',
|
|
78
|
+
}));
|
|
79
|
+
writeFile(join(projectDir, 'node_modules', 'my-symbol-pkg', 'index.js'), `export class Bar {
|
|
80
|
+
static [Symbol.for('workflow-serialize')](instance) { return {}; }
|
|
81
|
+
static [Symbol.for('workflow-deserialize')](data) { return new Bar(); }
|
|
82
|
+
}`);
|
|
83
|
+
const builder = createBuilder(projectDir, ['my-symbol-pkg']);
|
|
84
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
85
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
86
|
+
const warnMessage = warnSpy.mock.calls[0]?.[0];
|
|
87
|
+
expect(warnMessage).toContain('my-symbol-pkg');
|
|
88
|
+
expect(warnMessage).toContain('serialization classes');
|
|
89
|
+
});
|
|
90
|
+
it('warns when an external package contains "use step" directives', async () => {
|
|
91
|
+
const projectDir = join(testRoot, 'project');
|
|
92
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
93
|
+
writeFile(join(projectDir, 'node_modules', 'my-step-pkg', 'package.json'), JSON.stringify({
|
|
94
|
+
name: 'my-step-pkg',
|
|
95
|
+
version: '1.0.0',
|
|
96
|
+
main: 'index.js',
|
|
97
|
+
}));
|
|
98
|
+
writeFile(join(projectDir, 'node_modules', 'my-step-pkg', 'index.js'), `export async function doWork() {
|
|
99
|
+
"use step";
|
|
100
|
+
return 42;
|
|
101
|
+
}`);
|
|
102
|
+
const builder = createBuilder(projectDir, ['my-step-pkg']);
|
|
103
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
104
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
105
|
+
const warnMessage = warnSpy.mock.calls[0]?.[0];
|
|
106
|
+
expect(warnMessage).toContain('my-step-pkg');
|
|
107
|
+
expect(warnMessage).toContain('"use step" functions');
|
|
108
|
+
});
|
|
109
|
+
it('warns when an external package contains "use workflow" directives', async () => {
|
|
110
|
+
const projectDir = join(testRoot, 'project');
|
|
111
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
112
|
+
writeFile(join(projectDir, 'node_modules', 'my-workflow-pkg', 'package.json'), JSON.stringify({
|
|
113
|
+
name: 'my-workflow-pkg',
|
|
114
|
+
version: '1.0.0',
|
|
115
|
+
main: 'index.js',
|
|
116
|
+
}));
|
|
117
|
+
writeFile(join(projectDir, 'node_modules', 'my-workflow-pkg', 'index.js'), `export async function runJob() {
|
|
118
|
+
"use workflow";
|
|
119
|
+
return "done";
|
|
120
|
+
}`);
|
|
121
|
+
const builder = createBuilder(projectDir, ['my-workflow-pkg']);
|
|
122
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
123
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
124
|
+
const warnMessage = warnSpy.mock.calls[0]?.[0];
|
|
125
|
+
expect(warnMessage).toContain('my-workflow-pkg');
|
|
126
|
+
expect(warnMessage).toContain('"use workflow" functions');
|
|
127
|
+
});
|
|
128
|
+
it('does not warn for packages without workflow patterns', async () => {
|
|
129
|
+
const projectDir = join(testRoot, 'project');
|
|
130
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
131
|
+
writeFile(join(projectDir, 'node_modules', 'plain-pkg', 'package.json'), JSON.stringify({
|
|
132
|
+
name: 'plain-pkg',
|
|
133
|
+
version: '1.0.0',
|
|
134
|
+
main: 'index.js',
|
|
135
|
+
}));
|
|
136
|
+
writeFile(join(projectDir, 'node_modules', 'plain-pkg', 'index.js'), 'export const hello = "world";');
|
|
137
|
+
const builder = createBuilder(projectDir, ['plain-pkg']);
|
|
138
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
139
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
140
|
+
});
|
|
141
|
+
it('does not warn for pseudo-packages (server-only, client-only)', async () => {
|
|
142
|
+
const projectDir = join(testRoot, 'project');
|
|
143
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
144
|
+
const builder = createBuilder(projectDir, ['server-only', 'client-only']);
|
|
145
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
146
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
147
|
+
});
|
|
148
|
+
it('does not warn when externalPackages is empty', async () => {
|
|
149
|
+
const projectDir = join(testRoot, 'project');
|
|
150
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
151
|
+
const builder = createBuilder(projectDir, []);
|
|
152
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
153
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
154
|
+
});
|
|
155
|
+
it('warns only once per package across multiple discoverEntries calls', async () => {
|
|
156
|
+
const projectDir = join(testRoot, 'project');
|
|
157
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
158
|
+
writeFile(join(projectDir, 'other.ts'), 'export const y = 2;');
|
|
159
|
+
writeFile(join(projectDir, 'node_modules', 'my-serde-pkg', 'package.json'), JSON.stringify({
|
|
160
|
+
name: 'my-serde-pkg',
|
|
161
|
+
version: '1.0.0',
|
|
162
|
+
main: 'index.js',
|
|
163
|
+
dependencies: { '@workflow/serde': '^1.0.0' },
|
|
164
|
+
}));
|
|
165
|
+
writeFile(join(projectDir, 'node_modules', 'my-serde-pkg', 'index.js'), 'export class Foo {}');
|
|
166
|
+
const builder = createBuilder(projectDir, ['my-serde-pkg']);
|
|
167
|
+
// Call discoverEntries twice with different inputs
|
|
168
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
169
|
+
await builder.discoverEntriesPublic([join(projectDir, 'other.ts')], join(projectDir, 'out2'));
|
|
170
|
+
// Should only warn once
|
|
171
|
+
const warnCalls = warnSpy.mock.calls.filter((call) => call[0].includes('my-serde-pkg'));
|
|
172
|
+
expect(warnCalls).toHaveLength(1);
|
|
173
|
+
});
|
|
174
|
+
it('lists multiple detected issues in the warning message', async () => {
|
|
175
|
+
const projectDir = join(testRoot, 'project');
|
|
176
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
177
|
+
writeFile(join(projectDir, 'node_modules', 'multi-pkg', 'package.json'), JSON.stringify({
|
|
178
|
+
name: 'multi-pkg',
|
|
179
|
+
version: '1.0.0',
|
|
180
|
+
main: 'index.js',
|
|
181
|
+
dependencies: { '@workflow/serde': '^1.0.0' },
|
|
182
|
+
}));
|
|
183
|
+
writeFile(join(projectDir, 'node_modules', 'multi-pkg', 'index.js'), `export async function doWork() {
|
|
184
|
+
"use step";
|
|
185
|
+
return 42;
|
|
186
|
+
}
|
|
187
|
+
export class Foo {
|
|
188
|
+
static [Symbol.for('workflow-serialize')](instance) { return {}; }
|
|
189
|
+
static [Symbol.for('workflow-deserialize')](data) { return new Foo(); }
|
|
190
|
+
}`);
|
|
191
|
+
const builder = createBuilder(projectDir, ['multi-pkg']);
|
|
192
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
193
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
194
|
+
const warnMessage = warnSpy.mock.calls[0]?.[0];
|
|
195
|
+
expect(warnMessage).toContain('"use step" functions');
|
|
196
|
+
expect(warnMessage).toContain('serialization classes');
|
|
197
|
+
});
|
|
198
|
+
it('warns via entry-file detection when package.json has no serde dep', async () => {
|
|
199
|
+
const projectDir = join(testRoot, 'project');
|
|
200
|
+
writeFile(join(projectDir, 'index.ts'), 'export const x = 1;');
|
|
201
|
+
// Package without @workflow/serde in deps, but entry has "use step"
|
|
202
|
+
writeFile(join(projectDir, 'node_modules', 'no-serde-dep-pkg', 'package.json'), JSON.stringify({
|
|
203
|
+
name: 'no-serde-dep-pkg',
|
|
204
|
+
version: '1.0.0',
|
|
205
|
+
main: 'index.js',
|
|
206
|
+
}));
|
|
207
|
+
writeFile(join(projectDir, 'node_modules', 'no-serde-dep-pkg', 'index.js'), `export async function doWork() {
|
|
208
|
+
"use step";
|
|
209
|
+
return 42;
|
|
210
|
+
}`);
|
|
211
|
+
const builder = createBuilder(projectDir, ['no-serde-dep-pkg']);
|
|
212
|
+
await builder.discoverEntriesPublic([join(projectDir, 'index.ts')], join(projectDir, 'out'));
|
|
213
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
214
|
+
const warnMessage = warnSpy.mock.calls[0]?.[0];
|
|
215
|
+
expect(warnMessage).toContain('no-serde-dep-pkg');
|
|
216
|
+
expect(warnMessage).toContain('"use step" functions');
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFja2FnZS13YXJuaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXh0ZXJuYWwtcGFja2FnZS13YXJuaW5nLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUd4RTs7R0FFRztBQUNILE1BQU0sV0FBWSxTQUFRLFdBQVc7SUFDbkMsS0FBSyxDQUFDLEtBQUs7UUFDVCxRQUFRO0lBQ1YsQ0FBQztJQUVELG1CQUFtQjtJQUNaLHFCQUFxQixDQUMxQixNQUFnQixFQUNoQixNQUFjO1FBRWQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUFFRCx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFFMUMsU0FBUyxTQUFTLENBQUMsSUFBWSxFQUFFLFFBQWdCO0lBQy9DLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxh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bnQiOlsiaW1wb3J0IHtcbiAgbWtkaXJTeW5jLFxuICBta2R0ZW1wU3luYyxcbiAgcmVhbHBhdGhTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQsIHZpIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEJhc2VCdWlsZGVyLCB0eXBlIERpc2NvdmVyZWRFbnRyaWVzIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogTWluaW1hbCBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHByb3RlY3RlZCBgZGlzY292ZXJFbnRyaWVzKClgIGZvciB0ZXN0aW5nLlxuICovXG5jbGFzcyBUZXN0QnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gbm8tb3BcbiAgfVxuXG4gIC8vIEV4cG9zZSBmb3IgdGVzdHNcbiAgcHVibGljIGRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICBpbnB1dHM6IHN0cmluZ1tdLFxuICAgIG91dGRpcjogc3RyaW5nXG4gICk6IFByb21pc2U8RGlzY292ZXJlZEVudHJpZXM+IHtcbiAgICByZXR1cm4gdGhpcy5kaXNjb3ZlckVudHJpZXMoaW5wdXRzLCBvdXRkaXIpO1xuICB9XG59XG5cbi8vIFJlc29sdmUgc3ltbGlua3MgaW4gdG1wZGlyIHRvIGF2b2lkIG1hY09TIC92YXIgLT4gL3ByaXZhdGUvdmFyIGlzc3Vlc1xuY29uc3QgcmVhbFRtcGRpciA9IHJlYWxwYXRoU3luYyh0bXBkaXIoKSk7XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiB2b2lkIHtcbiAgbWtkaXJTeW5jKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKHBhdGgsIGNvbnRlbnRzLCAndXRmLTgnKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVpbGRlcihcbiAgd29ya2luZ0Rpcjogc3RyaW5nLFxuICBleHRlcm5hbFBhY2thZ2VzOiBzdHJpbmdbXVxuKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIGV4dGVybmFsUGFja2FnZXMsXG4gICAgc3RlcHNCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICdzdGVwcy5qcycpLFxuICAgIHdvcmtmbG93c0J1bmRsZVBhdGg6IGpvaW4od29ya2luZ0RpciwgJ3dvcmtmbG93cy5qcycpLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICd3ZWJob29rLmpzJyksXG4gIH07XG4gIHJldHVybiBuZXcgVGVzdEJ1aWxkZXIoY29uZmlnKTtcbn1cblxuZGVzY3JpYmUoJ3dhcm5BYm91dEV4dGVybmFsV29ya2Zsb3dQYWNrYWdlcycsICgpID0+IHtcbiAgbGV0IHRlc3RSb290OiBzdHJpbmc7XG4gIGxldCB3YXJuU3B5OiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5zcHlPbj47XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGVzdFJvb3QgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICd3b3JrZmxvdy1leHRlcm5hbC1wa2ctd2FybmluZy0nKSk7XG4gICAgd2FyblNweSA9IHZpLnNweU9uKGNvbnNvbGUsICd3YXJuJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB3YXJuU3B5Lm1vY2tSZXN0b3JlKCk7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCd3YXJucyB3aGVuIGFuIGV4dGVybmFsIHBhY2thZ2UgZGVwZW5kcyBvbiBAd29ya2Zsb3cvc2VyZGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gQ3JlYXRlIGEgbW9jayBwcm9qZWN0IHdpdGggYSBub2RlX21vZHVsZXMgcGFja2FnZVxuICAgIGNvbnN0IHByb2plY3REaXIgPSBqb2luKHRlc3RSb290LCAncHJvamVjdCcpO1xuXG4gICAgLy8gQ3JlYXRlIGEgbWluaW1hbCBlbnRyeSBmaWxlIGZvciB0aGUgcHJvamVjdFxuICAgIHdyaXRlRmlsZShqb2luKHByb2plY3REaXIsICdpbmRleC50cycpLCAnZXhwb3J0IGNvbnN0IHggPSAxOycpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBleHRlcm5hbCBwYWNrYWdlIHdpdGggQHdvcmtmbG93L3NlcmRlIGRlcGVuZGVuY3lcbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAnbXktc2VyZGUtcGtnJywgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAnbXktc2VyZGUtcGtnJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgbWFpbjogJ2luZGV4LmpzJyxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiB7XG4gICAgICAgICAgJ0B3b3JrZmxvdy9zZXJkZSc6ICdeMS4wLjAnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ25vZGVfbW9kdWxlcycsICdteS1zZXJkZS1wa2cnLCAnaW5kZXguanMnKSxcbiAgICAgICdleHBvcnQgY2xhc3MgRm9vIHt9J1xuICAgICk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcihwcm9qZWN0RGlyLCBbJ215LXNlcmRlLXBrZyddKTtcbiAgICBhd2FpdCBidWlsZGVyLmRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICAgIFtqb2luKHByb2plY3REaXIsICdpbmRleC50cycpXSxcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ291dCcpXG4gICAgKTtcblxuICAgIGV4cGVjdCh3YXJuU3B5KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgY29uc3Qgd2Fybk1lc3NhZ2UgPSB3YXJuU3B5Lm1vY2suY2FsbHNbMF0/LlswXSBhcyBzdHJpbmc7XG4gICAgZXhwZWN0KHdhcm5NZXNzYWdlKS50b0NvbnRhaW4oJ215LXNlcmRlLXBrZycpO1xuICAgIGV4cGVjdCh3YXJuTWVzc2FnZSkudG9Db250YWluKCdzZXJ2ZXJFeHRlcm5hbFBhY2thZ2VzJyk7XG4gICAgZXhwZWN0KHdhcm5NZXNzYWdlKS50b0NvbnRhaW4oJ3NlcmlhbGl6YXRpb24gY2xhc3NlcycpO1xuICB9KTtcblxuICBpdCgnd2FybnMgd2hlbiBhbiBleHRlcm5hbCBwYWNrYWdlIHNvdXJjZSBjb250YWlucyBzZXJkZSBzeW1ib2xzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBqb2luKHRlc3RSb290LCAncHJvamVjdCcpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyksICdleHBvcnQgY29uc3QgeCA9IDE7Jyk7XG5cbiAgICAvLyBQYWNrYWdlIHdpdGhvdXQgQHdvcmtmbG93L3NlcmRlIGRlcCBidXQgd2l0aCBTeW1ib2wuZm9yIHBhdHRlcm5zIGluIHNvdXJjZVxuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ25vZGVfbW9kdWxlcycsICdteS1zeW1ib2wtcGtnJywgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAnbXktc3ltYm9sLXBrZycsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIG1haW46ICdpbmRleC5qcycsXG4gICAgICB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ215LXN5bWJvbC1wa2cnLCAnaW5kZXguanMnKSxcbiAgICAgIGBleHBvcnQgY2xhc3MgQmFyIHtcbiAgc3RhdGljIFtTeW1ib2wuZm9yKCd3b3JrZmxvdy1zZXJpYWxpemUnKV0oaW5zdGFuY2UpIHsgcmV0dXJuIHt9OyB9XG4gIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctZGVzZXJpYWxpemUnKV0oZGF0YSkgeyByZXR1cm4gbmV3IEJhcigpOyB9XG59YFxuICAgICk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcihwcm9qZWN0RGlyLCBbJ215LXN5bWJvbC1wa2cnXSk7XG4gICAgYXdhaXQgYnVpbGRlci5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbam9pbihwcm9qZWN0RGlyLCAnaW5kZXgudHMnKV0sXG4gICAgICBqb2luKHByb2plY3REaXIsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3Qod2FyblNweSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGNvbnN0IHdhcm5NZXNzYWdlID0gd2FyblNweS5tb2NrLmNhbGxzWzBdPy5bMF0gYXMgc3RyaW5nO1xuICAgIGV4cGVjdCh3YXJuTWVzc2FnZSkudG9Db250YWluKCdteS1zeW1ib2wtcGtnJyk7XG4gICAgZXhwZWN0KHdhcm5NZXNzYWdlKS50b0NvbnRhaW4oJ3NlcmlhbGl6YXRpb24gY2xhc3NlcycpO1xuICB9KTtcblxuICBpdCgnd2FybnMgd2hlbiBhbiBleHRlcm5hbCBwYWNrYWdlIGNvbnRhaW5zIFwidXNlIHN0ZXBcIiBkaXJlY3RpdmVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBqb2luKHRlc3RSb290LCAncHJvamVjdCcpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyksICdleHBvcnQgY29uc3QgeCA9IDE7Jyk7XG5cbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAnbXktc3RlcC1wa2cnLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6ICdteS1zdGVwLXBrZycsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIG1haW46ICdpbmRleC5qcycsXG4gICAgICB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ215LXN0ZXAtcGtnJywgJ2luZGV4LmpzJyksXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvV29yaygpIHtcbiAgXCJ1c2Ugc3RlcFwiO1xuICByZXR1cm4gNDI7XG59YFxuICAgICk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcihwcm9qZWN0RGlyLCBbJ215LXN0ZXAtcGtnJ10pO1xuICAgIGF3YWl0IGJ1aWxkZXIuZGlzY292ZXJFbnRyaWVzUHVibGljKFxuICAgICAgW2pvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyldLFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnb3V0JylcbiAgICApO1xuXG4gICAgZXhwZWN0KHdhcm5TcHkpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBjb25zdCB3YXJuTWVzc2FnZSA9IHdhcm5TcHkubW9jay5jYWxsc1swXT8uWzBdIGFzIHN0cmluZztcbiAgICBleHBlY3Qod2Fybk1lc3NhZ2UpLnRvQ29udGFpbignbXktc3RlcC1wa2cnKTtcbiAgICBleHBlY3Qod2Fybk1lc3NhZ2UpLnRvQ29udGFpbignXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucycpO1xuICB9KTtcblxuICBpdCgnd2FybnMgd2hlbiBhbiBleHRlcm5hbCBwYWNrYWdlIGNvbnRhaW5zIFwidXNlIHdvcmtmbG93XCIgZGlyZWN0aXZlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0RGlyID0gam9pbih0ZXN0Um9vdCwgJ3Byb2plY3QnKTtcblxuICAgIHdyaXRlRmlsZShqb2luKHByb2plY3REaXIsICdpbmRleC50cycpLCAnZXhwb3J0IGNvbnN0IHggPSAxOycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ215LXdvcmtmbG93LXBrZycsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogJ215LXdvcmtmbG93LXBrZycsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIG1haW46ICdpbmRleC5qcycsXG4gICAgICB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ215LXdvcmtmbG93LXBrZycsICdpbmRleC5qcycpLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Kb2IoKSB7XG4gIFwidXNlIHdvcmtmbG93XCI7XG4gIHJldHVybiBcImRvbmVcIjtcbn1gXG4gICAgKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHByb2plY3REaXIsIFsnbXktd29ya2Zsb3ctcGtnJ10pO1xuICAgIGF3YWl0IGJ1aWxkZXIuZGlzY292ZXJFbnRyaWVzUHVibGljKFxuICAgICAgW2pvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyldLFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnb3V0JylcbiAgICApO1xuXG4gICAgZXhwZWN0KHdhcm5TcHkpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBjb25zdCB3YXJuTWVzc2FnZSA9IHdhcm5TcHkubW9jay5jYWxsc1swXT8uWzBdIGFzIHN0cmluZztcbiAgICBleHBlY3Qod2Fybk1lc3NhZ2UpLnRvQ29udGFpbignbXktd29ya2Zsb3ctcGtnJyk7XG4gICAgZXhwZWN0KHdhcm5NZXNzYWdlKS50b0NvbnRhaW4oJ1widXNlIHdvcmtmbG93XCIgZnVuY3Rpb25zJyk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCB3YXJuIGZvciBwYWNrYWdlcyB3aXRob3V0IHdvcmtmbG93IHBhdHRlcm5zJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBqb2luKHRlc3RSb290LCAncHJvamVjdCcpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyksICdleHBvcnQgY29uc3QgeCA9IDE7Jyk7XG5cbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAncGxhaW4tcGtnJywgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAncGxhaW4tcGtnJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgbWFpbjogJ2luZGV4LmpzJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAncGxhaW4tcGtnJywgJ2luZGV4LmpzJyksXG4gICAgICAnZXhwb3J0IGNvbnN0IGhlbGxvID0gXCJ3b3JsZFwiOydcbiAgICApO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIocHJvamVjdERpciwgWydwbGFpbi1wa2cnXSk7XG4gICAgYXdhaXQgYnVpbGRlci5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbam9pbihwcm9qZWN0RGlyLCAnaW5kZXgudHMnKV0sXG4gICAgICBqb2luKHByb2plY3REaXIsICdvdXQnKVxuICAgICk7XG5cbiAgICBleHBlY3Qod2FyblNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IHdhcm4gZm9yIHBzZXVkby1wYWNrYWdlcyAoc2VydmVyLW9ubHksIGNsaWVudC1vbmx5KScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0RGlyID0gam9pbih0ZXN0Um9vdCwgJ3Byb2plY3QnKTtcblxuICAgIHdyaXRlRmlsZShqb2luKHByb2plY3REaXIsICdpbmRleC50cycpLCAnZXhwb3J0IGNvbnN0IHggPSAxOycpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIocHJvamVjdERpciwgWydzZXJ2ZXItb25seScsICdjbGllbnQtb25seSddKTtcbiAgICBhd2FpdCBidWlsZGVyLmRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICAgIFtqb2luKHByb2plY3REaXIsICdpbmRleC50cycpXSxcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ291dCcpXG4gICAgKTtcblxuICAgIGV4cGVjdCh3YXJuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3Qgd2FybiB3aGVuIGV4dGVybmFsUGFja2FnZXMgaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvamVjdERpciA9IGpvaW4odGVzdFJvb3QsICdwcm9qZWN0Jyk7XG5cbiAgICB3cml0ZUZpbGUoam9pbihwcm9qZWN0RGlyLCAnaW5kZXgudHMnKSwgJ2V4cG9ydCBjb25zdCB4ID0gMTsnKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHByb2plY3REaXIsIFtdKTtcbiAgICBhd2FpdCBidWlsZGVyLmRpc2NvdmVyRW50cmllc1B1YmxpYyhcbiAgICAgIFtqb2luKHByb2plY3REaXIsICdpbmRleC50cycpXSxcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ291dCcpXG4gICAgKTtcblxuICAgIGV4cGVjdCh3YXJuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnd2FybnMgb25seSBvbmNlIHBlciBwYWNrYWdlIGFjcm9zcyBtdWx0aXBsZSBkaXNjb3ZlckVudHJpZXMgY2FsbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvamVjdERpciA9IGpvaW4odGVzdFJvb3QsICdwcm9qZWN0Jyk7XG5cbiAgICB3cml0ZUZpbGUoam9pbihwcm9qZWN0RGlyLCAnaW5kZXgudHMnKSwgJ2V4cG9ydCBjb25zdCB4ID0gMTsnKTtcbiAgICB3cml0ZUZpbGUoam9pbihwcm9qZWN0RGlyLCAnb3RoZXIudHMnKSwgJ2V4cG9ydCBjb25zdCB5ID0gMjsnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ25vZGVfbW9kdWxlcycsICdteS1zZXJkZS1wa2cnLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6ICdteS1zZXJkZS1wa2cnLFxuICAgICAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICAgICAgICBtYWluOiAnaW5kZXguanMnLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IHsgJ0B3b3JrZmxvdy9zZXJkZSc6ICdeMS4wLjAnIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ215LXNlcmRlLXBrZycsICdpbmRleC5qcycpLFxuICAgICAgJ2V4cG9ydCBjbGFzcyBGb28ge30nXG4gICAgKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHByb2plY3REaXIsIFsnbXktc2VyZGUtcGtnJ10pO1xuXG4gICAgLy8gQ2FsbCBkaXNjb3ZlckVudHJpZXMgdHdpY2Ugd2l0aCBkaWZmZXJlbnQgaW5wdXRzXG4gICAgYXdhaXQgYnVpbGRlci5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbam9pbihwcm9qZWN0RGlyLCAnaW5kZXgudHMnKV0sXG4gICAgICBqb2luKHByb2plY3REaXIsICdvdXQnKVxuICAgICk7XG4gICAgYXdhaXQgYnVpbGRlci5kaXNjb3ZlckVudHJpZXNQdWJsaWMoXG4gICAgICBbam9pbihwcm9qZWN0RGlyLCAnb3RoZXIudHMnKV0sXG4gICAgICBqb2luKHByb2plY3REaXIsICdvdXQyJylcbiAgICApO1xuXG4gICAgLy8gU2hvdWxkIG9ubHkgd2FybiBvbmNlXG4gICAgY29uc3Qgd2FybkNhbGxzID0gd2FyblNweS5tb2NrLmNhbGxzLmZpbHRlcigoY2FsbDogdW5rbm93bltdKSA9PlxuICAgICAgKGNhbGxbMF0gYXMgc3RyaW5nKS5pbmNsdWRlcygnbXktc2VyZGUtcGtnJylcbiAgICApO1xuICAgIGV4cGVjdCh3YXJuQ2FsbHMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG5cbiAgaXQoJ2xpc3RzIG11bHRpcGxlIGRldGVjdGVkIGlzc3VlcyBpbiB0aGUgd2FybmluZyBtZXNzYWdlJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBqb2luKHRlc3RSb290LCAncHJvamVjdCcpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyksICdleHBvcnQgY29uc3QgeCA9IDE7Jyk7XG5cbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAnbXVsdGktcGtnJywgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAnbXVsdGktcGtnJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgbWFpbjogJ2luZGV4LmpzJyxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiB7ICdAd29ya2Zsb3cvc2VyZGUnOiAnXjEuMC4wJyB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocHJvamVjdERpciwgJ25vZGVfbW9kdWxlcycsICdtdWx0aS1wa2cnLCAnaW5kZXguanMnKSxcbiAgICAgIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9Xb3JrKCkge1xuICBcInVzZSBzdGVwXCI7XG4gIHJldHVybiA0Mjtcbn1cbmV4cG9ydCBjbGFzcyBGb28ge1xuICBzdGF0aWMgW1N5bWJvbC5mb3IoJ3dvcmtmbG93LXNlcmlhbGl6ZScpXShpbnN0YW5jZSkgeyByZXR1cm4ge307IH1cbiAgc3RhdGljIFtTeW1ib2wuZm9yKCd3b3JrZmxvdy1kZXNlcmlhbGl6ZScpXShkYXRhKSB7IHJldHVybiBuZXcgRm9vKCk7IH1cbn1gXG4gICAgKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHByb2plY3REaXIsIFsnbXVsdGktcGtnJ10pO1xuICAgIGF3YWl0IGJ1aWxkZXIuZGlzY292ZXJFbnRyaWVzUHVibGljKFxuICAgICAgW2pvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyldLFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnb3V0JylcbiAgICApO1xuXG4gICAgZXhwZWN0KHdhcm5TcHkpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBjb25zdCB3YXJuTWVzc2FnZSA9IHdhcm5TcHkubW9jay5jYWxsc1swXT8uWzBdIGFzIHN0cmluZztcbiAgICBleHBlY3Qod2Fybk1lc3NhZ2UpLnRvQ29udGFpbignXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucycpO1xuICAgIGV4cGVjdCh3YXJuTWVzc2FnZSkudG9Db250YWluKCdzZXJpYWxpemF0aW9uIGNsYXNzZXMnKTtcbiAgfSk7XG5cbiAgaXQoJ3dhcm5zIHZpYSBlbnRyeS1maWxlIGRldGVjdGlvbiB3aGVuIHBhY2thZ2UuanNvbiBoYXMgbm8gc2VyZGUgZGVwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBqb2luKHRlc3RSb290LCAncHJvamVjdCcpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyksICdleHBvcnQgY29uc3QgeCA9IDE7Jyk7XG5cbiAgICAvLyBQYWNrYWdlIHdpdGhvdXQgQHdvcmtmbG93L3NlcmRlIGluIGRlcHMsIGJ1dCBlbnRyeSBoYXMgXCJ1c2Ugc3RlcFwiXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ25vLXNlcmRlLWRlcC1wa2cnLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6ICduby1zZXJkZS1kZXAtcGtnJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgbWFpbjogJ2luZGV4LmpzJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAnbm8tc2VyZGUtZGVwLXBrZycsICdpbmRleC5qcycpLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb1dvcmsoKSB7XG4gIFwidXNlIHN0ZXBcIjtcbiAgcmV0dXJuIDQyO1xufWBcbiAgICApO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIocHJvamVjdERpciwgWyduby1zZXJkZS1kZXAtcGtnJ10pO1xuICAgIGF3YWl0IGJ1aWxkZXIuZGlzY292ZXJFbnRyaWVzUHVibGljKFxuICAgICAgW2pvaW4ocHJvamVjdERpciwgJ2luZGV4LnRzJyldLFxuICAgICAgam9pbihwcm9qZWN0RGlyLCAnb3V0JylcbiAgICApO1xuXG4gICAgZXhwZWN0KHdhcm5TcHkpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBjb25zdCB3YXJuTWVzc2FnZSA9IHdhcm5TcHkubW9jay5jYWxsc1swXT8uWzBdIGFzIHN0cmluZztcbiAgICBleHBlY3Qod2Fybk1lc3NhZ2UpLnRvQ29udGFpbignbm8tc2VyZGUtZGVwLXBrZycpO1xuICAgIGV4cGVjdCh3YXJuTWVzc2FnZSkudG9Db250YWluKCdcInVzZSBzdGVwXCIgZnVuY3Rpb25zJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -14,6 +14,9 @@ class TestBuilder extends BaseBuilder {
|
|
|
14
14
|
getInputFiles() {
|
|
15
15
|
return super.getInputFiles();
|
|
16
16
|
}
|
|
17
|
+
getDiagnosticsManifestPath() {
|
|
18
|
+
return super.getDiagnosticsManifestPath();
|
|
19
|
+
}
|
|
17
20
|
}
|
|
18
21
|
// Resolve symlinks in tmpdir to avoid macOS /var -> /private/var issues
|
|
19
22
|
const realTmpdir = realpathSync(tmpdir());
|
|
@@ -31,7 +34,7 @@ function writeFile(dir, relativePath, content = '') {
|
|
|
31
34
|
writeFileSync(fullPath, content, 'utf-8');
|
|
32
35
|
return fullPath;
|
|
33
36
|
}
|
|
34
|
-
function createBuilder(workingDir, dirs) {
|
|
37
|
+
function createBuilder(workingDir, dirs, configOverrides = {}) {
|
|
35
38
|
const config = {
|
|
36
39
|
buildTarget: 'standalone',
|
|
37
40
|
workingDir,
|
|
@@ -39,6 +42,7 @@ function createBuilder(workingDir, dirs) {
|
|
|
39
42
|
stepsBundlePath: join(workingDir, 'steps.js'),
|
|
40
43
|
workflowsBundlePath: join(workingDir, 'workflows.js'),
|
|
41
44
|
webhookBundlePath: join(workingDir, 'webhook.js'),
|
|
45
|
+
...configOverrides,
|
|
42
46
|
};
|
|
43
47
|
return new TestBuilder(config);
|
|
44
48
|
}
|
|
@@ -118,4 +122,47 @@ describe('getInputFiles', () => {
|
|
|
118
122
|
expect(files).toContain(normalize(join(srcDir, '.api/config.cjs')));
|
|
119
123
|
});
|
|
120
124
|
});
|
|
121
|
-
|
|
125
|
+
describe('getDiagnosticsManifestPath', () => {
|
|
126
|
+
let testRoot;
|
|
127
|
+
beforeEach(() => {
|
|
128
|
+
testRoot = mkdtempSync(join(realTmpdir, 'diagnostics-path-'));
|
|
129
|
+
});
|
|
130
|
+
afterEach(() => {
|
|
131
|
+
rmSync(testRoot, { recursive: true, force: true });
|
|
132
|
+
});
|
|
133
|
+
it('uses an explicit diagnosticsDir when configured', () => {
|
|
134
|
+
const builder = createBuilder(testRoot, ['src'], {
|
|
135
|
+
diagnosticsDir: '.next/diagnostics',
|
|
136
|
+
});
|
|
137
|
+
expect(builder.getDiagnosticsManifestPath()).toBe(join(testRoot, '.next/diagnostics/workflows-manifest.json'));
|
|
138
|
+
});
|
|
139
|
+
it('does not emit Vercel diagnostics for non-Vercel builder targets', () => {
|
|
140
|
+
const previousTargetWorld = process.env.WORKFLOW_TARGET_WORLD;
|
|
141
|
+
process.env.WORKFLOW_TARGET_WORLD = 'vercel';
|
|
142
|
+
try {
|
|
143
|
+
const builder = createBuilder(testRoot, ['src']);
|
|
144
|
+
expect(builder.getDiagnosticsManifestPath()).toBeUndefined();
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
if (previousTargetWorld === undefined) {
|
|
148
|
+
delete process.env.WORKFLOW_TARGET_WORLD;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
process.env.WORKFLOW_TARGET_WORLD = previousTargetWorld;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
it('falls back to Vercel output diagnostics for the Vercel builder', () => {
|
|
156
|
+
const config = {
|
|
157
|
+
buildTarget: 'vercel-build-output-api',
|
|
158
|
+
workingDir: testRoot,
|
|
159
|
+
dirs: ['src'],
|
|
160
|
+
stepsBundlePath: join(testRoot, 'steps.js'),
|
|
161
|
+
workflowsBundlePath: join(testRoot, 'workflows.js'),
|
|
162
|
+
webhookBundlePath: join(testRoot, 'webhook.js'),
|
|
163
|
+
};
|
|
164
|
+
const builder = new TestBuilder(config);
|
|
165
|
+
expect(builder.getDiagnosticsManifestPath()).toBe(join(testRoot, '.vercel/output/diagnostics/workflows-manifest.json'));
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWlucHV0LWZpbGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LWlucHV0LWZpbGVzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQ7O0dBRUc7QUFDSCxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFRCxtQkFBbUI7SUFDWixhQUFhO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsT0FBTyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFFRCx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFFMUM7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLENBQVM7SUFDMUIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBVyxFQUFFLFlBQW9CLEVBQUUsT0FBTyxHQUFHLEVBQUU7SUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcs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RyxDQUFDLHFCQUFxQixDQUFDO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsR0FBRyxFQUFFO1FBQ3hFLE1BQU0sTUFBTSxHQUE0QjtZQUN0QyxXQUFXLEVBQUUseUJBQXlCO1lBQ3RDLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNiLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQztZQUMzQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQztZQUNuRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztTQUNoRCxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQyxJQUFJLENBQUMsUUFBUSxFQUFFLG9EQUFvRCxDQUFDLENBQ3JFLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgbWtkaXJTeW5jLFxuICBta2R0ZW1wU3luYyxcbiAgcmVhbHBhdGhTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuL2Jhc2UtYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YW5kYWxvbmVDb25maWcsIFZlcmNlbEJ1aWxkT3V0cHV0Q29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogTWluaW1hbCBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHByb3RlY3RlZCBgZ2V0SW5wdXRGaWxlcygpYCBmb3IgdGVzdGluZy5cbiAqL1xuY2xhc3MgVGVzdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICAvLyBFeHBvc2UgZm9yIHRlc3RzXG4gIHB1YmxpYyBnZXRJbnB1dEZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0SW5wdXRGaWxlcygpO1xuICB9XG5cbiAgcHVibGljIGdldERpYWdub3N0aWNzTWFuaWZlc3RQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHN1cGVyLmdldERpYWdub3N0aWNzTWFuaWZlc3RQYXRoKCk7XG4gIH1cbn1cblxuLy8gUmVzb2x2ZSBzeW1saW5rcyBpbiB0bXBkaXIgdG8gYXZvaWQgbWFjT1MgL3ZhciAtPiAvcHJpdmF0ZS92YXIgaXNzdWVzXG5jb25zdCByZWFsVG1wZGlyID0gcmVhbHBhdGhTeW5jKHRtcGRpcigpKTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBwYXRoIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgY3Jvc3MtcGxhdGZvcm0gY29tcGFyaXNvbi5cbiAqIHRpbnlnbG9iYnkgYWx3YXlzIHJldHVybnMgZm9yd2FyZC1zbGFzaCBwYXRocywgZXZlbiBvbiBXaW5kb3dzLFxuICogd2hpbGUgTm9kZSdzIGBwYXRoLmpvaW4oKWAgdXNlcyBiYWNrc2xhc2hlcyBvbiBXaW5kb3dzLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUocDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHAucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZpbGUoZGlyOiBzdHJpbmcsIHJlbGF0aXZlUGF0aDogc3RyaW5nLCBjb250ZW50ID0gJycpOiBzdHJpbmcge1xuICBjb25zdCBmdWxsUGF0aCA9IGpvaW4oZGlyLCByZWxhdGl2ZVBhdGgpO1xuICBta2RpclN5bmMoZGlybmFtZShmdWxsUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKGZ1bGxQYXRoLCBjb250ZW50LCAndXRmLTgnKTtcbiAgcmV0dXJuIGZ1bGxQYXRoO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWlsZGVyKFxuICB3b3JraW5nRGlyOiBzdHJpbmcsXG4gIGRpcnM6IHN0cmluZ1tdLFxuICBjb25maWdPdmVycmlkZXM6IFBhcnRpYWw8U3RhbmRhbG9uZUNvbmZpZz4gPSB7fVxuKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnMsXG4gICAgc3RlcHNCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICdzdGVwcy5qcycpLFxuICAgIHdvcmtmbG93c0J1bmRsZVBhdGg6IGpvaW4od29ya2luZ0RpciwgJ3dvcmtmbG93cy5qcycpLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICd3ZWJob29rLmpzJyksXG4gICAgLi4uY29uZmlnT3ZlcnJpZGVzLFxuICB9O1xuICByZXR1cm4gbmV3IFRlc3RCdWlsZGVyKGNvbmZpZyk7XG59XG5cbmRlc2NyaWJlKCdnZXRJbnB1dEZpbGVzJywgKCkgPT4ge1xuICBsZXQgdGVzdFJvb3Q6IHN0cmluZztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0ZXN0Um9vdCA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ2dldC1pbnB1dC1maWxlcy0nKSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNjb3ZlcnMgZmlsZXMgaW5zaWRlIGRvdC1wcmVmaXhlZCBkaXJlY3RvcmllcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5oaWRkZW4vc3RlcC50cycsIFwiJ3VzZSBzdGVwJztcIik7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5jb25maWcvd29ya2Zsb3cudHMnLCBcIid1c2Ugd29ya2Zsb3cnO1wiKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAncmVndWxhci9zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddKTtcbiAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBidWlsZGVyLmdldElucHV0RmlsZXMoKSkubWFwKG5vcm1hbGl6ZSk7XG5cbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuaGlkZGVuL3N0ZXAudHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5jb25maWcvd29ya2Zsb3cudHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJ3JlZ3VsYXIvc3RlcC50cycpKSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNjb3ZlcnMgZG90LXByZWZpeGVkIGZpbGVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmhpZGRlbi1zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAndmlzaWJsZS1zdGVwLnRzJywgXCIndXNlIHN0ZXAnO1wiKTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddKTtcbiAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBidWlsZGVyLmdldElucHV0RmlsZXMoKSkubWFwKG5vcm1hbGl6ZSk7XG5cbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuaGlkZGVuLXN0ZXAudHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJ3Zpc2libGUtc3RlcC50cycpKSk7XG4gIH0pO1xuXG4gIGl0KCdzdGlsbCBleGNsdWRlcyBleHBsaWNpdGx5IGlnbm9yZWQgZG90LWRpcmVjdG9yaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmdpdC9ob29rcy9wcmUtY29tbWl0LnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5uZXh0L3NlcnZlci9wYWdlLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5udXh0L3dvcmtmbG93L3N0ZXBzLm1qcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcudmVyY2VsL291dHB1dC9zdGVwLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5zdmVsdGUta2l0L291dHB1dC9zdGVwLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy53b3JrZmxvdy1kYXRhL3N0YXRlLnRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy53b3JrZmxvdy12aXRlc3Qvd29ya2Zsb3dzLm1qcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcud2VsbC1rbm93bi93b3JrZmxvdy9yb3V0ZS50cycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcudHVyYm8vY2FjaGUvYnVpbGQudHMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmNhY2hlL2JhYmVsL3BsdWdpbi5qcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcueWFybi9yZWxlYXNlcy95YXJuLmNqcycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcucG5wbS1zdG9yZS92My9maWxlcy50cycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICdub2RlX21vZHVsZXMvcGtnL2luZGV4LnRzJyk7XG4gICAgLy8gVGhpcyBvbmUgc2hvdWxkIHN0aWxsIGJlIGZvdW5kXG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5jdXN0b20vc3RlcC50cycsIFwiJ3VzZSBzdGVwJztcIik7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCwgWydzcmMnXSk7XG4gICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgYnVpbGRlci5nZXRJbnB1dEZpbGVzKCkpLm1hcChub3JtYWxpemUpO1xuXG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmdpdC9ob29rcy9wcmUtY29tbWl0LnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcubmV4dC9zZXJ2ZXIvcGFnZS50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLm51eHQvd29ya2Zsb3cvc3RlcHMubWpzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcudmVyY2VsL291dHB1dC9zdGVwLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICcuc3ZlbHRlLWtpdC9vdXRwdXQvc3RlcC50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLndvcmtmbG93LWRhdGEvc3RhdGUudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy53b3JrZmxvdy12aXRlc3Qvd29ya2Zsb3dzLm1qcycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLndlbGwta25vd24vd29ya2Zsb3cvcm91dGUudHMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy50dXJiby9jYWNoZS9idWlsZC50cycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmNhY2hlL2JhYmVsL3BsdWdpbi5qcycpKVxuICAgICk7XG4gICAgZXhwZWN0KGZpbGVzKS5ub3QudG9Db250YWluKFxuICAgICAgbm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLnlhcm4vcmVsZWFzZXMveWFybi5janMnKSlcbiAgICApO1xuICAgIGV4cGVjdChmaWxlcykubm90LnRvQ29udGFpbihcbiAgICAgIG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5wbnBtLXN0b3JlL3YzL2ZpbGVzLnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLm5vdC50b0NvbnRhaW4oXG4gICAgICBub3JtYWxpemUoam9pbihzcmNEaXIsICdub2RlX21vZHVsZXMvcGtnL2luZGV4LnRzJykpXG4gICAgKTtcbiAgICBleHBlY3QoZmlsZXMpLnRvQ29udGFpbihub3JtYWxpemUoam9pbihzcmNEaXIsICcuY3VzdG9tL3N0ZXAudHMnKSkpO1xuICB9KTtcblxuICBpdCgnZGlzY292ZXJzIGZpbGVzIHdpdGggdmFyaW91cyBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpbiBkb3QtZGlyZWN0b3JpZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuYXBpL3JvdXRlLnRzeCcpO1xuICAgIHdyaXRlRmlsZShzcmNEaXIsICcuYXBpL2hhbmRsZXIubXRzJyk7XG4gICAgd3JpdGVGaWxlKHNyY0RpciwgJy5hcGkvdXRpbHMuanMnKTtcbiAgICB3cml0ZUZpbGUoc3JjRGlyLCAnLmFwaS9jb25maWcuY2pzJyk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCwgWydzcmMnXSk7XG4gICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgYnVpbGRlci5nZXRJbnB1dEZpbGVzKCkpLm1hcChub3JtYWxpemUpO1xuXG4gICAgZXhwZWN0KGZpbGVzKS50b0NvbnRhaW4obm9ybWFsaXplKGpvaW4oc3JjRGlyLCAnLmFwaS9yb3V0ZS50c3gnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5hcGkvaGFuZGxlci5tdHMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5hcGkvdXRpbHMuanMnKSkpO1xuICAgIGV4cGVjdChmaWxlcykudG9Db250YWluKG5vcm1hbGl6ZShqb2luKHNyY0RpciwgJy5hcGkvY29uZmlnLmNqcycpKSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdnZXREaWFnbm9zdGljc01hbmlmZXN0UGF0aCcsICgpID0+IHtcbiAgbGV0IHRlc3RSb290OiBzdHJpbmc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGVzdFJvb3QgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICdkaWFnbm9zdGljcy1wYXRoLScpKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBybVN5bmModGVzdFJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSk7XG5cbiAgaXQoJ3VzZXMgYW4gZXhwbGljaXQgZGlhZ25vc3RpY3NEaXIgd2hlbiBjb25maWd1cmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRlc3RSb290LCBbJ3NyYyddLCB7XG4gICAgICBkaWFnbm9zdGljc0RpcjogJy5uZXh0L2RpYWdub3N0aWNzJyxcbiAgICB9KTtcblxuICAgIGV4cGVjdChidWlsZGVyLmdldERpYWdub3N0aWNzTWFuaWZlc3RQYXRoKCkpLnRvQmUoXG4gICAgICBqb2luKHRlc3RSb290LCAnLm5leHQvZGlhZ25vc3RpY3Mvd29ya2Zsb3dzLW1hbmlmZXN0Lmpzb24nKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCBlbWl0IFZlcmNlbCBkaWFnbm9zdGljcyBmb3Igbm9uLVZlcmNlbCBidWlsZGVyIHRhcmdldHMnLCAoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNUYXJnZXRXb3JsZCA9IHByb2Nlc3MuZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRDtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19UQVJHRVRfV09STEQgPSAndmVyY2VsJztcbiAgICB0cnkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QsIFsnc3JjJ10pO1xuXG4gICAgICBleHBlY3QoYnVpbGRlci5nZXREaWFnbm9zdGljc01hbmlmZXN0UGF0aCgpKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChwcmV2aW91c1RhcmdldFdvcmxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRCA9IHByZXZpb3VzVGFyZ2V0V29ybGQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBpdCgnZmFsbHMgYmFjayB0byBWZXJjZWwgb3V0cHV0IGRpYWdub3N0aWNzIGZvciB0aGUgVmVyY2VsIGJ1aWxkZXInLCAoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnOiBWZXJjZWxCdWlsZE91dHB1dENvbmZpZyA9IHtcbiAgICAgIGJ1aWxkVGFyZ2V0OiAndmVyY2VsLWJ1aWxkLW91dHB1dC1hcGknLFxuICAgICAgd29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBkaXJzOiBbJ3NyYyddLFxuICAgICAgc3RlcHNCdW5kbGVQYXRoOiBqb2luKHRlc3RSb290LCAnc3RlcHMuanMnKSxcbiAgICAgIHdvcmtmbG93c0J1bmRsZVBhdGg6IGpvaW4odGVzdFJvb3QsICd3b3JrZmxvd3MuanMnKSxcbiAgICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHRlc3RSb290LCAnd2ViaG9vay5qcycpLFxuICAgIH07XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBUZXN0QnVpbGRlcihjb25maWcpO1xuXG4gICAgZXhwZWN0KGJ1aWxkZXIuZ2V0RGlhZ25vc3RpY3NNYW5pZmVzdFBhdGgoKSkudG9CZShcbiAgICAgIGpvaW4odGVzdFJvb3QsICcudmVyY2VsL291dHB1dC9kaWFnbm9zdGljcy93b3JrZmxvd3MtbWFuaWZlc3QuanNvbicpXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { applySwcTransform } from './apply-swc-transform.js';
|
|
|
3
3
|
export { BaseBuilder } from './base-builder.js';
|
|
4
4
|
export { createBuildQueue } from './build-queue.js';
|
|
5
5
|
export { createBaseBuilderConfig, type DecoratorOptions, type DecoratorOptionsWithConfigPath, getDecoratorOptionsForDirectory, getDecoratorOptionsForDirectoryWithConfigPath, } from './config-helpers.js';
|
|
6
|
-
export {
|
|
6
|
+
export { 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';
|
|
9
9
|
export { createNodeModuleErrorPlugin } from './node-module-esbuild-plugin.js';
|
|
@@ -12,7 +12,7 @@ export { NORMALIZE_REQUEST_CODE } from './request-converter.js';
|
|
|
12
12
|
export { analyzeSerdeCompliance, extractClassEntries, type SerdeCheckResult, type SerdeClassCheckResult, } from './serde-checker.js';
|
|
13
13
|
export { StandaloneBuilder } from './standalone.js';
|
|
14
14
|
export { createSwcPlugin } from './swc-esbuild-plugin.js';
|
|
15
|
-
export { detectWorkflowPatterns, generatedWorkflowPathPattern, isGeneratedWorkflowFile,
|
|
15
|
+
export { detectWorkflowPatterns, generatedWorkflowPathPattern, isGeneratedWorkflowFile, shouldTransformFile, turbopackContentPattern, useStepPattern, useWorkflowPattern, type WorkflowPatternMatch, workflowSerdeImportPattern, workflowSerdeSymbolPattern, } from './transform-utils.js';
|
|
16
16
|
export type { AstroConfig, BuildTarget, NextConfig, StandaloneConfig, SvelteKitConfig, VercelBuildOutputConfig, WorkflowConfig, } from './types.js';
|
|
17
17
|
export { isValidBuildTarget, validBuildTargets } from './types.js';
|
|
18
18
|
export { VercelBuildOutputAPIBuilder } from './vercel-build-output-api.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,EAAE,
|
|
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,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,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,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,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,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,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
|
@@ -2,7 +2,7 @@ export { applySwcTransform } from './apply-swc-transform.js';
|
|
|
2
2
|
export { BaseBuilder } from './base-builder.js';
|
|
3
3
|
export { createBuildQueue } from './build-queue.js';
|
|
4
4
|
export { createBaseBuilderConfig, getDecoratorOptionsForDirectory, getDecoratorOptionsForDirectoryWithConfigPath, } from './config-helpers.js';
|
|
5
|
-
export {
|
|
5
|
+
export { 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';
|
|
8
8
|
export { createNodeModuleErrorPlugin } from './node-module-esbuild-plugin.js';
|
|
@@ -11,8 +11,8 @@ export { NORMALIZE_REQUEST_CODE } from './request-converter.js';
|
|
|
11
11
|
export { analyzeSerdeCompliance, extractClassEntries, } from './serde-checker.js';
|
|
12
12
|
export { StandaloneBuilder } from './standalone.js';
|
|
13
13
|
export { createSwcPlugin } from './swc-esbuild-plugin.js';
|
|
14
|
-
export { detectWorkflowPatterns, generatedWorkflowPathPattern, isGeneratedWorkflowFile,
|
|
14
|
+
export { detectWorkflowPatterns, generatedWorkflowPathPattern, isGeneratedWorkflowFile, shouldTransformFile, turbopackContentPattern, useStepPattern, useWorkflowPattern, workflowSerdeImportPattern, workflowSerdeSymbolPattern, } from './transform-utils.js';
|
|
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=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFDTCx1QkFBdUIsRUFHdkIsK0JBQStCLEVBQy9CLDZDQUE2QyxHQUM5QyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25GLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsYUFBYSxFQUdiLHNCQUFzQixHQUN2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZUFBZSxHQUNoQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxrQkFBa0IsRUFFbEIsMEJBQTBCLEVBQzFCLDBCQUEwQixHQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBVTlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgV29ya2Zsb3dNYW5pZmVzdCB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5leHBvcnQgeyBhcHBseVN3Y1RyYW5zZm9ybSB9IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5leHBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmV4cG9ydCB7IGNyZWF0ZUJ1aWxkUXVldWUgfSBmcm9tICcuL2J1aWxkLXF1ZXVlLmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZUJhc2VCdWlsZGVyQ29uZmlnLFxuICB0eXBlIERlY29yYXRvck9wdGlvbnMsXG4gIHR5cGUgRGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoLFxuICBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5LFxuICBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGgsXG59IGZyb20gJy4vY29uZmlnLWhlbHBlcnMuanMnO1xuZXhwb3J0IHsgV09SS0ZMT1dfUVVFVUVfVFJJR0dFUiB9IGZyb20gJy4vY29uc3RhbnRzLmpzJztcbmV4cG9ydCB7IGNyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbiB9IGZyb20gJy4vZGlzY292ZXItZW50cmllcy1lc2J1aWxkLXBsdWdpbi5qcyc7XG5leHBvcnQge1xuICBjbGVhck1vZHVsZVNwZWNpZmllckNhY2hlLFxuICBnZXRJbXBvcnRQYXRoLFxuICB0eXBlIEltcG9ydFBhdGhSZXN1bHQsXG4gIHR5cGUgTW9kdWxlU3BlY2lmaWVyUmVzdWx0LFxuICByZXNvbHZlTW9kdWxlU3BlY2lmaWVyLFxufSBmcm9tICcuL21vZHVsZS1zcGVjaWZpZXIuanMnO1xuZXhwb3J0IHsgY3JlYXRlTm9kZU1vZHVsZUVycm9yUGx1Z2luIH0gZnJvbSAnLi9ub2RlLW1vZHVsZS1lc2J1aWxkLXBsdWdpbi5qcyc7XG5leHBvcnQge1xuICBjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luLFxuICBQU0VVRE9fUEFDS0FHRVMsXG59IGZyb20gJy4vcHNldWRvLXBhY2thZ2UtZXNidWlsZC1wbHVnaW4uanMnO1xuZXhwb3J0IHsgTk9STUFMSVpFX1JFUVVFU1RfQ09ERSB9IGZyb20gJy4vcmVxdWVzdC1jb252ZXJ0ZXIuanMnO1xuZXhwb3J0IHtcbiAgYW5hbHl6ZVNlcmRlQ29tcGxpYW5jZSxcbiAgZXh0cmFjdENsYXNzRW50cmllcyxcbiAgdHlwZSBTZXJkZUNoZWNrUmVzdWx0LFxuICB0eXBlIFNlcmRlQ2xhc3NDaGVja1Jlc3VsdCxcbn0gZnJvbSAnLi9zZXJkZS1jaGVja2VyLmpzJztcbmV4cG9ydCB7IFN0YW5kYWxvbmVCdWlsZGVyIH0gZnJvbSAnLi9zdGFuZGFsb25lLmpzJztcbmV4cG9ydCB7IGNyZWF0ZVN3Y1BsdWdpbiB9IGZyb20gJy4vc3djLWVzYnVpbGQtcGx1Z2luLmpzJztcbmV4cG9ydCB7XG4gIGRldGVjdFdvcmtmbG93UGF0dGVybnMsXG4gIGdlbmVyYXRlZFdvcmtmbG93UGF0aFBhdHRlcm4sXG4gIGlzR2VuZXJhdGVkV29ya2Zsb3dGaWxlLFxuICBzaG91bGRUcmFuc2Zvcm1GaWxlLFxuICB0dXJib3BhY2tDb250ZW50UGF0dGVybixcbiAgdXNlU3RlcFBhdHRlcm4sXG4gIHVzZVdvcmtmbG93UGF0dGVybixcbiAgdHlwZSBXb3JrZmxvd1BhdHRlcm5NYXRjaCxcbiAgd29ya2Zsb3dTZXJkZUltcG9ydFBhdHRlcm4sXG4gIHdvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuLFxufSBmcm9tICcuL3RyYW5zZm9ybS11dGlscy5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFzdHJvQ29uZmlnLFxuICBCdWlsZFRhcmdldCxcbiAgTmV4dENvbmZpZyxcbiAgU3RhbmRhbG9uZUNvbmZpZyxcbiAgU3ZlbHRlS2l0Q29uZmlnLFxuICBWZXJjZWxCdWlsZE91dHB1dENvbmZpZyxcbiAgV29ya2Zsb3dDb25maWcsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuZXhwb3J0IHsgaXNWYWxpZEJ1aWxkVGFyZ2V0LCB2YWxpZEJ1aWxkVGFyZ2V0cyB9IGZyb20gJy4vdHlwZXMuanMnO1xuZXhwb3J0IHsgVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyIH0gZnJvbSAnLi92ZXJjZWwtYnVpbGQtb3V0cHV0LWFwaS5qcyc7XG5leHBvcnQgeyByZXNvbHZlV29ya2Zsb3dBbGlhc1JlbGF0aXZlUGF0aCB9IGZyb20gJy4vd29ya2Zsb3ctYWxpYXMuanMnO1xuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-specifier.d.ts","sourceRoot":"","sources":["../src/module-specifier.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"module-specifier.d.ts","sourceRoot":"","sources":["../src/module-specifier.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAoTD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,qBAAqB,CA+BvB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AA0HD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,gBAAgB,CA6DlB"}
|