@workflow/builders 5.0.0-beta.4 → 5.0.0-beta.40
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 +132 -13
- package/dist/base-builder.d.ts.map +1 -1
- package/dist/base-builder.js +785 -92
- 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 +66 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +106 -19
- package/dist/constants.test.d.ts +2 -0
- package/dist/constants.test.d.ts.map +1 -0
- package/dist/constants.test.js +90 -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 +29 -0
- package/dist/fast-discovery.d.ts.map +1 -0
- package/dist/fast-discovery.js +771 -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 +453 -0
- package/dist/get-input-files.test.js +34 -2
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -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-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-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 +17 -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 +61 -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 +37 -60
- package/dist/workflow-alias.js +1 -1
- package/dist/workflow-alias.test.js +2 -2
- 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/package.json +8 -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/build-queue.js
CHANGED
|
@@ -23,4 +23,4 @@ export function createBuildQueue() {
|
|
|
23
23
|
return queue;
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFOUIsT0FBTyxDQUFDLElBQXlCLEVBQWlCLEVBQUU7UUFDbEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGJ1aWxkIHF1ZXVlIHRoYXQgc2VyaWFsaXplcyBhc3luYyB0YXNrcyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy5cbiAqXG4gKiBXaGVuIHJhcGlkIGZpbGUgY2hhbmdlcyB0cmlnZ2VyIG11bHRpcGxlIGJ1aWxkcywgdGhpcyBlbnN1cmVzIHRoZXkgcnVuXG4gKiBzZXF1ZW50aWFsbHkgcmF0aGVyIHRoYW4gY29uY3VycmVudGx5LCBhdm9pZGluZyBpc3N1ZXMgbGlrZTpcbiAqIC0gUGFydGlhbCBmaWxlIHJlYWRzIGR1cmluZyB3cml0ZXNcbiAqIC0gQ29ycnVwdGVkIG1lcmdlIG9wZXJhdGlvbnNcbiAqIC0gRHVwbGljYXRlL2NvbmZsaWN0aW5nIGJ1aWxkc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnF1ZXVlID0gY3JlYXRlQnVpbGRRdWV1ZSgpO1xuICpcbiAqIC8vIFRoZXNlIHdpbGwgcnVuIHNlcXVlbnRpYWxseSwgbm90IGNvbmN1cnJlbnRseVxuICogZW5xdWV1ZSgoKSA9PiBidWlsZGVyLmJ1aWxkKCkpO1xuICogZW5xdWV1ZSgoKSA9PiBidWlsZGVyLmJ1aWxkKCkpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQnVpbGRRdWV1ZSgpIHtcbiAgbGV0IHF1ZXVlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgcmV0dXJuICh0YXNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcXVldWUgPSBxdWV1ZS50aGVuKHRhc2spLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcXVldWU7XG4gIH07XG59XG4iXX0=
|
package/dist/config-helpers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WorkflowConfig } from './types.js';
|
|
1
|
+
import type { SourcemapMode, WorkflowConfig } from './types.js';
|
|
2
2
|
export interface DecoratorOptions {
|
|
3
3
|
decorators: boolean;
|
|
4
4
|
legacyDecorator: boolean;
|
|
@@ -40,5 +40,8 @@ export declare function createBaseBuilderConfig(options: {
|
|
|
40
40
|
watch?: boolean;
|
|
41
41
|
externalPackages?: string[];
|
|
42
42
|
runtime?: string;
|
|
43
|
+
sourcemap?: SourcemapMode;
|
|
43
44
|
}): Omit<WorkflowConfig, 'buildTarget'>;
|
|
45
|
+
export declare function resolveConfiguredProjectRoot(workingDir: string, configuredRoot: string): string;
|
|
46
|
+
export declare function resolveProjectRoot(workingDir: string): string;
|
|
44
47
|
//# sourceMappingURL=config-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-helpers.d.ts","sourceRoot":"","sources":["../src/config-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-helpers.d.ts","sourceRoot":"","sources":["../src/config-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAgC3B;AAED;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED;;;GAGG;AACH,wBAAsB,6CAA6C,CACjE,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,8BAA8B,CAAC,CAMzC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAatC;AA6CD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,MAAM,CAIR;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmB7D"}
|
package/dist/config-helpers.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { statSync } from 'node:fs';
|
|
1
2
|
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
2
4
|
import { findUp } from 'find-up';
|
|
3
5
|
import JSON5 from 'json5';
|
|
4
6
|
/**
|
|
@@ -72,6 +74,66 @@ export function createBaseBuilderConfig(options) {
|
|
|
72
74
|
webhookBundlePath: '', // Not used by base builder methods
|
|
73
75
|
externalPackages: options.externalPackages,
|
|
74
76
|
runtime: options.runtime,
|
|
77
|
+
sourcemap: options.sourcemap,
|
|
75
78
|
};
|
|
76
79
|
}
|
|
77
|
-
|
|
80
|
+
const WORKSPACE_ROOT_FILES = ['pnpm-workspace.yaml'];
|
|
81
|
+
const PROJECT_ROOT_FILES = [
|
|
82
|
+
'pnpm-lock.yaml',
|
|
83
|
+
'package-lock.json',
|
|
84
|
+
'yarn.lock',
|
|
85
|
+
'bun.lock',
|
|
86
|
+
'bun.lockb',
|
|
87
|
+
];
|
|
88
|
+
function fileExists(path) {
|
|
89
|
+
try {
|
|
90
|
+
return statSync(path).isFile();
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function findRootFile(names, workingDir) {
|
|
97
|
+
let current = resolve(workingDir);
|
|
98
|
+
while (true) {
|
|
99
|
+
for (const name of names) {
|
|
100
|
+
const file = join(current, name);
|
|
101
|
+
if (fileExists(file)) {
|
|
102
|
+
return file;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const parent = dirname(current);
|
|
106
|
+
if (parent === current) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
current = parent;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function findProjectRootFile(workingDir) {
|
|
113
|
+
return (findRootFile(WORKSPACE_ROOT_FILES, workingDir) ??
|
|
114
|
+
findRootFile(PROJECT_ROOT_FILES, workingDir));
|
|
115
|
+
}
|
|
116
|
+
export function resolveConfiguredProjectRoot(workingDir, configuredRoot) {
|
|
117
|
+
return isAbsolute(configuredRoot)
|
|
118
|
+
? configuredRoot
|
|
119
|
+
: resolve(workingDir, configuredRoot);
|
|
120
|
+
}
|
|
121
|
+
export function resolveProjectRoot(workingDir) {
|
|
122
|
+
let rootFile = findProjectRootFile(workingDir);
|
|
123
|
+
if (!rootFile) {
|
|
124
|
+
return resolve(workingDir);
|
|
125
|
+
}
|
|
126
|
+
while (true) {
|
|
127
|
+
const currentDir = dirname(rootFile);
|
|
128
|
+
const parentDir = dirname(currentDir);
|
|
129
|
+
if (parentDir === currentDir) {
|
|
130
|
+
return currentDir;
|
|
131
|
+
}
|
|
132
|
+
const parentRootFile = findProjectRootFile(parentDir);
|
|
133
|
+
if (!parentRootFile) {
|
|
134
|
+
return currentDir;
|
|
135
|
+
}
|
|
136
|
+
rootFile = parentRootFile;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQWMxQjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLCtCQUErQixDQUNuRCxZQUFnQztJQUVoQyxNQUFNLGNBQWMsR0FBcUI7UUFDdkMsVUFBVSxFQUFFLEtBQUs7UUFDakIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsaUJBQWlCLEVBQUUsS0FBSztLQUN6QixDQUFDO0lBRUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQ1osS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUV2RCxxRkFBcUY7UUFDckYsTUFBTSxzQkFBc0IsR0FDMUIsZUFBZSxDQUFDLHNCQUFzQixLQUFLLElBQUksQ0FBQztRQUNsRCxNQUFNLHFCQUFxQixHQUN6QixlQUFlLENBQUMscUJBQXFCLEtBQUssSUFBSSxDQUFDO1FBRWpELE9BQU87WUFDTCxVQUFVLEVBQUUsc0JB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QUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsVUFBa0IsRUFDbEIsY0FBc0I7SUFFdEIsT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxjQUFjO1FBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsVUFBa0I7SUFDbkQsSUFBSSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDWixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELFFBQVEsR0FBRyxjQUFjLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGF0U3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGRpcm5hbWUsIGlzQWJzb2x1dGUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnZmluZC11cCc7XG5pbXBvcnQgSlNPTjUgZnJvbSAnanNvbjUnO1xuaW1wb3J0IHR5cGUgeyBTb3VyY2VtYXBNb2RlLCBXb3JrZmxvd0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvck9wdGlvbnMge1xuICBkZWNvcmF0b3JzOiBib29sZWFuO1xuICBsZWdhY3lEZWNvcmF0b3I6IGJvb2xlYW47XG4gIGRlY29yYXRvck1ldGFkYXRhOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvck9wdGlvbnNXaXRoQ29uZmlnUGF0aCB7XG4gIG9wdGlvbnM6IERlY29yYXRvck9wdGlvbnM7XG4gIGNvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZWFkcyB0c2NvbmZpZy5qc29uIGFuZCBleHRyYWN0cyBkZWNvcmF0b3ItcmVsYXRlZCBjb21waWxlciBvcHRpb25zLlxuICogUmV0dXJucyBkZWNvcmF0b3Igb3B0aW9ucyBiYXNlZCBvbiBleHBlcmltZW50YWxEZWNvcmF0b3JzIGFuZCBlbWl0RGVjb3JhdG9yTWV0YWRhdGEgc2V0dGluZ3MuXG4gKlxuICogQHBhcmFtIHRzY29uZmlnUGF0aCAtIFBhdGggdG8gdHNjb25maWcuanNvbiBvciBqc2NvbmZpZy5qc29uXG4gKiBAcmV0dXJucyBEZWNvcmF0b3JPcHRpb25zIHdpdGggc2V0dGluZ3MgYmFzZWQgb24gdHNjb25maWcgY29tcGlsZXJPcHRpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWNvcmF0b3JPcHRpb25zRnJvbVRzQ29uZmlnKFxuICB0c2NvbmZpZ1BhdGg6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxEZWNvcmF0b3JPcHRpb25zPiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBEZWNvcmF0b3JPcHRpb25zID0ge1xuICAgIGRlY29yYXRvcnM6IGZhbHNlLFxuICAgIGxlZ2FjeURlY29yYXRvcjogZmFsc2UsXG4gICAgZGVjb3JhdG9yTWV0YWRhdGE6IGZhbHNlLFxuICB9O1xuXG4gIGlmICghdHNjb25maWdQYXRoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUodHNjb25maWdQYXRoLCAndXRmLTgnKTtcbiAgICBjb25zdCB0c2NvbmZpZzogeyBjb21waWxlck9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9ID1cbiAgICAgIEpTT041LnBhcnNlKGNvbnRlbnQpO1xuICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHRzY29uZmlnLmNvbXBpbGVyT3B0aW9ucyB8fCB7fTtcblxuICAgIC8vIE1hdGNoIE5leHQuanMgYmVoYXZpb3I6IGVuYWJsZSBkZWNvcmF0b3JzIG9ubHkgd2hlbiBleHBlcmltZW50YWxEZWNvcmF0b3JzIGlzIHRydWVcbiAgICBjb25zdCBleHBlcmltZW50YWxEZWNvcmF0b3JzID1cbiAgICAgIGNvbXBpbGVyT3B0aW9ucy5leHBlcmltZW50YWxEZWNvcmF0b3JzID09PSB0cnVlO1xuICAgIGNvbnN0IGVtaXREZWNvcmF0b3JNZXRhZGF0YSA9XG4gICAgICBjb21waWxlck9wdGlvbnMuZW1pdERlY29yYXRvck1ldGFkYXRhID09PSB0cnVlO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlY29yYXRvcnM6IGV4cGVyaW1lbnRhbERlY29yYXRvcnMsXG4gICAgICBsZWdhY3lEZWNvcmF0b3I6IGV4cGVyaW1lbnRhbERlY29yYXRvcnMsXG4gICAgICBkZWNvcmF0b3JNZXRhZGF0YTogZXhwZXJpbWVudGFsRGVjb3JhdG9ycyAmJiBlbWl0RGVjb3JhdG9yTWV0YWRhdGEsXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gSWYgd2UgY2FuJ3QgcmVhZCBvciBwYXJzZSB0aGUgdHNjb25maWcsIHJldHVybiBkZWZhdWx0c1xuICAgIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRzY29uZmlnLmpzb24gaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSAob3IgYW5jZXN0b3JzKSBhbmQgZXh0cmFjdHMgZGVjb3JhdG9yIG9wdGlvbnMuXG4gKiBDb21iaW5lcyB0c2NvbmZpZyBkaXNjb3Zlcnkgd2l0aCBkZWNvcmF0b3Igb3B0aW9uIGV4dHJhY3Rpb24gZm9yIGNvbnZlbmllbmNlLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBEaXJlY3RvcnkgdG8gc3RhcnQgc2VhcmNoaW5nIGZvciB0c2NvbmZpZy5qc29uXG4gKiBAcmV0dXJucyBEZWNvcmF0b3JPcHRpb25zIHdpdGggc2V0dGluZ3MgYmFzZWQgb24gdHNjb25maWcgY29tcGlsZXJPcHRpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5KFxuICBjd2Q6IHN0cmluZ1xuKTogUHJvbWlzZTxEZWNvcmF0b3JPcHRpb25zPiB7XG4gIGNvbnN0IHsgb3B0aW9ucyB9ID0gYXdhaXQgZ2V0RGVjb3JhdG9yT3B0aW9uc0ZvckRpcmVjdG9yeVdpdGhDb25maWdQYXRoKGN3ZCk7XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIEZpbmRzIHRzY29uZmlnLmpzb24vanNjb25maWcuanNvbiBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IHRyZWUgYW5kIHJldHVybnNcbiAqIGJvdGggZGVjb3JhdG9yIG9wdGlvbnMgYW5kIHRoZSBjb25maWcgcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGVtLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVjb3JhdG9yT3B0aW9uc0ZvckRpcmVjdG9yeVdpdGhDb25maWdQYXRoKFxuICBjd2Q6IHN0cmluZ1xuKTogUHJvbWlzZTxEZWNvcmF0b3JPcHRpb25zV2l0aENvbmZpZ1BhdGg+IHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IGF3YWl0IGZpbmRVcChbJ3RzY29uZmlnLmpzb24nLCAnanNjb25maWcuanNvbiddLCB7XG4gICAgY3dkLFxuICB9KTtcbiAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGdldERlY29yYXRvck9wdGlvbnNGcm9tVHNDb25maWcoY29uZmlnUGF0aCk7XG4gIHJldHVybiB7IG9wdGlvbnMsIGNvbmZpZ1BhdGggfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcGFydGlhbCBjb25maWd1cmF0aW9uIGZvciBidWlsZGVycyB0aGF0IGRvbid0IHVzZSBidW5kbGUgcGF0aHMgZGlyZWN0bHkuXG4gKiBVc2VkIGJ5IGZyYW1ld29yayBpbnRlZ3JhdGlvbnMgbGlrZSBOaXRybyB3aGVyZSB0aGUgYnVpbGRlciBjb21wdXRlcyBwYXRocyBpbnRlcm5hbGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmFzZUJ1aWxkZXJDb25maWcob3B0aW9uczoge1xuICB3b3JraW5nRGlyOiBzdHJpbmc7XG4gIHByb2plY3RSb290Pzogc3RyaW5nO1xuICBkaXJzPzogc3RyaW5nW107XG4gIHdhdGNoPzogYm9vbGVhbjtcbiAgZXh0ZXJuYWxQYWNrYWdlcz86IHN0cmluZ1tdO1xuICBydW50aW1lPzogc3RyaW5nO1xuICBzb3VyY2VtYXA/OiBTb3VyY2VtYXBNb2RlO1xufSk6IE9taXQ8V29ya2Zsb3dDb25maWcsICdidWlsZFRhcmdldCc+IHtcbiAgcmV0dXJuIHtcbiAgICBkaXJzOiBvcHRpb25zLmRpcnMgPz8gWyd3b3JrZmxvd3MnXSxcbiAgICBwcm9qZWN0Um9vdDogb3B0aW9ucy5wcm9qZWN0Um9vdCxcbiAgICB3b3JraW5nRGlyOiBvcHRpb25zLndvcmtpbmdEaXIsXG4gICAgd2F0Y2g6IG9wdGlvbnMud2F0Y2gsXG4gICAgc3RlcHNCdW5kbGVQYXRoOiAnJywgLy8gTm90IHVzZWQgYnkgYmFzZSBidWlsZGVyIG1ldGhvZHNcbiAgICB3b3JrZmxvd3NCdW5kbGVQYXRoOiAnJywgLy8gTm90IHVzZWQgYnkgYmFzZSBidWlsZGVyIG1ldGhvZHNcbiAgICB3ZWJob29rQnVuZGxlUGF0aDogJycsIC8vIE5vdCB1c2VkIGJ5IGJhc2UgYnVpbGRlciBtZXRob2RzXG4gICAgZXh0ZXJuYWxQYWNrYWdlczogb3B0aW9ucy5leHRlcm5hbFBhY2thZ2VzLFxuICAgIHJ1bnRpbWU6IG9wdGlvbnMucnVudGltZSxcbiAgICBzb3VyY2VtYXA6IG9wdGlvbnMuc291cmNlbWFwLFxuICB9O1xufVxuXG5jb25zdCBXT1JLU1BBQ0VfUk9PVF9GSUxFUyA9IFsncG5wbS13b3Jrc3BhY2UueWFtbCddO1xuY29uc3QgUFJPSkVDVF9ST09UX0ZJTEVTID0gW1xuICAncG5wbS1sb2NrLnlhbWwnLFxuICAncGFja2FnZS1sb2NrLmpzb24nLFxuICAneWFybi5sb2NrJyxcbiAgJ2J1bi5sb2NrJyxcbiAgJ2J1bi5sb2NrYicsXG5dO1xuXG5mdW5jdGlvbiBmaWxlRXhpc3RzKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBzdGF0U3luYyhwYXRoKS5pc0ZpbGUoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRSb290RmlsZShuYW1lczogc3RyaW5nW10sIHdvcmtpbmdEaXI6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBjdXJyZW50ID0gcmVzb2x2ZSh3b3JraW5nRGlyKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oY3VycmVudCwgbmFtZSk7XG4gICAgICBpZiAoZmlsZUV4aXN0cyhmaWxlKSkge1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGN1cnJlbnQpO1xuICAgIGlmIChwYXJlbnQgPT09IGN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZFByb2plY3RSb290RmlsZSh3b3JraW5nRGlyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKFxuICAgIGZpbmRSb290RmlsZShXT1JLU1BBQ0VfUk9PVF9GSUxFUywgd29ya2luZ0RpcikgPz9cbiAgICBmaW5kUm9vdEZpbGUoUFJPSkVDVF9ST09UX0ZJTEVTLCB3b3JraW5nRGlyKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbmZpZ3VyZWRQcm9qZWN0Um9vdChcbiAgd29ya2luZ0Rpcjogc3RyaW5nLFxuICBjb25maWd1cmVkUm9vdDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICByZXR1cm4gaXNBYnNvbHV0ZShjb25maWd1cmVkUm9vdClcbiAgICA/IGNvbmZpZ3VyZWRSb290XG4gICAgOiByZXNvbHZlKHdvcmtpbmdEaXIsIGNvbmZpZ3VyZWRSb290KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQcm9qZWN0Um9vdCh3b3JraW5nRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcm9vdEZpbGUgPSBmaW5kUHJvamVjdFJvb3RGaWxlKHdvcmtpbmdEaXIpO1xuICBpZiAoIXJvb3RGaWxlKSB7XG4gICAgcmV0dXJuIHJlc29sdmUod29ya2luZ0Rpcik7XG4gIH1cblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGN1cnJlbnREaXIgPSBkaXJuYW1lKHJvb3RGaWxlKTtcbiAgICBjb25zdCBwYXJlbnREaXIgPSBkaXJuYW1lKGN1cnJlbnREaXIpO1xuICAgIGlmIChwYXJlbnREaXIgPT09IGN1cnJlbnREaXIpIHtcbiAgICAgIHJldHVybiBjdXJyZW50RGlyO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudFJvb3RGaWxlID0gZmluZFByb2plY3RSb290RmlsZShwYXJlbnREaXIpO1xuICAgIGlmICghcGFyZW50Um9vdEZpbGUpIHtcbiAgICAgIHJldHVybiBjdXJyZW50RGlyO1xuICAgIH1cbiAgICByb290RmlsZSA9IHBhcmVudFJvb3RGaWxlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-helpers.test.d.ts","sourceRoot":"","sources":["../src/config-helpers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { describe, expect, it, onTestFinished } from 'vitest';
|
|
5
|
+
import { resolveProjectRoot } from './config-helpers.js';
|
|
6
|
+
describe('resolveProjectRoot', () => {
|
|
7
|
+
it('prefers the workspace root over app lockfiles', () => {
|
|
8
|
+
const repoRoot = mkdtempSync(join(tmpdir(), 'workflow-project-root-'));
|
|
9
|
+
onTestFinished(() => rmSync(repoRoot, { recursive: true, force: true }));
|
|
10
|
+
const appRoot = join(repoRoot, 'apps/web');
|
|
11
|
+
mkdirSync(appRoot, { recursive: true });
|
|
12
|
+
writeFileSync(join(repoRoot, 'pnpm-workspace.yaml'), 'packages: []\n');
|
|
13
|
+
writeFileSync(join(appRoot, 'package-lock.json'), '{}\n');
|
|
14
|
+
expect(resolveProjectRoot(appRoot)).toBe(repoRoot);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWctaGVscGVycy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLHFCQUFxQixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXJTeW5jLCBta2R0ZW1wU3luYywgcm1TeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQsIG9uVGVzdEZpbmlzaGVkIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IHJlc29sdmVQcm9qZWN0Um9vdCB9IGZyb20gJy4vY29uZmlnLWhlbHBlcnMuanMnO1xuXG5kZXNjcmliZSgncmVzb2x2ZVByb2plY3RSb290JywgKCkgPT4ge1xuICBpdCgncHJlZmVycyB0aGUgd29ya3NwYWNlIHJvb3Qgb3ZlciBhcHAgbG9ja2ZpbGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlcG9Sb290ID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgJ3dvcmtmbG93LXByb2plY3Qtcm9vdC0nKSk7XG4gICAgb25UZXN0RmluaXNoZWQoKCkgPT4gcm1TeW5jKHJlcG9Sb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSkpO1xuXG4gICAgY29uc3QgYXBwUm9vdCA9IGpvaW4ocmVwb1Jvb3QsICdhcHBzL3dlYicpO1xuICAgIG1rZGlyU3luYyhhcHBSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4ocmVwb1Jvb3QsICdwbnBtLXdvcmtzcGFjZS55YW1sJyksICdwYWNrYWdlczogW11cXG4nKTtcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYXBwUm9vdCwgJ3BhY2thZ2UtbG9jay5qc29uJyksICd7fVxcbicpO1xuXG4gICAgZXhwZWN0KHJlc29sdmVQcm9qZWN0Um9vdChhcHBSb290KSkudG9CZShyZXBvUm9vdCk7XG4gIH0pO1xufSk7XG4iXX0=
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Creates a queue trigger configuration for the workflow handler.
|
|
3
|
+
* Handles both workflow orchestration and step execution on the same route.
|
|
4
|
+
* Background steps are queued back to the workflow topic with a stepId.
|
|
5
|
+
*
|
|
6
|
+
* When `namespace` is provided, the trigger topic is scoped to avoid
|
|
7
|
+
* collisions with other frameworks or direct Workflow SDK usage in the
|
|
8
|
+
* same deployment.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // default: topic = '__wkf_workflow_*'
|
|
12
|
+
* createWorkflowQueueTrigger()
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // namespaced: topic = '__custom_wkf_workflow_*'
|
|
16
|
+
* createWorkflowQueueTrigger({ namespace: 'custom' })
|
|
4
17
|
*/
|
|
5
|
-
export declare
|
|
18
|
+
export declare function createWorkflowQueueTrigger(options?: {
|
|
19
|
+
namespace?: string;
|
|
20
|
+
}): {
|
|
6
21
|
type: "queue/v2beta";
|
|
7
22
|
topic: string;
|
|
8
23
|
consumer: string;
|
|
@@ -10,8 +25,19 @@ export declare const STEP_QUEUE_TRIGGER: {
|
|
|
10
25
|
initialDelaySeconds: number;
|
|
11
26
|
};
|
|
12
27
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
28
|
+
* Creates the optional second argument for generated `workflowEntrypoint()`
|
|
29
|
+
* calls. The namespace is resolved while building so generated route files do
|
|
30
|
+
* not need `WORKFLOW_QUEUE_NAMESPACE` at runtime.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createWorkflowEntrypointOptionsCode(options?: {
|
|
33
|
+
namespace?: string;
|
|
34
|
+
basePath?: string;
|
|
35
|
+
/** Raw code identifier/expression emitted into generated route files, not data. */
|
|
36
|
+
routeModuleBodyStartedAt?: string;
|
|
37
|
+
}): string;
|
|
38
|
+
export declare function createWorkflowRouteHandlersCode(workflowEntrypointCall: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Default queue trigger (no namespace). Backward compatible.
|
|
15
41
|
*/
|
|
16
42
|
export declare const WORKFLOW_QUEUE_TRIGGER: {
|
|
17
43
|
type: "queue/v2beta";
|
|
@@ -20,4 +46,39 @@ export declare const WORKFLOW_QUEUE_TRIGGER: {
|
|
|
20
46
|
retryAfterSeconds: number;
|
|
21
47
|
initialDelaySeconds: number;
|
|
22
48
|
};
|
|
49
|
+
/**
|
|
50
|
+
* Returns the queue trigger configuration for workflow (flow) routes.
|
|
51
|
+
*
|
|
52
|
+
* Builds on `createWorkflowQueueTrigger()` — the namespace comes from
|
|
53
|
+
* `options` or `WORKFLOW_QUEUE_NAMESPACE`, resolved at call time. When
|
|
54
|
+
* `WORKFLOW_SEQUENTIAL_REPLAYS` is enabled, sets `maxConcurrency: 1` so the
|
|
55
|
+
* queue processes at most one flow invocation per concrete topic at a time.
|
|
56
|
+
* Paired with the per-run physical topic naming in `@workflow/world-vercel`
|
|
57
|
+
* (which appends the run id to the flow topic), this enforces at most one
|
|
58
|
+
* orchestrator invocation per run. Queued step invocations share this flow
|
|
59
|
+
* trigger rather than using a separate route.
|
|
60
|
+
*
|
|
61
|
+
* Integrations that write their own flow trigger config instead of calling
|
|
62
|
+
* this must mirror the conditional `maxConcurrency: 1` themselves — the
|
|
63
|
+
* runtime half (per-run topics) activates from the env var alone, and without
|
|
64
|
+
* the trigger half those topics are not serialized.
|
|
65
|
+
*
|
|
66
|
+
* Must be read at build time, where the env var gates what is written into
|
|
67
|
+
* the route's `experimentalTriggers` config.
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* Whether sequential replays are enabled (`WORKFLOW_SEQUENTIAL_REPLAYS=1`). Read
|
|
71
|
+
* at call time.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isSequentialReplaysEnabled(): boolean;
|
|
74
|
+
export declare function getWorkflowQueueTrigger(options?: {
|
|
75
|
+
namespace?: string;
|
|
76
|
+
}): {
|
|
77
|
+
maxConcurrency?: number | undefined;
|
|
78
|
+
type: "queue/v2beta";
|
|
79
|
+
topic: string;
|
|
80
|
+
consumer: string;
|
|
81
|
+
retryAfterSeconds: number;
|
|
82
|
+
initialDelaySeconds: number;
|
|
83
|
+
};
|
|
23
84
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;EAU1E;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,CAAC,EAAE;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,UAyBA;AAED,wBAAgB,+BAA+B,CAC7C,sBAAsB,EAAE,MAAM,UAM/B;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;CAA+B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;EAOvE"}
|
package/dist/constants.js
CHANGED
|
@@ -1,23 +1,110 @@
|
|
|
1
|
+
const QUEUE_NAMESPACE_PATTERN = /^[a-z][a-z0-9]*$/;
|
|
2
|
+
function resolveQueueNamespace(namespace) {
|
|
3
|
+
return namespace ?? process.env.WORKFLOW_QUEUE_NAMESPACE ?? undefined;
|
|
4
|
+
}
|
|
5
|
+
function getQueueTopicPrefix(namespace) {
|
|
6
|
+
if (namespace !== undefined) {
|
|
7
|
+
if (!QUEUE_NAMESPACE_PATTERN.test(namespace)) {
|
|
8
|
+
throw new Error(`Invalid queue namespace "${namespace}": must be lowercase alphanumeric, starting with a letter`);
|
|
9
|
+
}
|
|
10
|
+
return `__${namespace}_wkf_workflow_`;
|
|
11
|
+
}
|
|
12
|
+
return '__wkf_workflow_';
|
|
13
|
+
}
|
|
1
14
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
15
|
+
* Creates a queue trigger configuration for the workflow handler.
|
|
16
|
+
* Handles both workflow orchestration and step execution on the same route.
|
|
17
|
+
* Background steps are queued back to the workflow topic with a stepId.
|
|
18
|
+
*
|
|
19
|
+
* When `namespace` is provided, the trigger topic is scoped to avoid
|
|
20
|
+
* collisions with other frameworks or direct Workflow SDK usage in the
|
|
21
|
+
* same deployment.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // default: topic = '__wkf_workflow_*'
|
|
25
|
+
* createWorkflowQueueTrigger()
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // namespaced: topic = '__custom_wkf_workflow_*'
|
|
29
|
+
* createWorkflowQueueTrigger({ namespace: 'custom' })
|
|
4
30
|
*/
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
31
|
+
export function createWorkflowQueueTrigger(options) {
|
|
32
|
+
const namespace = resolveQueueNamespace(options?.namespace);
|
|
33
|
+
return {
|
|
34
|
+
type: 'queue/v2beta',
|
|
35
|
+
topic: `${getQueueTopicPrefix(namespace)}*`,
|
|
36
|
+
consumer: 'default',
|
|
37
|
+
retryAfterSeconds: 5, // Delay between retries (default: 60)
|
|
38
|
+
initialDelaySeconds: 0, // Initial delay before first delivery (default: 0)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
12
41
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
42
|
+
* Creates the optional second argument for generated `workflowEntrypoint()`
|
|
43
|
+
* calls. The namespace is resolved while building so generated route files do
|
|
44
|
+
* not need `WORKFLOW_QUEUE_NAMESPACE` at runtime.
|
|
15
45
|
*/
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
23
|
-
|
|
46
|
+
export function createWorkflowEntrypointOptionsCode(options) {
|
|
47
|
+
const namespace = resolveQueueNamespace(options?.namespace);
|
|
48
|
+
const fields = [];
|
|
49
|
+
if (namespace) {
|
|
50
|
+
// Reuse prefix construction for namespace validation.
|
|
51
|
+
getQueueTopicPrefix(namespace);
|
|
52
|
+
fields.push(`namespace: ${JSON.stringify(namespace)}`);
|
|
53
|
+
}
|
|
54
|
+
if (options?.basePath !== undefined) {
|
|
55
|
+
fields.push(`basePath: ${JSON.stringify(options.basePath)}`);
|
|
56
|
+
}
|
|
57
|
+
if (options?.routeModuleBodyStartedAt) {
|
|
58
|
+
fields.push(`routeModuleBodyStartedAt: ${options.routeModuleBodyStartedAt}`);
|
|
59
|
+
}
|
|
60
|
+
if (fields.length === 0) {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
return `, { ${fields.join(', ')} }`;
|
|
64
|
+
}
|
|
65
|
+
export function createWorkflowRouteHandlersCode(workflowEntrypointCall) {
|
|
66
|
+
return `export const POST = ${workflowEntrypointCall};
|
|
67
|
+
export const GET = POST;
|
|
68
|
+
export const HEAD = POST;
|
|
69
|
+
export const OPTIONS = POST;`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Default queue trigger (no namespace). Backward compatible.
|
|
73
|
+
*/
|
|
74
|
+
export const WORKFLOW_QUEUE_TRIGGER = createWorkflowQueueTrigger();
|
|
75
|
+
/**
|
|
76
|
+
* Returns the queue trigger configuration for workflow (flow) routes.
|
|
77
|
+
*
|
|
78
|
+
* Builds on `createWorkflowQueueTrigger()` — the namespace comes from
|
|
79
|
+
* `options` or `WORKFLOW_QUEUE_NAMESPACE`, resolved at call time. When
|
|
80
|
+
* `WORKFLOW_SEQUENTIAL_REPLAYS` is enabled, sets `maxConcurrency: 1` so the
|
|
81
|
+
* queue processes at most one flow invocation per concrete topic at a time.
|
|
82
|
+
* Paired with the per-run physical topic naming in `@workflow/world-vercel`
|
|
83
|
+
* (which appends the run id to the flow topic), this enforces at most one
|
|
84
|
+
* orchestrator invocation per run. Queued step invocations share this flow
|
|
85
|
+
* trigger rather than using a separate route.
|
|
86
|
+
*
|
|
87
|
+
* Integrations that write their own flow trigger config instead of calling
|
|
88
|
+
* this must mirror the conditional `maxConcurrency: 1` themselves — the
|
|
89
|
+
* runtime half (per-run topics) activates from the env var alone, and without
|
|
90
|
+
* the trigger half those topics are not serialized.
|
|
91
|
+
*
|
|
92
|
+
* Must be read at build time, where the env var gates what is written into
|
|
93
|
+
* the route's `experimentalTriggers` config.
|
|
94
|
+
*/
|
|
95
|
+
/**
|
|
96
|
+
* Whether sequential replays are enabled (`WORKFLOW_SEQUENTIAL_REPLAYS=1`). Read
|
|
97
|
+
* at call time.
|
|
98
|
+
*/
|
|
99
|
+
export function isSequentialReplaysEnabled() {
|
|
100
|
+
return process.env.WORKFLOW_SEQUENTIAL_REPLAYS === '1';
|
|
101
|
+
}
|
|
102
|
+
export function getWorkflowQueueTrigger(options) {
|
|
103
|
+
return {
|
|
104
|
+
...createWorkflowQueueTrigger(options),
|
|
105
|
+
...(isSequentialReplaysEnabled() && {
|
|
106
|
+
maxConcurrency: 1,
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLHVCQUF1QixHQUFHLGtCQUFrQixDQUFDO0FBRW5ELFNBQVMscUJBQXFCLENBQUMsU0FBa0I7SUFDL0MsT0FBTyxTQUFTLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsSUFBSSxTQUFTLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsU0FBa0I7SUFDN0MsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEJBQTRCLFNBQVMsMkRBQTJELENBQ2pHLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLFNBQVMsZ0JBQWdCLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUFDLE9BQWdDO0lBQ3pFLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUU1RCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGNBQXVCO1FBQzdCLEtBQUssRUFBRSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFHO1FBQzNDLFFBQVEsRUFBRSxTQUFTO1FBQ25CLGlCQUFpQixFQUFFLENBQUMsRUFBRSxzQ0FBc0M7UUFDNUQsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLG1EQUFtRDtLQUM1RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUNBQW1DLENBQUMsT0FLbkQ7SUFDQyxNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRTVCLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxzREFBc0Q7UUFDdEQsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLE9BQU8sRUFBRSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsSUFBSSxDQUNULDZCQUE2QixPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUM3QyxzQkFBOEI7SUFFOUIsT0FBTyx1QkFBdUIsc0JBQXNCOzs7NkJBR3pCLENBQUM7QUFDOUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLEVBQUUsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNIOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixLQUFLLEdBQUcsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWdDO0lBQ3RFLE9BQU87UUFDTCxHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQztRQUN0QyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsSUFBSTtZQUNsQyxjQUFjLEVBQUUsQ0FBQztTQUNsQixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBRVUVVRV9OQU1FU1BBQ0VfUEFUVEVSTiA9IC9eW2Etel1bYS16MC05XSokLztcblxuZnVuY3Rpb24gcmVzb2x2ZVF1ZXVlTmFtZXNwYWNlKG5hbWVzcGFjZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBuYW1lc3BhY2UgPz8gcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUVVFVUVfTkFNRVNQQUNFID8/IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0UXVldWVUb3BpY1ByZWZpeChuYW1lc3BhY2U/OiBzdHJpbmcpIHtcbiAgaWYgKG5hbWVzcGFjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFRVUVVRV9OQU1FU1BBQ0VfUEFUVEVSTi50ZXN0KG5hbWVzcGFjZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgcXVldWUgbmFtZXNwYWNlIFwiJHtuYW1lc3BhY2V9XCI6IG11c3QgYmUgbG93ZXJjYXNlIGFscGhhbnVtZXJpYywgc3RhcnRpbmcgd2l0aCBhIGxldHRlcmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBfXyR7bmFtZXNwYWNlfV93a2Zfd29ya2Zsb3dfYDtcbiAgfVxuXG4gIHJldHVybiAnX193a2Zfd29ya2Zsb3dfJztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcXVldWUgdHJpZ2dlciBjb25maWd1cmF0aW9uIGZvciB0aGUgd29ya2Zsb3cgaGFuZGxlci5cbiAqIEhhbmRsZXMgYm90aCB3b3JrZmxvdyBvcmNoZXN0cmF0aW9uIGFuZCBzdGVwIGV4ZWN1dGlvbiBvbiB0aGUgc2FtZSByb3V0ZS5cbiAqIEJhY2tncm91bmQgc3RlcHMgYXJlIHF1ZXVlZCBiYWNrIHRvIHRoZSB3b3JrZmxvdyB0b3BpYyB3aXRoIGEgc3RlcElkLlxuICpcbiAqIFdoZW4gYG5hbWVzcGFjZWAgaXMgcHJvdmlkZWQsIHRoZSB0cmlnZ2VyIHRvcGljIGlzIHNjb3BlZCB0byBhdm9pZFxuICogY29sbGlzaW9ucyB3aXRoIG90aGVyIGZyYW1ld29ya3Mgb3IgZGlyZWN0IFdvcmtmbG93IFNESyB1c2FnZSBpbiB0aGVcbiAqIHNhbWUgZGVwbG95bWVudC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gZGVmYXVsdDogdG9waWMgPSAnX193a2Zfd29ya2Zsb3dfKidcbiAqIGNyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyKClcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gbmFtZXNwYWNlZDogdG9waWMgPSAnX19jdXN0b21fd2tmX3dvcmtmbG93XyonXG4gKiBjcmVhdGVXb3JrZmxvd1F1ZXVlVHJpZ2dlcih7IG5hbWVzcGFjZTogJ2N1c3RvbScgfSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyKG9wdGlvbnM/OiB7IG5hbWVzcGFjZT86IHN0cmluZyB9KSB7XG4gIGNvbnN0IG5hbWVzcGFjZSA9IHJlc29sdmVRdWV1ZU5hbWVzcGFjZShvcHRpb25zPy5uYW1lc3BhY2UpO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3F1ZXVlL3YyYmV0YScgYXMgY29uc3QsXG4gICAgdG9waWM6IGAke2dldFF1ZXVlVG9waWNQcmVmaXgobmFtZXNwYWNlKX0qYCxcbiAgICBjb25zdW1lcjogJ2RlZmF1bHQnLFxuICAgIHJldHJ5QWZ0ZXJTZWNvbmRzOiA1LCAvLyBEZWxheSBiZXR3ZWVuIHJldHJpZXMgKGRlZmF1bHQ6IDYwKVxuICAgIGluaXRpYWxEZWxheVNlY29uZHM6IDAsIC8vIEluaXRpYWwgZGVsYXkgYmVmb3JlIGZpcnN0IGRlbGl2ZXJ5IChkZWZhdWx0OiAwKVxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBmb3IgZ2VuZXJhdGVkIGB3b3JrZmxvd0VudHJ5cG9pbnQoKWBcbiAqIGNhbGxzLiBUaGUgbmFtZXNwYWNlIGlzIHJlc29sdmVkIHdoaWxlIGJ1aWxkaW5nIHNvIGdlbmVyYXRlZCByb3V0ZSBmaWxlcyBkb1xuICogbm90IG5lZWQgYFdPUktGTE9XX1FVRVVFX05BTUVTUEFDRWAgYXQgcnVudGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdvcmtmbG93RW50cnlwb2ludE9wdGlvbnNDb2RlKG9wdGlvbnM/OiB7XG4gIG5hbWVzcGFjZT86IHN0cmluZztcbiAgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBSYXcgY29kZSBpZGVudGlmaWVyL2V4cHJlc3Npb24gZW1pdHRlZCBpbnRvIGdlbmVyYXRlZCByb3V0ZSBmaWxlcywgbm90IGRhdGEuICovXG4gIHJvdXRlTW9kdWxlQm9keVN0YXJ0ZWRBdD86IHN0cmluZztcbn0pIHtcbiAgY29uc3QgbmFtZXNwYWNlID0gcmVzb2x2ZVF1ZXVlTmFtZXNwYWNlKG9wdGlvbnM/Lm5hbWVzcGFjZSk7XG4gIGNvbnN0IGZpZWxkczogc3RyaW5nW10gPSBbXTtcblxuICBpZiAobmFtZXNwYWNlKSB7XG4gICAgLy8gUmV1c2UgcHJlZml4IGNvbnN0cnVjdGlvbiBmb3IgbmFtZXNwYWNlIHZhbGlkYXRpb24uXG4gICAgZ2V0UXVldWVUb3BpY1ByZWZpeChuYW1lc3BhY2UpO1xuICAgIGZpZWxkcy5wdXNoKGBuYW1lc3BhY2U6ICR7SlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKX1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zPy5iYXNlUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZmllbGRzLnB1c2goYGJhc2VQYXRoOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMuYmFzZVBhdGgpfWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnM/LnJvdXRlTW9kdWxlQm9keVN0YXJ0ZWRBdCkge1xuICAgIGZpZWxkcy5wdXNoKFxuICAgICAgYHJvdXRlTW9kdWxlQm9keVN0YXJ0ZWRBdDogJHtvcHRpb25zLnJvdXRlTW9kdWxlQm9keVN0YXJ0ZWRBdH1gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGAsIHsgJHtmaWVsZHMuam9pbignLCAnKX0gfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXb3JrZmxvd1JvdXRlSGFuZGxlcnNDb2RlKFxuICB3b3JrZmxvd0VudHJ5cG9pbnRDYWxsOiBzdHJpbmdcbikge1xuICByZXR1cm4gYGV4cG9ydCBjb25zdCBQT1NUID0gJHt3b3JrZmxvd0VudHJ5cG9pbnRDYWxsfTtcbmV4cG9ydCBjb25zdCBHRVQgPSBQT1NUO1xuZXhwb3J0IGNvbnN0IEhFQUQgPSBQT1NUO1xuZXhwb3J0IGNvbnN0IE9QVElPTlMgPSBQT1NUO2A7XG59XG5cbi8qKlxuICogRGVmYXVsdCBxdWV1ZSB0cmlnZ2VyIChubyBuYW1lc3BhY2UpLiBCYWNrd2FyZCBjb21wYXRpYmxlLlxuICovXG5leHBvcnQgY29uc3QgV09SS0ZMT1dfUVVFVUVfVFJJR0dFUiA9IGNyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyKCk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcXVldWUgdHJpZ2dlciBjb25maWd1cmF0aW9uIGZvciB3b3JrZmxvdyAoZmxvdykgcm91dGVzLlxuICpcbiAqIEJ1aWxkcyBvbiBgY3JlYXRlV29ya2Zsb3dRdWV1ZVRyaWdnZXIoKWAg4oCUIHRoZSBuYW1lc3BhY2UgY29tZXMgZnJvbVxuICogYG9wdGlvbnNgIG9yIGBXT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0VgLCByZXNvbHZlZCBhdCBjYWxsIHRpbWUuIFdoZW5cbiAqIGBXT1JLRkxPV19TRVFVRU5USUFMX1JFUExBWVNgIGlzIGVuYWJsZWQsIHNldHMgYG1heENvbmN1cnJlbmN5OiAxYCBzbyB0aGVcbiAqIHF1ZXVlIHByb2Nlc3NlcyBhdCBtb3N0IG9uZSBmbG93IGludm9jYXRpb24gcGVyIGNvbmNyZXRlIHRvcGljIGF0IGEgdGltZS5cbiAqIFBhaXJlZCB3aXRoIHRoZSBwZXItcnVuIHBoeXNpY2FsIHRvcGljIG5hbWluZyBpbiBgQHdvcmtmbG93L3dvcmxkLXZlcmNlbGBcbiAqICh3aGljaCBhcHBlbmRzIHRoZSBydW4gaWQgdG8gdGhlIGZsb3cgdG9waWMpLCB0aGlzIGVuZm9yY2VzIGF0IG1vc3Qgb25lXG4gKiBvcmNoZXN0cmF0b3IgaW52b2NhdGlvbiBwZXIgcnVuLiBRdWV1ZWQgc3RlcCBpbnZvY2F0aW9ucyBzaGFyZSB0aGlzIGZsb3dcbiAqIHRyaWdnZXIgcmF0aGVyIHRoYW4gdXNpbmcgYSBzZXBhcmF0ZSByb3V0ZS5cbiAqXG4gKiBJbnRlZ3JhdGlvbnMgdGhhdCB3cml0ZSB0aGVpciBvd24gZmxvdyB0cmlnZ2VyIGNvbmZpZyBpbnN0ZWFkIG9mIGNhbGxpbmdcbiAqIHRoaXMgbXVzdCBtaXJyb3IgdGhlIGNvbmRpdGlvbmFsIGBtYXhDb25jdXJyZW5jeTogMWAgdGhlbXNlbHZlcyDigJQgdGhlXG4gKiBydW50aW1lIGhhbGYgKHBlci1ydW4gdG9waWNzKSBhY3RpdmF0ZXMgZnJvbSB0aGUgZW52IHZhciBhbG9uZSwgYW5kIHdpdGhvdXRcbiAqIHRoZSB0cmlnZ2VyIGhhbGYgdGhvc2UgdG9waWNzIGFyZSBub3Qgc2VyaWFsaXplZC5cbiAqXG4gKiBNdXN0IGJlIHJlYWQgYXQgYnVpbGQgdGltZSwgd2hlcmUgdGhlIGVudiB2YXIgZ2F0ZXMgd2hhdCBpcyB3cml0dGVuIGludG9cbiAqIHRoZSByb3V0ZSdzIGBleHBlcmltZW50YWxUcmlnZ2Vyc2AgY29uZmlnLlxuICovXG4vKipcbiAqIFdoZXRoZXIgc2VxdWVudGlhbCByZXBsYXlzIGFyZSBlbmFibGVkIChgV09SS0ZMT1dfU0VRVUVOVElBTF9SRVBMQVlTPTFgKS4gUmVhZFxuICogYXQgY2FsbCB0aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZXF1ZW50aWFsUmVwbGF5c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5XT1JLRkxPV19TRVFVRU5USUFMX1JFUExBWVMgPT09ICcxJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtmbG93UXVldWVUcmlnZ2VyKG9wdGlvbnM/OiB7IG5hbWVzcGFjZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiB7XG4gICAgLi4uY3JlYXRlV29ya2Zsb3dRdWV1ZVRyaWdnZXIob3B0aW9ucyksXG4gICAgLi4uKGlzU2VxdWVudGlhbFJlcGxheXNFbmFibGVkKCkgJiYge1xuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgfSksXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../src/constants.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { createWorkflowEntrypointOptionsCode, createWorkflowQueueTrigger, getWorkflowQueueTrigger, } from './constants.js';
|
|
3
|
+
describe('getWorkflowQueueTrigger', () => {
|
|
4
|
+
let originalStrict;
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
originalStrict = process.env.WORKFLOW_SEQUENTIAL_REPLAYS;
|
|
7
|
+
});
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
if (originalStrict !== undefined) {
|
|
10
|
+
process.env.WORKFLOW_SEQUENTIAL_REPLAYS = originalStrict;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
delete process.env.WORKFLOW_SEQUENTIAL_REPLAYS;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
it('omits maxConcurrency by default', () => {
|
|
17
|
+
delete process.env.WORKFLOW_SEQUENTIAL_REPLAYS;
|
|
18
|
+
const trigger = getWorkflowQueueTrigger();
|
|
19
|
+
expect(trigger.topic).toBe('__wkf_workflow_*');
|
|
20
|
+
expect('maxConcurrency' in trigger).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
it('sets maxConcurrency: 1 when WORKFLOW_SEQUENTIAL_REPLAYS=1', () => {
|
|
23
|
+
process.env.WORKFLOW_SEQUENTIAL_REPLAYS = '1';
|
|
24
|
+
const trigger = getWorkflowQueueTrigger();
|
|
25
|
+
expect(trigger).toMatchObject({
|
|
26
|
+
topic: '__wkf_workflow_*',
|
|
27
|
+
maxConcurrency: 1,
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it('does not set maxConcurrency for non-"1" values', () => {
|
|
31
|
+
process.env.WORKFLOW_SEQUENTIAL_REPLAYS = 'true';
|
|
32
|
+
const trigger = getWorkflowQueueTrigger();
|
|
33
|
+
expect('maxConcurrency' in trigger).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
it('composes with an explicit namespace option', () => {
|
|
36
|
+
process.env.WORKFLOW_SEQUENTIAL_REPLAYS = '1';
|
|
37
|
+
expect(getWorkflowQueueTrigger({ namespace: 'custom' })).toMatchObject({
|
|
38
|
+
topic: '__custom_wkf_workflow_*',
|
|
39
|
+
maxConcurrency: 1,
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
it('resolves WORKFLOW_QUEUE_NAMESPACE at call time', () => {
|
|
43
|
+
delete process.env.WORKFLOW_SEQUENTIAL_REPLAYS;
|
|
44
|
+
process.env.WORKFLOW_QUEUE_NAMESPACE = 'callns';
|
|
45
|
+
try {
|
|
46
|
+
expect(getWorkflowQueueTrigger().topic).toBe('__callns_wkf_workflow_*');
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
delete process.env.WORKFLOW_QUEUE_NAMESPACE;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('createWorkflowQueueTrigger', () => {
|
|
54
|
+
afterEach(() => {
|
|
55
|
+
delete process.env.WORKFLOW_QUEUE_NAMESPACE;
|
|
56
|
+
});
|
|
57
|
+
it('uses the default workflow topic without a namespace', () => {
|
|
58
|
+
expect(createWorkflowQueueTrigger().topic).toBe('__wkf_workflow_*');
|
|
59
|
+
});
|
|
60
|
+
it('uses an explicit namespace when provided', () => {
|
|
61
|
+
expect(createWorkflowQueueTrigger({ namespace: 'custom' }).topic).toBe('__custom_wkf_workflow_*');
|
|
62
|
+
});
|
|
63
|
+
it('uses WORKFLOW_QUEUE_NAMESPACE when no explicit namespace is provided', () => {
|
|
64
|
+
process.env.WORKFLOW_QUEUE_NAMESPACE = 'custom';
|
|
65
|
+
expect(createWorkflowQueueTrigger().topic).toBe('__custom_wkf_workflow_*');
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe('createWorkflowEntrypointOptionsCode', () => {
|
|
69
|
+
afterEach(() => {
|
|
70
|
+
delete process.env.WORKFLOW_QUEUE_NAMESPACE;
|
|
71
|
+
});
|
|
72
|
+
it('omits runtime options without a namespace', () => {
|
|
73
|
+
expect(createWorkflowEntrypointOptionsCode()).toBe('');
|
|
74
|
+
});
|
|
75
|
+
it('inlines an explicit namespace', () => {
|
|
76
|
+
expect(createWorkflowEntrypointOptionsCode({ namespace: 'custom' })).toBe(', { namespace: "custom" }');
|
|
77
|
+
});
|
|
78
|
+
it('inlines WORKFLOW_QUEUE_NAMESPACE at build time', () => {
|
|
79
|
+
process.env.WORKFLOW_QUEUE_NAMESPACE = 'custom';
|
|
80
|
+
expect(createWorkflowEntrypointOptionsCode()).toBe(', { namespace: "custom" }');
|
|
81
|
+
});
|
|
82
|
+
it('inlines route module timing with namespace options', () => {
|
|
83
|
+
expect(createWorkflowEntrypointOptionsCode({
|
|
84
|
+
namespace: 'custom',
|
|
85
|
+
basePath: '/v2',
|
|
86
|
+
routeModuleBodyStartedAt: 'workflowRouteModuleBodyStartedAt',
|
|
87
|
+
})).toBe(', { namespace: "custom", basePath: "/v2", routeModuleBodyStartedAt: workflowRouteModuleBodyStartedAt }');
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uc3RhbnRzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFckUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQywwQkFBMEIsRUFDMUIsdUJBQXVCLEdBQ3hCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxJQUFJLGNBQWtDLENBQUM7SUFFdkMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsY0FBYyxDQUFDO1FBQzNELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7UUFDekMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFD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QUEyQyxFQUFFLEdBQUcsRUFBRTtRQUNuRCxNQUFNLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3ZFLDJCQUEyQixDQUM1QixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1FBQ3hELE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsUUFBUSxDQUFDO1FBRWhELE1BQU0sQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoRCwyQkFBMkIsQ0FDNUIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtRQUM1RCxNQUFNLENBQ0osbUNBQW1DLENBQUM7WUFDbEMsU0FBUyxFQUFFLFFBQVE7WUFDbkIsUUFBUSxFQUFFLEtBQUs7WUFDZix3QkFBd0IsRUFBRSxrQ0FBa0M7U0FDN0QsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUNKLHdHQUF3RyxDQUN6RyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVXb3JrZmxvd0VudHJ5cG9pbnRPcHRpb25zQ29kZSxcbiAgY3JlYXRlV29ya2Zsb3dRdWV1ZVRyaWdnZXIsXG4gIGdldFdvcmtmbG93UXVldWVUcmlnZ2VyLFxufSBmcm9tICcuL2NvbnN0YW50cy5qcyc7XG5cbmRlc2NyaWJlKCdnZXRXb3JrZmxvd1F1ZXVlVHJpZ2dlcicsICgpID0+IHtcbiAgbGV0IG9yaWdpbmFsU3RyaWN0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb3JpZ2luYWxTdHJpY3QgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19TRVFVRU5USUFMX1JFUExBWVM7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgaWYgKG9yaWdpbmFsU3RyaWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NFUVVFTlRJQUxfUkVQTEFZUyA9IG9yaWdpbmFsU3RyaWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU0VRVUVOVElBTF9SRVBMQVlTO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ29taXRzIG1heENvbmN1cnJlbmN5IGJ5IGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NFUVVFTlRJQUxfUkVQTEFZUztcbiAgICBjb25zdCB0cmlnZ2VyID0gZ2V0V29ya2Zsb3dRdWV1ZVRyaWdnZXIoKTtcbiAgICBleHBlY3QodHJpZ2dlci50b3BpYykudG9CZSgnX193a2Zfd29ya2Zsb3dfKicpO1xuICAgIGV4cGVjdCgnbWF4Q29uY3VycmVuY3knIGluIHRyaWdnZXIpLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnc2V0cyBtYXhDb25jdXJyZW5jeTogMSB3aGVuIFdPUktGTE9XX1NFUVVFTlRJQUxfUkVQTEFZUz0xJywgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NFUVVFTlRJQUxfUkVQTEFZUyA9ICcxJztcbiAgICBjb25zdCB0cmlnZ2VyID0gZ2V0V29ya2Zsb3dRdWV1ZVRyaWdnZXIoKTtcbiAgICBleHBlY3QodHJpZ2dlcikudG9NYXRjaE9iamVjdCh7XG4gICAgICB0b3BpYzogJ19fd2tmX3dvcmtmbG93XyonLFxuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCBzZXQgbWF4Q29uY3VycmVuY3kgZm9yIG5vbi1cIjFcIiB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU0VRVUVOVElBTF9SRVBMQVlTID0gJ3RydWUnO1xuICAgIGNvbnN0IHRyaWdnZXIgPSBnZXRXb3JrZmxvd1F1ZXVlVHJpZ2dlcigpO1xuICAgIGV4cGVjdCgnbWF4Q29uY3VycmVuY3knIGluIHRyaWdnZXIpLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnY29tcG9zZXMgd2l0aCBhbiBleHBsaWNpdCBuYW1lc3BhY2Ugb3B0aW9uJywgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NFUVVFTlRJQUxfUkVQTEFZUyA9ICcxJztcbiAgICBleHBlY3QoZ2V0V29ya2Zsb3dRdWV1ZVRyaWdnZXIoeyBuYW1lc3BhY2U6ICdjdXN0b20nIH0pKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHRvcGljOiAnX19jdXN0b21fd2tmX3dvcmtmbG93XyonLFxuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZXNvbHZlcyBXT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0UgYXQgY2FsbCB0aW1lJywgKCkgPT4ge1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5XT1JLRkxPV19TRVFVRU5USUFMX1JFUExBWVM7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUVVFVUVfTkFNRVNQQUNFID0gJ2NhbGxucyc7XG4gICAgdHJ5IHtcbiAgICAgIGV4cGVjdChnZXRXb3JrZmxvd1F1ZXVlVHJpZ2dlcigpLnRvcGljKS50b0JlKCdfX2NhbGxuc193a2Zfd29ya2Zsb3dfKicpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUVVFVUVfTkFNRVNQQUNFO1xuICAgIH1cbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2NyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5XT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0U7XG4gIH0pO1xuXG4gIGl0KCd1c2VzIHRoZSBkZWZhdWx0IHdvcmtmbG93IHRvcGljIHdpdGhvdXQgYSBuYW1lc3BhY2UnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyKCkudG9waWMpLnRvQmUoJ19fd2tmX3dvcmtmbG93XyonKTtcbiAgfSk7XG5cbiAgaXQoJ3VzZXMgYW4gZXhwbGljaXQgbmFtZXNwYWNlIHdoZW4gcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZVdvcmtmbG93UXVldWVUcmlnZ2VyKHsgbmFtZXNwYWNlOiAnY3VzdG9tJyB9KS50b3BpYykudG9CZShcbiAgICAgICdfX2N1c3RvbV93a2Zfd29ya2Zsb3dfKidcbiAgICApO1xuICB9KTtcblxuICBpdCgndXNlcyBXT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0Ugd2hlbiBubyBleHBsaWNpdCBuYW1lc3BhY2UgaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUVVFVUVfTkFNRVNQQUNFID0gJ2N1c3RvbSc7XG5cbiAgICBleHBlY3QoY3JlYXRlV29ya2Zsb3dRdWV1ZVRyaWdnZXIoKS50b3BpYykudG9CZSgnX19jdXN0b21fd2tmX3dvcmtmbG93XyonKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2NyZWF0ZVdvcmtmbG93RW50cnlwb2ludE9wdGlvbnNDb2RlJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5XT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0U7XG4gIH0pO1xuXG4gIGl0KCdvbWl0cyBydW50aW1lIG9wdGlvbnMgd2l0aG91dCBhIG5hbWVzcGFjZScsICgpID0+IHtcbiAgICBleHBlY3QoY3JlYXRlV29ya2Zsb3dFbnRyeXBvaW50T3B0aW9uc0NvZGUoKSkudG9CZSgnJyk7XG4gIH0pO1xuXG4gIGl0KCdpbmxpbmVzIGFuIGV4cGxpY2l0IG5hbWVzcGFjZScsICgpID0+IHtcbiAgICBleHBlY3QoY3JlYXRlV29ya2Zsb3dFbnRyeXBvaW50T3B0aW9uc0NvZGUoeyBuYW1lc3BhY2U6ICdjdXN0b20nIH0pKS50b0JlKFxuICAgICAgJywgeyBuYW1lc3BhY2U6IFwiY3VzdG9tXCIgfSdcbiAgICApO1xuICB9KTtcblxuICBpdCgnaW5saW5lcyBXT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0UgYXQgYnVpbGQgdGltZScsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19RVUVVRV9OQU1FU1BBQ0UgPSAnY3VzdG9tJztcblxuICAgIGV4cGVjdChjcmVhdGVXb3JrZmxvd0VudHJ5cG9pbnRPcHRpb25zQ29kZSgpKS50b0JlKFxuICAgICAgJywgeyBuYW1lc3BhY2U6IFwiY3VzdG9tXCIgfSdcbiAgICApO1xuICB9KTtcblxuICBpdCgnaW5saW5lcyByb3V0ZSBtb2R1bGUgdGltaW5nIHdpdGggbmFtZXNwYWNlIG9wdGlvbnMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgY3JlYXRlV29ya2Zsb3dFbnRyeXBvaW50T3B0aW9uc0NvZGUoe1xuICAgICAgICBuYW1lc3BhY2U6ICdjdXN0b20nLFxuICAgICAgICBiYXNlUGF0aDogJy92MicsXG4gICAgICAgIHJvdXRlTW9kdWxlQm9keVN0YXJ0ZWRBdDogJ3dvcmtmbG93Um91dGVNb2R1bGVCb2R5U3RhcnRlZEF0JyxcbiAgICAgIH0pXG4gICAgKS50b0JlKFxuICAgICAgJywgeyBuYW1lc3BhY2U6IFwiY3VzdG9tXCIsIGJhc2VQYXRoOiBcIi92MlwiLCByb3V0ZU1vZHVsZUJvZHlTdGFydGVkQXQ6IHdvcmtmbG93Um91dGVNb2R1bGVCb2R5U3RhcnRlZEF0IH0nXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Plugin } from 'esbuild';
|
|
2
2
|
export declare const jsTsRegex: RegExp;
|
|
3
3
|
export declare const importParents: Map<string, Set<string>>;
|
|
4
|
-
export declare function parentHasChild(parent: string, childToFind: string
|
|
4
|
+
export declare function parentHasChild(parent: string, childToFind: string, { excludedRoots, }?: {
|
|
5
|
+
excludedRoots?: Iterable<string>;
|
|
6
|
+
}): boolean;
|
|
5
7
|
export declare function createDiscoverEntriesPlugin(state: {
|
|
6
8
|
discoveredSteps: Set<string>;
|
|
7
9
|
discoveredWorkflows: Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover-entries-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/discover-entries-esbuild-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"discover-entries-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/discover-entries-esbuild-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA2BtC,eAAO,MAAM,SAAS,QAAuC,CAAC;AAyB9D,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAK5D,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,EACE,aAAa,GACd,GAAE;IACD,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC7B,GACL,OAAO,CA8BT;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IACL,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAiIR"}
|