@workflow/builders 5.0.0-beta.3 → 5.0.0-beta.30
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 +7 -2
- package/dist/apply-swc-transform.d.ts.map +1 -1
- package/dist/apply-swc-transform.js +10 -4
- package/dist/base-builder-logging.test.d.ts +2 -0
- package/dist/base-builder-logging.test.d.ts.map +1 -0
- package/dist/base-builder-logging.test.js +99 -0
- package/dist/base-builder.d.ts +127 -13
- package/dist/base-builder.d.ts.map +1 -1
- package/dist/base-builder.js +812 -102
- package/dist/build-queue.js +1 -1
- package/dist/config-helpers.d.ts +4 -1
- package/dist/config-helpers.d.ts.map +1 -1
- package/dist/config-helpers.js +63 -1
- package/dist/config-helpers.test.d.ts +2 -0
- package/dist/config-helpers.test.d.ts.map +1 -0
- package/dist/config-helpers.test.js +17 -0
- package/dist/constants.d.ts +31 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +71 -19
- package/dist/constants.test.d.ts +2 -0
- package/dist/constants.test.d.ts.map +1 -0
- package/dist/constants.test.js +40 -0
- package/dist/discover-entries-esbuild-plugin.d.ts +3 -1
- package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
- package/dist/discover-entries-esbuild-plugin.js +24 -4
- package/dist/discover-entries-esbuild-plugin.test.js +1 -1
- 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/fast-discovery.d.ts +20 -0
- package/dist/fast-discovery.d.ts.map +1 -0
- package/dist/fast-discovery.js +774 -0
- package/dist/fast-discovery.test.d.ts +2 -0
- package/dist/fast-discovery.test.d.ts.map +1 -0
- package/dist/fast-discovery.test.js +336 -0
- package/dist/get-input-files.test.js +34 -2
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -4
- package/dist/module-specifier.d.ts +20 -2
- package/dist/module-specifier.d.ts.map +1 -1
- package/dist/module-specifier.js +92 -17
- package/dist/module-specifier.test.js +45 -3
- package/dist/node-compat-banner.d.ts +15 -0
- package/dist/node-compat-banner.d.ts.map +1 -0
- package/dist/node-compat-banner.js +15 -0
- 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/optional-otel-api.d.ts +14 -0
- package/dist/optional-otel-api.d.ts.map +1 -0
- package/dist/optional-otel-api.js +14 -0
- package/dist/optional-pg-native-alias.d.ts +2 -0
- package/dist/optional-pg-native-alias.d.ts.map +1 -0
- package/dist/optional-pg-native-alias.js +3 -0
- package/dist/optional-pg-native.d.ts +3 -0
- package/dist/optional-pg-native.d.ts.map +1 -0
- package/dist/optional-pg-native.js +3 -0
- package/dist/optional-typescript-alias.d.ts +2 -0
- package/dist/optional-typescript-alias.d.ts.map +1 -0
- package/dist/optional-typescript-alias.js +3 -0
- package/dist/optional-typescript.d.ts +3 -0
- package/dist/optional-typescript.d.ts.map +1 -0
- package/dist/optional-typescript.js +9 -0
- 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 +194 -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 +12 -41
- package/dist/step-source-registration.test.d.ts +2 -0
- package/dist/step-source-registration.test.d.ts.map +1 -0
- package/dist/step-source-registration.test.js +82 -0
- package/dist/swc-esbuild-plugin.d.ts +10 -0
- package/dist/swc-esbuild-plugin.d.ts.map +1 -1
- package/dist/swc-esbuild-plugin.js +116 -14
- package/dist/swc-esbuild-plugin.test.js +370 -6
- package/dist/transform-utils.d.ts.map +1 -1
- package/dist/transform-utils.js +45 -6
- package/dist/transform-utils.test.js +78 -6
- package/dist/types.d.ts +38 -2
- 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 +31 -59
- package/dist/workflow-alias.js +1 -1
- package/dist/workflow-alias.test.js +1 -1
- package/dist/workflows-extractor.js +8 -3
- package/dist/workflows-extractor.test.d.ts +2 -0
- package/dist/workflows-extractor.test.d.ts.map +1 -0
- package/dist/workflows-extractor.test.js +70 -0
- package/dist/world-target.d.ts +20 -0
- package/dist/world-target.d.ts.map +1 -0
- package/dist/world-target.js +74 -0
- package/dist/world-target.test.d.ts +2 -0
- package/dist/world-target.test.d.ts.map +1 -0
- package/dist/world-target.test.js +106 -0
- package/package.json +9 -7
- 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
package/dist/transform-utils.js
CHANGED
|
@@ -15,20 +15,59 @@ export const workflowSerdeSymbolPattern = /Symbol\.for\s*\(\s*(['"])workflow-(?:
|
|
|
15
15
|
// e.g.: static [WORKFLOW_SERIALIZE](instance) { ... }
|
|
16
16
|
// This catches cases where the symbols are imported and used (even if bundled/re-exported)
|
|
17
17
|
export const workflowSerdeComputedPropertyPattern = /\[\s*WORKFLOW_(?:SERIALIZE|DESERIALIZE)\s*\]/;
|
|
18
|
+
const templateLiteralPattern = /`(?:\\[\s\S]|[^`\\])*`/g;
|
|
19
|
+
const commentPattern = /\/\*[\s\S]*?\*\/|\/\/[^\r\n]*/g;
|
|
20
|
+
const directiveLinePattern = /^\s*(['"])(use workflow|use step)\1;?\s*$/;
|
|
21
|
+
const stringDirectiveLinePattern = /^\s*(['"])[^'"]+\1;?\s*$/;
|
|
18
22
|
// Pattern to detect generated workflow route files that should be excluded
|
|
19
23
|
// These files are generated by the build process and should not be re-processed
|
|
20
24
|
export const generatedWorkflowPathPattern = /[/\\]\.well-known[/\\]workflow[/\\]/;
|
|
25
|
+
function hasDirective(source, directive) {
|
|
26
|
+
let previousMeaningfulLine;
|
|
27
|
+
for (const line of source.split(/\r?\n/)) {
|
|
28
|
+
const trimmedLine = line.trim();
|
|
29
|
+
if (trimmedLine === '') {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const directiveMatch = directiveLinePattern.exec(trimmedLine);
|
|
33
|
+
if (directiveMatch) {
|
|
34
|
+
if (directiveMatch[2] === directive &&
|
|
35
|
+
(previousMeaningfulLine === undefined ||
|
|
36
|
+
previousMeaningfulLine.endsWith('{') ||
|
|
37
|
+
stringDirectiveLinePattern.test(previousMeaningfulLine))) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
previousMeaningfulLine = trimmedLine;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
previousMeaningfulLine = trimmedLine;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
21
47
|
/**
|
|
22
48
|
* Detects workflow-related patterns in source code.
|
|
23
49
|
* @param source - The source code to analyze
|
|
24
50
|
* @returns Object with flags for each detected pattern
|
|
25
51
|
*/
|
|
26
52
|
export function detectWorkflowPatterns(source) {
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
53
|
+
const hasDirectiveSubstring = source.includes('use workflow') || source.includes('use step');
|
|
54
|
+
const sourceForDirectives = hasDirectiveSubstring && (source.includes('`') || source.includes('/'))
|
|
55
|
+
? source
|
|
56
|
+
.replace(templateLiteralPattern, (match) => match.replace(/[^\r\n]/g, ' '))
|
|
57
|
+
.replace(commentPattern, (match) => match.replace(/[^\r\n]/g, ' '))
|
|
58
|
+
: source;
|
|
59
|
+
const hasUseWorkflow = source.includes('use workflow') &&
|
|
60
|
+
hasDirective(sourceForDirectives, 'use workflow');
|
|
61
|
+
const hasUseStep = source.includes('use step') &&
|
|
62
|
+
hasDirective(sourceForDirectives, 'use step');
|
|
63
|
+
const hasSerdeImport = source.includes('@workflow/serde') &&
|
|
64
|
+
workflowSerdeImportPattern.test(source);
|
|
65
|
+
const hasSerdeSymbol = (source.includes('workflow-serialize') ||
|
|
66
|
+
source.includes('workflow-deserialize')) &&
|
|
67
|
+
workflowSerdeSymbolPattern.test(source);
|
|
68
|
+
const hasSerdeComputedProperty = (source.includes('WORKFLOW_SERIALIZE') ||
|
|
69
|
+
source.includes('WORKFLOW_DESERIALIZE')) &&
|
|
70
|
+
workflowSerdeComputedPropertyPattern.test(source);
|
|
32
71
|
return {
|
|
33
72
|
hasUseWorkflow,
|
|
34
73
|
hasUseStep,
|
|
@@ -74,4 +113,4 @@ export function shouldTransformFile(filePath, patterns) {
|
|
|
74
113
|
* and WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE computed property usage
|
|
75
114
|
*/
|
|
76
115
|
export const turbopackContentPattern = /(use workflow|use step|from\s+(['"])@workflow\/serde\2|Symbol\.for\s*\(\s*(['"])workflow-(?:serialize|deserialize)\3\s*\)|\[\s*WORKFLOW_(?:SERIALIZE|DESERIALIZE)\s*\])/;
|
|
77
|
-
//# sourceMappingURL=transform-utils.js.map
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RyYW5zZm9ybS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCwwR0FBMEc7QUFDMUcsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsaUNBQWlDLENBQUM7QUFDcEUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLDZCQUE2QixDQUFDO0FBRTVELDBFQUEwRTtBQUMxRSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsaUNBQWlDLENBQUM7QUFFNUUsaUdBQWlHO0FBQ2pHLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FDckMsb0VBQW9FLENBQUM7QUFFdkUseUZBQXlGO0FBQ3pGLHNEQUFzRDtBQUN0RCwyRkFBMkY7QUFDM0YsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQy9DLDhDQUE4QyxDQUFDO0FBRWpELE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLENBQUM7QUFDekQsTUFBTSxjQUFjLEdBQUcsZ0NBQWdDLENBQUM7QUFDeEQsTUFBTSxvQkFBb0IsR0FBRywyQ0FBMkMsQ0FBQztBQUN6RSxNQUFNLDBCQUEwQixHQUFHLDBCQUEwQixDQUFDO0FBRTlELDJFQUEyRTtBQUMzRSxnRkFBZ0Y7QUFDaEYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQ3ZDLHFDQUFxQyxDQUFDO0FBRXhDLFNBQVMsWUFBWSxDQUFDLE1BQWMsRUFBRSxTQUFzQztJQUMxRSxJQUFJLHNCQUEwQyxDQUFDO0lBRS9DLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixTQUFTO1FBQ1gsQ0FBQztR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LElBQUksdUJBQXVCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FDbEMseUtBQXlLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCB1dGlsaXRpZXMgZm9yIGRldGVjdGluZyBmaWxlcyB0aGF0IG5lZWQgd29ya2Zsb3cgdHJhbnNmb3JtYXRpb24uXG4gKiBVc2VkIGJ5IGJ1aWxkZXJzLCByb2xsdXAgcGx1Z2luLCBOZXh0LmpzIGxvYWRlciwgYW5kIHZpdGUgcGx1Z2luLlxuICovXG5cbi8vIE1hdGNoZXM6ICd1c2Ugd29ya2Zsb3cnOyBcInVzZSB3b3JrZmxvd1wiOyAndXNlIHN0ZXAnOyBcInVzZSBzdGVwXCI7IGF0IGxpbmUgc3RhcnQgd2l0aCBvcHRpb25hbCB3aGl0ZXNwYWNlXG5leHBvcnQgY29uc3QgdXNlV29ya2Zsb3dQYXR0ZXJuID0gL15cXHMqKFsnXCJdKXVzZSB3b3JrZmxvd1xcMTs/XFxzKiQvbTtcbmV4cG9ydCBjb25zdCB1c2VTdGVwUGF0dGVybiA9IC9eXFxzKihbJ1wiXSl1c2Ugc3RlcFxcMTs/XFxzKiQvbTtcblxuLy8gTWF0Y2hlcyBpbXBvcnRzIGZyb20gJ0B3b3JrZmxvdy9zZXJkZScgKGZvciBjdXN0b20gY2xhc3Mgc2VyaWFsaXphdGlvbilcbi8vIGUuZy46IGltcG9ydCB7IFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7XG5leHBvcnQgY29uc3Qgd29ya2Zsb3dTZXJkZUltcG9ydFBhdHRlcm4gPSAvZnJvbVxccysoWydcIl0pQHdvcmtmbG93XFwvc2VyZGVcXDEvO1xuXG4vLyBNYXRjaGVzIGRpcmVjdCB1c2FnZSBvZiBTeW1ib2wuZm9yKCd3b3JrZmxvdy1zZXJpYWxpemUnKSBvciBTeW1ib2wuZm9yKCd3b3JrZmxvdy1kZXNlcmlhbGl6ZScpXG4vLyBlLmcuOiBzdGF0aWMgW1N5bWJvbC5mb3IoJ3dvcmtmbG93LXNlcmlhbGl6ZScpXShpbnN0YW5jZSkgeyAuLi4gfVxuZXhwb3J0IGNvbnN0IHdvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuID1cbiAgL1N5bWJvbFxcLmZvclxccypcXChcXHMqKFsnXCJdKXdvcmtmbG93LSg/OnNlcmlhbGl6ZXxkZXNlcmlhbGl6ZSlcXDFcXHMqXFwpLztcblxuLy8gTWF0Y2hlcyB1c2FnZSBvZiBXT1JLRkxPV19TRVJJQUxJWkUgb3IgV09SS0ZMT1dfREVTRVJJQUxJWkUgYXMgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXNcbi8vIGUuZy46IHN0YXRpYyBbV09SS0ZMT1dfU0VSSUFMSVpFXShpbnN0YW5jZSkgeyAuLi4gfVxuLy8gVGhpcyBjYXRjaGVzIGNhc2VzIHdoZXJlIHRoZSBzeW1ib2xzIGFyZSBpbXBvcnRlZCBhbmQgdXNlZCAoZXZlbiBpZiBidW5kbGVkL3JlLWV4cG9ydGVkKVxuZXhwb3J0IGNvbnN0IHdvcmtmbG93U2VyZGVDb21wdXRlZFByb3BlcnR5UGF0dGVybiA9XG4gIC9cXFtcXHMqV09SS0ZMT1dfKD86U0VSSUFMSVpFfERFU0VSSUFMSVpFKVxccypcXF0vO1xuXG5jb25zdCB0ZW1wbGF0ZUxpdGVyYWxQYXR0ZXJuID0gL2AoPzpcXFxcW1xcc1xcU118W15gXFxcXF0pKmAvZztcbmNvbnN0IGNvbW1lbnRQYXR0ZXJuID0gL1xcL1xcKltcXHNcXFNdKj9cXCpcXC98XFwvXFwvW15cXHJcXG5dKi9nO1xuY29uc3QgZGlyZWN0aXZlTGluZVBhdHRlcm4gPSAvXlxccyooWydcIl0pKHVzZSB3b3JrZmxvd3x1c2Ugc3RlcClcXDE7P1xccyokLztcbmNvbnN0IHN0cmluZ0RpcmVjdGl2ZUxpbmVQYXR0ZXJuID0gL15cXHMqKFsnXCJdKVteJ1wiXStcXDE7P1xccyokLztcblxuLy8gUGF0dGVybiB0byBkZXRlY3QgZ2VuZXJhdGVkIHdvcmtmbG93IHJvdXRlIGZpbGVzIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkXG4vLyBUaGVzZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIGFuZCBzaG91bGQgbm90IGJlIHJlLXByb2Nlc3NlZFxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlZFdvcmtmbG93UGF0aFBhdHRlcm4gPVxuICAvWy9cXFxcXVxcLndlbGwta25vd25bL1xcXFxdd29ya2Zsb3dbL1xcXFxdLztcblxuZnVuY3Rpb24gaGFzRGlyZWN0aXZlKHNvdXJjZTogc3RyaW5nLCBkaXJlY3RpdmU6ICd1c2Ugd29ya2Zsb3cnIHwgJ3VzZSBzdGVwJykge1xuICBsZXQgcHJldmlvdXNNZWFuaW5nZnVsTGluZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBzb3VyY2Uuc3BsaXQoL1xccj9cXG4vKSkge1xuICAgIGNvbnN0IHRyaW1tZWRMaW5lID0gbGluZS50cmltKCk7XG4gICAgaWYgKHRyaW1tZWRMaW5lID09PSAnJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aXZlTWF0Y2ggPSBkaXJlY3RpdmVMaW5lUGF0dGVybi5leGVjKHRyaW1tZWRMaW5lKTtcbiAgICBpZiAoZGlyZWN0aXZlTWF0Y2gpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZGlyZWN0aXZlTWF0Y2hbMl0gPT09IGRpcmVjdGl2ZSAmJlxuICAgICAgICAocHJldmlvdXNNZWFuaW5nZnVsTGluZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgcHJldmlvdXNNZWFuaW5nZnVsTGluZS5lbmRzV2l0aCgneycpIHx8XG4gICAgICAgICAgc3RyaW5nRGlyZWN0aXZlTGluZVBhdHRlcm4udGVzdChwcmV2aW91c01lYW5pbmdmdWxMaW5lKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzTWVhbmluZ2Z1bExpbmUgPSB0cmltbWVkTGluZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHByZXZpb3VzTWVhbmluZ2Z1bExpbmUgPSB0cmltbWVkTGluZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdvcmtmbG93LXJlbGF0ZWQgcGF0dGVybnMgaW4gc291cmNlIGNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dQYXR0ZXJuTWF0Y2gge1xuICAvKiogRmlsZSBjb250YWlucyAndXNlIHdvcmtmbG93JyBkaXJlY3RpdmUgKi9cbiAgaGFzVXNlV29ya2Zsb3c6IGJvb2xlYW47XG4gIC8qKiBGaWxlIGNvbnRhaW5zICd1c2Ugc3RlcCcgZGlyZWN0aXZlICovXG4gIGhhc1VzZVN0ZXA6IGJvb2xlYW47XG4gIC8qKiBGaWxlIGNvbnRhaW5zIEB3b3JrZmxvdy9zZXJkZSBpbXBvcnQgKi9cbiAgaGFzU2VyZGVJbXBvcnQ6IGJvb2xlYW47XG4gIC8qKiBGaWxlIGNvbnRhaW5zIFN5bWJvbC5mb3IoJ3dvcmtmbG93LXNlcmlhbGl6ZScpIG9yIFN5bWJvbC5mb3IoJ3dvcmtmbG93LWRlc2VyaWFsaXplJykgKi9cbiAgaGFzU2VyZGVTeW1ib2w6IGJvb2xlYW47XG4gIC8qKiBGaWxlIGNvbnRhaW5zIGFueSBkaXJlY3RpdmUgKCd1c2Ugd29ya2Zsb3cnIG9yICd1c2Ugc3RlcCcpICovXG4gIGhhc0RpcmVjdGl2ZTogYm9vbGVhbjtcbiAgLyoqIEZpbGUgY29udGFpbnMgYW55IHNlcmRlIHBhdHRlcm4gKGltcG9ydCBvciBTeW1ib2wuZm9yKSAqL1xuICBoYXNTZXJkZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdvcmtmbG93LXJlbGF0ZWQgcGF0dGVybnMgaW4gc291cmNlIGNvZGUuXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBjb2RlIHRvIGFuYWx5emVcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGZsYWdzIGZvciBlYWNoIGRldGVjdGVkIHBhdHRlcm5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlOiBzdHJpbmcpOiBXb3JrZmxvd1BhdHRlcm5NYXRjaCB7XG4gIGNvbnN0IGhhc0RpcmVjdGl2ZVN1YnN0cmluZyA9XG4gICAgc291cmNlLmluY2x1ZGVzKCd1c2Ugd29ya2Zsb3cnKSB8fCBzb3VyY2UuaW5jbHVkZXMoJ3VzZSBzdGVwJyk7XG4gIGNvbnN0IHNvdXJjZUZvckRpcmVjdGl2ZXMgPVxuICAgIGhhc0RpcmVjdGl2ZVN1YnN0cmluZyAmJiAoc291cmNlLmluY2x1ZGVzKCdgJykgfHwgc291cmNlLmluY2x1ZGVzKCcvJykpXG4gICAgICA/IHNvdXJjZVxuICAgICAgICAgIC5yZXBsYWNlKHRlbXBsYXRlTGl0ZXJhbFBhdHRlcm4sIChtYXRjaCkgPT5cbiAgICAgICAgICAgIG1hdGNoLnJlcGxhY2UoL1teXFxyXFxuXS9nLCAnICcpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAobWF0Y2gpID0+IG1hdGNoLnJlcGxhY2UoL1teXFxyXFxuXS9nLCAnICcpKVxuICAgICAgOiBzb3VyY2U7XG4gIGNvbnN0IGhhc1VzZVdvcmtmbG93ID1cbiAgICBzb3VyY2UuaW5jbHVkZXMoJ3VzZSB3b3JrZmxvdycpICYmXG4gICAgaGFzRGlyZWN0aXZlKHNvdXJjZUZvckRpcmVjdGl2ZXMsICd1c2Ugd29ya2Zsb3cnKTtcbiAgY29uc3QgaGFzVXNlU3RlcCA9XG4gICAgc291cmNlLmluY2x1ZGVzKCd1c2Ugc3RlcCcpICYmXG4gICAgaGFzRGlyZWN0aXZlKHNvdXJjZUZvckRpcmVjdGl2ZXMsICd1c2Ugc3RlcCcpO1xuICBjb25zdCBoYXNTZXJkZUltcG9ydCA9XG4gICAgc291cmNlLmluY2x1ZGVzKCdAd29ya2Zsb3cvc2VyZGUnKSAmJlxuICAgIHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLnRlc3Qoc291cmNlKTtcbiAgY29uc3QgaGFzU2VyZGVTeW1ib2wgPVxuICAgIChzb3VyY2UuaW5jbHVkZXMoJ3dvcmtmbG93LXNlcmlhbGl6ZScpIHx8XG4gICAgICBzb3VyY2UuaW5jbHVkZXMoJ3dvcmtmbG93LWRlc2VyaWFsaXplJykpICYmXG4gICAgd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChzb3VyY2UpO1xuICBjb25zdCBoYXNTZXJkZUNvbXB1dGVkUHJvcGVydHkgPVxuICAgIChzb3VyY2UuaW5jbHVkZXMoJ1dPUktGTE9XX1NFUklBTElaRScpIHx8XG4gICAgICBzb3VyY2UuaW5jbHVkZXMoJ1dPUktGTE9XX0RFU0VSSUFMSVpFJykpICYmXG4gICAgd29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuLnRlc3Qoc291cmNlKTtcblxuICByZXR1cm4ge1xuICAgIGhhc1VzZVdvcmtmbG93LFxuICAgIGhhc1VzZVN0ZXAsXG4gICAgaGFzU2VyZGVJbXBvcnQsXG4gICAgaGFzU2VyZGVTeW1ib2wsXG4gICAgaGFzRGlyZWN0aXZlOiBoYXNVc2VXb3JrZmxvdyB8fCBoYXNVc2VTdGVwLFxuICAgIGhhc1NlcmRlOiBoYXNTZXJkZUltcG9ydCB8fCBoYXNTZXJkZVN5bWJvbCB8fCBoYXNTZXJkZUNvbXB1dGVkUHJvcGVydHksXG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGZpbGUgcGF0aCBpcyBhIGdlbmVyYXRlZCB3b3JrZmxvdyByb3V0ZSBmaWxlLlxuICogQHBhcmFtIGZpbGVQYXRoIC0gVGhlIGZpbGUgcGF0aCB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZSBpcyBhIGdlbmVyYXRlZCB3b3JrZmxvdyByb3V0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW5lcmF0ZWRXb3JrZmxvd0ZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2VuZXJhdGVkV29ya2Zsb3dQYXRoUGF0dGVybi50ZXN0KGZpbGVQYXRoKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZmlsZSBzaG91bGQgYmUgdHJhbnNmb3JtZWQgYmFzZWQgb24gaXRzIHBhdGggYW5kIGNvbnRlbnQgcGF0dGVybnMuXG4gKlxuICogTG9naWM6XG4gKiAtIEdlbmVyYXRlZCB3b3JrZmxvdyByb3V0ZSBmaWxlcyBhcmUgbmV2ZXIgdHJhbnNmb3JtZWRcbiAqIC0gRmlsZXMgd2l0aCBkaXJlY3RpdmVzICgndXNlIHdvcmtmbG93JyBvciAndXNlIHN0ZXAnKSBhcmUgYWx3YXlzIHRyYW5zZm9ybWVkXG4gKiAtIEZpbGVzIHdpdGggc2VyZGUgcGF0dGVybnMgYXJlIGFsd2F5cyB0cmFuc2Zvcm1lZDsgdGhlIFNXQyBwbHVnaW4gcGVyZm9ybXNcbiAqICAgQVNULWxldmVsIGV4dHJhY3Rpb24vZmlsdGVyaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXkgYWN0dWFsbHkgZGVmaW5lXG4gKiAgIHNlcmRlIGNsYXNzZXNcbiAqXG4gKiBAcGFyYW0gZmlsZVBhdGggLSBUaGUgZmlsZSBwYXRoIHRvIGNoZWNrXG4gKiBAcGFyYW0gcGF0dGVybnMgLSBUaGUgZGV0ZWN0ZWQgcGF0dGVybnMgZnJvbSBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKClcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUgc2hvdWxkIGJlIHRyYW5zZm9ybWVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRUcmFuc2Zvcm1GaWxlKFxuICBmaWxlUGF0aDogc3RyaW5nLFxuICBwYXR0ZXJuczogV29ya2Zsb3dQYXR0ZXJuTWF0Y2hcbik6IGJvb2xlYW4ge1xuICAvLyBOZXZlciB0cmFuc2Zvcm0gZ2VuZXJhdGVkIHdvcmtmbG93IHJvdXRlIGZpbGVzXG4gIGlmIChpc0dlbmVyYXRlZFdvcmtmbG93RmlsZShmaWxlUGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcGF0dGVybnMuaGFzRGlyZWN0aXZlIHx8IHBhdHRlcm5zLmhhc1NlcmRlO1xufVxuXG4vKipcbiAqIENvbWJpbmVkIHJlZ2V4IHBhdHRlcm4gZm9yIHR1cmJvcGFjayBjb250ZW50IG1hdGNoaW5nLlxuICogVXNlcyBiYWNrcmVmZXJlbmNlcyB0byBlbnN1cmUgbWF0Y2hpbmcgcXVvdGUgdHlwZXMuXG4gKiBNYXRjaGVzOiAndXNlIHdvcmtmbG93JywgJ3VzZSBzdGVwJywgQHdvcmtmbG93L3NlcmRlIGltcG9ydHMsIFN5bWJvbC5mb3Igc2VyaWFsaXphdGlvbiBzeW1ib2xzLFxuICogYW5kIFdPUktGTE9XX1NFUklBTElaRS9XT1JLRkxPV19ERVNFUklBTElaRSBjb21wdXRlZCBwcm9wZXJ0eSB1c2FnZVxuICovXG5leHBvcnQgY29uc3QgdHVyYm9wYWNrQ29udGVudFBhdHRlcm4gPVxuICAvKHVzZSB3b3JrZmxvd3x1c2Ugc3RlcHxmcm9tXFxzKyhbJ1wiXSlAd29ya2Zsb3dcXC9zZXJkZVxcMnxTeW1ib2xcXC5mb3JcXHMqXFwoXFxzKihbJ1wiXSl3b3JrZmxvdy0oPzpzZXJpYWxpemV8ZGVzZXJpYWxpemUpXFwzXFxzKlxcKXxcXFtcXHMqV09SS0ZMT1dfKD86U0VSSUFMSVpFfERFU0VSSUFMSVpFKVxccypcXF0pLztcbiJdfQ==
|
|
@@ -261,11 +261,7 @@ describe('transform-utils patterns', () => {
|
|
|
261
261
|
expect(result.hasUseStep).toBe(true);
|
|
262
262
|
expect(result.hasSerde).toBe(true);
|
|
263
263
|
});
|
|
264
|
-
it('
|
|
265
|
-
// detectWorkflowPatterns uses regexp and will match directive-like
|
|
266
|
-
// strings inside template literals. The discover-entries plugin
|
|
267
|
-
// handles this by using the SWC plugin manifest (AST-level) for
|
|
268
|
-
// directive discovery instead of relying on regexp alone.
|
|
264
|
+
it('does not detect directives inside template literals', () => {
|
|
269
265
|
const source = `'use client';
|
|
270
266
|
const CODE_SNIPPET = \`import { sleep } from "workflow";
|
|
271
267
|
|
|
@@ -275,6 +271,82 @@ export async function handleUserSignup(email: string) {
|
|
|
275
271
|
}
|
|
276
272
|
\`;
|
|
277
273
|
export default function Page() { return null; }
|
|
274
|
+
`;
|
|
275
|
+
const result = detectWorkflowPatterns(source);
|
|
276
|
+
expect(result.hasUseWorkflow).toBe(false);
|
|
277
|
+
expect(result.hasDirective).toBe(false);
|
|
278
|
+
});
|
|
279
|
+
it('does not detect single-quoted step directives inside template literals', () => {
|
|
280
|
+
const source = `const CODE_SNIPPET = \`
|
|
281
|
+
export async function doThing() {
|
|
282
|
+
'use step';
|
|
283
|
+
}
|
|
284
|
+
\`;
|
|
285
|
+
`;
|
|
286
|
+
const result = detectWorkflowPatterns(source);
|
|
287
|
+
expect(result.hasUseStep).toBe(false);
|
|
288
|
+
expect(result.hasDirective).toBe(false);
|
|
289
|
+
});
|
|
290
|
+
it('does not detect directives inside comments', () => {
|
|
291
|
+
const source = `/*
|
|
292
|
+
export async function run() {
|
|
293
|
+
"use workflow";
|
|
294
|
+
}
|
|
295
|
+
*/
|
|
296
|
+
|
|
297
|
+
// 'use step';
|
|
298
|
+
export const value = 1;
|
|
299
|
+
`;
|
|
300
|
+
const result = detectWorkflowPatterns(source);
|
|
301
|
+
expect(result.hasUseWorkflow).toBe(false);
|
|
302
|
+
expect(result.hasUseStep).toBe(false);
|
|
303
|
+
expect(result.hasDirective).toBe(false);
|
|
304
|
+
});
|
|
305
|
+
it('does not detect directive-looking strings inside multiline calls', () => {
|
|
306
|
+
const source = `console.log(
|
|
307
|
+
"use step"
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
console.log(
|
|
311
|
+
'use workflow'
|
|
312
|
+
);
|
|
313
|
+
`;
|
|
314
|
+
const result = detectWorkflowPatterns(source);
|
|
315
|
+
expect(result.hasUseWorkflow).toBe(false);
|
|
316
|
+
expect(result.hasUseStep).toBe(false);
|
|
317
|
+
expect(result.hasDirective).toBe(false);
|
|
318
|
+
});
|
|
319
|
+
it('does not detect quoted directive-looking strings inside multiline calls', () => {
|
|
320
|
+
const source = `console.log(
|
|
321
|
+
'"use step"'
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
console.log(
|
|
325
|
+
"'use step'"
|
|
326
|
+
);
|
|
327
|
+
`;
|
|
328
|
+
const result = detectWorkflowPatterns(source);
|
|
329
|
+
expect(result.hasUseStep).toBe(false);
|
|
330
|
+
expect(result.hasDirective).toBe(false);
|
|
331
|
+
});
|
|
332
|
+
it('still detects real directives after template literals', () => {
|
|
333
|
+
const source = `const CODE_SNIPPET = \`
|
|
334
|
+
"use workflow";
|
|
335
|
+
\`;
|
|
336
|
+
|
|
337
|
+
export async function run() {
|
|
338
|
+
"use workflow";
|
|
339
|
+
}
|
|
340
|
+
`;
|
|
341
|
+
const result = detectWorkflowPatterns(source);
|
|
342
|
+
expect(result.hasUseWorkflow).toBe(true);
|
|
343
|
+
expect(result.hasDirective).toBe(true);
|
|
344
|
+
});
|
|
345
|
+
it('still detects directives after other directive prologue entries', () => {
|
|
346
|
+
const source = `export async function run() {
|
|
347
|
+
"use strict";
|
|
348
|
+
"use workflow";
|
|
349
|
+
}
|
|
278
350
|
`;
|
|
279
351
|
const result = detectWorkflowPatterns(source);
|
|
280
352
|
expect(result.hasUseWorkflow).toBe(true);
|
|
@@ -319,4 +391,4 @@ export default function Page() { return null; }
|
|
|
319
391
|
});
|
|
320
392
|
});
|
|
321
393
|
});
|
|
322
|
-
//# sourceMappingURL=transform-utils.test.js.map
|
|
394
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLXV0aWxzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNmb3JtLXV0aWxzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsb0NBQW9DLEVBQ3BDLDBCQUEwQixFQUMxQiwwQkFBMEIsR0FDM0IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUM5QyxNQUFNLENBQUMsa0JB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O2dCQUNwQixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFLEdBQUcsRUFBRTtZQUN2RSxNQUFNLENBQ0osbUJBQW1CLENBQ2pCLHdEQUF3RCxFQUN4RCxFQUFFLEdBQUcsVUFBVSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUN4RCxDQUNGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUUsR0FBRyxFQUFFO1lBQ3ZFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQge1xuICBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zLFxuICBzaG91bGRUcmFuc2Zvcm1GaWxlLFxuICB1c2VTdGVwUGF0dGVybixcbiAgdXNlV29ya2Zsb3dQYXR0ZXJuLFxuICB3b3JrZmxvd1NlcmRlQ29tcHV0ZWRQcm9wZXJ0eVBhdHRlcm4sXG4gIHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLFxuICB3b3JrZmxvd1NlcmRlU3ltYm9sUGF0dGVybixcbn0gZnJvbSAnLi90cmFuc2Zvcm0tdXRpbHMuanMnO1xuXG5kZXNjcmliZSgndHJhbnNmb3JtLXV0aWxzIHBhdHRlcm5zJywgKCkgPT4ge1xuICBkZXNjcmliZSgndXNlV29ya2Zsb3dQYXR0ZXJuJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgbWF0Y2ggXCJ1c2Ugd29ya2Zsb3dcIiB3aXRoIHNpbmdsZSBxdW90ZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QodXNlV29ya2Zsb3dQYXR0ZXJuLnRlc3QoYCd1c2Ugd29ya2Zsb3cnO2ApKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHVzZVdvcmtmbG93UGF0dGVybi50ZXN0KGAndXNlIHdvcmtmbG93J2ApKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYXRjaCBcInVzZSB3b3JrZmxvd1wiIHdpdGggZG91YmxlIHF1b3RlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh1c2VXb3JrZmxvd1BhdHRlcm4udGVzdChgXCJ1c2Ugd29ya2Zsb3dcIjtgKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh1c2VXb3JrZmxvd1BhdHRlcm4udGVzdChgXCJ1c2Ugd29ya2Zsb3dcImApKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYXRjaCB3aXRoIGxlYWRpbmcgd2hpdGVzcGFjZScsICgpID0+IHtcbiAgICAgIGV4cGVjdCh1c2VXb3JrZmxvd1BhdHRlcm4udGVzdChgICAndXNlIHdvcmtmbG93JztgKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh1c2VXb3JrZmxvd1BhdHRlcm4udGVzdChgXFx0XCJ1c2Ugd29ya2Zsb3dcIjtgKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IG1hdGNoIGlubGluZSB1c2FnZScsICgpID0+IHtcbiAgICAgIGV4cGVjdCh1c2VXb3JrZmxvd1BhdHRlcm4udGVzdChgY29uc3QgeCA9ICd1c2Ugd29ya2Zsb3cnO2ApKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VzZVN0ZXBQYXR0ZXJuJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgbWF0Y2ggXCJ1c2Ugc3RlcFwiIHdpdGggc2luZ2xlIHF1b3RlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh1c2VTdGVwUGF0dGVybi50ZXN0KGAndXNlIHN0ZXAnO2ApKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHVzZVN0ZXBQYXR0ZXJuLnRlc3QoYCd1c2Ugc3RlcCdgKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggXCJ1c2Ugc3RlcFwiIHdpdGggZG91YmxlIHF1b3RlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh1c2VTdGVwUGF0dGVybi50ZXN0KGBcInVzZSBzdGVwXCI7YCkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QodXNlU3RlcFBhdHRlcm4udGVzdChgXCJ1c2Ugc3RlcFwiYCkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3b3JrZmxvd1NlcmRlSW1wb3J0UGF0dGVybicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIG1hdGNoIGltcG9ydCBmcm9tIEB3b3JrZmxvdy9zZXJkZSB3aXRoIHNpbmdsZSBxdW90ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgaW1wb3J0IHsgV09SS0ZMT1dfU0VSSUFMSVpFIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztgO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggaW1wb3J0IGZyb20gQHdvcmtmbG93L3NlcmRlIHdpdGggZG91YmxlIHF1b3RlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGBpbXBvcnQgeyBXT1JLRkxPV19TRVJJQUxJWkUgfSBmcm9tIFwiQHdvcmtmbG93L3NlcmRlXCI7YDtcbiAgICAgIGV4cGVjdCh3b3JrZmxvd1NlcmRlSW1wb3J0UGF0dGVybi50ZXN0KHNvdXJjZSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG1hdGNoIGltcG9ydCB3aXRoIG11bHRpcGxlIHNwZWNpZmllcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgaW1wb3J0IHsgV09SS0ZMT1dfU0VSSUFMSVpFLCBXT1JLRkxPV19ERVNFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7YDtcbiAgICAgIGV4cGVjdCh3b3JrZmxvd1NlcmRlSW1wb3J0UGF0dGVybi50ZXN0KHNvdXJjZSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG1hdGNoIGltcG9ydCB3aXRoIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgaW1wb3J0IHR5cGUgeyBTZXJpYWxpemF0aW9uU3ltYm9sIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztgO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IG1hdGNoIHNpbWlsYXIgYnV0IGRpZmZlcmVudCBwYWNrYWdlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZUltcG9ydFBhdHRlcm4udGVzdChgaW1wb3J0IHsgeCB9IGZyb20gJ0BvdGhlci9zZXJkZSc7YClcbiAgICAgICkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLnRlc3QoXG4gICAgICAgICAgYGltcG9ydCB7IHggfSBmcm9tICdAd29ya2Zsb3cvc2VyZGUtdXRpbHMnO2BcbiAgICAgICAgKVxuICAgICAgKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgbWF0Y2ggU3ltYm9sLmZvciB3aXRoIHdvcmtmbG93LXNlcmlhbGl6ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGBzdGF0aWMgW1N5bWJvbC5mb3IoJ3dvcmtmbG93LXNlcmlhbGl6ZScpXShpbnN0YW5jZSkge31gO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggU3ltYm9sLmZvciB3aXRoIHdvcmtmbG93LWRlc2VyaWFsaXplJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctZGVzZXJpYWxpemUnKV0oZGF0YSkge31gO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggd2l0aCBkb3VibGUgcXVvdGVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYHN0YXRpYyBbU3ltYm9sLmZvcihcIndvcmtmbG93LXNlcmlhbGl6ZVwiKV0oaW5zdGFuY2UpIHt9YDtcbiAgICAgIGV4cGVjdCh3b3JrZmxvd1NlcmRlU3ltYm9sUGF0dGVybi50ZXN0KHNvdXJjZSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG1hdGNoIHdpdGggd2hpdGVzcGFjZSB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICB3b3JrZmxvd1NlcmRlU3ltYm9sUGF0dGVybi50ZXN0KGBTeW1ib2wuZm9yKCAnd29ya2Zsb3ctc2VyaWFsaXplJyApYClcbiAgICAgICkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChgU3ltYm9sLmZvcignd29ya2Zsb3ctZGVzZXJpYWxpemUnKWApXG4gICAgICApLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG1hdGNoIGluIGEgZnVsbCBjbGFzcyBkZWZpbml0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYFxuICAgICAgICBleHBvcnQgY2xhc3MgUG9pbnQge1xuICAgICAgICAgIGNvbnN0cnVjdG9yKHgsIHkpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctc2VyaWFsaXplJyldKGluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4geyB4OiBpbnN0YW5jZS54LCB5OiBpbnN0YW5jZS55IH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3RhdGljIFtTeW1ib2wuZm9yKCd3b3JrZmxvdy1kZXNlcmlhbGl6ZScpXShkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFBvaW50KGRhdGEueCwgZGF0YS55KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGA7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChzb3VyY2UpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgbWF0Y2ggb3RoZXIgU3ltYm9sLmZvciB1c2FnZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChgU3ltYm9sLmZvcignb3RoZXItc3ltYm9sJylgKVxuICAgICAgKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChgU3ltYm9sLmZvcignd29ya2Zsb3ctc29tZXRoaW5nLWVsc2UnKWApXG4gICAgICApLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgbWF0Y2ggbm9uLVN5bWJvbC5mb3IgcGF0dGVybnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChgJ3dvcmtmbG93LXNlcmlhbGl6ZSdgKSkudG9CZShcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChgd29ya2Zsb3ctZGVzZXJpYWxpemVgKSkudG9CZShcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb21iaW5lZCBkZXRlY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkZXRlY3QgZmlsZSB1c2luZyBpbXBvcnRlZCBzeW1ib2xzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYFxuICAgICAgICBpbXBvcnQgeyBXT1JLRkxPV19TRVJJQUxJWkUsIFdPUktGTE9XX0RFU0VSSUFMSVpFIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztcblxuICAgICAgICBleHBvcnQgY2xhc3MgTXlDbGFzcyB7XG4gICAgICAgICAgc3RhdGljIFtXT1JLRkxPV19TRVJJQUxJWkVdKGluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogaW5zdGFuY2UudmFsdWUgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdGF0aWMgW1dPUktGTE9XX0RFU0VSSUFMSVpFXShkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15Q2xhc3MoZGF0YS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICAgIC8vIE5vdGU6IHdvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuIHdvbid0IG1hdGNoIGhlcmUgYmVjYXVzZSB0aGUgc3ltYm9sc1xuICAgICAgLy8gYXJlIHJlZmVyZW5jZWQgYnkgaWRlbnRpZmllciwgbm90IGRpcmVjdGx5IGFzIFN5bWJvbC5mb3IoKVxuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVTeW1ib2xQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRldGVjdCBmaWxlIHVzaW5nIGRpcmVjdCBTeW1ib2wuZm9yJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYFxuICAgICAgICBleHBvcnQgY2xhc3MgUG9pbnQge1xuICAgICAgICAgIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctc2VyaWFsaXplJyldKGluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4geyB4OiBpbnN0YW5jZS54IH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3RhdGljIFtTeW1ib2wuZm9yKCd3b3JrZmxvdy1kZXNlcmlhbGl6ZScpXShkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFBvaW50KGRhdGEueCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVJbXBvcnRQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChzb3VyY2UpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXRlY3QgZmlsZSB3aXRoIGJvdGggcGF0dGVybnMnLCAoKSA9PiB7XG4gICAgICAvLyBUaGlzIHdvdWxkIGJlIHVudXN1YWwgYnV0IHZhbGlkXG4gICAgICBjb25zdCBzb3VyY2UgPSBgXG4gICAgICAgIGltcG9ydCB7IFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7XG5cbiAgICAgICAgZXhwb3J0IGNsYXNzIFBvaW50IHtcbiAgICAgICAgICAvLyBVc2luZyBpbXBvcnRlZCBzeW1ib2xcbiAgICAgICAgICBzdGF0aWMgW1dPUktGTE9XX1NFUklBTElaRV0oaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHg6IGluc3RhbmNlLnggfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBVc2luZyBkaXJlY3QgU3ltYm9sLmZvclxuICAgICAgICAgIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctZGVzZXJpYWxpemUnKV0oZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQb2ludChkYXRhLngpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgYDtcbiAgICAgIGV4cGVjdCh3b3JrZmxvd1NlcmRlSW1wb3J0UGF0dGVybi50ZXN0KHNvdXJjZSkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChzb3VyY2UpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnd29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgbWF0Y2ggW1dPUktGTE9XX1NFUklBTElaRV0gY29tcHV0ZWQgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgc3RhdGljIFtXT1JLRkxPV19TRVJJQUxJWkVdKGluc3RhbmNlKSB7fWA7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggW1dPUktGTE9XX0RFU0VSSUFMSVpFXSBjb21wdXRlZCBwcm9wZXJ0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGBzdGF0aWMgW1dPUktGTE9XX0RFU0VSSUFMSVpFXShkYXRhKSB7fWA7XG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuLnRlc3Qoc291cmNlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggd2l0aCB3aGl0ZXNwYWNlIGluc2lkZSBicmFja2V0cycsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuLnRlc3QoYFsgV09SS0ZMT1dfU0VSSUFMSVpFIF1gKVxuICAgICAgKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFxuICAgICAgICB3b3JrZmxvd1NlcmRlQ29tcHV0ZWRQcm9wZXJ0eVBhdHRlcm4udGVzdChgWyAgV09SS0ZMT1dfREVTRVJJQUxJWkUgIF1gKVxuICAgICAgKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYXRjaCBpbiBidW5kbGVkIGNvZGUgd2hlcmUgc3ltYm9scyBhcmUgaW1wb3J0ZWQgZnJvbSBjaHVua3MnLCAoKSA9PiB7XG4gICAgICAvLyBUaGlzIGlzIHRoZSBwYXR0ZXJuIHNlZW4gaW4gYnVuZGxlZCBwYWNrYWdlcyBsaWtlIGp1c3QtYmFzaFxuICAgICAgY29uc3Qgc291cmNlID0gYFxuICAgICAgICBpbXBvcnQge1xuICAgICAgICAgIFdPUktGTE9XX0RFU0VSSUFMSVpFLFxuICAgICAgICAgIFdPUktGTE9XX1NFUklBTElaRVxuICAgICAgICB9IGZyb20gXCIuL2NodW5rcy9jaHVuay00NTMzMjNRWS5qc1wiO1xuXG4gICAgICAgIHZhciBCYXNoID0gY2xhc3MgX0Jhc2gge1xuICAgICAgICAgIHN0YXRpYyBbV09SS0ZMT1dfU0VSSUFMSVpFXShpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgZnM6IGluc3RhbmNlLmZzIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXRpYyBbV09SS0ZMT1dfREVTRVJJQUxJWkVdKHNlcmlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKF9CYXNoLnByb3RvdHlwZSwge1xuICAgICAgICAgICAgICBmczogeyB2YWx1ZTogc2VyaWFsaXplZC5mcyB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICBgO1xuICAgICAgZXhwZWN0KHdvcmtmbG93U2VyZGVDb21wdXRlZFByb3BlcnR5UGF0dGVybi50ZXN0KHNvdXJjZSkpLnRvQmUodHJ1ZSk7XG4gICAgICAvLyBOb3RlOiBpbXBvcnQgcGF0dGVybiB3b24ndCBtYXRjaCBiZWNhdXNlIGl0J3MgZnJvbSBhIGNodW5rLCBub3QgQHdvcmtmbG93L3NlcmRlXG4gICAgICBleHBlY3Qod29ya2Zsb3dTZXJkZUltcG9ydFBhdHRlcm4udGVzdChzb3VyY2UpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IG1hdGNoIHBhcnRpYWwgbmFtZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHdvcmtmbG93U2VyZGVDb21wdXRlZFByb3BlcnR5UGF0dGVybi50ZXN0KGBbV09SS0ZMT1dfU0VSSUFMSVpFX0VYVFJBXWApXG4gICAgICApLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KFxuICAgICAgICB3b3JrZmxvd1NlcmRlQ29tcHV0ZWRQcm9wZXJ0eVBhdHRlcm4udGVzdChgW01ZX1dPUktGTE9XX1NFUklBTElaRV1gKVxuICAgICAgKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IG1hdGNoIHN0cmluZyBsaXRlcmFscycsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuLnRlc3QoYFsnV09SS0ZMT1dfU0VSSUFMSVpFJ11gKVxuICAgICAgKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgd29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuLnRlc3QoYFtcIldPUktGTE9XX0RFU0VSSUFMSVpFXCJdYClcbiAgICAgICkudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZXRlY3RXb3JrZmxvd1BhdHRlcm5zJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZGV0ZWN0IGhhc1NlcmRlIGZvciBAd29ya2Zsb3cvc2VyZGUgaW1wb3J0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYGltcG9ydCB7IFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7YDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzU2VyZGUpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lmhhc1NlcmRlSW1wb3J0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXRlY3QgaGFzU2VyZGUgZm9yIFN5bWJvbC5mb3IgcGF0dGVybicsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGBzdGF0aWMgW1N5bWJvbC5mb3IoJ3dvcmtmbG93LXNlcmlhbGl6ZScpXShpbnN0YW5jZSkge31gO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZGV0ZWN0V29ya2Zsb3dQYXR0ZXJucyhzb3VyY2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNTZXJkZSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzU2VyZGVTeW1ib2wpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRldGVjdCBoYXNTZXJkZSBmb3IgY29tcHV0ZWQgcHJvcGVydHkgcGF0dGVybicsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGBzdGF0aWMgW1dPUktGTE9XX1NFUklBTElaRV0oaW5zdGFuY2UpIHt9YDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzU2VyZGUpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRldGVjdCBoYXNTZXJkZSBmb3IgYnVuZGxlZCB0aGlyZC1wYXJ0eSBwYWNrYWdlcycsICgpID0+IHtcbiAgICAgIC8vIFNpbXVsYXRlcyBidW5kbGVkIG91dHB1dCBmcm9tIHBhY2thZ2VzIGxpa2UganVzdC1iYXNoXG4gICAgICBjb25zdCBzb3VyY2UgPSBgXG4gICAgICAgIGltcG9ydCB7XG4gICAgICAgICAgV09SS0ZMT1dfREVTRVJJQUxJWkUsXG4gICAgICAgICAgV09SS0ZMT1dfU0VSSUFMSVpFXG4gICAgICAgIH0gZnJvbSBcIi4vY2h1bmtzL2NodW5rLUFCQzEyMy5qc1wiO1xuXG4gICAgICAgIHZhciBNeUNsYXNzID0gY2xhc3Mge1xuICAgICAgICAgIHN0YXRpYyBbV09SS0ZMT1dfU0VSSUFMSVpFXShpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogaW5zdGFuY2UuZGF0YSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGF0aWMgW1dPUktGTE9XX0RFU0VSSUFMSVpFXShzZXJpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15Q2xhc3Moc2VyaWFsaXplZC5kYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICBgO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZGV0ZWN0V29ya2Zsb3dQYXR0ZXJucyhzb3VyY2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNTZXJkZSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGRldGVjdCBoYXNTZXJkZSBmb3IgdW5yZWxhdGVkIGNvZGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgXG4gICAgICAgIGV4cG9ydCBjbGFzcyBSZWd1bGFyQ2xhc3Mge1xuICAgICAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZGV0ZWN0V29ya2Zsb3dQYXR0ZXJucyhzb3VyY2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNTZXJkZSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRldGVjdCBib3RoIGRpcmVjdGl2ZSBhbmQgc2VyZGUgcGF0dGVybnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgXG4gICAgICAgICd1c2Ugc3RlcCc7XG4gICAgICAgIGltcG9ydCB7IFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7XG4gICAgICAgIFxuICAgICAgICBleHBvcnQgY2xhc3MgUG9pbnQge1xuICAgICAgICAgIHN0YXRpYyBbV09SS0ZMT1dfU0VSSUFMSVpFXShpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgeDogaW5zdGFuY2UueCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgYDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzRGlyZWN0aXZlKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNVc2VTdGVwKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNTZXJkZSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBkZXRlY3QgZGlyZWN0aXZlcyBpbnNpZGUgdGVtcGxhdGUgbGl0ZXJhbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgJ3VzZSBjbGllbnQnO1xuY29uc3QgQ09ERV9TTklQUEVUID0gXFxgaW1wb3J0IHsgc2xlZXAgfSBmcm9tIFwid29ya2Zsb3dcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZVVzZXJTaWdudXAoZW1haWw6IHN0cmluZykge1xuICBcInVzZSB3b3JrZmxvd1wiO1xuICBjb25zdCB1c2VyID0gYXdhaXQgY3JlYXRlVXNlcihlbWFpbCk7XG59XG5cXGA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkgeyByZXR1cm4gbnVsbDsgfVxuYDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzVXNlV29ya2Zsb3cpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNEaXJlY3RpdmUpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGRldGVjdCBzaW5nbGUtcXVvdGVkIHN0ZXAgZGlyZWN0aXZlcyBpbnNpZGUgdGVtcGxhdGUgbGl0ZXJhbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgY29uc3QgQ09ERV9TTklQUEVUID0gXFxgXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9UaGluZygpIHtcbiAgJ3VzZSBzdGVwJztcbn1cblxcYDtcbmA7XG4gICAgICBjb25zdCByZXN1bHQgPSBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKHNvdXJjZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lmhhc1VzZVN0ZXApLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNEaXJlY3RpdmUpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGRldGVjdCBkaXJlY3RpdmVzIGluc2lkZSBjb21tZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGAvKlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgXCJ1c2Ugd29ya2Zsb3dcIjtcbn1cbiovXG5cbi8vICd1c2Ugc3RlcCc7XG5leHBvcnQgY29uc3QgdmFsdWUgPSAxO1xuYDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzVXNlV29ya2Zsb3cpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNVc2VTdGVwKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzRGlyZWN0aXZlKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBkZXRlY3QgZGlyZWN0aXZlLWxvb2tpbmcgc3RyaW5ncyBpbnNpZGUgbXVsdGlsaW5lIGNhbGxzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYGNvbnNvbGUubG9nKFxuICBcInVzZSBzdGVwXCJcbik7XG5cbmNvbnNvbGUubG9nKFxuICAndXNlIHdvcmtmbG93J1xuKTtcbmA7XG4gICAgICBjb25zdCByZXN1bHQgPSBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKHNvdXJjZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lmhhc1VzZVdvcmtmbG93KS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzVXNlU3RlcCkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lmhhc0RpcmVjdGl2ZSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgZGV0ZWN0IHF1b3RlZCBkaXJlY3RpdmUtbG9va2luZyBzdHJpbmdzIGluc2lkZSBtdWx0aWxpbmUgY2FsbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBgY29uc29sZS5sb2coXG4gICdcInVzZSBzdGVwXCInXG4pO1xuXG5jb25zb2xlLmxvZyhcbiAgXCIndXNlIHN0ZXAnXCJcbik7XG5gO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZGV0ZWN0V29ya2Zsb3dQYXR0ZXJucyhzb3VyY2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNVc2VTdGVwKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzRGlyZWN0aXZlKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdGlsbCBkZXRlY3RzIHJlYWwgZGlyZWN0aXZlcyBhZnRlciB0ZW1wbGF0ZSBsaXRlcmFscycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGBjb25zdCBDT0RFX1NOSVBQRVQgPSBcXGBcbiAgXCJ1c2Ugd29ya2Zsb3dcIjtcblxcYDtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgXCJ1c2Ugd29ya2Zsb3dcIjtcbn1cbmA7XG4gICAgICBjb25zdCByZXN1bHQgPSBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKHNvdXJjZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lmhhc1VzZVdvcmtmbG93KS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5oYXNEaXJlY3RpdmUpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3RpbGwgZGV0ZWN0cyBkaXJlY3RpdmVzIGFmdGVyIG90aGVyIGRpcmVjdGl2ZSBwcm9sb2d1ZSBlbnRyaWVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuICBcInVzZSB3b3JrZmxvd1wiO1xufVxuYDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaGFzVXNlV29ya2Zsb3cpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lmhhc0RpcmVjdGl2ZSkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZFRyYW5zZm9ybUZpbGUnLCAoKSA9PiB7XG4gICAgY29uc3Qgbm9QYXR0ZXJucyA9IHtcbiAgICAgIGhhc1VzZVdvcmtmbG93OiBmYWxzZSxcbiAgICAgIGhhc1VzZVN0ZXA6IGZhbHNlLFxuICAgICAgaGFzU2VyZGVJbXBvcnQ6IGZhbHNlLFxuICAgICAgaGFzU2VyZGVTeW1ib2w6IGZhbHNlLFxuICAgICAgaGFzRGlyZWN0aXZlOiBmYWxzZSxcbiAgICAgIGhhc1NlcmRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgaXQoJ2V4Y2x1ZGVzIGdlbmVyYXRlZCB3b3JrZmxvdyByb3V0ZSBmaWxlcyBldmVuIHdpdGggZGlyZWN0aXZlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgc2hvdWxkVHJhbnNmb3JtRmlsZSgnL2FwcC8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9yb3V0ZS50cycsIHtcbiAgICAgICAgICAuLi5ub1BhdHRlcm5zLFxuICAgICAgICAgIGhhc1VzZVdvcmtmbG93OiB0cnVlLFxuICAgICAgICAgIGhhc0RpcmVjdGl2ZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgndHJhbnNmb3JtcyBmaWxlcyB3aXRoIGRpcmVjdGl2ZSBwYXR0ZXJucycsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgc2hvdWxkVHJhbnNmb3JtRmlsZSgnL2FwcC93b3JrZmxvd3MvbXktd29ya2Zsb3cudHMnLCB7XG4gICAgICAgICAgLi4ubm9QYXR0ZXJucyxcbiAgICAgICAgICBoYXNVc2VXb3JrZmxvdzogdHJ1ZSxcbiAgICAgICAgICBoYXNEaXJlY3RpdmU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgndHJhbnNmb3JtcyBmaWxlcyB3aXRoIHNlcmRlIHBhdHRlcm5zJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICBzaG91bGRUcmFuc2Zvcm1GaWxlKCcvYXBwL2xpYi9teS1jbGFzcy50cycsIHtcbiAgICAgICAgICAuLi5ub1BhdHRlcm5zLFxuICAgICAgICAgIGhhc1NlcmRlSW1wb3J0OiB0cnVlLFxuICAgICAgICAgIGhhc1NlcmRlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RyYW5zZm9ybXMgU0RLIGZpbGVzIHdpdGggc2VyZGUgcGF0dGVybnMgKG5vIGxvbmdlciBleGNsdWRlZCknLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHNob3VsZFRyYW5zZm9ybUZpbGUoXG4gICAgICAgICAgJy9hcHAvbm9kZV9tb2R1bGVzL0B3b3JrZmxvdy9jb3JlL2Rpc3Qvc2VyaWFsaXphdGlvbi5qcycsXG4gICAgICAgICAgeyAuLi5ub1BhdHRlcm5zLCBoYXNTZXJkZVN5bWJvbDogdHJ1ZSwgaGFzU2VyZGU6IHRydWUgfVxuICAgICAgICApXG4gICAgICApLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdHJhbnNmb3JtIGZpbGVzIHdpdGhvdXQgZGlyZWN0aXZlcyBvciBzZXJkZSBwYXR0ZXJucycsICgpID0+IHtcbiAgICAgIGV4cGVjdChzaG91bGRUcmFuc2Zvcm1GaWxlKCcvYXBwL2xpYi91dGlscy50cycsIG5vUGF0dGVybnMpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
export declare const validBuildTargets: readonly ["standalone", "vercel-build-output-api", "next", "nest", "sveltekit", "astro"];
|
|
2
2
|
export type BuildTarget = (typeof validBuildTargets)[number];
|
|
3
|
+
/**
|
|
4
|
+
* Source map emission mode for generated workflow bundles. Matches esbuild's
|
|
5
|
+
* `sourcemap` option vocabulary:
|
|
6
|
+
*
|
|
7
|
+
* - `true` / `'linked'`: write a separate `.map` file and add a `sourceMappingURL` comment
|
|
8
|
+
* - `'inline'`: emit a base64-encoded source map at the end of the bundle
|
|
9
|
+
* - `'external'`: write a separate `.map` file without the comment
|
|
10
|
+
* - `'both'`: emit both inline and external source maps
|
|
11
|
+
* - `false`: omit source maps entirely
|
|
12
|
+
*/
|
|
13
|
+
export type SourcemapMode = boolean | 'inline' | 'linked' | 'external' | 'both';
|
|
3
14
|
/**
|
|
4
15
|
* Common configuration options shared across all builder types.
|
|
5
16
|
*/
|
|
@@ -8,21 +19,46 @@ interface BaseWorkflowConfig {
|
|
|
8
19
|
dirs: string[];
|
|
9
20
|
workingDir: string;
|
|
10
21
|
/**
|
|
11
|
-
* Project root used for
|
|
12
|
-
*
|
|
22
|
+
* Project root used for tracing, discovery, and tsconfig lookup during SWC
|
|
23
|
+
* transforms. Defaults to `workingDir`.
|
|
13
24
|
*/
|
|
14
25
|
projectRoot?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Project root used for package and workspace module-specifier resolution
|
|
28
|
+
* during SWC transforms. Defaults to `projectRoot` when set, otherwise
|
|
29
|
+
* `workingDir`.
|
|
30
|
+
*/
|
|
31
|
+
moduleSpecifierRoot?: string;
|
|
15
32
|
clientBundlePath?: string;
|
|
16
33
|
externalPackages?: string[];
|
|
17
34
|
workflowManifestPath?: string;
|
|
18
35
|
debugFilePrefix?: string;
|
|
19
36
|
diagnosticsDir?: string;
|
|
20
37
|
distDir?: string;
|
|
38
|
+
basePath?: string;
|
|
21
39
|
suppressCreateWorkflowsBundleLogs?: boolean;
|
|
22
40
|
suppressCreateWorkflowsBundleWarnings?: boolean;
|
|
23
41
|
suppressCreateWebhookBundleLogs?: boolean;
|
|
24
42
|
suppressCreateManifestLogs?: boolean;
|
|
25
43
|
runtime?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Controls how source maps are emitted for workflow bundles. Accepts the
|
|
46
|
+
* same values as esbuild's `sourcemap` option.
|
|
47
|
+
*
|
|
48
|
+
* Default is `'inline'` for the step bundle and intermediate workflow
|
|
49
|
+
* bundle (gives readable stack traces for step errors and workflow VM
|
|
50
|
+
* errors). Setting `false` omits source maps entirely, which produces
|
|
51
|
+
* smaller bundles — useful for staying under the Vercel 250MB function
|
|
52
|
+
* limit — at the cost of stack traces that reference generated code.
|
|
53
|
+
*
|
|
54
|
+
* `'external'` and `'linked'` write a separate `.map` file; use these
|
|
55
|
+
* when you want to ship source maps to observability tooling but keep
|
|
56
|
+
* them out of the function bundle.
|
|
57
|
+
*
|
|
58
|
+
* Can also be set via the `WORKFLOW_SOURCEMAP` environment variable;
|
|
59
|
+
* config wins over env var, env var wins over the default.
|
|
60
|
+
*/
|
|
61
|
+
sourcemap?: SourcemapMode;
|
|
26
62
|
}
|
|
27
63
|
/**
|
|
28
64
|
* Configuration for standalone (CLI-based) builds.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,0FAOpB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;GAEG;AACH,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,0FAOpB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhF;;GAEG;AACH,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAK7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,eAAe,CAAC,EAAE,MAAM,CAAC;IAIzB,cAAc,CAAC,EAAE,MAAM,CAAC;IAIxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAG5C,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAGhD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAG1C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,WAAW,EAAE,YAAY,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,WAAW,EAAE,yBAAyB,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,WAAW,EAAE,WAAW,CAAC;IAEzB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,WAAW,EAAE,OAAO,CAAC;IAErB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,uBAAuB,GACvB,UAAU,GACV,UAAU,GACV,eAAe,GACf,WAAW,CAAC;AAEhB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,IAAI,WAAW,CAEvB"}
|
package/dist/types.js
CHANGED
|
@@ -9,4 +9,4 @@ export const validBuildTargets = [
|
|
|
9
9
|
export function isValidBuildTarget(target) {
|
|
10
10
|
return !!target && validBuildTargets.includes(target);
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsWUFBWTtJQUNaLHlCQUF5QjtJQUN6QixNQUFNO0lBQ04sTUFBTTtJQUNOLFdBQVc7SUFDWCxPQUFPO0NBQ0MsQ0FBQztBQXlLWCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQTBCO0lBRTFCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmFsaWRCdWlsZFRhcmdldHMgPSBbXG4gICdzdGFuZGFsb25lJyxcbiAgJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJyxcbiAgJ25leHQnLFxuICAnbmVzdCcsXG4gICdzdmVsdGVraXQnLFxuICAnYXN0cm8nLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJ1aWxkVGFyZ2V0ID0gKHR5cGVvZiB2YWxpZEJ1aWxkVGFyZ2V0cylbbnVtYmVyXTtcblxuLyoqXG4gKiBTb3VyY2UgbWFwIGVtaXNzaW9uIG1vZGUgZm9yIGdlbmVyYXRlZCB3b3JrZmxvdyBidW5kbGVzLiBNYXRjaGVzIGVzYnVpbGQnc1xuICogYHNvdXJjZW1hcGAgb3B0aW9uIHZvY2FidWxhcnk6XG4gKlxuICogLSBgdHJ1ZWAgLyBgJ2xpbmtlZCdgOiB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlIGFuZCBhZGQgYSBgc291cmNlTWFwcGluZ1VSTGAgY29tbWVudFxuICogLSBgJ2lubGluZSdgOiBlbWl0IGEgYmFzZTY0LWVuY29kZWQgc291cmNlIG1hcCBhdCB0aGUgZW5kIG9mIHRoZSBidW5kbGVcbiAqIC0gYCdleHRlcm5hbCdgOiB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlIHdpdGhvdXQgdGhlIGNvbW1lbnRcbiAqIC0gYCdib3RoJ2A6IGVtaXQgYm90aCBpbmxpbmUgYW5kIGV4dGVybmFsIHNvdXJjZSBtYXBzXG4gKiAtIGBmYWxzZWA6IG9taXQgc291cmNlIG1hcHMgZW50aXJlbHlcbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlbWFwTW9kZSA9IGJvb2xlYW4gfCAnaW5saW5lJyB8ICdsaW5rZWQnIHwgJ2V4dGVybmFsJyB8ICdib3RoJztcblxuLyoqXG4gKiBDb21tb24gY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXJlZCBhY3Jvc3MgYWxsIGJ1aWxkZXIgdHlwZXMuXG4gKi9cbmludGVyZmFjZSBCYXNlV29ya2Zsb3dDb25maWcge1xuICB3YXRjaD86IGJvb2xlYW47XG4gIGRpcnM6IHN0cmluZ1tdO1xuICB3b3JraW5nRGlyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm9qZWN0IHJvb3QgdXNlZCBmb3IgdHJhY2luZywgZGlzY292ZXJ5LCBhbmQgdHNjb25maWcgbG9va3VwIGR1cmluZyBTV0NcbiAgICogdHJhbnNmb3Jtcy4gRGVmYXVsdHMgdG8gYHdvcmtpbmdEaXJgLlxuICAgKi9cbiAgcHJvamVjdFJvb3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3Qgcm9vdCB1c2VkIGZvciBwYWNrYWdlIGFuZCB3b3Jrc3BhY2UgbW9kdWxlLXNwZWNpZmllciByZXNvbHV0aW9uXG4gICAqIGR1cmluZyBTV0MgdHJhbnNmb3Jtcy4gRGVmYXVsdHMgdG8gYHByb2plY3RSb290YCB3aGVuIHNldCwgb3RoZXJ3aXNlXG4gICAqIGB3b3JraW5nRGlyYC5cbiAgICovXG4gIG1vZHVsZVNwZWNpZmllclJvb3Q/OiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWxseSBnZW5lcmF0ZSBhIGNsaWVudCBsaWJyYXJ5IGZvciB3b3JrZmxvdyBleGVjdXRpb24uIFRoZSBwcmVmZXJyZWRcbiAgLy8gbWV0aG9kIG9mIHVzaW5nIHdvcmtmbG93IGlzIHRvIHVzZSBhIGxvYWRlciB3aXRoaW4gYSBmcmFtZXdvcmsgKGxpa2VcbiAgLy8gTmV4dEpTKSB0aGF0IHJlc29sdmVzIGNsaWVudCBiaW5kaW5ncyBvbiB0aGUgZmx5LlxuICBjbGllbnRCdW5kbGVQYXRoPzogc3RyaW5nO1xuXG4gIGV4dGVybmFsUGFja2FnZXM/OiBzdHJpbmdbXTtcblxuICB3b3JrZmxvd01hbmlmZXN0UGF0aD86IHN0cmluZztcblxuICAvLyBPcHRpb25hbCBwcmVmaXggZm9yIGRlYnVnIGZpbGVzIChlLmcuLCBcIl9cIiBmb3IgQXN0cm8gdG8gaWdub3JlIHRoZW0pXG4gIGRlYnVnRmlsZVByZWZpeD86IHN0cmluZztcblxuICAvLyBPcHRpb25hbCBkaXJlY3Rvcnkgd2hlcmUgZGlhZ25vc3RpY3MgYXJ0aWZhY3RzIHNob3VsZCBiZSB3cml0dGVuLlxuICAvLyBUaGUgd29ya2Zsb3cgbWFuaWZlc3QgaXMgd3JpdHRlbiB0byB3b3JrZmxvd3MtbWFuaWZlc3QuanNvbiBpbnNpZGUgdGhpcyBkaXIuXG4gIGRpYWdub3N0aWNzRGlyPzogc3RyaW5nO1xuXG4gIC8vIE9wdGlvbmFsIGZyYW1ld29yayBvdXRwdXQgZGlyZWN0b3J5LCB1c2VkIGJ5IGJ1aWxkZXJzIHRoYXQgbWlycm9yIGZyYW1ld29ya1xuICAvLyBhcnRpZmFjdCBsb2NhdGlvbnMuXG4gIGRpc3REaXI/OiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgcm91dGUgcHJlZml4IGZvciBhcHBzIGRlcGxveWVkIGJlbG93IHRoZSBvcmlnaW4gcm9vdC5cbiAgYmFzZVBhdGg/OiBzdHJpbmc7XG5cbiAgLy8gU3VwcHJlc3MgaW5mb3JtYXRpb25hbCBsb2dzIGVtaXR0ZWQgYnkgY3JlYXRlV29ya2Zsb3dzQnVuZGxlKClcbiAgLy8gKGUuZy4gaW50ZXJtZWRpYXRlL2ZpbmFsIHdvcmtmbG93IGJ1bmRsZSB0aW1pbmcgbG9ncykuXG4gIHN1cHByZXNzQ3JlYXRlV29ya2Zsb3dzQnVuZGxlTG9ncz86IGJvb2xlYW47XG5cbiAgLy8gU3VwcHJlc3MgZXNidWlsZCB3YXJuaW5ncyBlbWl0dGVkIGJ5IGNyZWF0ZVdvcmtmbG93c0J1bmRsZSgpLlxuICBzdXBwcmVzc0NyZWF0ZVdvcmtmbG93c0J1bmRsZVdhcm5pbmdzPzogYm9vbGVhbjtcblxuICAvLyBTdXBwcmVzcyBpbmZvcm1hdGlvbmFsIGxvZ3MgZW1pdHRlZCBieSBjcmVhdGVXZWJob29rQnVuZGxlKCkuXG4gIHN1cHByZXNzQ3JlYXRlV2ViaG9va0J1bmRsZUxvZ3M/OiBib29sZWFuO1xuXG4gIC8vIFN1cHByZXNzIGluZm9ybWF0aW9uYWwgbG9ncyBlbWl0dGVkIGJ5IGNyZWF0ZU1hbmlmZXN0KCkuXG4gIHN1cHByZXNzQ3JlYXRlTWFuaWZlc3RMb2dzPzogYm9vbGVhbjtcblxuICAvLyBOb2RlLmpzIHJ1bnRpbWUgdmVyc2lvbiBmb3IgVmVyY2VsIEZ1bmN0aW9ucyAoZS5nLiwgXCJub2RlanMyMi54XCIsIFwibm9kZWpzMjQueFwiKVxuICBydW50aW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgc291cmNlIG1hcHMgYXJlIGVtaXR0ZWQgZm9yIHdvcmtmbG93IGJ1bmRsZXMuIEFjY2VwdHMgdGhlXG4gICAqIHNhbWUgdmFsdWVzIGFzIGVzYnVpbGQncyBgc291cmNlbWFwYCBvcHRpb24uXG4gICAqXG4gICAqIERlZmF1bHQgaXMgYCdpbmxpbmUnYCBmb3IgdGhlIHN0ZXAgYnVuZGxlIGFuZCBpbnRlcm1lZGlhdGUgd29ya2Zsb3dcbiAgICogYnVuZGxlIChnaXZlcyByZWFkYWJsZSBzdGFjayB0cmFjZXMgZm9yIHN0ZXAgZXJyb3JzIGFuZCB3b3JrZmxvdyBWTVxuICAgKiBlcnJvcnMpLiBTZXR0aW5nIGBmYWxzZWAgb21pdHMgc291cmNlIG1hcHMgZW50aXJlbHksIHdoaWNoIHByb2R1Y2VzXG4gICAqIHNtYWxsZXIgYnVuZGxlcyDigJQgdXNlZnVsIGZvciBzdGF5aW5nIHVuZGVyIHRoZSBWZXJjZWwgMjUwTUIgZnVuY3Rpb25cbiAgICogbGltaXQg4oCUIGF0IHRoZSBjb3N0IG9mIHN0YWNrIHRyYWNlcyB0aGF0IHJlZmVyZW5jZSBnZW5lcmF0ZWQgY29kZS5cbiAgICpcbiAgICogYCdleHRlcm5hbCdgIGFuZCBgJ2xpbmtlZCdgIHdyaXRlIGEgc2VwYXJhdGUgYC5tYXBgIGZpbGU7IHVzZSB0aGVzZVxuICAgKiB3aGVuIHlvdSB3YW50IHRvIHNoaXAgc291cmNlIG1hcHMgdG8gb2JzZXJ2YWJpbGl0eSB0b29saW5nIGJ1dCBrZWVwXG4gICAqIHRoZW0gb3V0IG9mIHRoZSBmdW5jdGlvbiBidW5kbGUuXG4gICAqXG4gICAqIENhbiBhbHNvIGJlIHNldCB2aWEgdGhlIGBXT1JLRkxPV19TT1VSQ0VNQVBgIGVudmlyb25tZW50IHZhcmlhYmxlO1xuICAgKiBjb25maWcgd2lucyBvdmVyIGVudiB2YXIsIGVudiB2YXIgd2lucyBvdmVyIHRoZSBkZWZhdWx0LlxuICAgKi9cbiAgc291cmNlbWFwPzogU291cmNlbWFwTW9kZTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBzdGFuZGFsb25lIChDTEktYmFzZWQpIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFsb25lQ29uZmlnIGV4dGVuZHMgQmFzZVdvcmtmbG93Q29uZmlnIHtcbiAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJztcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSSBidWlsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyY2VsQnVpbGRPdXRwdXRDb25maWcgZXh0ZW5kcyBCYXNlV29ya2Zsb3dDb25maWcge1xuICBidWlsZFRhcmdldDogJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJztcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBOZXh0LmpzIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0Q29uZmlnIGV4dGVuZHMgQmFzZVdvcmtmbG93Q29uZmlnIHtcbiAgYnVpbGRUYXJnZXQ6ICduZXh0JztcbiAgLy8gTmV4dC5qcyBidWlsZGVyIGNvbXB1dGVzIHBhdGhzIGR5bmFtaWNhbGx5LCBzbyB0aGVzZSBhcmUgbm90IHVzZWRcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBTdmVsdGVLaXQgYnVpbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN2ZWx0ZUtpdENvbmZpZyBleHRlbmRzIEJhc2VXb3JrZmxvd0NvbmZpZyB7XG4gIGJ1aWxkVGFyZ2V0OiAnc3ZlbHRla2l0JztcbiAgLy8gU3ZlbHRlS2l0IGJ1aWxkZXIgY29tcHV0ZXMgcGF0aHMgZHluYW1pY2FsbHksIHNvIHRoZXNlIGFyZSBub3QgdXNlZFxuICBzdGVwc0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd29ya2Zsb3dzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3ZWJob29rQnVuZGxlUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIEFzdHJvIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3Ryb0NvbmZpZyBleHRlbmRzIEJhc2VXb3JrZmxvd0NvbmZpZyB7XG4gIGJ1aWxkVGFyZ2V0OiAnYXN0cm8nO1xuICAvLyBBc3RybyBidWlsZGVyIGNvbXB1dGVzIHBhdGhzIGR5bmFtaWNhbGx5LCBzbyB0aGVzZSBhcmUgbm90IHVzZWRcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBOZXN0SlMgYnVpbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RDb25maWcgZXh0ZW5kcyBCYXNlV29ya2Zsb3dDb25maWcge1xuICBidWlsZFRhcmdldDogJ25lc3QnO1xuICAvLyBOZXN0SlMgYnVpbGRlciBjb21wdXRlcyBwYXRocyBkeW5hbWljYWxseSwgc28gdGhlc2UgYXJlIG5vdCB1c2VkXG4gIHN0ZXBzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdlYmhvb2tCdW5kbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBhbGwgYnVpbGRlciBjb25maWd1cmF0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgdHlwZSBXb3JrZmxvd0NvbmZpZyA9XG4gIHwgU3RhbmRhbG9uZUNvbmZpZ1xuICB8IFZlcmNlbEJ1aWxkT3V0cHV0Q29uZmlnXG4gIHwgTmV4dENvbmZpZ1xuICB8IE5lc3RDb25maWdcbiAgfCBTdmVsdGVLaXRDb25maWdcbiAgfCBBc3Ryb0NvbmZpZztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCdWlsZFRhcmdldChcbiAgdGFyZ2V0OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHRhcmdldCBpcyBCdWlsZFRhcmdldCB7XG4gIHJldHVybiAhIXRhcmdldCAmJiB2YWxpZEJ1aWxkVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQgYXMgQnVpbGRUYXJnZXQpO1xufVxuIl19
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { BaseBuilder } from './base-builder.js';
|
|
2
2
|
export declare class VercelBuildOutputAPIBuilder extends BaseBuilder {
|
|
3
3
|
build(): Promise<void>;
|
|
4
|
-
private buildStepsFunction;
|
|
5
|
-
private buildWorkflowsFunction;
|
|
6
4
|
private buildWebhookFunction;
|
|
7
5
|
private createBuildOutputConfig;
|
|
8
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-build-output-api.d.ts","sourceRoot":"","sources":["../src/vercel-build-output-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,qBAAa,2BAA4B,SAAQ,WAAW;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel-build-output-api.d.ts","sourceRoot":"","sources":["../src/vercel-build-output-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,qBAAa,2BAA4B,SAAQ,WAAW;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAwEd,oBAAoB;YA2BpB,uBAAuB;CAyBtC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { copyFile, mkdir, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { join, resolve } from 'node:path';
|
|
3
3
|
import { BaseBuilder } from './base-builder.js';
|
|
4
|
-
import {
|
|
4
|
+
import { WORKFLOW_QUEUE_TRIGGER } from './constants.js';
|
|
5
5
|
export class VercelBuildOutputAPIBuilder extends BaseBuilder {
|
|
6
6
|
async build() {
|
|
7
7
|
const outputDir = resolve(this.config.workingDir, '.vercel/output');
|
|
@@ -11,21 +11,31 @@ export class VercelBuildOutputAPIBuilder extends BaseBuilder {
|
|
|
11
11
|
await mkdir(workflowGeneratedDir, { recursive: true });
|
|
12
12
|
const inputFiles = await this.getInputFiles();
|
|
13
13
|
const tsconfigPath = await this.findTsConfigPath();
|
|
14
|
-
|
|
14
|
+
// Create combined bundle in flow.func/
|
|
15
|
+
this.logBaseBuilderInfo('Creating Vercel Build Output API combined function');
|
|
16
|
+
const workflowsFuncDir = join(workflowGeneratedDir, 'flow.func');
|
|
17
|
+
await mkdir(workflowsFuncDir, { recursive: true });
|
|
18
|
+
const { manifest } = await this.createCombinedBundle({
|
|
15
19
|
inputFiles,
|
|
16
|
-
|
|
20
|
+
stepsOutfile: join(workflowsFuncDir, '__step_registrations.mjs'),
|
|
21
|
+
flowOutfile: join(workflowsFuncDir, 'index.mjs'),
|
|
17
22
|
tsconfigPath,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
await this.
|
|
23
|
+
bundleFinalOutput: true,
|
|
24
|
+
});
|
|
25
|
+
// Create package.json and .vc-config.json for combined function
|
|
26
|
+
await this.createPackageJson(workflowsFuncDir, 'module');
|
|
27
|
+
await this.createVcConfig(workflowsFuncDir, {
|
|
28
|
+
handler: 'index.mjs',
|
|
29
|
+
// Skip the source-map-support runtime shim when sourcemaps are
|
|
30
|
+
// disabled — it's a meaningful chunk of the function bundle and
|
|
31
|
+
// serves no purpose without maps.
|
|
32
|
+
shouldAddSourcemapSupport: this.sourcemapsEnabled,
|
|
33
|
+
maxDuration: 'max',
|
|
34
|
+
experimentalTriggers: [WORKFLOW_QUEUE_TRIGGER],
|
|
35
|
+
runtime: this.config.runtime,
|
|
36
|
+
});
|
|
37
|
+
await this.buildWebhookFunction({ workflowGeneratedDir });
|
|
22
38
|
await this.createBuildOutputConfig(outputDir);
|
|
23
|
-
// Merge manifests from both bundles
|
|
24
|
-
const manifest = {
|
|
25
|
-
steps: { ...stepsManifest.steps, ...workflowsManifest.steps },
|
|
26
|
-
workflows: { ...stepsManifest.workflows, ...workflowsManifest.workflows },
|
|
27
|
-
classes: { ...stepsManifest.classes, ...workflowsManifest.classes },
|
|
28
|
-
};
|
|
29
39
|
// Generate unified manifest
|
|
30
40
|
const workflowBundlePath = join(workflowGeneratedDir, 'flow.func/index.mjs');
|
|
31
41
|
const manifestJson = await this.createManifest({
|
|
@@ -38,52 +48,15 @@ export class VercelBuildOutputAPIBuilder extends BaseBuilder {
|
|
|
38
48
|
if (this.shouldExposePublicManifest && manifestJson) {
|
|
39
49
|
const staticManifestDir = join(outputDir, 'static/.well-known/workflow/v1');
|
|
40
50
|
await mkdir(staticManifestDir, { recursive: true });
|
|
51
|
+
if (process.env.VERCEL_DEPLOYMENT_ID === undefined) {
|
|
52
|
+
await writeFile(join(staticManifestDir, '.gitignore'), '*');
|
|
53
|
+
}
|
|
41
54
|
await copyFile(join(workflowGeneratedDir, 'manifest.json'), join(staticManifestDir, 'manifest.json'));
|
|
42
55
|
}
|
|
43
56
|
await this.createClientLibrary();
|
|
44
57
|
}
|
|
45
|
-
async buildStepsFunction({ inputFiles, workflowGeneratedDir, tsconfigPath, }) {
|
|
46
|
-
console.log('Creating Vercel Build Output API steps function');
|
|
47
|
-
const stepsFuncDir = join(workflowGeneratedDir, 'step.func');
|
|
48
|
-
await mkdir(stepsFuncDir, { recursive: true });
|
|
49
|
-
// Create steps bundle
|
|
50
|
-
const { manifest } = await this.createStepsBundle({
|
|
51
|
-
inputFiles,
|
|
52
|
-
outfile: join(stepsFuncDir, 'index.mjs'),
|
|
53
|
-
tsconfigPath,
|
|
54
|
-
});
|
|
55
|
-
// Create package.json and .vc-config.json for steps function
|
|
56
|
-
await this.createPackageJson(stepsFuncDir, 'module');
|
|
57
|
-
await this.createVcConfig(stepsFuncDir, {
|
|
58
|
-
handler: 'index.mjs',
|
|
59
|
-
shouldAddSourcemapSupport: true,
|
|
60
|
-
maxDuration: 'max',
|
|
61
|
-
experimentalTriggers: [STEP_QUEUE_TRIGGER],
|
|
62
|
-
runtime: this.config.runtime,
|
|
63
|
-
});
|
|
64
|
-
return manifest;
|
|
65
|
-
}
|
|
66
|
-
async buildWorkflowsFunction({ inputFiles, workflowGeneratedDir, tsconfigPath, }) {
|
|
67
|
-
console.log('Creating Vercel Build Output API workflows function');
|
|
68
|
-
const workflowsFuncDir = join(workflowGeneratedDir, 'flow.func');
|
|
69
|
-
await mkdir(workflowsFuncDir, { recursive: true });
|
|
70
|
-
const { manifest } = await this.createWorkflowsBundle({
|
|
71
|
-
outfile: join(workflowsFuncDir, 'index.mjs'),
|
|
72
|
-
inputFiles,
|
|
73
|
-
tsconfigPath,
|
|
74
|
-
});
|
|
75
|
-
// Create package.json and .vc-config.json for workflows function
|
|
76
|
-
await this.createPackageJson(workflowsFuncDir, 'module');
|
|
77
|
-
await this.createVcConfig(workflowsFuncDir, {
|
|
78
|
-
handler: 'index.mjs',
|
|
79
|
-
maxDuration: 'max',
|
|
80
|
-
experimentalTriggers: [WORKFLOW_QUEUE_TRIGGER],
|
|
81
|
-
runtime: this.config.runtime,
|
|
82
|
-
});
|
|
83
|
-
return manifest;
|
|
84
|
-
}
|
|
85
58
|
async buildWebhookFunction({ workflowGeneratedDir, bundle = true, }) {
|
|
86
|
-
|
|
59
|
+
this.logBaseBuilderInfo('Creating Vercel Build Output API webhook function');
|
|
87
60
|
const webhookFuncDir = join(workflowGeneratedDir, 'webhook/[token].func');
|
|
88
61
|
// Bundle the webhook route with dependencies resolved
|
|
89
62
|
await this.createWebhookBundle({
|
|
@@ -110,10 +83,9 @@ export class VercelBuildOutputAPIBuilder extends BaseBuilder {
|
|
|
110
83
|
],
|
|
111
84
|
};
|
|
112
85
|
await writeFile(join(outputDir, 'config.json'), JSON.stringify(buildOutputConfig, null, 2));
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
console.log('Webhook function available at /.well-known/workflow/v1/webhook/[token]');
|
|
86
|
+
this.logBaseBuilderInfo(`Build Output API created at ${outputDir}`);
|
|
87
|
+
this.logBaseBuilderInfo('Combined function available at /.well-known/workflow/v1/flow');
|
|
88
|
+
this.logBaseBuilderInfo('Webhook function available at /.well-known/workflow/v1/webhook/[token]');
|
|
117
89
|
}
|
|
118
90
|
}
|
|
119
|
-
//# sourceMappingURL=vercel-build-output-api.js.map
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxXQUFXO0lBQzFELEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUUzRSxrQ0FBa0M7UUFDbEMsTUFBTSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV2RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25ELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLG9EQUFvRCxDQUNyRCxDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDakUsTUFBTSxL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QUU7WUFDeEMsT0FBTyxFQUFFLFdBQVc7WUFDcEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBaUI7UUFDckQsMENBQTBDO1FBQzFDLE1BQU0saUJBQWlCLEdBQUc7WUFDeEIsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsR0FBRyxFQUFFLDBEQUEwRDtvQkFDL0QsSUFBSSxFQUFFLDBDQUEwQztpQkFDakQ7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLFNBQVMsQ0FDYixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxFQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLDhEQUE4RCxDQUMvRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUNyQix3RUFBd0UsQ0FDekUsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcHlGaWxlLCBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHsgV09SS0ZMT1dfUVVFVUVfVFJJR0dFUiB9IGZyb20gJy4vY29uc3RhbnRzLmpzJztcblxuZXhwb3J0IGNsYXNzIFZlcmNlbEJ1aWxkT3V0cHV0QVBJQnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3V0cHV0RGlyID0gcmVzb2x2ZSh0aGlzLmNvbmZpZy53b3JraW5nRGlyLCAnLnZlcmNlbC9vdXRwdXQnKTtcbiAgICBjb25zdCBmdW5jdGlvbnNEaXIgPSBqb2luKG91dHB1dERpciwgJ2Z1bmN0aW9ucycpO1xuICAgIGNvbnN0IHdvcmtmbG93R2VuZXJhdGVkRGlyID0gam9pbihmdW5jdGlvbnNEaXIsICcud2VsbC1rbm93bi93b3JrZmxvdy92MScpO1xuXG4gICAgLy8gRW5zdXJlIG91dHB1dCBkaXJlY3RvcmllcyBleGlzdFxuICAgIGF3YWl0IG1rZGlyKHdvcmtmbG93R2VuZXJhdGVkRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBhd2FpdCB0aGlzLmdldElucHV0RmlsZXMoKTtcbiAgICBjb25zdCB0c2NvbmZpZ1BhdGggPSBhd2FpdCB0aGlzLmZpbmRUc0NvbmZpZ1BhdGgoKTtcbiAgICAvLyBDcmVhdGUgY29tYmluZWQgYnVuZGxlIGluIGZsb3cuZnVuYy9cbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDcmVhdGluZyBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSSBjb21iaW5lZCBmdW5jdGlvbidcbiAgICApO1xuICAgIGNvbnN0IHdvcmtmbG93c0Z1bmNEaXIgPSBqb2luKHdvcmtmbG93R2VuZXJhdGVkRGlyLCAnZmxvdy5mdW5jJyk7XG4gICAgYXdhaXQgbWtkaXIod29ya2Zsb3dzRnVuY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBjb25zdCB7IG1hbmlmZXN0IH0gPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbWJpbmVkQnVuZGxlKHtcbiAgICAgIGlucHV0RmlsZXMsXG4gICAgICBzdGVwc091dGZpbGU6IGpvaW4od29ya2Zsb3dzRnVuY0RpciwgJ19fc3RlcF9yZWdpc3RyYXRpb25zLm1qcycpLFxuICAgICAgZmxvd091dGZpbGU6IGpvaW4od29ya2Zsb3dzRnVuY0RpciwgJ2luZGV4Lm1qcycpLFxuICAgICAgdHNjb25maWdQYXRoLFxuICAgICAgYnVuZGxlRmluYWxPdXRwdXQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZS5qc29uIGFuZCAudmMtY29uZmlnLmpzb24gZm9yIGNvbWJpbmVkIGZ1bmN0aW9uXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVQYWNrYWdlSnNvbih3b3JrZmxvd3NGdW5jRGlyLCAnbW9kdWxlJyk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVWY0NvbmZpZyh3b3JrZmxvd3NGdW5jRGlyLCB7XG4gICAgICBoYW5kbGVyOiAnaW5kZXgubWpzJyxcbiAgICAgIC8vIFNraXAgdGhlIHNvdXJjZS1tYXAtc3VwcG9ydCBydW50aW1lIHNoaW0gd2hlbiBzb3VyY2VtYXBzIGFyZVxuICAgICAgLy8gZGlzYWJsZWQg4oCUIGl0J3MgYSBtZWFuaW5nZnVsIGNodW5rIG9mIHRoZSBmdW5jdGlvbiBidW5kbGUgYW5kXG4gICAgICAvLyBzZXJ2ZXMgbm8gcHVycG9zZSB3aXRob3V0IG1hcHMuXG4gICAgICBzaG91bGRBZGRTb3VyY2VtYXBTdXBwb3J0OiB0aGlzLnNvdXJjZW1hcHNFbmFibGVkLFxuICAgICAgbWF4RHVyYXRpb246ICdtYXgnLFxuICAgICAgZXhwZXJpbWVudGFsVHJpZ2dlcnM6IFtXT1JLRkxPV19RVUVVRV9UUklHR0VSXSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMuY29uZmlnLnJ1bnRpbWUsXG4gICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLmJ1aWxkV2ViaG9va0Z1bmN0aW9uKHsgd29ya2Zsb3dHZW5lcmF0ZWREaXIgfSk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVCdWlsZE91dHB1dENvbmZpZyhvdXRwdXREaXIpO1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pZmllZCBtYW5pZmVzdFxuICAgIGNvbnN0IHdvcmtmbG93QnVuZGxlUGF0aCA9IGpvaW4oXG4gICAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICAgICdmbG93LmZ1bmMvaW5kZXgubWpzJ1xuICAgICk7XG4gICAgY29uc3QgbWFuaWZlc3RKc29uID0gYXdhaXQgdGhpcy5jcmVhdGVNYW5pZmVzdCh7XG4gICAgICB3b3JrZmxvd0J1bmRsZVBhdGgsXG4gICAgICBtYW5pZmVzdERpcjogd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIC8vIEV4cG9zZSBtYW5pZmVzdCBhcyBhIHN0YXRpYyBmaWxlIHdoZW4gV09SS0ZMT1dfUFVCTElDX01BTklGRVNUPTEuXG4gICAgLy8gVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgc2VydmVzIHN0YXRpYyBmaWxlcyBmcm9tIC52ZXJjZWwvb3V0cHV0L3N0YXRpYy9cbiAgICBpZiAodGhpcy5zaG91bGRFeHBvc2VQdWJsaWNNYW5pZmVzdCAmJiBtYW5pZmVzdEpzb24pIHtcbiAgICAgIGNvbnN0IHN0YXRpY01hbmlmZXN0RGlyID0gam9pbihcbiAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAnc3RhdGljLy53ZWxsLWtub3duL3dvcmtmbG93L3YxJ1xuICAgICAgKTtcbiAgICAgIGF3YWl0IG1rZGlyKHN0YXRpY01hbmlmZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5WRVJDRUxfREVQTE9ZTUVOVF9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKHN0YXRpY01hbmlmZXN0RGlyLCAnLmdpdGlnbm9yZScpLCAnKicpO1xuICAgICAgfVxuICAgICAgYXdhaXQgY29weUZpbGUoXG4gICAgICAgIGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICdtYW5pZmVzdC5qc29uJyksXG4gICAgICAgIGpvaW4oc3RhdGljTWFuaWZlc3REaXIsICdtYW5pZmVzdC5qc29uJylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVDbGllbnRMaWJyYXJ5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkV2ViaG9va0Z1bmN0aW9uKHtcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICBidW5kbGUgPSB0cnVlLFxuICB9OiB7XG4gICAgd29ya2Zsb3dHZW5lcmF0ZWREaXI6IHN0cmluZztcbiAgICBidW5kbGU/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oXG4gICAgICAnQ3JlYXRpbmcgVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgd2ViaG9vayBmdW5jdGlvbidcbiAgICApO1xuICAgIGNvbnN0IHdlYmhvb2tGdW5jRGlyID0gam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ3dlYmhvb2svW3Rva2VuXS5mdW5jJyk7XG5cbiAgICAvLyBCdW5kbGUgdGhlIHdlYmhvb2sgcm91dGUgd2l0aCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdlYmhvb2tCdW5kbGUoe1xuICAgICAgb3V0ZmlsZTogam9pbih3ZWJob29rRnVuY0RpciwgJ2luZGV4Lm1qcycpLFxuICAgICAgYnVuZGxlLCAvLyBCdWlsZCBPdXRwdXQgQVBJIG5lZWRzIGJ1bmRsaW5nIChleGNlcHQgaW4gdGVzdHMpXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZS5qc29uIGFuZCAudmMtY29uZmlnLmpzb24gZm9yIHdlYmhvb2sgZnVuY3Rpb25cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVBhY2thZ2VKc29uKHdlYmhvb2tGdW5jRGlyLCAnbW9kdWxlJyk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVWY0NvbmZpZyh3ZWJob29rRnVuY0Rpciwge1xuICAgICAgaGFuZGxlcjogJ2luZGV4Lm1qcycsXG4gICAgICBzaG91bGRBZGRIZWxwZXJzOiBmYWxzZSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMuY29uZmlnLnJ1bnRpbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJ1aWxkT3V0cHV0Q29uZmlnKG91dHB1dERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQ3JlYXRlIGNvbmZpZy5qc29uIGZvciBCdWlsZCBPdXRwdXQgQVBJXG4gICAgY29uc3QgYnVpbGRPdXRwdXRDb25maWcgPSB7XG4gICAgICB2ZXJzaW9uOiAzLFxuICAgICAgcm91dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzcmM6ICdeXFxcXC9cXFxcLndlbGwta25vd25cXFxcL3dvcmtmbG93XFxcXC92MVxcXFwvd2ViaG9va1xcXFwvKFteXFxcXC9dKykkJyxcbiAgICAgICAgICBkZXN0OiAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2svW3Rva2VuXScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBqb2luKG91dHB1dERpciwgJ2NvbmZpZy5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeShidWlsZE91dHB1dENvbmZpZywgbnVsbCwgMilcbiAgICApO1xuXG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oYEJ1aWxkIE91dHB1dCBBUEkgY3JlYXRlZCBhdCAke291dHB1dERpcn1gKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDb21iaW5lZCBmdW5jdGlvbiBhdmFpbGFibGUgYXQgLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cnXG4gICAgKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdXZWJob29rIGZ1bmN0aW9uIGF2YWlsYWJsZSBhdCAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvd2ViaG9vay9bdG9rZW5dJ1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/workflow-alias.js
CHANGED
|
@@ -62,4 +62,4 @@ export async function resolveWorkflowAliasRelativePath(absoluteFilePath, working
|
|
|
62
62
|
workflowAliasResolutionCache.set(cacheKey, resolutionPromise);
|
|
63
63
|
return resolutionPromise;
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd29ya2Zsb3ctYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxHQUFHLEVBR3pDLENBQUM7QUFFSixNQUFNLG9CQUFvQixHQUFHO0lBQzNCLGVBQWU7SUFDZixXQUFXO0lBQ1gsU0FBUztJQUNULEtBQUs7SUFDTCxXQUFXO0lBQ1gsT0FBTztDQUNDLENBQUM7QUFFWCxTQUFTLDhCQUE4QixDQUNyQyxzQkFBOEI7SUFFOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNyQyxLQUFLLE1BQU0sU0FBUyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEdBQUcsQ0FBQztRQUNoQyxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QixTQUFTO1FBQ1gsQ0FBQztRQUNELFVBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUM7SUFDL0MsNEJBQTRCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0NBQWdDLENBQ3BELGdCQUF3QixFQUN4QixVQUFrQjtJQUVsQixNQUFNLHNCQUFzQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFcEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxVQUFVLEtBQUssc0JBQXNCLEVBQUUsQ0FBQztJQUM1RCxNQUFNLE1BQU0sR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FDN0QsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sMEJBQTBCLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RSxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FDcEQsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELEtBQUssTUFBTSxpQkFBaUIsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNoRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FDL0QsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUNoQixDQUFDO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzNCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsSUFDRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLDBCQUEwQixFQUN4RSxDQUFDO2dCQUNELE9BQU8saUJBQWlCLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBRUwsNEJBQTRCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlELE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFjY2VzcywgcmVhbHBhdGggfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuXG5jb25zdCB3b3JrZmxvd0FsaWFzUmVzb2x1dGlvbkNhY2hlID0gbmV3IE1hcDxcbiAgc3RyaW5nLFxuICBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD5cbj4oKTtcblxuY29uc3QgV09SS0ZMT1dfQUxJQVNfUk9PVFMgPSBbXG4gICdzcmMvd29ya2Zsb3dzJyxcbiAgJ3dvcmtmbG93cycsXG4gICdzcmMvYXBwJyxcbiAgJ2FwcCcsXG4gICdzcmMvcGFnZXMnLFxuICAncGFnZXMnLFxuXSBhcyBjb25zdDtcblxuZnVuY3Rpb24gZ2V0QWxpYXNSZWxhdGl2ZVBhdGhDYW5kaWRhdGVzKFxuICBub3JtYWxpemVkQWJzb2x1dGVQYXRoOiBzdHJpbmdcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGFsaWFzUm9vdCBvZiBXT1JLRkxPV19BTElBU19ST09UUykge1xuICAgIGNvbnN0IG1hcmtlciA9IGAvJHthbGlhc1Jvb3R9L2A7XG4gICAgY29uc3QgbWFya2VySW5kZXggPSBub3JtYWxpemVkQWJzb2x1dGVQYXRoLmxhc3RJbmRleE9mKG1hcmtlcik7XG4gICAgaWYgKG1hcmtlckluZGV4ID09PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNhbmRpZGF0ZXMuYWRkKG5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGguc2xpY2UobWFya2VySW5kZXggKyAxKSk7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmZyb20oY2FuZGlkYXRlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhcldvcmtmbG93QWxpYXNSZXNvbHV0aW9uQ2FjaGUoKTogdm9pZCB7XG4gIHdvcmtmbG93QWxpYXNSZXNvbHV0aW9uQ2FjaGUuY2xlYXIoKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVXb3JrZmxvd0FsaWFzUmVsYXRpdmVQYXRoKFxuICBhYnNvbHV0ZUZpbGVQYXRoOiBzdHJpbmcsXG4gIHdvcmtpbmdEaXI6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEFic29sdXRlUGF0aCA9IGFic29sdXRlRmlsZVBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7d29ya2luZ0Rpcn06OiR7bm9ybWFsaXplZEFic29sdXRlUGF0aH1gO1xuICBjb25zdCBjYWNoZWQgPSB3b3JrZmxvd0FsaWFzUmVzb2x1dGlvbkNhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3QgcmVzb2x1dGlvblByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkRmlsZVBhdGggPSBhd2FpdCByZWFscGF0aChhYnNvbHV0ZUZpbGVQYXRoKS5jYXRjaChcbiAgICAgICgpID0+IHVuZGVmaW5lZFxuICAgICk7XG4gICAgaWYgKCFyZXNvbHZlZEZpbGVQYXRoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkUmVzb2x2ZWRGaWxlUGF0aCA9IHJlc29sdmVkRmlsZVBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgIGNvbnN0IGFsaWFzQ2FuZGlkYXRlcyA9IGdldEFsaWFzUmVsYXRpdmVQYXRoQ2FuZGlkYXRlcyhcbiAgICAgIG5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGhcbiAgICApO1xuICAgIGlmIChhbGlhc0NhbmRpZGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWxpYXNSZWxhdGl2ZVBhdGggb2YgYWxpYXNDYW5kaWRhdGVzKSB7XG4gICAgICBjb25zdCBjYW5kaWRhdGVQYXRoID0gcmVzb2x2ZSh3b3JraW5nRGlyLCBhbGlhc1JlbGF0aXZlUGF0aCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhY2Nlc3MoY2FuZGlkYXRlUGF0aCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlZENhbmRpZGF0ZVBhdGggPSBhd2FpdCByZWFscGF0aChjYW5kaWRhdGVQYXRoKS5jYXRjaChcbiAgICAgICAgKCkgPT4gdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgaWYgKCFyZXNvbHZlZENhbmRpZGF0ZVBhdGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHJlc29sdmVkQ2FuZGlkYXRlUGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJykgPT09IG5vcm1hbGl6ZWRSZXNvbHZlZEZpbGVQYXRoXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGFsaWFzUmVsYXRpdmVQYXRoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9KSgpO1xuXG4gIHdvcmtmbG93QWxpYXNSZXNvbHV0aW9uQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXNvbHV0aW9uUHJvbWlzZSk7XG4gIHJldHVybiByZXNvbHV0aW9uUHJvbWlzZTtcbn1cbiJdfQ==
|
|
@@ -50,4 +50,4 @@ describe('resolveWorkflowAliasRelativePath', () => {
|
|
|
50
50
|
await expect(resolveWorkflowAliasRelativePath(externalFilePath, workingDir)).resolves.toBe('app/.well-known/agent/v1/steps.ts');
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
|
-
//# sourceMappingURL=
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWxpYXMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy93b3JrZmxvdy1hbGlhcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyxnQ0FBZ0MsR0FDakMsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixTQUFTLFNBQVMsQ0FBQyxJQUFZO0lBQzdCLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxhQUFhLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELElBQUksUUFBZ0IsQ0FBQztJQUNyQixJQUFJLFVBQWtCLENBQUM7SUFFdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLGlDQUFpQyxFQUFFLENBQUM7UUFDcEMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzFELFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUs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LENBQUM7SUFDdkQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIG1rZHRlbXBTeW5jLFxuICBta2RpclN5bmMsXG4gIHJtU3luYyxcbiAgc3ltbGlua1N5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHtcbiAgY2xlYXJXb3JrZmxvd0FsaWFzUmVzb2x1dGlvbkNhY2hlLFxuICByZXNvbHZlV29ya2Zsb3dBbGlhc1JlbGF0aXZlUGF0aCxcbn0gZnJvbSAnLi93b3JrZmxvdy1hbGlhcy5qcyc7XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgbWtkaXJTeW5jKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKHBhdGgsIFwiJ3VzZSB3b3JrZmxvdyc7XFxuXCIsICd1dGYtOCcpO1xufVxuXG5kZXNjcmliZSgncmVzb2x2ZVdvcmtmbG93QWxpYXNSZWxhdGl2ZVBhdGgnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuICBsZXQgd29ya2luZ0Rpcjogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNsZWFyV29ya2Zsb3dBbGlhc1Jlc29sdXRpb25DYWNoZSgpO1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgJ3dvcmtmbG93LWFsaWFzLScpKTtcbiAgICB3b3JraW5nRGlyID0gam9pbih0ZXN0Um9vdCwgJ3Byb2plY3QnKTtcbiAgICBta2RpclN5bmMod29ya2luZ0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgY2xlYXJXb3JrZmxvd0FsaWFzUmVzb2x1dGlvbkNhY2hlKCk7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdtYXBzIGZpbGVzIGluIHdvcmtmbG93cy8gdG8gd29ya2Zsb3dzLyogYWxpYXNlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4od29ya2luZ0RpciwgJ3dvcmtmbG93cycsICdmb28udHMnKTtcbiAgICB3cml0ZUZpbGUoZmlsZVBhdGgpO1xuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcmVzb2x2ZVdvcmtmbG93QWxpYXNSZWxhdGl2ZVBhdGgoZmlsZVBhdGgsIHdvcmtpbmdEaXIpXG4gICAgKS5yZXNvbHZlcy50b0JlKCd3b3JrZmxvd3MvZm9vLnRzJyk7XG4gIH0pO1xuXG4gIGl0KCdtYXBzIGZpbGVzIGluIHNyYy93b3JrZmxvd3MvIHRvIHNyYy93b3JrZmxvd3MvKiBhbGlhc2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbih3b3JraW5nRGlyLCAnc3JjJywgJ3dvcmtmbG93cycsICdmb28udHMnKTtcbiAgICB3cml0ZUZpbGUoZmlsZVBhdGgpO1xuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcmVzb2x2ZVdvcmtmbG93QWxpYXNSZWxhdGl2ZVBhdGgoZmlsZVBhdGgsIHdvcmtpbmdEaXIpXG4gICAgKS5yZXNvbHZlcy50b0JlKCdzcmMvd29ya2Zsb3dzL2Zvby50cycpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyB1bmRlZmluZWQgZm9yIGZpbGVzIHRoYXQgYXJlIG5vdCB1bmRlciB3b3JrZmxvd3MgcGF0aHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBqb2luKHdvcmtpbmdEaXIsICdsaWInLCAnZm9vLnRzJyk7XG4gICAgd3JpdGVGaWxlKGZpbGVQYXRoKTtcblxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHJlc29sdmVXb3JrZmxvd0FsaWFzUmVsYXRpdmVQYXRoKGZpbGVQYXRoLCB3b3JraW5nRGlyKVxuICAgICkucmVzb2x2ZXMudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyB1bmRlZmluZWQgd2hlbiBiYXNlbmFtZSBtYXRjaGVzIGJ1dCByZWFscGF0aCBkaWZmZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtmbG93RmlsZVBhdGggPSBqb2luKHdvcmtpbmdEaXIsICd3b3JrZmxvd3MnLCAnZm9vLnRzJyk7XG4gICAgY29uc3QgZXh0ZXJuYWxGaWxlUGF0aCA9IGpvaW4odGVzdFJvb3QsICdleHRlcm5hbCcsICd3b3JrZmxvd3MnLCAnZm9vLnRzJyk7XG4gICAgd3JpdGVGaWxlKHdvcmtmbG93RmlsZVBhdGgpO1xuICAgIHdyaXRlRmlsZShleHRlcm5hbEZpbGVQYXRoKTtcblxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHJlc29sdmVXb3JrZmxvd0FsaWFzUmVsYXRpdmVQYXRoKGV4dGVybmFsRmlsZVBhdGgsIHdvcmtpbmdEaXIpXG4gICAgKS5yZXNvbHZlcy50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KCdtYXBzIHN5bWxpbmtlZCBhcHAgZmlsZXMgdG8gYXBwLyogYWxpYXNlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBleHRlcm5hbEFwcERpciA9IGpvaW4odGVzdFJvb3QsICdleHRlcm5hbCcsICdhcHAnKTtcbiAgICBjb25zdCBleHRlcm5hbEZpbGVQYXRoID0gam9pbihcbiAgICAgIGV4dGVybmFsQXBwRGlyLFxuICAgICAgJy53ZWxsLWtub3duJyxcbiAgICAgICdhZ2VudCcsXG4gICAgICAndjEnLFxuICAgICAgJ3N0ZXBzLnRzJ1xuICAgICk7XG4gICAgd3JpdGVGaWxlKGV4dGVybmFsRmlsZVBhdGgpO1xuXG4gICAgc3ltbGlua1N5bmMoXG4gICAgICBleHRlcm5hbEFwcERpcixcbiAgICAgIGpvaW4od29ya2luZ0RpciwgJ2FwcCcpLFxuICAgICAgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/ICdqdW5jdGlvbicgOiAnZGlyJ1xuICAgICk7XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICByZXNvbHZlV29ya2Zsb3dBbGlhc1JlbGF0aXZlUGF0aChleHRlcm5hbEZpbGVQYXRoLCB3b3JraW5nRGlyKVxuICAgICkucmVzb2x2ZXMudG9CZSgnYXBwLy53ZWxsLWtub3duL2FnZW50L3YxL3N0ZXBzLnRzJyk7XG4gIH0pO1xufSk7XG4iXX0=
|