@workflow/core 5.0.0-beta.6 → 5.0.0-beta.8
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/classify-error.d.ts +4 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +29 -5
- package/dist/describe-error.d.ts.map +1 -1
- package/dist/describe-error.js +52 -6
- package/dist/encryption.d.ts +7 -1
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +13 -6
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/runtime/constants.d.ts +47 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +86 -8
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +10 -2
- package/dist/runtime/replay-budget.d.ts +98 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +191 -0
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +2 -1
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +4 -1
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +8 -1
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +10 -1
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +6 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +288 -174
- package/dist/serialization/types.d.ts +7 -0
- package/dist/serialization/types.d.ts.map +1 -1
- package/dist/serialization/types.js +1 -1
- package/dist/serialization.d.ts +1 -0
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +100 -11
- package/dist/set-attributes.d.ts +15 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +17 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +44 -6
- package/dist/step/context-storage.d.ts +14 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +36 -3
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +15 -4
- package/dist/symbols.d.ts +16 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +17 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/workflow/abort-controller.d.ts.map +1 -1
- package/dist/workflow/abort-controller.js +13 -2
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +12 -3
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -1
- package/dist/workflow/set-attributes.d.ts +74 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +81 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +22 -3
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +14 -5
- package/package.json +7 -7
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExperimentalSetAttributesOptions } from './workflow/set-attributes.js';
|
|
2
|
+
export type { ExperimentalSetAttributesOptions };
|
|
3
|
+
/**
|
|
4
|
+
* Host-side stub for `experimental_setAttributes`. The real
|
|
5
|
+
* implementation lives in `./workflow/set-attributes.ts` and is
|
|
6
|
+
* selected by the `workflow` package-exports condition when the
|
|
7
|
+
* workflow VM bundle is resolved.
|
|
8
|
+
*
|
|
9
|
+
* Reaching this stub means the function was called outside a workflow
|
|
10
|
+
* body — most likely from a `'use step'` function or plain host code.
|
|
11
|
+
* That isn't supported in the MVP: attribute mutations must be
|
|
12
|
+
* event-sourced through the workflow runtime so they survive replay.
|
|
13
|
+
*/
|
|
14
|
+
export declare function experimental_setAttributes(_attrs: Record<string, string | undefined>, _options?: ExperimentalSetAttributesOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=set-attributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-attributes.d.ts","sourceRoot":"","sources":["../src/set-attributes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAErF,YAAY,EAAE,gCAAgC,EAAE,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,QAAQ,CAAC,EAAE,gCAAgC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FatalError } from '@workflow/errors';
|
|
2
|
+
/**
|
|
3
|
+
* Host-side stub for `experimental_setAttributes`. The real
|
|
4
|
+
* implementation lives in `./workflow/set-attributes.ts` and is
|
|
5
|
+
* selected by the `workflow` package-exports condition when the
|
|
6
|
+
* workflow VM bundle is resolved.
|
|
7
|
+
*
|
|
8
|
+
* Reaching this stub means the function was called outside a workflow
|
|
9
|
+
* body — most likely from a `'use step'` function or plain host code.
|
|
10
|
+
* That isn't supported in the MVP: attribute mutations must be
|
|
11
|
+
* event-sourced through the workflow runtime so they survive replay.
|
|
12
|
+
*/
|
|
13
|
+
export async function experimental_setAttributes(_attrs, _options) {
|
|
14
|
+
throw new FatalError("experimental_setAttributes() must be called from a 'use workflow' function. " +
|
|
15
|
+
'Calling it from a step body or plain host code is not supported.');
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWF0dHJpYnV0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2V0LWF0dHJpYnV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzlDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDBCQUEwQixDQUM5QyxNQUEwQyxFQUMxQyxRQUEyQztJQUUzQyxNQUFNLElBQUksVUFBVSxDQUNsQiw4RUFBOEU7UUFDNUUsa0VBQWtFLENBQ3JFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmF0YWxFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBFeHBlcmltZW50YWxTZXRBdHRyaWJ1dGVzT3B0aW9ucyB9IGZyb20gJy4vd29ya2Zsb3cvc2V0LWF0dHJpYnV0ZXMuanMnO1xuXG5leHBvcnQgdHlwZSB7IEV4cGVyaW1lbnRhbFNldEF0dHJpYnV0ZXNPcHRpb25zIH07XG5cbi8qKlxuICogSG9zdC1zaWRlIHN0dWIgZm9yIGBleHBlcmltZW50YWxfc2V0QXR0cmlidXRlc2AuIFRoZSByZWFsXG4gKiBpbXBsZW1lbnRhdGlvbiBsaXZlcyBpbiBgLi93b3JrZmxvdy9zZXQtYXR0cmlidXRlcy50c2AgYW5kIGlzXG4gKiBzZWxlY3RlZCBieSB0aGUgYHdvcmtmbG93YCBwYWNrYWdlLWV4cG9ydHMgY29uZGl0aW9uIHdoZW4gdGhlXG4gKiB3b3JrZmxvdyBWTSBidW5kbGUgaXMgcmVzb2x2ZWQuXG4gKlxuICogUmVhY2hpbmcgdGhpcyBzdHViIG1lYW5zIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIG91dHNpZGUgYSB3b3JrZmxvd1xuICogYm9keSDigJQgbW9zdCBsaWtlbHkgZnJvbSBhIGAndXNlIHN0ZXAnYCBmdW5jdGlvbiBvciBwbGFpbiBob3N0IGNvZGUuXG4gKiBUaGF0IGlzbid0IHN1cHBvcnRlZCBpbiB0aGUgTVZQOiBhdHRyaWJ1dGUgbXV0YXRpb25zIG11c3QgYmVcbiAqIGV2ZW50LXNvdXJjZWQgdGhyb3VnaCB0aGUgd29ya2Zsb3cgcnVudGltZSBzbyB0aGV5IHN1cnZpdmUgcmVwbGF5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwZXJpbWVudGFsX3NldEF0dHJpYnV0ZXMoXG4gIF9hdHRyczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPixcbiAgX29wdGlvbnM/OiBFeHBlcmltZW50YWxTZXRBdHRyaWJ1dGVzT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRocm93IG5ldyBGYXRhbEVycm9yKFxuICAgIFwiZXhwZXJpbWVudGFsX3NldEF0dHJpYnV0ZXMoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIGEgJ3VzZSB3b3JrZmxvdycgZnVuY3Rpb24uIFwiICtcbiAgICAgICdDYWxsaW5nIGl0IGZyb20gYSBzdGVwIGJvZHkgb3IgcGxhaW4gaG9zdCBjb2RlIGlzIG5vdCBzdXBwb3J0ZWQuJ1xuICApO1xufVxuIl19
|
package/dist/source-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-map.d.ts","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-map.d.ts","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"AAqDA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,MAAM,CAsDR"}
|
package/dist/source-map.js
CHANGED
|
@@ -1,4 +1,44 @@
|
|
|
1
1
|
import { originalPositionFor, TraceMap } from '@jridgewell/trace-mapping';
|
|
2
|
+
function isBase64Char(code) {
|
|
3
|
+
return ((code >= 0x41 && code <= 0x5a) ||
|
|
4
|
+
(code >= 0x61 && code <= 0x7a) ||
|
|
5
|
+
(code >= 0x30 && code <= 0x39) ||
|
|
6
|
+
code === 0x2b ||
|
|
7
|
+
code === 0x2f ||
|
|
8
|
+
code === 0x3d);
|
|
9
|
+
}
|
|
10
|
+
function extractInlineSourceMapBase64(source) {
|
|
11
|
+
const sourceMapPrefix = '//# sourceMappingURL=data:application/json';
|
|
12
|
+
const base64Marker = ';base64,';
|
|
13
|
+
let scanFrom = 0;
|
|
14
|
+
while (scanFrom < source.length) {
|
|
15
|
+
const prefixIdx = source.indexOf(sourceMapPrefix, scanFrom);
|
|
16
|
+
if (prefixIdx === -1)
|
|
17
|
+
return undefined;
|
|
18
|
+
const base64Start = source.indexOf(base64Marker, prefixIdx + sourceMapPrefix.length);
|
|
19
|
+
if (base64Start === -1) {
|
|
20
|
+
scanFrom = prefixIdx + sourceMapPrefix.length;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const commaBefore = source.indexOf(',', prefixIdx);
|
|
24
|
+
if (commaBefore !== -1 && commaBefore < base64Start) {
|
|
25
|
+
scanFrom = base64Start + base64Marker.length;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const valueStart = base64Start + base64Marker.length;
|
|
29
|
+
let valueEnd = valueStart;
|
|
30
|
+
while (valueEnd < source.length) {
|
|
31
|
+
if (!isBase64Char(source.charCodeAt(valueEnd))) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
valueEnd++;
|
|
35
|
+
}
|
|
36
|
+
if (valueEnd > valueStart) {
|
|
37
|
+
return source.slice(valueStart, valueEnd);
|
|
38
|
+
}
|
|
39
|
+
scanFrom = valueEnd;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
2
42
|
/**
|
|
3
43
|
* Remaps an error stack trace using inline source maps to show original source locations.
|
|
4
44
|
*
|
|
@@ -8,13 +48,11 @@ import { originalPositionFor, TraceMap } from '@jridgewell/trace-mapping';
|
|
|
8
48
|
* @returns The remapped stack trace with original source locations
|
|
9
49
|
*/
|
|
10
50
|
export function remapErrorStack(stack, filename, workflowCode) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (!sourceMapMatch) {
|
|
51
|
+
const base64 = extractInlineSourceMapBase64(workflowCode);
|
|
52
|
+
if (!base64) {
|
|
14
53
|
return stack; // No source map found
|
|
15
54
|
}
|
|
16
55
|
try {
|
|
17
|
-
const base64 = sourceMapMatch[1];
|
|
18
56
|
const sourceMapJson = Buffer.from(base64, 'base64').toString('utf-8');
|
|
19
57
|
const sourceMapData = JSON.parse(sourceMapJson);
|
|
20
58
|
// Use TraceMap (pure JS, no WASM required)
|
|
@@ -48,9 +86,9 @@ export function remapErrorStack(stack, filename, workflowCode) {
|
|
|
48
86
|
});
|
|
49
87
|
return remappedLines.join('\n');
|
|
50
88
|
}
|
|
51
|
-
catch
|
|
89
|
+
catch {
|
|
52
90
|
// If source map processing fails, return original stack
|
|
53
91
|
return stack;
|
|
54
92
|
}
|
|
55
93
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3VyY2UtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRSxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQ2hDLE9BQU8sQ0FDTCxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQztRQUM5QixDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQztRQUM5QixDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQztRQUM5QixJQUFJLEtBQUssSUFBSTtRQUNiLElBQUksS0FBSyxJQUFJO1FBQ2IsSUFBSSxLQUFLLElBQUksQ0FDZCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQUMsTUFBYztJQUNsRCxNQUFNLGVBQWUsR0FBRyw0Q0FBNEMsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7SUFDaEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWpCLE9BQU8sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNoQyxZQUFZLEVBQ1osU0FBUyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQ25DLENBQUM7UUFDRixJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsR0FBRyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLFdBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUNwRCxRQUFRLEdBQUcsV0FBVyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDN0MsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyRCxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDMUIsT0FBTyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE1BQU07WUFDUixDQUFDO1lBQ0QsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN0QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixLQUFhLEVBQ2IsUUFBZ0IsRUFDaEIsWUFBb0I7SUFFcEIsTUFBTSxNQUFNLEdBQUcsNEJBQTRCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxLQUFLLENBQUMsQ0FBQyxzQkFBc0I7SUFDdEMsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELDJDQUEyQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzQywrQ0FBK0M7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsNEZBQTRGO1lBQzVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzNCLCtDQUErQyxDQUNoRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLElBQUksQ0FBQyxDQUFDLGtDQUFrQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBRTNELDJDQUEyQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFMUMsa0NBQWtDO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDM0MsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxZQUFZO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7Z0JBQzFELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RFLE9BQU8sVUFBVSxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLGdDQUFnQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1Asd0RBQXdEO1FBQ3hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvcmlnaW5hbFBvc2l0aW9uRm9yLCBUcmFjZU1hcCB9IGZyb20gJ0BqcmlkZ2V3ZWxsL3RyYWNlLW1hcHBpbmcnO1xuXG5mdW5jdGlvbiBpc0Jhc2U2NENoYXIoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gMHg0MSAmJiBjb2RlIDw9IDB4NWEpIHx8XG4gICAgKGNvZGUgPj0gMHg2MSAmJiBjb2RlIDw9IDB4N2EpIHx8XG4gICAgKGNvZGUgPj0gMHgzMCAmJiBjb2RlIDw9IDB4MzkpIHx8XG4gICAgY29kZSA9PT0gMHgyYiB8fFxuICAgIGNvZGUgPT09IDB4MmYgfHxcbiAgICBjb2RlID09PSAweDNkXG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RJbmxpbmVTb3VyY2VNYXBCYXNlNjQoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzb3VyY2VNYXBQcmVmaXggPSAnLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uJztcbiAgY29uc3QgYmFzZTY0TWFya2VyID0gJztiYXNlNjQsJztcbiAgbGV0IHNjYW5Gcm9tID0gMDtcblxuICB3aGlsZSAoc2NhbkZyb20gPCBzb3VyY2UubGVuZ3RoKSB7XG4gICAgY29uc3QgcHJlZml4SWR4ID0gc291cmNlLmluZGV4T2Yoc291cmNlTWFwUHJlZml4LCBzY2FuRnJvbSk7XG4gICAgaWYgKHByZWZpeElkeCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBiYXNlNjRTdGFydCA9IHNvdXJjZS5pbmRleE9mKFxuICAgICAgYmFzZTY0TWFya2VyLFxuICAgICAgcHJlZml4SWR4ICsgc291cmNlTWFwUHJlZml4Lmxlbmd0aFxuICAgICk7XG4gICAgaWYgKGJhc2U2NFN0YXJ0ID09PSAtMSkge1xuICAgICAgc2NhbkZyb20gPSBwcmVmaXhJZHggKyBzb3VyY2VNYXBQcmVmaXgubGVuZ3RoO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWFCZWZvcmUgPSBzb3VyY2UuaW5kZXhPZignLCcsIHByZWZpeElkeCk7XG4gICAgaWYgKGNvbW1hQmVmb3JlICE9PSAtMSAmJiBjb21tYUJlZm9yZSA8IGJhc2U2NFN0YXJ0KSB7XG4gICAgICBzY2FuRnJvbSA9IGJhc2U2NFN0YXJ0ICsgYmFzZTY0TWFya2VyLmxlbmd0aDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlU3RhcnQgPSBiYXNlNjRTdGFydCArIGJhc2U2NE1hcmtlci5sZW5ndGg7XG4gICAgbGV0IHZhbHVlRW5kID0gdmFsdWVTdGFydDtcbiAgICB3aGlsZSAodmFsdWVFbmQgPCBzb3VyY2UubGVuZ3RoKSB7XG4gICAgICBpZiAoIWlzQmFzZTY0Q2hhcihzb3VyY2UuY2hhckNvZGVBdCh2YWx1ZUVuZCkpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdmFsdWVFbmQrKztcbiAgICB9XG5cbiAgICBpZiAodmFsdWVFbmQgPiB2YWx1ZVN0YXJ0KSB7XG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKHZhbHVlU3RhcnQsIHZhbHVlRW5kKTtcbiAgICB9XG4gICAgc2NhbkZyb20gPSB2YWx1ZUVuZDtcbiAgfVxufVxuXG4vKipcbiAqIFJlbWFwcyBhbiBlcnJvciBzdGFjayB0cmFjZSB1c2luZyBpbmxpbmUgc291cmNlIG1hcHMgdG8gc2hvdyBvcmlnaW5hbCBzb3VyY2UgbG9jYXRpb25zLlxuICpcbiAqIEBwYXJhbSBzdGFjayAtIFRoZSBlcnJvciBzdGFjayB0cmFjZSB0byByZW1hcFxuICogQHBhcmFtIGZpbGVuYW1lIC0gVGhlIHdvcmtmbG93IGZpbGVuYW1lIHRvIG1hdGNoIGluIHN0YWNrIGZyYW1lc1xuICogQHBhcmFtIHdvcmtmbG93Q29kZSAtIFRoZSB3b3JrZmxvdyBidW5kbGUgY29kZSBjb250YWluaW5nIGlubGluZSBzb3VyY2UgbWFwc1xuICogQHJldHVybnMgVGhlIHJlbWFwcGVkIHN0YWNrIHRyYWNlIHdpdGggb3JpZ2luYWwgc291cmNlIGxvY2F0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtYXBFcnJvclN0YWNrKFxuICBzdGFjazogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICB3b3JrZmxvd0NvZGU6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZTY0ID0gZXh0cmFjdElubGluZVNvdXJjZU1hcEJhc2U2NCh3b3JrZmxvd0NvZGUpO1xuICBpZiAoIWJhc2U2NCkge1xuICAgIHJldHVybiBzdGFjazsgLy8gTm8gc291cmNlIG1hcCBmb3VuZFxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzb3VyY2VNYXBKc29uID0gQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgY29uc3Qgc291cmNlTWFwRGF0YSA9IEpTT04ucGFyc2Uoc291cmNlTWFwSnNvbik7XG5cbiAgICAvLyBVc2UgVHJhY2VNYXAgKHB1cmUgSlMsIG5vIFdBU00gcmVxdWlyZWQpXG4gICAgY29uc3QgdHJhY2VyID0gbmV3IFRyYWNlTWFwKHNvdXJjZU1hcERhdGEpO1xuXG4gICAgLy8gUGFyc2UgYW5kIHJlbWFwIGVhY2ggbGluZSBpbiB0aGUgc3RhY2sgdHJhY2VcbiAgICBjb25zdCBsaW5lcyA9IHN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICBjb25zdCByZW1hcHBlZExpbmVzID0gbGluZXMubWFwKChsaW5lKSA9PiB7XG4gICAgICAvLyBNYXRjaCBzdGFjayBmcmFtZXM6IFwiYXQgZnVuY3Rpb25OYW1lIChmaWxlbmFtZTpsaW5lOmNvbHVtbilcIiBvciBcImF0IGZpbGVuYW1lOmxpbmU6Y29sdW1uXCJcbiAgICAgIGNvbnN0IGZyYW1lTWF0Y2ggPSBsaW5lLm1hdGNoKFxuICAgICAgICAvXlxccyphdFxccysoPzooLis/KVxccytcXCgpPyguKz8pOihcXGQrKTooXFxkKylcXCk/JC9cbiAgICAgICk7XG4gICAgICBpZiAoIWZyYW1lTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGxpbmU7IC8vIE5vdCBhIHN0YWNrIGZyYW1lLCByZXR1cm4gYXMtaXNcbiAgICAgIH1cblxuICAgICAgY29uc3QgWywgZnVuY3Rpb25OYW1lLCBmaWxlLCBsaW5lU3RyLCBjb2xTdHJdID0gZnJhbWVNYXRjaDtcblxuICAgICAgLy8gT25seSByZW1hcCBmcmFtZXMgZnJvbSBvdXIgd29ya2Zsb3cgZmlsZVxuICAgICAgaWYgKCFmaWxlLmluY2x1ZGVzKGZpbGVuYW1lKSkge1xuICAgICAgICByZXR1cm4gbGluZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGluZU51bWJlciA9IHBhcnNlSW50KGxpbmVTdHIsIDEwKTtcbiAgICAgIGNvbnN0IGNvbHVtbk51bWJlciA9IHBhcnNlSW50KGNvbFN0ciwgMTApO1xuXG4gICAgICAvLyBNYXAgdG8gb3JpZ2luYWwgc291cmNlIHBvc2l0aW9uXG4gICAgICBjb25zdCBvcmlnaW5hbCA9IG9yaWdpbmFsUG9zaXRpb25Gb3IodHJhY2VyLCB7XG4gICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgIGNvbHVtbjogY29sdW1uTnVtYmVyLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChvcmlnaW5hbC5zb3VyY2UgJiYgb3JpZ2luYWwubGluZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmdW5jID0gZnVuY3Rpb25OYW1lIHx8IG9yaWdpbmFsLm5hbWUgfHwgJ2Fub255bW91cyc7XG4gICAgICAgIGNvbnN0IGNvbCA9IG9yaWdpbmFsLmNvbHVtbiAhPT0gbnVsbCA/IG9yaWdpbmFsLmNvbHVtbiA6IGNvbHVtbk51bWJlcjtcbiAgICAgICAgcmV0dXJuIGAgICAgYXQgJHtmdW5jfSAoJHtvcmlnaW5hbC5zb3VyY2V9OiR7b3JpZ2luYWwubGluZX06JHtjb2x9KWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsaW5lOyAvLyBDb3VsZG4ndCBtYXAsIHJldHVybiBvcmlnaW5hbFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlbWFwcGVkTGluZXMuam9pbignXFxuJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIHNvdXJjZSBtYXAgcHJvY2Vzc2luZyBmYWlscywgcmV0dXJuIG9yaWdpbmFsIHN0YWNrXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG59XG4iXX0=
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
2
|
import type { CryptoKey } from '../encryption.js';
|
|
3
|
+
import type { FlushableStreamState } from '../flushable-stream.js';
|
|
3
4
|
import type { WorkflowMetadata } from '../workflow/get-workflow-metadata.js';
|
|
4
5
|
import type { StepMetadata } from './get-step-metadata.js';
|
|
6
|
+
/**
|
|
7
|
+
* Per-step cache entry for a `(runId, namespace)` writable stream.
|
|
8
|
+
*
|
|
9
|
+
* Holds the user-facing `WritableStream` and the shared `FlushableStreamState`
|
|
10
|
+
* driving the background pipe to the workflow server. Re-used so repeat calls
|
|
11
|
+
* to `getWritable()` within the same step return the same handle instead of
|
|
12
|
+
* spawning racing pipes — see https://github.com/vercel/workflow/issues/2058.
|
|
13
|
+
*/
|
|
14
|
+
export interface CachedWritable {
|
|
15
|
+
writable: WritableStream<any>;
|
|
16
|
+
state: FlushableStreamState;
|
|
17
|
+
}
|
|
5
18
|
export type StepContext = {
|
|
6
19
|
stepMetadata: StepMetadata;
|
|
7
20
|
workflowMetadata: WorkflowMetadata;
|
|
8
21
|
ops: Promise<void>[];
|
|
9
22
|
closureVars?: Record<string, any>;
|
|
10
23
|
encryptionKey?: CryptoKey;
|
|
24
|
+
writables?: Map<string, CachedWritable>;
|
|
11
25
|
};
|
|
12
26
|
export declare const contextStorage: AsyncLocalStorage<StepContext>;
|
|
13
27
|
//# sourceMappingURL=context-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/step/context-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/step/context-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC,CAAC;AAoBF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAKjB,CAAC"}
|
|
@@ -19,4 +19,4 @@ const CONTEXT_STORAGE_SYMBOL = Symbol.for('WORKFLOW_STEP_CONTEXT_STORAGE');
|
|
|
19
19
|
export const contextStorage = globalThis[CONTEXT_STORAGE_SYMBOL] ??
|
|
20
20
|
(globalThis[CONTEXT_STORAGE_SYMBOL] =
|
|
21
21
|
new AsyncLocalStorage());
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvY29udGV4dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBNEJyRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQ3ZCLFVBQWtCLENBQUMsc0JBQXNCLENBRTdCO0lBQ2QsQ0FBRSxVQUFrQixDQUFDLHNCQUFzQixDQUFDO1FBQzFDLElBQUksaUJBQWlCLEVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tICdub2RlOmFzeW5jX2hvb2tzJztcbmltcG9ydCB0eXBlIHsgQ3J5cHRvS2V5IH0gZnJvbSAnLi4vZW5jcnlwdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsdXNoYWJsZVN0cmVhbVN0YXRlIH0gZnJvbSAnLi4vZmx1c2hhYmxlLXN0cmVhbS5qcyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93TWV0YWRhdGEgfSBmcm9tICcuLi93b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGVwTWV0YWRhdGEgfSBmcm9tICcuL2dldC1zdGVwLW1ldGFkYXRhLmpzJztcblxuLyoqXG4gKiBQZXItc3RlcCBjYWNoZSBlbnRyeSBmb3IgYSBgKHJ1bklkLCBuYW1lc3BhY2UpYCB3cml0YWJsZSBzdHJlYW0uXG4gKlxuICogSG9sZHMgdGhlIHVzZXItZmFjaW5nIGBXcml0YWJsZVN0cmVhbWAgYW5kIHRoZSBzaGFyZWQgYEZsdXNoYWJsZVN0cmVhbVN0YXRlYFxuICogZHJpdmluZyB0aGUgYmFja2dyb3VuZCBwaXBlIHRvIHRoZSB3b3JrZmxvdyBzZXJ2ZXIuIFJlLXVzZWQgc28gcmVwZWF0IGNhbGxzXG4gKiB0byBgZ2V0V3JpdGFibGUoKWAgd2l0aGluIHRoZSBzYW1lIHN0ZXAgcmV0dXJuIHRoZSBzYW1lIGhhbmRsZSBpbnN0ZWFkIG9mXG4gKiBzcGF3bmluZyByYWNpbmcgcGlwZXMg4oCUIHNlZSBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2lzc3Vlcy8yMDU4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlZFdyaXRhYmxlIHtcbiAgd3JpdGFibGU6IFdyaXRhYmxlU3RyZWFtPGFueT47XG4gIHN0YXRlOiBGbHVzaGFibGVTdHJlYW1TdGF0ZTtcbn1cblxuZXhwb3J0IHR5cGUgU3RlcENvbnRleHQgPSB7XG4gIHN0ZXBNZXRhZGF0YTogU3RlcE1ldGFkYXRhO1xuICB3b3JrZmxvd01ldGFkYXRhOiBXb3JrZmxvd01ldGFkYXRhO1xuICBvcHM6IFByb21pc2U8dm9pZD5bXTtcbiAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlbmNyeXB0aW9uS2V5PzogQ3J5cHRvS2V5O1xuICB3cml0YWJsZXM/OiBNYXA8c3RyaW5nLCBDYWNoZWRXcml0YWJsZT47XG59O1xuXG4vKipcbiAqIFByb2Nlc3Mtd2lkZSBzaW5nbGV0b24gQXN5bmNMb2NhbFN0b3JhZ2UgZm9yIHN0ZXAgZXhlY3V0aW9uIGNvbnRleHQuXG4gKlxuICogVXNlcyBgU3ltYm9sLmZvcigpYCBvbiBnbG9iYWxUaGlzIHRvIGd1YXJhbnRlZSBhIHNpbmdsZSBpbnN0YW5jZSBldmVuIHdoZW5cbiAqIGJ1bmRsZXJzIChlLmcuIFZlcmNlbCdzIHByb2R1Y3Rpb24gYnVuZGxlcikgY3JlYXRlIG11bHRpcGxlIGNvcGllcyBvZiB0aGlzXG4gKiBtb2R1bGUuIFdpdGhvdXQgdGhpcywgYGNvbnRleHRTdG9yYWdlLnJ1bigpYCBpbiB0aGUgc3RlcCBoYW5kbGVyIGFuZFxuICogYGNvbnRleHRTdG9yYWdlLmdldFN0b3JlKClgIGluIHVzZXIgY29kZSAodmlhIGdldFdvcmtmbG93TWV0YWRhdGEgL1xuICogZ2V0U3RlcE1ldGFkYXRhKSBjYW4gcmVmZXJlbmNlIGRpZmZlcmVudCBBc3luY0xvY2FsU3RvcmFnZSBpbnN0YW5jZXMsXG4gKiBjYXVzaW5nIHRoZSBzdG9yZSB0byBhcHBlYXIgZW1wdHkuXG4gKlxuICogTm90ZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHJlcHJvZHVjZSB0aGlzIGlzc3VlLiBUaGlzIGlzIGEgZml4IGZvciB0aGUgb25seSBzeW50aGV0aWMgd2F5XG4gKiB3YXkgaW4gd2hpY2ggd2UgY291bGQgZ2V0IHRoZSBidWlsZGVyIHRvIGJyZWFrIHdpdGggdGhlIHJlcG9ydGVkIGVycm9yIG1lc3NhZ2UsIGFuZFxuICogc2VydmVzIGFzIGRlZmVuc2UtaW4tZGVwdGgsIHNpbmNlIHRoZSBjaGFuZ2UgaXMgb3RoZXJ3aXNlIHNhZmUuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2lzc3Vlcy8xNTc3XG4gKi9cbmNvbnN0IENPTlRFWFRfU1RPUkFHRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19TVEVQX0NPTlRFWFRfU1RPUkFHRScpO1xuXG5leHBvcnQgY29uc3QgY29udGV4dFN0b3JhZ2U6IEFzeW5jTG9jYWxTdG9yYWdlPFN0ZXBDb250ZXh0PiA9XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpW0NPTlRFWFRfU1RPUkFHRV9TWU1CT0xdIGFzXG4gICAgfCBBc3luY0xvY2FsU3RvcmFnZTxTdGVwQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZCkgPz9cbiAgKChnbG9iYWxUaGlzIGFzIGFueSlbQ09OVEVYVF9TVE9SQUdFX1NZTUJPTF0gPVxuICAgIG5ldyBBc3luY0xvY2FsU3RvcmFnZTxTdGVwQ29udGV4dD4oKSk7XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writable-stream.d.ts","sourceRoot":"","sources":["../../src/step/writable-stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writable-stream.d.ts","sourceRoot":"","sources":["../../src/step/writable-stream.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EACjC,OAAO,GAAE,6BAAkC,GAC1C,cAAc,CAAC,CAAC,CAAC,CAuEnB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { throwNotInWorkflowOrStepContext } from '../context-errors.js';
|
|
2
2
|
import { createFlushableState, flushablePipe, pollWritableLock, } from '../flushable-stream.js';
|
|
3
3
|
import { getExternalReducers, getSerializeStream, WorkflowServerWritableStream, } from '../serialization.js';
|
|
4
|
+
import { STREAM_NAME_SYMBOL, STREAM_SERVER_RUN_ID_SYMBOL } from '../symbols.js';
|
|
4
5
|
import { getWorkflowRunStreamId } from '../util.js';
|
|
5
6
|
import { contextStorage } from './context-storage.js';
|
|
6
7
|
/**
|
|
@@ -21,7 +22,24 @@ export function getWritable(options = {}) {
|
|
|
21
22
|
const { namespace } = options;
|
|
22
23
|
const runId = ctx.workflowMetadata.workflowRunId;
|
|
23
24
|
const name = getWorkflowRunStreamId(runId, namespace);
|
|
24
|
-
//
|
|
25
|
+
// Cache the writable per (runId, namespace) within the step context.
|
|
26
|
+
//
|
|
27
|
+
// The previous behavior — constructing a fresh TransformStream and
|
|
28
|
+
// background pipe on every call — produced non-deterministic chunk
|
|
29
|
+
// ordering when callers acquired a new writer per write (e.g. a
|
|
30
|
+
// per-chunk loop). Each pipe flushed to the same (runId, name) server
|
|
31
|
+
// stream independently, and on Vercel the 50-100ms HTTP latency
|
|
32
|
+
// turned the race window from microseconds into something prod-visible.
|
|
33
|
+
//
|
|
34
|
+
// Sharing a single TransformStream + pipe across calls makes the
|
|
35
|
+
// unsafe pattern correct: writes go through one serial sink in the
|
|
36
|
+
// order the user wrote them. See
|
|
37
|
+
// https://github.com/vercel/workflow/issues/2058.
|
|
38
|
+
const cache = (ctx.writables ??= new Map());
|
|
39
|
+
const cached = cache.get(name);
|
|
40
|
+
if (cached) {
|
|
41
|
+
return cached.writable;
|
|
42
|
+
}
|
|
25
43
|
const serialize = getSerializeStream(getExternalReducers(globalThis, ctx.ops, runId, ctx.encryptionKey), ctx.encryptionKey);
|
|
26
44
|
// Use flushable pipe so the ops promise resolves when the user releases
|
|
27
45
|
// their writer lock, not only when the stream is explicitly closed.
|
|
@@ -34,7 +52,22 @@ export function getWritable(options = {}) {
|
|
|
34
52
|
// Errors are handled via state.reject
|
|
35
53
|
});
|
|
36
54
|
pollWritableLock(serialize.writable, state);
|
|
37
|
-
//
|
|
55
|
+
// Tag the writable with its underlying `(runId, name)` so downstream
|
|
56
|
+
// reducers can recognize that it's already backed by a workflow
|
|
57
|
+
// server stream. Calling `start(child, [args, theWritable])` from
|
|
58
|
+
// the same step uses these tags to emit `{ name, runId }` in the
|
|
59
|
+
// dehydrated descriptor, so the child's reviver can open the
|
|
60
|
+
// writable against the original `(runId, name)` directly — no
|
|
61
|
+
// in-process bridge tied to this step's lifetime.
|
|
62
|
+
Object.defineProperty(serialize.writable, STREAM_NAME_SYMBOL, {
|
|
63
|
+
value: name,
|
|
64
|
+
writable: false,
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(serialize.writable, STREAM_SERVER_RUN_ID_SYMBOL, {
|
|
67
|
+
value: runId,
|
|
68
|
+
writable: false,
|
|
69
|
+
});
|
|
70
|
+
cache.set(name, { writable: serialize.writable, state });
|
|
38
71
|
return serialize.writable;
|
|
39
72
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvd3JpdGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixHQUM3QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUF1QixjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWEzRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixVQUF5QyxFQUFFO0lBRTNDLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCwrQkFBK0IsQ0FDN0IsZUFBZSxFQUNmLG1FQUFtRSxFQUNuRSxXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXRELHFFQUFxRTtJQUNyRSxFQUFFO0lBQ0YsbUVBQW1FO0lBQ25FLG1FQUFtRTtJQUNuRSxnRUFBZ0U7SUFDaEUsc0VBQXNFO0lBQ3RFLGdFQUFnRTtJQUNoRSx3RUFBd0U7SUFDeEUsRUFBRTtJQUNGLGlFQUFpRTtJQUNqRSxtRUFBbUU7SUFDbkUsaUNBQWlDO0lBQ2pDLGtEQUFrRDtJQUNsRCxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxHQUFHLEVBQTBCLENBQUMsQ0FBQztJQUNwRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxPQUFPLE1BQU0sQ0FBQyxRQUE2QixDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FDbEMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFDbEUsR0FBRyxDQUFDLGFBQWEsQ0FDbEIsQ0FBQztJQUVGLHdFQUF3RTtJQUN4RSxvRUFBb0U7SUFDcEUsd0VBQXdFO0lBQ3hFLDJDQUEyQztJQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLDRCQUE0QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxNQUFNLEtBQUssR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QixhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNsRSxzQ0FBc0M7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTVDLHFFQUFxRTtJQUNyRSxnRUFBZ0U7SUFDaEUsa0VBQWtFO0lBQ2xFLGlFQUFpRTtJQUNqRSw2REFBNkQ7SUFDN0QsOERBQThEO0lBQzlELGtEQUFrRDtJQUNsRCxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7UUFDNUQsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsMkJBQTJCLEVBQUU7UUFDckUsS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFekQsT0FBTyxTQUFTLENBQUMsUUFBNkIsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3dOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQtZXJyb3JzLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUZsdXNoYWJsZVN0YXRlLFxuICBmbHVzaGFibGVQaXBlLFxuICBwb2xsV3JpdGFibGVMb2NrLFxufSBmcm9tICcuLi9mbHVzaGFibGUtc3RyZWFtLmpzJztcbmltcG9ydCB7XG4gIGdldEV4dGVybmFsUmVkdWNlcnMsXG4gIGdldFNlcmlhbGl6ZVN0cmVhbSxcbiAgV29ya2Zsb3dTZXJ2ZXJXcml0YWJsZVN0cmVhbSxcbn0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi5qcyc7XG5pbXBvcnQgeyBTVFJFQU1fTkFNRV9TWU1CT0wsIFNUUkVBTV9TRVJWRVJfUlVOX0lEX1NZTUJPTCB9IGZyb20gJy4uL3N5bWJvbHMuanMnO1xuaW1wb3J0IHsgZ2V0V29ya2Zsb3dSdW5TdHJlYW1JZCB9IGZyb20gJy4uL3V0aWwuanMnO1xuaW1wb3J0IHsgdHlwZSBDYWNoZWRXcml0YWJsZSwgY29udGV4dFN0b3JhZ2UgfSBmcm9tICcuL2NvbnRleHQtc3RvcmFnZS5qcyc7XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIHtAbGluayBnZXRXcml0YWJsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dXcml0YWJsZVN0cmVhbU9wdGlvbnMge1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgbmFtZXNwYWNlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbXVsdGlwbGUgc3RyZWFtcyBhc3NvY2lhdGVkXG4gICAqIHdpdGggdGhlIHNhbWUgd29ya2Zsb3cgcnVuLlxuICAgKi9cbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIHdyaXRhYmxlIHN0cmVhbSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB3b3JrZmxvdy5cbiAqXG4gKiBUaGUgd3JpdGFibGUgc3RyZWFtIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aGluIHN0ZXAgZnVuY3Rpb25zIHRvIHdyaXRlXG4gKiBkYXRhIHRoYXQgY2FuIGJlIHJlYWQgb3V0c2lkZSB0aGUgd29ya2Zsb3cgYnkgdXNpbmcgdGhlIHJlYWRhYmxlIG1ldGhvZCBvZiBnZXRSdW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgd3JpdGFibGUgc3RyZWFtXG4gKiBAcmV0dXJucyBUaGUgd3JpdGFibGUgc3RyZWFtIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB3b3JrZmxvdyBydW5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgY2FsbGVkIG91dHNpZGUgYSB3b3JrZmxvdyBvciBzdGVwIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXcml0YWJsZTxXID0gYW55PihcbiAgb3B0aW9uczogV29ya2Zsb3dXcml0YWJsZVN0cmVhbU9wdGlvbnMgPSB7fVxuKTogV3JpdGFibGVTdHJlYW08Vz4ge1xuICBjb25zdCBjdHggPSBjb250ZXh0U3RvcmFnZS5nZXRTdG9yZSgpO1xuICBpZiAoIWN0eCkge1xuICAgIHRocm93Tm90SW5Xb3JrZmxvd09yU3RlcENvbnRleHQoXG4gICAgICAnZ2V0V3JpdGFibGUoKScsXG4gICAgICAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2L2RvY3MvYXBpLXJlZmVyZW5jZS93b3JrZmxvdy9nZXQtd3JpdGFibGUnLFxuICAgICAgZ2V0V3JpdGFibGVcbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBuYW1lc3BhY2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJ1bklkID0gY3R4LndvcmtmbG93TWV0YWRhdGEud29ya2Zsb3dSdW5JZDtcbiAgY29uc3QgbmFtZSA9IGdldFdvcmtmbG93UnVuU3RyZWFtSWQocnVuSWQsIG5hbWVzcGFjZSk7XG5cbiAgLy8gQ2FjaGUgdGhlIHdyaXRhYmxlIHBlciAocnVuSWQsIG5hbWVzcGFjZSkgd2l0aGluIHRoZSBzdGVwIGNvbnRleHQuXG4gIC8vXG4gIC8vIFRoZSBwcmV2aW91cyBiZWhhdmlvciDigJQgY29uc3RydWN0aW5nIGEgZnJlc2ggVHJhbnNmb3JtU3RyZWFtIGFuZFxuICAvLyBiYWNrZ3JvdW5kIHBpcGUgb24gZXZlcnkgY2FsbCDigJQgcHJvZHVjZWQgbm9uLWRldGVybWluaXN0aWMgY2h1bmtcbiAgLy8gb3JkZXJpbmcgd2hlbiBjYWxsZXJzIGFjcXVpcmVkIGEgbmV3IHdyaXRlciBwZXIgd3JpdGUgKGUuZy4gYVxuICAvLyBwZXItY2h1bmsgbG9vcCkuIEVhY2ggcGlwZSBmbHVzaGVkIHRvIHRoZSBzYW1lIChydW5JZCwgbmFtZSkgc2VydmVyXG4gIC8vIHN0cmVhbSBpbmRlcGVuZGVudGx5LCBhbmQgb24gVmVyY2VsIHRoZSA1MC0xMDBtcyBIVFRQIGxhdGVuY3lcbiAgLy8gdHVybmVkIHRoZSByYWNlIHdpbmRvdyBmcm9tIG1pY3Jvc2Vjb25kcyBpbnRvIHNvbWV0aGluZyBwcm9kLXZpc2libGUuXG4gIC8vXG4gIC8vIFNoYXJpbmcgYSBzaW5nbGUgVHJhbnNmb3JtU3RyZWFtICsgcGlwZSBhY3Jvc3MgY2FsbHMgbWFrZXMgdGhlXG4gIC8vIHVuc2FmZSBwYXR0ZXJuIGNvcnJlY3Q6IHdyaXRlcyBnbyB0aHJvdWdoIG9uZSBzZXJpYWwgc2luayBpbiB0aGVcbiAgLy8gb3JkZXIgdGhlIHVzZXIgd3JvdGUgdGhlbS4gU2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvd29ya2Zsb3cvaXNzdWVzLzIwNTguXG4gIGNvbnN0IGNhY2hlID0gKGN0eC53cml0YWJsZXMgPz89IG5ldyBNYXA8c3RyaW5nLCBDYWNoZWRXcml0YWJsZT4oKSk7XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChuYW1lKTtcbiAgaWYgKGNhY2hlZCkge1xuICAgIHJldHVybiBjYWNoZWQud3JpdGFibGUgYXMgV3JpdGFibGVTdHJlYW08Vz47XG4gIH1cblxuICBjb25zdCBzZXJpYWxpemUgPSBnZXRTZXJpYWxpemVTdHJlYW0oXG4gICAgZ2V0RXh0ZXJuYWxSZWR1Y2VycyhnbG9iYWxUaGlzLCBjdHgub3BzLCBydW5JZCwgY3R4LmVuY3J5cHRpb25LZXkpLFxuICAgIGN0eC5lbmNyeXB0aW9uS2V5XG4gICk7XG5cbiAgLy8gVXNlIGZsdXNoYWJsZSBwaXBlIHNvIHRoZSBvcHMgcHJvbWlzZSByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIHJlbGVhc2VzXG4gIC8vIHRoZWlyIHdyaXRlciBsb2NrLCBub3Qgb25seSB3aGVuIHRoZSBzdHJlYW0gaXMgZXhwbGljaXRseSBjbG9zZWQuXG4gIC8vIFdpdGhvdXQgdGhpcywgVmVyY2VsIGZ1bmN0aW9ucyBoYW5nIHVudGlsIHRoZSBydW50aW1lIHRpbWVvdXQgYmVjYXVzZVxuICAvLyAucGlwZVRvKCkgb25seSByZXNvbHZlcyBvbiBzdHJlYW0gY2xvc2UuXG4gIGNvbnN0IHNlcnZlcldyaXRhYmxlID0gbmV3IFdvcmtmbG93U2VydmVyV3JpdGFibGVTdHJlYW0ocnVuSWQsIG5hbWUpO1xuICBjb25zdCBzdGF0ZSA9IGNyZWF0ZUZsdXNoYWJsZVN0YXRlKCk7XG4gIGN0eC5vcHMucHVzaChzdGF0ZS5wcm9taXNlKTtcblxuICBmbHVzaGFibGVQaXBlKHNlcmlhbGl6ZS5yZWFkYWJsZSwgc2VydmVyV3JpdGFibGUsIHN0YXRlKS5jYXRjaCgoKSA9PiB7XG4gICAgLy8gRXJyb3JzIGFyZSBoYW5kbGVkIHZpYSBzdGF0ZS5yZWplY3RcbiAgfSk7XG5cbiAgcG9sbFdyaXRhYmxlTG9jayhzZXJpYWxpemUud3JpdGFibGUsIHN0YXRlKTtcblxuICAvLyBUYWcgdGhlIHdyaXRhYmxlIHdpdGggaXRzIHVuZGVybHlpbmcgYChydW5JZCwgbmFtZSlgIHNvIGRvd25zdHJlYW1cbiAgLy8gcmVkdWNlcnMgY2FuIHJlY29nbml6ZSB0aGF0IGl0J3MgYWxyZWFkeSBiYWNrZWQgYnkgYSB3b3JrZmxvd1xuICAvLyBzZXJ2ZXIgc3RyZWFtLiBDYWxsaW5nIGBzdGFydChjaGlsZCwgW2FyZ3MsIHRoZVdyaXRhYmxlXSlgIGZyb21cbiAgLy8gdGhlIHNhbWUgc3RlcCB1c2VzIHRoZXNlIHRhZ3MgdG8gZW1pdCBgeyBuYW1lLCBydW5JZCB9YCBpbiB0aGVcbiAgLy8gZGVoeWRyYXRlZCBkZXNjcmlwdG9yLCBzbyB0aGUgY2hpbGQncyByZXZpdmVyIGNhbiBvcGVuIHRoZVxuICAvLyB3cml0YWJsZSBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgKHJ1bklkLCBuYW1lKWAgZGlyZWN0bHkg4oCUIG5vXG4gIC8vIGluLXByb2Nlc3MgYnJpZGdlIHRpZWQgdG8gdGhpcyBzdGVwJ3MgbGlmZXRpbWUuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZXJpYWxpemUud3JpdGFibGUsIFNUUkVBTV9OQU1FX1NZTUJPTCwge1xuICAgIHZhbHVlOiBuYW1lLFxuICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZXJpYWxpemUud3JpdGFibGUsIFNUUkVBTV9TRVJWRVJfUlVOX0lEX1NZTUJPTCwge1xuICAgIHZhbHVlOiBydW5JZCxcbiAgICB3cml0YWJsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNhY2hlLnNldChuYW1lLCB7IHdyaXRhYmxlOiBzZXJpYWxpemUud3JpdGFibGUsIHN0YXRlIH0pO1xuXG4gIHJldHVybiBzZXJpYWxpemUud3JpdGFibGUgYXMgV3JpdGFibGVTdHJlYW08Vz47XG59XG4iXX0=
|
package/dist/step.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,2BAA2B,IACpC,IAAI,SAAS,YAAY,EAAE,EAAE,MAAM,EACzD,UAAU,MAAM,EAChB,gBAAgB,MAAM,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,YAI1C,OAAO,WACJ,IAAI,KACZ,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,2BAA2B,IACpC,IAAI,SAAS,YAAY,EAAE,EAAE,MAAM,EACzD,UAAU,MAAM,EAChB,gBAAgB,MAAM,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,YAI1C,OAAO,WACJ,IAAI,KACZ,OAAO,CAAC,MAAM,CAAC,CAoSrB"}
|
package/dist/step.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CorruptedEventLogError, FatalError } from '@workflow/errors';
|
|
2
2
|
import { withResolvers } from '@workflow/utils';
|
|
3
3
|
import { EventConsumerResult } from './events-consumer.js';
|
|
4
4
|
import { WorkflowSuspension } from './global.js';
|
|
@@ -56,6 +56,17 @@ export function createUseStep(ctx) {
|
|
|
56
56
|
// We're not interested in this event - the correlationId belongs to a different entity
|
|
57
57
|
return EventConsumerResult.NotConsumed;
|
|
58
58
|
}
|
|
59
|
+
const eventStepName = 'eventData' in event &&
|
|
60
|
+
event.eventData &&
|
|
61
|
+
'stepName' in event.eventData
|
|
62
|
+
? event.eventData.stepName
|
|
63
|
+
: undefined;
|
|
64
|
+
if (typeof eventStepName === 'string' && eventStepName !== stepName) {
|
|
65
|
+
ctx.promiseQueue = ctx.promiseQueue.then(() => {
|
|
66
|
+
ctx.onWorkflowError(new CorruptedEventLogError(`Corrupted event log: step event ${event.eventType} for ${correlationId} belongs to "${eventStepName}", but the current step consumer is "${stepName}"`));
|
|
67
|
+
});
|
|
68
|
+
return EventConsumerResult.Finished;
|
|
69
|
+
}
|
|
59
70
|
if (event.eventType === 'step_created') {
|
|
60
71
|
// Step has been created (registered for execution) - mark as having event
|
|
61
72
|
// but keep in queue so suspension handler knows to queue execution without
|
|
@@ -65,7 +76,7 @@ export function createUseStep(ctx) {
|
|
|
65
76
|
// This indicates event log corruption - step_created received
|
|
66
77
|
// but the step was never invoked in the workflow during replay.
|
|
67
78
|
ctx.promiseQueue = ctx.promiseQueue.then(() => {
|
|
68
|
-
reject(new
|
|
79
|
+
reject(new CorruptedEventLogError(`Corrupted event log: step ${correlationId} (${stepName}) created but not found in invocation queue`));
|
|
69
80
|
});
|
|
70
81
|
return EventConsumerResult.Finished;
|
|
71
82
|
}
|
|
@@ -138,7 +149,7 @@ export function createUseStep(ctx) {
|
|
|
138
149
|
}
|
|
139
150
|
// An unexpected event type has been received, this event log looks corrupted. Let's fail immediately.
|
|
140
151
|
ctx.promiseQueue = ctx.promiseQueue.then(() => {
|
|
141
|
-
ctx.onWorkflowError(new
|
|
152
|
+
ctx.onWorkflowError(new CorruptedEventLogError(`Unexpected event type for step ${correlationId} (name: ${stepName}) "${event.eventType}"`));
|
|
142
153
|
});
|
|
143
154
|
return EventConsumerResult.Finished;
|
|
144
155
|
});
|
|
@@ -230,4 +241,4 @@ export function createUseStep(ctx) {
|
|
|
230
241
|
return stepFunction;
|
|
231
242
|
};
|
|
232
243
|
}
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFnQyxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxnQkFBZ0IsR0FFakIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUUsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFnQztJQUM1RCxPQUFPLFNBQVMsT0FBTyxDQUNyQixRQUFnQixFQUNoQixhQUFrRDtRQUVsRCx1RkFBdUY7UUFDdkYsTUFBTSxZQUFZLEdBQUcsVUFFbkIsR0FBRyxJQUFVO1lBRWIsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsYUFBYSxFQUFVLENBQUM7WUFFN0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUVuRCxNQUFNLFNBQVMsR0FBNEI7Z0JBQ3pDLElBQUksRUFBRSxNQUFNO2dCQUNaLGFBQWE7Z0JBQ2IsUUFBUTtnQkFDUixJQUFJO2FBQ0wsQ0FBQztZQUVGLHVFQUF1RTtZQUN2RSw4REFBOEQ7WUFDOUQsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvRCxTQUFTLENBQUMsT0FBTyxHQUFHLElBQW9CLENBQUM7WUFDM0MsQ0FBQztZQUVELGlFQUFpRTtZQUNqRSxNQUFNLFdBQVcsR0FBRyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLFNBQVMsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLENBQUM7WUFFRCxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVuRCxVQUFVLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFO2dCQUN0QyxhQUFhO2dCQUNiLFFBQVE7Z0JBQ1IsSUFBSTthQUNMLENBQUMsQ0FBQztZQUNILEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDWCxxR0FBcUc7b0JBQ3JHLHlEQUF5RDtvQkFDekQsMkVBQTJFO29CQUMzRSx1RkFBdUY7b0JBQ3ZGLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7d0JBQ3pCLEdBQUcsQ0FBQyxlQUFlLENBQ2pCLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDN0QsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLG1CQUFtQixDQUFDLFdBQVcsQ0FBQztnQkFDekMsQ0FBQztnQkFFRCxVQUFVLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFO29CQUNqRCxhQUFhO29CQUNiLFFBQVE7b0JBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNyQixxQkFBcUIsRUFBRSxLQUFLLENBQUMsYUFBYTtvQkFDMUMsT0FBTyxFQUFFLGFBQWEsS0FBSyxLQUFLLENBQUMsYUFBYTtvQkFDOUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2lCQUMzQixDQUFDLENBQUM7Z0JBRUgsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLGFBQWEsRUFBRSxDQUFDO29CQUMxQyx1RkFBdUY7b0JBQ3ZGLE9BQU8sbUJBQW1CLENBQUMsV0FBVyxDQUFDO2dCQUN6QyxDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxjQUFjLEVBQUUsQ0FBQztvQkFDdkMsMEVBQTBFO29CQUMxRSwyRUFBMkU7b0JBQzNFLDBDQUEwQztvQkFDMUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO3dCQUM1Qyw4REFBOEQ7d0JBQzlELGdFQUFnRTt3QkFDaEUsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQzVDLE1BQU0sQ0FDSixJQUFJLG9CQUFvQixDQUN0Qiw2QkFBNkIsYUFBYSxLQUFLLFFBQVEsNkNBQTZDLENBQ3JHLENBQ0YsQ0FBQzt3QkFDSixDQUFDLENBQUMsQ0FBQzt3QkFDSCxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztvQkFDdEMsQ0FBQztvQkFDRCxTQUFTLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDakMsc0VBQXNFO29CQUN0RSxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFLENBQUM7b0JBQ3ZDLHNGQUFzRjtvQkFDdEYseUZBQXlGO29CQUN6RixnQ0FBZ0M7b0JBQ2hDLE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO2dCQUN0QyxDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxlQUFlLEVBQUUsQ0FBQztvQkFDeEMsZ0ZBQWdGO29CQUNoRixPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssYUFBYSxFQUFFLENBQUM7b0JBQ3RDLDBEQUEwRDtvQkFDMUQsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ2pELHFEQUFxRDtvQkFDckQsZ0VBQWdFO29CQUNoRSxnRUFBZ0U7b0JBQ2hFLDhEQUE4RDtvQkFDOUQsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDbEQsSUFBSSxDQUFDOzRCQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sZ0JBQWdCLENBQ3JDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUNyQixHQUFHLENBQUMsS0FBSyxFQUNULEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLEdBQUcsQ0FBQyxVQUFVLENBQ2YsQ0FBQzs0QkFDRixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ25CLENBQUM7d0JBQUMsT0FBTyxVQUFVLEVBQUUsQ0FBQzs0QkFDcEIsNERBQTREOzRCQUM1RCwwREFBMEQ7NEJBQzFELHFEQUFxRDs0QkFDckQsVUFBVSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRTtnQ0FDdEQsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO2dDQUNsQyxLQUFLLEVBQ0gsVUFBVSxZQUFZLEtBQUs7b0NBQ3pCLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztvQ0FDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7NkJBQ3pCLENBQUMsQ0FBQzs0QkFDSCxNQUFNLENBQ0osSUFBSSxVQUFVLENBQ1osaUNBQ0UsVUFBVSxZQUFZLEtBQUs7Z0NBQ3pCLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztnQ0FDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3ZCLEVBQUUsQ0FDSCxDQUNGLENBQUM7d0JBQ0osQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDekMsMERBQTBEO29CQUMxRCxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFFakQscUVBQXFFO29CQUNyRSxvRUFBb0U7b0JBQ3BFLDBEQUEwRDtvQkFDMUQsNERBQTREO29CQUM1RCxpRUFBaUU7b0JBQ2pFLG1FQUFtRTtvQkFDbkUsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3hCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQ2xELElBQUksQ0FBQzs0QkFDSCxNQUFNLGNBQWMsR0FBRyxNQUFNLHNCQUFzQixDQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFDdEIsR0FBRyxDQUFDLEtBQUssRUFDVCxHQUFHLENBQUMsYUFBYSxFQUNqQixHQUFHLENBQUMsVUFBVSxDQUNmLENBQUM7NEJBQ0YsT0FBTyxDQUFDLGNBQXdCLENBQUMsQ0FBQzt3QkFDcEMsQ0FBQzt3QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDOzRCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDaEIsQ0FBQztnQ0FBUyxDQUFDOzRCQUNULEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO3dCQUMxQixDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO2dCQUN0QyxDQUFDO2dCQUVELHNHQUFzRztnQkFDdEcsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzVDLEdBQUcsQ0FBQyxlQUFlLENBQ2pCLElBQUksb0JBQW9CLENBQ3RCLGtDQUFrQyxhQUFhLFdBQVcsUUFBUSxNQUFNLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FDM0YsQ0FDRixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYscUVBQXFFO1FBQ3JFLCtFQUErRTtRQUMvRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRTtZQUMxQyxLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDLENBQUM7UUFFSCwwRUFBMEU7UUFDMUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFO1lBQzVDLEtBQUssRUFBRSxRQUFRO1lBQ2YsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCx5REFBeUQ7UUFDekQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRTtnQkFDckQsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsa0VBQWtFO1FBQ2xFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsb0VBQW9FO1FBQ3BFLG1FQUFtRTtRQUNuRSwrREFBK0Q7UUFDL0QsK0RBQStEO1FBQy9ELHVEQUF1RDtRQUN2RCxFQUFFO1FBQ0Ysc0VBQXNFO1FBQ3RFLDhCQUE4QjtRQUM5QixnRUFBZ0U7UUFDaEUsbUVBQW1FO1FBQ25FLHlFQUF5RTtRQUN6RSxnRUFBZ0U7UUFDaEUsb0VBQW9FO1FBQ3BFLG9FQUFvRTtRQUNwRSxtRUFBbUU7UUFDbkUscUVBQXFFO1FBQ3JFLHNFQUFzRTtRQUN0RSxvRUFBb0U7UUFDcEUsa0VBQWtFO1FBQ2xFLCtEQUErRDtRQUMvRCxxRUFBcUU7UUFDckUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFO1lBQzFDLEtBQUssRUFBRSxVQUVMLE9BQWdCLEVBQ2hCLEdBQUcsV0FBc0I7Z0JBRXpCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDeEMsSUFBSSxFQUNKLE9BQU8sRUFDUCxHQUFHLFdBQVcsQ0FDZixDQUFDO2dCQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtvQkFDckMsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFlBQVksRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7d0JBQzlDLEtBQUssRUFBRSxhQUFhO3dCQUNwQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtvQkFDMUMsS0FBSyxFQUFFLE9BQU87b0JBQ2QsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFlBQVksRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7d0JBQzFDLEtBQUssRUFBRSxXQUFXO3dCQUNsQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhdGFsRXJyb3IsIFdvcmtmbG93UnVudGltZUVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgeyB3aXRoUmVzb2x2ZXJzIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB7IEV2ZW50Q29uc3VtZXJSZXN1bHQgfSBmcm9tICcuL2V2ZW50cy1jb25zdW1lci5qcyc7XG5pbXBvcnQgeyB0eXBlIFN0ZXBJbnZvY2F0aW9uUXVldWVJdGVtLCBXb3JrZmxvd1N1c3BlbnNpb24gfSBmcm9tICcuL2dsb2JhbC5qcyc7XG5pbXBvcnQgeyBzdGVwTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuanMnO1xuaW1wb3J0IHtcbiAgc2NoZWR1bGVXaGVuSWRsZSxcbiAgdHlwZSBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG59IGZyb20gJy4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6YWJsZSB9IGZyb20gJy4vc2NoZW1hcy5qcyc7XG5pbXBvcnQgeyBoeWRyYXRlU3RlcEVycm9yLCBoeWRyYXRlU3RlcFJldHVyblZhbHVlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzZVN0ZXAoY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVN0ZXA8QXJncyBleHRlbmRzIFNlcmlhbGl6YWJsZVtdLCBSZXN1bHQ+KFxuICAgIHN0ZXBOYW1lOiBzdHJpbmcsXG4gICAgY2xvc3VyZVZhcnNGbj86ICgpID0+IFJlY29yZDxzdHJpbmcsIFNlcmlhbGl6YWJsZT5cbiAgKSB7XG4gICAgLy8gVXNlIGEgcmVndWxhciBmdW5jdGlvbiAobm90IGFycm93KSBzbyB3ZSBjYW4gY2FwdHVyZSBgdGhpc2Agd2hlbiBpbnZva2VkIGFzIGEgbWV0aG9kXG4gICAgY29uc3Qgc3RlcEZ1bmN0aW9uID0gZnVuY3Rpb24gKFxuICAgICAgdGhpczogdW5rbm93bixcbiAgICAgIC4uLmFyZ3M6IEFyZ3NcbiAgICApOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgICAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlLCByZWplY3QgfSA9IHdpdGhSZXNvbHZlcnM8UmVzdWx0PigpO1xuXG4gICAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYHN0ZXBfJHtjdHguZ2VuZXJhdGVVbGlkKCl9YDtcblxuICAgICAgY29uc3QgcXVldWVJdGVtOiBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSA9IHtcbiAgICAgICAgdHlwZTogJ3N0ZXAnLFxuICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICBzdGVwTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH07XG5cbiAgICAgIC8vIENhcHR1cmUgYHRoaXNgIHZhbHVlIGZvciBtZXRob2QgaW52b2NhdGlvbnMgKGUuZy4sIE15Q2xhc3MubWV0aG9kKCkpXG4gICAgICAvLyBPbmx5IGluY2x1ZGUgaWYgYHRoaXNgIGlzIGRlZmluZWQgYW5kIG5vdCB0aGUgZ2xvYmFsIG9iamVjdFxuICAgICAgaWYgKHRoaXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzICE9PSBudWxsICYmIHRoaXMgIT09IGdsb2JhbFRoaXMpIHtcbiAgICAgICAgcXVldWVJdGVtLnRoaXNWYWwgPSB0aGlzIGFzIFNlcmlhbGl6YWJsZTtcbiAgICAgIH1cblxuICAgICAgLy8gSW52b2tlIHRoZSBjbG9zdXJlIHZhcmlhYmxlcyBmdW5jdGlvbiB0byBnZXQgdGhlIGNsb3N1cmUgc2NvcGVcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnNGbj8uKCk7XG4gICAgICBpZiAoY2xvc3VyZVZhcnMpIHtcbiAgICAgICAgcXVldWVJdGVtLmNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnM7XG4gICAgICB9XG5cbiAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLnNldChjb3JyZWxhdGlvbklkLCBxdWV1ZUl0ZW0pO1xuXG4gICAgICBzdGVwTG9nZ2VyLmRlYnVnKCdTdGVwIGNvbnN1bWVyIHNldHVwJywge1xuICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICBzdGVwTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH0pO1xuICAgICAgY3R4LmV2ZW50c0NvbnN1bWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZXZlbnRzLCBzbyB0aGlzIHN0ZXAgaGFzIGVpdGhlciBub3QgYmVlbiBydW4gb3IgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gICAgICAgICAgLy8gQ3J1Y2lhbGx5LCBpZiB3ZSBnb3QgaGVyZSwgdGhlbiB0aGlzIHN0ZXAgUHJvbWlzZSBkb2VzXG4gICAgICAgICAgLy8gbm90IHJlc29sdmUgc28gdGhhdCB0aGUgdXNlciB3b3JrZmxvdyBjb2RlIGRvZXMgbm90IHByb2NlZWQgYW55IGZ1cnRoZXIuXG4gICAgICAgICAgLy8gTm90aWZ5IHRoZSB3b3JrZmxvdyBoYW5kbGVyIHRoYXQgdGhpcyBzdGVwIGhhcyBub3QgYmVlbiBydW4gLyBoYXMgbm90IGNvbXBsZXRlZCB5ZXQuXG4gICAgICAgICAgc2NoZWR1bGVXaGVuSWRsZShjdHgsICgpID0+IHtcbiAgICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ZXBMb2dnZXIuZGVidWcoJ1N0ZXAgY29uc3VtZXIgZXZlbnQgcHJvY2Vzc2luZycsIHtcbiAgICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICAgIHN0ZXBOYW1lLFxuICAgICAgICAgIGFyZ3M6IGFyZ3Muam9pbignLCAnKSxcbiAgICAgICAgICBpbmNvbWluZ0NvcnJlbGF0aW9uSWQ6IGV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgaXNNYXRjaDogY29ycmVsYXRpb25JZCA9PT0gZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICAvLyBXZSdyZSBub3QgaW50ZXJlc3RlZCBpbiB0aGlzIGV2ZW50IC0gdGhlIGNvcnJlbGF0aW9uSWQgYmVsb25ncyB0byBhIGRpZmZlcmVudCBlbnRpdHlcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2NyZWF0ZWQnKSB7XG4gICAgICAgICAgLy8gU3RlcCBoYXMgYmVlbiBjcmVhdGVkIChyZWdpc3RlcmVkIGZvciBleGVjdXRpb24pIC0gbWFyayBhcyBoYXZpbmcgZXZlbnRcbiAgICAgICAgICAvLyBidXQga2VlcCBpbiBxdWV1ZSBzbyBzdXNwZW5zaW9uIGhhbmRsZXIga25vd3MgdG8gcXVldWUgZXhlY3V0aW9uIHdpdGhvdXRcbiAgICAgICAgICAvLyBjcmVhdGluZyBhIGR1cGxpY2F0ZSBzdGVwX2NyZWF0ZWQgZXZlbnRcbiAgICAgICAgICBjb25zdCBxdWV1ZUl0ZW0gPSBjdHguaW52b2NhdGlvbnNRdWV1ZS5nZXQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgaWYgKCFxdWV1ZUl0ZW0gfHwgcXVldWVJdGVtLnR5cGUgIT09ICdzdGVwJykge1xuICAgICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgZXZlbnQgbG9nIGNvcnJ1cHRpb24gLSBzdGVwX2NyZWF0ZWQgcmVjZWl2ZWRcbiAgICAgICAgICAgIC8vIGJ1dCB0aGUgc3RlcCB3YXMgbmV2ZXIgaW52b2tlZCBpbiB0aGUgd29ya2Zsb3cgZHVyaW5nIHJlcGxheS5cbiAgICAgICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAgICAgYENvcnJ1cHRlZCBldmVudCBsb2c6IHN0ZXAgJHtjb3JyZWxhdGlvbklkfSAoJHtzdGVwTmFtZX0pIGNyZWF0ZWQgYnV0IG5vdCBmb3VuZCBpbiBpbnZvY2F0aW9uIHF1ZXVlYFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIC8vIENvbnRpbnVlIHdhaXRpbmcgZm9yIHN0ZXBfc3RhcnRlZC9zdGVwX2NvbXBsZXRlZC9zdGVwX2ZhaWxlZCBldmVudHNcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnKSB7XG4gICAgICAgICAgLy8gU3RlcCB3YXMgc3RhcnRlZCAtIGRvbid0IGRvIGFueXRoaW5nLiBUaGUgc3RlcCBpcyBsZWZ0IGluIHRoZSBpbnZvY2F0aW9uUXVldWUgd2hpY2hcbiAgICAgICAgICAvLyB3aWxsIGFsbG93IGl0IHRvIGJlIHJlLWVucXVldWVkLiBXZSByZWx5IG9uIHRoZSBxdWV1ZSdzIGlkZW1wb3RlbmN5IHRvIHByZXZlbnQgaXQgZnJvbVxuICAgICAgICAgIC8vIGFjdHVhbGx5IGJlaW5nIG92ZXIgZW5xdWV1ZWQuXG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9yZXRyeWluZycpIHtcbiAgICAgICAgICAvLyBTdGVwIGlzIGJlaW5nIHJldHJpZWQgLSBqdXN0IGNvbnN1bWUgdGhlIGV2ZW50IGFuZCB3YWl0IGZvciBuZXh0IHN0ZXBfc3RhcnRlZFxuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkNvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfZmFpbGVkJykge1xuICAgICAgICAgIC8vIFRlcm1pbmFsIHN0YXRlIC0gd2UgY2FuIHJlbW92ZSB0aGUgaW52b2NhdGlvblF1ZXVlIGl0ZW1cbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoZXZlbnQuY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgLy8gU3RlcCBmYWlsZWQgLSBjaGFpbiB0aHJvdWdoIHByb21pc2VRdWV1ZSB0byBlbnN1cmVcbiAgICAgICAgICAvLyBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9mIGFsbCBwcm9taXNlIHJlc29sdXRpb25zL3JlamVjdGlvbnMuXG4gICAgICAgICAgLy8gSHlkcmF0ZSB0aGUgc2VyaWFsaXplZCB0aHJvd24gdmFsdWUgZnJvbSB0aGUgZXZlbnQgbG9nIHNvIHRoZVxuICAgICAgICAgIC8vIG9yaWdpbmFsIHR5cGUgaWRlbnRpdHkgYW5kIGN1c3RvbSBwcm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQuXG4gICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBoeWRyYXRlZCA9IGF3YWl0IGh5ZHJhdGVTdGVwRXJyb3IoXG4gICAgICAgICAgICAgICAgZXZlbnQuZXZlbnREYXRhLmVycm9yLFxuICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZWplY3QoaHlkcmF0ZWQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoaHlkcmF0ZUVycikge1xuICAgICAgICAgICAgICAvLyBJZiBoeWRyYXRpb24gZmFpbHMgZm9yIGFueSByZWFzb24sIGZhbGwgYmFjayB0byBhIGdlbmVyaWNcbiAgICAgICAgICAgICAgLy8gRmF0YWxFcnJvciBzbyB0aGUgd29ya2Zsb3cgZG9lc24ndCBoYW5nLiBUaGlzIHNob3VsZCBiZVxuICAgICAgICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSBpbiBwcmFjdGljZSAoY29ycnVwdGVkIGV2ZW50IGRhdGEpLlxuICAgICAgICAgICAgICBzdGVwTG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gaHlkcmF0ZSBzdGVwX2ZhaWxlZCBlcnJvcicsIHtcbiAgICAgICAgICAgICAgICBjb3JyZWxhdGlvbklkOiBldmVudC5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgICAgICAgIGVycm9yOlxuICAgICAgICAgICAgICAgICAgaHlkcmF0ZUVyciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICAgICAgICAgID8gaHlkcmF0ZUVyci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIDogU3RyaW5nKGh5ZHJhdGVFcnIpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBGYXRhbEVycm9yKFxuICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBoeWRyYXRlIHN0ZXAgZXJyb3I6ICR7XG4gICAgICAgICAgICAgICAgICAgIGh5ZHJhdGVFcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgID8gaHlkcmF0ZUVyci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmcoaHlkcmF0ZUVycilcbiAgICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJykge1xuICAgICAgICAgIC8vIFRlcm1pbmFsIHN0YXRlIC0gd2UgY2FuIHJlbW92ZSB0aGUgaW52b2NhdGlvblF1ZXVlIGl0ZW1cbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoZXZlbnQuY29ycmVsYXRpb25JZCk7XG5cbiAgICAgICAgICAvLyBTdGVwIGhhcyBjb21wbGV0ZWQsIHNvIHJlc29sdmUgdGhlIFByb21pc2Ugd2l0aCB0aGUgY2FjaGVkIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGUgaHlkcmF0aW9uIGlzIGFzeW5jIChlLmcuLCBkZWNyeXB0aW9uKSwgc28gd2UgY2hhaW4gaXQgdGhyb3VnaFxuICAgICAgICAgIC8vIGN0eC5wcm9taXNlUXVldWUgdG8gZW5zdXJlIHRoYXQgZXZlbiBpZiBkZXNlcmlhbGl6YXRpb25cbiAgICAgICAgICAvLyB0YWtlcyB2YXJpYWJsZSB0aW1lLCBwcm9taXNlcyByZXNvbHZlIGluIGV2ZW50IGxvZyBvcmRlci5cbiAgICAgICAgICAvLyBFYWNoIHN0ZXAncyBoeWRyYXRpb24gKyByZXNvbHZlIHdhaXRzIGZvciBhbGwgcHJpb3IgaHlkcmF0aW9uc1xuICAgICAgICAgIC8vIHRvIGNvbXBsZXRlIGJlZm9yZSBleGVjdXRpbmcsIHByZXNlcnZpbmcgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZy5cbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkUmVzdWx0ID0gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEucmVzdWx0LFxuICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXNvbHZlKGh5ZHJhdGVkUmVzdWx0IGFzIFJlc3VsdCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgY3R4LnBlbmRpbmdEZWxpdmVyaWVzLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbiB1bmV4cGVjdGVkIGV2ZW50IHR5cGUgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoaXMgZXZlbnQgbG9nIGxvb2tzIGNvcnJ1cHRlZC4gTGV0J3MgZmFpbCBpbW1lZGlhdGVseS5cbiAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBXb3JrZmxvd1J1bnRpbWVFcnJvcihcbiAgICAgICAgICAgICAgYFVuZXhwZWN0ZWQgZXZlbnQgdHlwZSBmb3Igc3RlcCAke2NvcnJlbGF0aW9uSWR9IChuYW1lOiAke3N0ZXBOYW1lfSkgXCIke2V2ZW50LmV2ZW50VHlwZX1cImBcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB0aGUgXCJuYW1lXCIgcHJvcGVydHkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgc3RlcCBmdW5jdGlvbiBuYW1lXG4gICAgLy8gRXh0cmFjdCBmdW5jdGlvbiBuYW1lIGZyb20gc3RlcE5hbWUgKGZvcm1hdDogXCJzdGVwLy9maWxlcGF0aC8vZnVuY3Rpb25OYW1lXCIpXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3RlcE5hbWUuc3BsaXQoJy8vJykucG9wKCk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb25OYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHRoZSBzdGVwIGZ1bmN0aW9uIGlkZW50aWZpZXIgdG8gdGhlIHN0ZXAgZnVuY3Rpb24gZm9yIHNlcmlhbGl6YXRpb25cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RlcEZ1bmN0aW9uLCAnc3RlcElkJywge1xuICAgICAgdmFsdWU6IHN0ZXBOYW1lLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgdGhlIGNsb3N1cmUgdmFyaWFibGVzIGZ1bmN0aW9uIGZvciBzZXJpYWxpemF0aW9uXG4gICAgaWYgKGNsb3N1cmVWYXJzRm4pIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdGVwRnVuY3Rpb24sICdfX2Nsb3N1cmVWYXJzRm4nLCB7XG4gICAgICAgIHZhbHVlOiBjbG9zdXJlVmFyc0ZuLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGUgYC5iaW5kYCBzbyB0aGUgYm91bmQgZnVuY3Rpb24gcHJlc2VydmVzIHRoZSBzdGVwIHByb3h5XG4gICAgLy8gbWV0YWRhdGEgdGhhdCBgZ2V0U3RlcEZ1bmN0aW9uUmVkdWNlcmAgcmVsaWVzIG9uIGZvciBzZXJpYWxpemF0aW9uLlxuICAgIC8vIFdpdGhvdXQgdGhpcyBvdmVycmlkZSwgYEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kYCB3b3VsZCByZXR1cm4gYSBuZXdcbiAgICAvLyBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBgc3RlcElkYCwgYF9fY2xvc3VyZVZhcnNGbmAsIG9yIGFueVxuICAgIC8vIG90aGVyIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW5hbCBwcm94eSDigJQgc28gdGhlIFN0ZXBGdW5jdGlvblxuICAgIC8vIHJlZHVjZXIgd291bGQgcmVmdXNlIHRvIHNlcmlhbGl6ZSBpdCAoaXQnZCBsb29rIGxpa2UgYSBwbGFpblxuICAgIC8vIGZ1bmN0aW9uKSwgYW5kIGEgYHVzZVN0ZXAoLi4uKS5iaW5kKHRoaXMpYCBwcm94eSB0aGF0IGZsb3dlZFxuICAgIC8vIHRocm91Z2ggd29ya2Zsb3cgc2VyaWFsaXphdGlvbiB3b3VsZCBzaWxlbnRseSBicmVhay5cbiAgICAvL1xuICAgIC8vIFRoZSBvdmVycmlkZSBzdGFzaGVzIHRocmVlIHBpZWNlcyBvZiBzdGF0ZSBvbiB0aGUgYm91bmQgZnVuY3Rpb24gc29cbiAgICAvLyB0aGUgcm91bmQgdHJpcCBpcyBmYWl0aGZ1bDpcbiAgICAvLyAgIC0gYHN0ZXBJZGAgICAgICAgICAgICAg4oCUIGFscmVhZHkgc2V0IG9uIHRoZSBvcmlnaW5hbCBwcm94eS5cbiAgICAvLyAgIC0gYF9fY2xvc3VyZVZhcnNGbmAgICAg4oCUIG9ubHkgd2hlbiB0aGUgb3JpZ2luYWwgcHJveHkgaGFkIG9uZS5cbiAgICAvLyAgIC0gYF9fYm91bmRUaGlzYCAgICAgICAg4oCUIHRoZSByZWNlaXZlciBwYXNzZWQgdG8gYC5iaW5kKHRoaXNBcmcsIOKApilgLlxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cyBzZXQgKGV2ZW4gd2hlbiBgdGhpc0FyZ2AgaXNcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbnVsbGAvYHVuZGVmaW5lZGApIHNvIHRoZSByZWR1Y2VyIGNhblxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Rpbmd1aXNoIFwid2FzIGJvdW5kXCIgZnJvbSBcIndhc24ndFwiLlxuICAgIC8vICAgLSBgX19ib3VuZEFyZ3NgICAgICAgICDigJQgb25seSB3aGVuIHRoZSB1c2VyIHN1cHBsaWVkIHByZWZpbGxlZFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyAoYC5iaW5kKHRoaXNBcmcsIHgsIHkpYCkuIFRoZVxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXQyBwbHVnaW4gb25seSBldmVyIGVtaXRzIGAuYmluZCh0aGlzKWBcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSwgc28gdGhpcyBpcyByYXJlIGluIHByYWN0aWNlOyB3ZVxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIGNhcHR1cmUgaXQgc28gdGhlIHBhcnRpYWwgYXJnc1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnZpdmUgc2VyaWFsaXphdGlvbiByYXRoZXIgdGhhblxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbGVudGx5IGRpc2FwcGVhcmluZyBvbiB0aGUgc3RlcCBzaWRlLlxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdGVwRnVuY3Rpb24sICdiaW5kJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIChcbiAgICAgICAgdGhpczogdHlwZW9mIHN0ZXBGdW5jdGlvbixcbiAgICAgICAgdGhpc0FyZzogdW5rbm93bixcbiAgICAgICAgLi4ucGFydGlhbEFyZ3M6IHVua25vd25bXVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGJvdW5kID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuY2FsbChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHRoaXNBcmcsXG4gICAgICAgICAgLi4ucGFydGlhbEFyZ3NcbiAgICAgICAgKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCAnc3RlcElkJywge1xuICAgICAgICAgIHZhbHVlOiBzdGVwTmFtZSxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjbG9zdXJlVmFyc0ZuKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCAnX19jbG9zdXJlVmFyc0ZuJywge1xuICAgICAgICAgICAgdmFsdWU6IGNsb3N1cmVWYXJzRm4sXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCAnX19ib3VuZFRoaXMnLCB7XG4gICAgICAgICAgdmFsdWU6IHRoaXNBcmcsXG4gICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocGFydGlhbEFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZCwgJ19fYm91bmRBcmdzJywge1xuICAgICAgICAgICAgdmFsdWU6IHBhcnRpYWxBcmdzLFxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBib3VuZDtcbiAgICAgIH0sXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RlcEZ1bmN0aW9uO1xuICB9O1xufVxuIl19
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFnQyxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxnQkFBZ0IsR0FFakIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUUsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFnQztJQUM1RCxPQUFPLFNBQVMsT0FBTyxDQUNyQixRQUFnQixFQUNoQixhQUFrRDtRQUVsRCx1RkFBdUY7UUFDdkYsTUFBTSxZQUFZLEdBQUcsVUFFbkIsR0FBRyxJQUFVO1lBRWIsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsYUFBYSxFQUFVLENBQUM7WUFFN0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUVuRCxNQUFNLFNBQVMsR0FBNEI7Z0JBQ3pDLElBQUksRUFBRSxNQUFNO2dCQUNaLGFBQWE7Z0JBQ2IsUUFBUTtnQkFDUixJQUFJO2FBQ0wsQ0FBQztZQUVGLHVFQUF1RTtZQUN2RSw4REFBOEQ7WUFDOUQsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvRCxTQUFTLENBQUMsT0FBTyxHQUFHLElBQW9CLENBQUM7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QWMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7d0JBQzlDLEtBQUssRUFBRSxhQUFhO3dCQUNwQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtvQkFDMUMsS0FBSyxFQUFFLE9BQU87b0JBQ2QsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFlBQVksRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7d0JBQzFDLEtBQUssRUFBRSxXQUFXO3dCQUNsQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcnJ1cHRlZEV2ZW50TG9nRXJyb3IsIEZhdGFsRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IHdpdGhSZXNvbHZlcnMgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB7IHR5cGUgU3RlcEludm9jYXRpb25RdWV1ZUl0ZW0sIFdvcmtmbG93U3VzcGVuc2lvbiB9IGZyb20gJy4vZ2xvYmFsLmpzJztcbmltcG9ydCB7IHN0ZXBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBzY2hlZHVsZVdoZW5JZGxlLFxuICB0eXBlIFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbn0gZnJvbSAnLi9wcml2YXRlLmpzJztcbmltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlIH0gZnJvbSAnLi9zY2hlbWFzLmpzJztcbmltcG9ydCB7IGh5ZHJhdGVTdGVwRXJyb3IsIGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWUgfSBmcm9tICcuL3NlcmlhbGl6YXRpb24uanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXNlU3RlcChjdHg6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gdXNlU3RlcDxBcmdzIGV4dGVuZHMgU2VyaWFsaXphYmxlW10sIFJlc3VsdD4oXG4gICAgc3RlcE5hbWU6IHN0cmluZyxcbiAgICBjbG9zdXJlVmFyc0ZuPzogKCkgPT4gUmVjb3JkPHN0cmluZywgU2VyaWFsaXphYmxlPlxuICApIHtcbiAgICAvLyBVc2UgYSByZWd1bGFyIGZ1bmN0aW9uIChub3QgYXJyb3cpIHNvIHdlIGNhbiBjYXB0dXJlIGB0aGlzYCB3aGVuIGludm9rZWQgYXMgYSBtZXRob2RcbiAgICBjb25zdCBzdGVwRnVuY3Rpb24gPSBmdW5jdGlvbiAoXG4gICAgICB0aGlzOiB1bmtub3duLFxuICAgICAgLi4uYXJnczogQXJnc1xuICAgICk6IFByb21pc2U8UmVzdWx0PiB7XG4gICAgICBjb25zdCB7IHByb21pc2UsIHJlc29sdmUsIHJlamVjdCB9ID0gd2l0aFJlc29sdmVyczxSZXN1bHQ+KCk7XG5cbiAgICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSBgc3RlcF8ke2N0eC5nZW5lcmF0ZVVsaWQoKX1gO1xuXG4gICAgICBjb25zdCBxdWV1ZUl0ZW06IFN0ZXBJbnZvY2F0aW9uUXVldWVJdGVtID0ge1xuICAgICAgICB0eXBlOiAnc3RlcCcsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgIHN0ZXBOYW1lLFxuICAgICAgICBhcmdzLFxuICAgICAgfTtcblxuICAgICAgLy8gQ2FwdHVyZSBgdGhpc2AgdmFsdWUgZm9yIG1ldGhvZCBpbnZvY2F0aW9ucyAoZS5nLiwgTXlDbGFzcy5tZXRob2QoKSlcbiAgICAgIC8vIE9ubHkgaW5jbHVkZSBpZiBgdGhpc2AgaXMgZGVmaW5lZCBhbmQgbm90IHRoZSBnbG9iYWwgb2JqZWN0XG4gICAgICBpZiAodGhpcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMgIT09IG51bGwgJiYgdGhpcyAhPT0gZ2xvYmFsVGhpcykge1xuICAgICAgICBxdWV1ZUl0ZW0udGhpc1ZhbCA9IHRoaXMgYXMgU2VyaWFsaXphYmxlO1xuICAgICAgfVxuXG4gICAgICAvLyBJbnZva2UgdGhlIGNsb3N1cmUgdmFyaWFibGVzIGZ1bmN0aW9uIHRvIGdldCB0aGUgY2xvc3VyZSBzY29wZVxuICAgICAgY29uc3QgY2xvc3VyZVZhcnMgPSBjbG9zdXJlVmFyc0ZuPy4oKTtcbiAgICAgIGlmIChjbG9zdXJlVmFycykge1xuICAgICAgICBxdWV1ZUl0ZW0uY2xvc3VyZVZhcnMgPSBjbG9zdXJlVmFycztcbiAgICAgIH1cblxuICAgICAgY3R4Lmludm9jYXRpb25zUXVldWUuc2V0KGNvcnJlbGF0aW9uSWQsIHF1ZXVlSXRlbSk7XG5cbiAgICAgIHN0ZXBMb2dnZXIuZGVidWcoJ1N0ZXAgY29uc3VtZXIgc2V0dXAnLCB7XG4gICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgIHN0ZXBOYW1lLFxuICAgICAgICBhcmdzLFxuICAgICAgfSk7XG4gICAgICBjdHguZXZlbnRzQ29uc3VtZXIuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgICAgLy8gV2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBldmVudHMsIHNvIHRoaXMgc3RlcCBoYXMgZWl0aGVyIG5vdCBiZWVuIHJ1biBvciBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICAgICAgICAvLyBDcnVjaWFsbHksIGlmIHdlIGdvdCBoZXJlLCB0aGVuIHRoaXMgc3RlcCBQcm9taXNlIGRvZXNcbiAgICAgICAgICAvLyBub3QgcmVzb2x2ZSBzbyB0aGF0IHRoZSB1c2VyIHdvcmtmbG93IGNvZGUgZG9lcyBub3QgcHJvY2VlZCBhbnkgZnVydGhlci5cbiAgICAgICAgICAvLyBOb3RpZnkgdGhlIHdvcmtmbG93IGhhbmRsZXIgdGhhdCB0aGlzIHN0ZXAgaGFzIG5vdCBiZWVuIHJ1biAvIGhhcyBub3QgY29tcGxldGVkIHlldC5cbiAgICAgICAgICBzY2hlZHVsZVdoZW5JZGxlKGN0eCwgKCkgPT4ge1xuICAgICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgICAgbmV3IFdvcmtmbG93U3VzcGVuc2lvbihjdHguaW52b2NhdGlvbnNRdWV1ZSwgY3R4Lmdsb2JhbFRoaXMpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RlcExvZ2dlci5kZWJ1ZygnU3RlcCBjb25zdW1lciBldmVudCBwcm9jZXNzaW5nJywge1xuICAgICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgc3RlcE5hbWUsXG4gICAgICAgICAgYXJnczogYXJncy5qb2luKCcsICcpLFxuICAgICAgICAgIGluY29taW5nQ29ycmVsYXRpb25JZDogZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgICBpc01hdGNoOiBjb3JyZWxhdGlvbklkID09PSBldmVudC5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZXZlbnQuY29ycmVsYXRpb25JZCAhPT0gY29ycmVsYXRpb25JZCkge1xuICAgICAgICAgIC8vIFdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluIHRoaXMgZXZlbnQgLSB0aGUgY29ycmVsYXRpb25JZCBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IGVudGl0eVxuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZlbnRTdGVwTmFtZSA9XG4gICAgICAgICAgJ2V2ZW50RGF0YScgaW4gZXZlbnQgJiZcbiAgICAgICAgICBldmVudC5ldmVudERhdGEgJiZcbiAgICAgICAgICAnc3RlcE5hbWUnIGluIGV2ZW50LmV2ZW50RGF0YVxuICAgICAgICAgICAgPyBldmVudC5ldmVudERhdGEuc3RlcE5hbWVcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnRTdGVwTmFtZSA9PT0gJ3N0cmluZycgJiYgZXZlbnRTdGVwTmFtZSAhPT0gc3RlcE5hbWUpIHtcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBDb3JydXB0ZWRFdmVudExvZ0Vycm9yKFxuICAgICAgICAgICAgICAgIGBDb3JydXB0ZWQgZXZlbnQgbG9nOiBzdGVwIGV2ZW50ICR7ZXZlbnQuZXZlbnRUeXBlfSBmb3IgJHtjb3JyZWxhdGlvbklkfSBiZWxvbmdzIHRvIFwiJHtldmVudFN0ZXBOYW1lfVwiLCBidXQgdGhlIGN1cnJlbnQgc3RlcCBjb25zdW1lciBpcyBcIiR7c3RlcE5hbWV9XCJgXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9jcmVhdGVkJykge1xuICAgICAgICAgIC8vIFN0ZXAgaGFzIGJlZW4gY3JlYXRlZCAocmVnaXN0ZXJlZCBmb3IgZXhlY3V0aW9uKSAtIG1hcmsgYXMgaGF2aW5nIGV2ZW50XG4gICAgICAgICAgLy8gYnV0IGtlZXAgaW4gcXVldWUgc28gc3VzcGVuc2lvbiBoYW5kbGVyIGtub3dzIHRvIHF1ZXVlIGV4ZWN1dGlvbiB3aXRob3V0XG4gICAgICAgICAgLy8gY3JlYXRpbmcgYSBkdXBsaWNhdGUgc3RlcF9jcmVhdGVkIGV2ZW50XG4gICAgICAgICAgY29uc3QgcXVldWVJdGVtID0gY3R4Lmludm9jYXRpb25zUXVldWUuZ2V0KGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAgIGlmICghcXVldWVJdGVtIHx8IHF1ZXVlSXRlbS50eXBlICE9PSAnc3RlcCcpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIGV2ZW50IGxvZyBjb3JydXB0aW9uIC0gc3RlcF9jcmVhdGVkIHJlY2VpdmVkXG4gICAgICAgICAgICAvLyBidXQgdGhlIHN0ZXAgd2FzIG5ldmVyIGludm9rZWQgaW4gdGhlIHdvcmtmbG93IGR1cmluZyByZXBsYXkuXG4gICAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBDb3JydXB0ZWRFdmVudExvZ0Vycm9yKFxuICAgICAgICAgICAgICAgICAgYENvcnJ1cHRlZCBldmVudCBsb2c6IHN0ZXAgJHtjb3JyZWxhdGlvbklkfSAoJHtzdGVwTmFtZX0pIGNyZWF0ZWQgYnV0IG5vdCBmb3VuZCBpbiBpbnZvY2F0aW9uIHF1ZXVlYFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIC8vIENvbnRpbnVlIHdhaXRpbmcgZm9yIHN0ZXBfc3RhcnRlZC9zdGVwX2NvbXBsZXRlZC9zdGVwX2ZhaWxlZCBldmVudHNcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnKSB7XG4gICAgICAgICAgLy8gU3RlcCB3YXMgc3RhcnRlZCAtIGRvbid0IGRvIGFueXRoaW5nLiBUaGUgc3RlcCBpcyBsZWZ0IGluIHRoZSBpbnZvY2F0aW9uUXVldWUgd2hpY2hcbiAgICAgICAgICAvLyB3aWxsIGFsbG93IGl0IHRvIGJlIHJlLWVucXVldWVkLiBXZSByZWx5IG9uIHRoZSBxdWV1ZSdzIGlkZW1wb3RlbmN5IHRvIHByZXZlbnQgaXQgZnJvbVxuICAgICAgICAgIC8vIGFjdHVhbGx5IGJlaW5nIG92ZXIgZW5xdWV1ZWQuXG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9yZXRyeWluZycpIHtcbiAgICAgICAgICAvLyBTdGVwIGlzIGJlaW5nIHJldHJpZWQgLSBqdXN0IGNvbnN1bWUgdGhlIGV2ZW50IGFuZCB3YWl0IGZvciBuZXh0IHN0ZXBfc3RhcnRlZFxuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkNvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfZmFpbGVkJykge1xuICAgICAgICAgIC8vIFRlcm1pbmFsIHN0YXRlIC0gd2UgY2FuIHJlbW92ZSB0aGUgaW52b2NhdGlvblF1ZXVlIGl0ZW1cbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoZXZlbnQuY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgLy8gU3RlcCBmYWlsZWQgLSBjaGFpbiB0aHJvdWdoIHByb21pc2VRdWV1ZSB0byBlbnN1cmVcbiAgICAgICAgICAvLyBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9mIGFsbCBwcm9taXNlIHJlc29sdXRpb25zL3JlamVjdGlvbnMuXG4gICAgICAgICAgLy8gSHlkcmF0ZSB0aGUgc2VyaWFsaXplZCB0aHJvd24gdmFsdWUgZnJvbSB0aGUgZXZlbnQgbG9nIHNvIHRoZVxuICAgICAgICAgIC8vIG9yaWdpbmFsIHR5cGUgaWRlbnRpdHkgYW5kIGN1c3RvbSBwcm9wZXJ0aWVzIGFyZSBwcmVzZXJ2ZWQuXG4gICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBoeWRyYXRlZCA9IGF3YWl0IGh5ZHJhdGVTdGVwRXJyb3IoXG4gICAgICAgICAgICAgICAgZXZlbnQuZXZlbnREYXRhLmVycm9yLFxuICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZWplY3QoaHlkcmF0ZWQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoaHlkcmF0ZUVycikge1xuICAgICAgICAgICAgICAvLyBJZiBoeWRyYXRpb24gZmFpbHMgZm9yIGFueSByZWFzb24sIGZhbGwgYmFjayB0byBhIGdlbmVyaWNcbiAgICAgICAgICAgICAgLy8gRmF0YWxFcnJvciBzbyB0aGUgd29ya2Zsb3cgZG9lc24ndCBoYW5nLiBUaGlzIHNob3VsZCBiZVxuICAgICAgICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSBpbiBwcmFjdGljZSAoY29ycnVwdGVkIGV2ZW50IGRhdGEpLlxuICAgICAgICAgICAgICBzdGVwTG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gaHlkcmF0ZSBzdGVwX2ZhaWxlZCBlcnJvcicsIHtcbiAgICAgICAgICAgICAgICBjb3JyZWxhdGlvbklkOiBldmVudC5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgICAgICAgIGVycm9yOlxuICAgICAgICAgICAgICAgICAgaHlkcmF0ZUVyciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICAgICAgICAgID8gaHlkcmF0ZUVyci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIDogU3RyaW5nKGh5ZHJhdGVFcnIpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBGYXRhbEVycm9yKFxuICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBoeWRyYXRlIHN0ZXAgZXJyb3I6ICR7XG4gICAgICAgICAgICAgICAgICAgIGh5ZHJhdGVFcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgID8gaHlkcmF0ZUVyci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmcoaHlkcmF0ZUVycilcbiAgICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJykge1xuICAgICAgICAgIC8vIFRlcm1pbmFsIHN0YXRlIC0gd2UgY2FuIHJlbW92ZSB0aGUgaW52b2NhdGlvblF1ZXVlIGl0ZW1cbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoZXZlbnQuY29ycmVsYXRpb25JZCk7XG5cbiAgICAgICAgICAvLyBTdGVwIGhhcyBjb21wbGV0ZWQsIHNvIHJlc29sdmUgdGhlIFByb21pc2Ugd2l0aCB0aGUgY2FjaGVkIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGUgaHlkcmF0aW9uIGlzIGFzeW5jIChlLmcuLCBkZWNyeXB0aW9uKSwgc28gd2UgY2hhaW4gaXQgdGhyb3VnaFxuICAgICAgICAgIC8vIGN0eC5wcm9taXNlUXVldWUgdG8gZW5zdXJlIHRoYXQgZXZlbiBpZiBkZXNlcmlhbGl6YXRpb25cbiAgICAgICAgICAvLyB0YWtlcyB2YXJpYWJsZSB0aW1lLCBwcm9taXNlcyByZXNvbHZlIGluIGV2ZW50IGxvZyBvcmRlci5cbiAgICAgICAgICAvLyBFYWNoIHN0ZXAncyBoeWRyYXRpb24gKyByZXNvbHZlIHdhaXRzIGZvciBhbGwgcHJpb3IgaHlkcmF0aW9uc1xuICAgICAgICAgIC8vIHRvIGNvbXBsZXRlIGJlZm9yZSBleGVjdXRpbmcsIHByZXNlcnZpbmcgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZy5cbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkUmVzdWx0ID0gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEucmVzdWx0LFxuICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXNvbHZlKGh5ZHJhdGVkUmVzdWx0IGFzIFJlc3VsdCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgY3R4LnBlbmRpbmdEZWxpdmVyaWVzLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbiB1bmV4cGVjdGVkIGV2ZW50IHR5cGUgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoaXMgZXZlbnQgbG9nIGxvb2tzIGNvcnJ1cHRlZC4gTGV0J3MgZmFpbCBpbW1lZGlhdGVseS5cbiAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBDb3JydXB0ZWRFdmVudExvZ0Vycm9yKFxuICAgICAgICAgICAgICBgVW5leHBlY3RlZCBldmVudCB0eXBlIGZvciBzdGVwICR7Y29ycmVsYXRpb25JZH0gKG5hbWU6ICR7c3RlcE5hbWV9KSBcIiR7ZXZlbnQuZXZlbnRUeXBlfVwiYFxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgLy8gRW5zdXJlIHRoZSBcIm5hbWVcIiBwcm9wZXJ0eSBtYXRjaGVzIHRoZSBvcmlnaW5hbCBzdGVwIGZ1bmN0aW9uIG5hbWVcbiAgICAvLyBFeHRyYWN0IGZ1bmN0aW9uIG5hbWUgZnJvbSBzdGVwTmFtZSAoZm9ybWF0OiBcInN0ZXAvL2ZpbGVwYXRoLy9mdW5jdGlvbk5hbWVcIilcbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBzdGVwTmFtZS5zcGxpdCgnLy8nKS5wb3AoKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RlcEZ1bmN0aW9uLCAnbmFtZScsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbk5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgdGhlIHN0ZXAgZnVuY3Rpb24gaWRlbnRpZmllciB0byB0aGUgc3RlcCBmdW5jdGlvbiBmb3Igc2VyaWFsaXphdGlvblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdGVwRnVuY3Rpb24sICdzdGVwSWQnLCB7XG4gICAgICB2YWx1ZTogc3RlcE5hbWUsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBTdG9yZSB0aGUgY2xvc3VyZSB2YXJpYWJsZXMgZnVuY3Rpb24gZm9yIHNlcmlhbGl6YXRpb25cbiAgICBpZiAoY2xvc3VyZVZhcnNGbikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ19fY2xvc3VyZVZhcnNGbicsIHtcbiAgICAgICAgdmFsdWU6IGNsb3N1cmVWYXJzRm4sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZSBgLmJpbmRgIHNvIHRoZSBib3VuZCBmdW5jdGlvbiBwcmVzZXJ2ZXMgdGhlIHN0ZXAgcHJveHlcbiAgICAvLyBtZXRhZGF0YSB0aGF0IGBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyYCByZWxpZXMgb24gZm9yIHNlcmlhbGl6YXRpb24uXG4gICAgLy8gV2l0aG91dCB0aGlzIG92ZXJyaWRlLCBgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRgIHdvdWxkIHJldHVybiBhIG5ld1xuICAgIC8vIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCBpbmhlcml0IGBzdGVwSWRgLCBgX19jbG9zdXJlVmFyc0ZuYCwgb3IgYW55XG4gICAgLy8gb3RoZXIgb3duIHByb3BlcnRpZXMgb2YgdGhlIG9yaWdpbmFsIHByb3h5IOKAlCBzbyB0aGUgU3RlcEZ1bmN0aW9uXG4gICAgLy8gcmVkdWNlciB3b3VsZCByZWZ1c2UgdG8gc2VyaWFsaXplIGl0IChpdCdkIGxvb2sgbGlrZSBhIHBsYWluXG4gICAgLy8gZnVuY3Rpb24pLCBhbmQgYSBgdXNlU3RlcCguLi4pLmJpbmQodGhpcylgIHByb3h5IHRoYXQgZmxvd2VkXG4gICAgLy8gdGhyb3VnaCB3b3JrZmxvdyBzZXJpYWxpemF0aW9uIHdvdWxkIHNpbGVudGx5IGJyZWFrLlxuICAgIC8vXG4gICAgLy8gVGhlIG92ZXJyaWRlIHN0YXNoZXMgdGhyZWUgcGllY2VzIG9mIHN0YXRlIG9uIHRoZSBib3VuZCBmdW5jdGlvbiBzb1xuICAgIC8vIHRoZSByb3VuZCB0cmlwIGlzIGZhaXRoZnVsOlxuICAgIC8vICAgLSBgc3RlcElkYCAgICAgICAgICAgICDigJQgYWxyZWFkeSBzZXQgb24gdGhlIG9yaWdpbmFsIHByb3h5LlxuICAgIC8vICAgLSBgX19jbG9zdXJlVmFyc0ZuYCAgICDigJQgb25seSB3aGVuIHRoZSBvcmlnaW5hbCBwcm94eSBoYWQgb25lLlxuICAgIC8vICAgLSBgX19ib3VuZFRoaXNgICAgICAgICDigJQgdGhlIHJlY2VpdmVyIHBhc3NlZCB0byBgLmJpbmQodGhpc0FyZywg4oCmKWAuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzIHNldCAoZXZlbiB3aGVuIGB0aGlzQXJnYCBpc1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBudWxsYC9gdW5kZWZpbmVkYCkgc28gdGhlIHJlZHVjZXIgY2FuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluZ3Vpc2ggXCJ3YXMgYm91bmRcIiBmcm9tIFwid2Fzbid0XCIuXG4gICAgLy8gICAtIGBfX2JvdW5kQXJnc2AgICAgICAgIOKAlCBvbmx5IHdoZW4gdGhlIHVzZXIgc3VwcGxpZWQgcHJlZmlsbGVkXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIChgLmJpbmQodGhpc0FyZywgeCwgeSlgKS4gVGhlXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1dDIHBsdWdpbiBvbmx5IGV2ZXIgZW1pdHMgYC5iaW5kKHRoaXMpYFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LCBzbyB0aGlzIGlzIHJhcmUgaW4gcHJhY3RpY2U7IHdlXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgY2FwdHVyZSBpdCBzbyB0aGUgcGFydGlhbCBhcmdzXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vydml2ZSBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50bHkgZGlzYXBwZWFyaW5nIG9uIHRoZSBzdGVwIHNpZGUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ2JpbmQnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gKFxuICAgICAgICB0aGlzOiB0eXBlb2Ygc3RlcEZ1bmN0aW9uLFxuICAgICAgICB0aGlzQXJnOiB1bmtub3duLFxuICAgICAgICAuLi5wYXJ0aWFsQXJnczogdW5rbm93bltdXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYm91bmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdGhpc0FyZyxcbiAgICAgICAgICAuLi5wYXJ0aWFsQXJnc1xuICAgICAgICApO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdzdGVwSWQnLCB7XG4gICAgICAgICAgdmFsdWU6IHN0ZXBOYW1lLFxuICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNsb3N1cmVWYXJzRm4pIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdfX2Nsb3N1cmVWYXJzRm4nLCB7XG4gICAgICAgICAgICB2YWx1ZTogY2xvc3VyZVZhcnNGbixcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdfX2JvdW5kVGhpcycsIHtcbiAgICAgICAgICB2YWx1ZTogdGhpc0FyZyxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwYXJ0aWFsQXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCAnX19ib3VuZEFyZ3MnLCB7XG4gICAgICAgICAgICB2YWx1ZTogcGFydGlhbEFyZ3MsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJvdW5kO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGVwRnVuY3Rpb247XG4gIH07XG59XG4iXX0=
|
package/dist/symbols.d.ts
CHANGED
|
@@ -6,6 +6,22 @@ export declare const WORKFLOW_GET_STREAM_ID: unique symbol;
|
|
|
6
6
|
export declare const STABLE_ULID: unique symbol;
|
|
7
7
|
export declare const STREAM_NAME_SYMBOL: unique symbol;
|
|
8
8
|
export declare const STREAM_TYPE_SYMBOL: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* Stamped on a real `WritableStream` (the user-visible `serialize.writable`
|
|
11
|
+
* returned from a step-side reviver or step-context `getWritable()`) to
|
|
12
|
+
* record the `runId` of the workflow run that owns the underlying server
|
|
13
|
+
* stream. Used together with `STREAM_NAME_SYMBOL`.
|
|
14
|
+
*
|
|
15
|
+
* When `getExternalReducers.WritableStream` (the dehydration path used by
|
|
16
|
+
* `start()`) sees both symbols on a writable, it includes the `runId` in
|
|
17
|
+
* the descriptor it emits. The child run's step-side reviver then opens
|
|
18
|
+
* a server writable against the original `(runId, name)` and resolves
|
|
19
|
+
* that run's encryption key directly — so the child's writes land on
|
|
20
|
+
* the parent's stream as-is, with no client process in the loop. That
|
|
21
|
+
* keeps the forwarding alive for the full lifetime of the child run,
|
|
22
|
+
* not just for the parent step that initiated `start()`.
|
|
23
|
+
*/
|
|
24
|
+
export declare const STREAM_SERVER_RUN_ID_SYMBOL: unique symbol;
|
|
9
25
|
export declare const BODY_INIT_SYMBOL: unique symbol;
|
|
10
26
|
export declare const WEBHOOK_RESPONSE_WRITABLE: unique symbol;
|
|
11
27
|
/**
|
package/dist/symbols.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAkC,CAAC;AACjE,eAAO,MAAM,oBAAoB,eAAqC,CAAC;AACvE,eAAO,MAAM,cAAc,eAA+B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,eAAiC,CAAC;AAC/D,eAAO,MAAM,sBAAsB,eAAuC,CAAC;AAC3E,eAAO,MAAM,WAAW,eAAqC,CAAC;AAC9D,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,gBAAgB,eAA0B,CAAC;AACxD,eAAO,MAAM,yBAAyB,eAErC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,eAAwC,CAAC;AAE7E,eAAO,MAAM,iBAAiB,eAA2C,CAAC;AAC1E,eAAO,MAAM,gBAAgB,eAA0C,CAAC;AACxE,eAAO,MAAM,uBAAuB,eAEnC,CAAC;AACF,eAAO,MAAM,mBAAmB,eAA6C,CAAC"}
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAkC,CAAC;AACjE,eAAO,MAAM,oBAAoB,eAAqC,CAAC;AACvE,eAAO,MAAM,cAAc,eAA+B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,eAAiC,CAAC;AAC/D,eAAO,MAAM,sBAAsB,eAAuC,CAAC;AAC3E,eAAO,MAAM,WAAW,eAAqC,CAAC;AAC9D,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,eAEvC,CAAC;AACF,eAAO,MAAM,gBAAgB,eAA0B,CAAC;AACxD,eAAO,MAAM,yBAAyB,eAErC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,eAAwC,CAAC;AAE7E,eAAO,MAAM,iBAAiB,eAA2C,CAAC;AAC1E,eAAO,MAAM,gBAAgB,eAA0C,CAAC;AACxE,eAAO,MAAM,uBAAuB,eAEnC,CAAC;AACF,eAAO,MAAM,mBAAmB,eAA6C,CAAC"}
|
package/dist/symbols.js
CHANGED
|
@@ -6,6 +6,22 @@ export const WORKFLOW_GET_STREAM_ID = Symbol.for('WORKFLOW_GET_STREAM_ID');
|
|
|
6
6
|
export const STABLE_ULID = Symbol.for('WORKFLOW_STABLE_ULID');
|
|
7
7
|
export const STREAM_NAME_SYMBOL = Symbol.for('WORKFLOW_STREAM_NAME');
|
|
8
8
|
export const STREAM_TYPE_SYMBOL = Symbol.for('WORKFLOW_STREAM_TYPE');
|
|
9
|
+
/**
|
|
10
|
+
* Stamped on a real `WritableStream` (the user-visible `serialize.writable`
|
|
11
|
+
* returned from a step-side reviver or step-context `getWritable()`) to
|
|
12
|
+
* record the `runId` of the workflow run that owns the underlying server
|
|
13
|
+
* stream. Used together with `STREAM_NAME_SYMBOL`.
|
|
14
|
+
*
|
|
15
|
+
* When `getExternalReducers.WritableStream` (the dehydration path used by
|
|
16
|
+
* `start()`) sees both symbols on a writable, it includes the `runId` in
|
|
17
|
+
* the descriptor it emits. The child run's step-side reviver then opens
|
|
18
|
+
* a server writable against the original `(runId, name)` and resolves
|
|
19
|
+
* that run's encryption key directly — so the child's writes land on
|
|
20
|
+
* the parent's stream as-is, with no client process in the loop. That
|
|
21
|
+
* keeps the forwarding alive for the full lifetime of the child run,
|
|
22
|
+
* not just for the parent step that initiated `start()`.
|
|
23
|
+
*/
|
|
24
|
+
export const STREAM_SERVER_RUN_ID_SYMBOL = Symbol.for('WORKFLOW_STREAM_SERVER_RUN_ID');
|
|
9
25
|
export const BODY_INIT_SYMBOL = Symbol.for('BODY_INIT');
|
|
10
26
|
export const WEBHOOK_RESPONSE_WRITABLE = Symbol.for('WEBHOOK_RESPONSE_WRITABLE');
|
|
11
27
|
/**
|
|
@@ -17,4 +33,4 @@ export const ABORT_STREAM_NAME = Symbol.for('WORKFLOW_ABORT_STREAM_NAME');
|
|
|
17
33
|
export const ABORT_HOOK_TOKEN = Symbol.for('WORKFLOW_ABORT_HOOK_TOKEN');
|
|
18
34
|
export const ABORT_LISTENER_ATTACHED = Symbol.for('WORKFLOW_ABORT_LISTENER_ATTACHED');
|
|
19
35
|
export const ABORT_READER_CANCEL = Symbol.for('WORKFLOW_ABORT_READER_CANCEL');
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNyRTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQ25ELCtCQUErQixDQUNoQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN4RCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUNqRCwyQkFBMkIsQ0FDNUIsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQy9DLGtDQUFrQyxDQUNuQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFdPUktGTE9XX1VTRV9TVEVQID0gU3ltYm9sLmZvcignV09SS0ZMT1dfVVNFX1NURVAnKTtcbmV4cG9ydCBjb25zdCBXT1JLRkxPV19DUkVBVEVfSE9PSyA9IFN5bWJvbC5mb3IoJ1dPUktGTE9XX0NSRUFURV9IT09LJyk7XG5leHBvcnQgY29uc3QgV09SS0ZMT1dfU0xFRVAgPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19TTEVFUCcpO1xuZXhwb3J0IGNvbnN0IFdPUktGTE9XX0NPTlRFWFQgPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19DT05URVhUJyk7XG5leHBvcnQgY29uc3QgV09SS0ZMT1dfR0VUX1NUUkVBTV9JRCA9IFN5bWJvbC5mb3IoJ1dPUktGTE9XX0dFVF9TVFJFQU1fSUQnKTtcbmV4cG9ydCBjb25zdCBTVEFCTEVfVUxJRCA9IFN5bWJvbC5mb3IoJ1dPUktGTE9XX1NUQUJMRV9VTElEJyk7XG5leHBvcnQgY29uc3QgU1RSRUFNX05BTUVfU1lNQk9MID0gU3ltYm9sLmZvcignV09SS0ZMT1dfU1RSRUFNX05BTUUnKTtcbmV4cG9ydCBjb25zdCBTVFJFQU1fVFlQRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19TVFJFQU1fVFlQRScpO1xuLyoqXG4gKiBTdGFtcGVkIG9uIGEgcmVhbCBgV3JpdGFibGVTdHJlYW1gICh0aGUgdXNlci12aXNpYmxlIGBzZXJpYWxpemUud3JpdGFibGVgXG4gKiByZXR1cm5lZCBmcm9tIGEgc3RlcC1zaWRlIHJldml2ZXIgb3Igc3RlcC1jb250ZXh0IGBnZXRXcml0YWJsZSgpYCkgdG9cbiAqIHJlY29yZCB0aGUgYHJ1bklkYCBvZiB0aGUgd29ya2Zsb3cgcnVuIHRoYXQgb3ducyB0aGUgdW5kZXJseWluZyBzZXJ2ZXJcbiAqIHN0cmVhbS4gVXNlZCB0b2dldGhlciB3aXRoIGBTVFJFQU1fTkFNRV9TWU1CT0xgLlxuICpcbiAqIFdoZW4gYGdldEV4dGVybmFsUmVkdWNlcnMuV3JpdGFibGVTdHJlYW1gICh0aGUgZGVoeWRyYXRpb24gcGF0aCB1c2VkIGJ5XG4gKiBgc3RhcnQoKWApIHNlZXMgYm90aCBzeW1ib2xzIG9uIGEgd3JpdGFibGUsIGl0IGluY2x1ZGVzIHRoZSBgcnVuSWRgIGluXG4gKiB0aGUgZGVzY3JpcHRvciBpdCBlbWl0cy4gVGhlIGNoaWxkIHJ1bidzIHN0ZXAtc2lkZSByZXZpdmVyIHRoZW4gb3BlbnNcbiAqIGEgc2VydmVyIHdyaXRhYmxlIGFnYWluc3QgdGhlIG9yaWdpbmFsIGAocnVuSWQsIG5hbWUpYCBhbmQgcmVzb2x2ZXNcbiAqIHRoYXQgcnVuJ3MgZW5jcnlwdGlvbiBrZXkgZGlyZWN0bHkg4oCUIHNvIHRoZSBjaGlsZCdzIHdyaXRlcyBsYW5kIG9uXG4gKiB0aGUgcGFyZW50J3Mgc3RyZWFtIGFzLWlzLCB3aXRoIG5vIGNsaWVudCBwcm9jZXNzIGluIHRoZSBsb29wLiBUaGF0XG4gKiBrZWVwcyB0aGUgZm9yd2FyZGluZyBhbGl2ZSBmb3IgdGhlIGZ1bGwgbGlmZXRpbWUgb2YgdGhlIGNoaWxkIHJ1bixcbiAqIG5vdCBqdXN0IGZvciB0aGUgcGFyZW50IHN0ZXAgdGhhdCBpbml0aWF0ZWQgYHN0YXJ0KClgLlxuICovXG5leHBvcnQgY29uc3QgU1RSRUFNX1NFUlZFUl9SVU5fSURfU1lNQk9MID0gU3ltYm9sLmZvcihcbiAgJ1dPUktGTE9XX1NUUkVBTV9TRVJWRVJfUlVOX0lEJ1xuKTtcbmV4cG9ydCBjb25zdCBCT0RZX0lOSVRfU1lNQk9MID0gU3ltYm9sLmZvcignQk9EWV9JTklUJyk7XG5leHBvcnQgY29uc3QgV0VCSE9PS19SRVNQT05TRV9XUklUQUJMRSA9IFN5bWJvbC5mb3IoXG4gICdXRUJIT09LX1JFU1BPTlNFX1dSSVRBQkxFJ1xuKTtcblxuLyoqXG4gKiBTeW1ib2wgdXNlZCB0byBzdG9yZSB0aGUgY2xhc3MgcmVnaXN0cnkgb24gZ2xvYmFsVGhpcyBpbiB3b3JrZmxvdyBtb2RlLlxuICogVGhpcyBhbGxvd3MgdGhlIGRlc2VyaWFsaXplciB0byBmaW5kIGNsYXNzZXMgYnkgY2xhc3NJZCBpbiB0aGUgVk0gY29udGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktGTE9XX0NMQVNTX1JFR0lTVFJZID0gU3ltYm9sLmZvcignd29ya2Zsb3ctY2xhc3MtcmVnaXN0cnknKTtcblxuZXhwb3J0IGNvbnN0IEFCT1JUX1NUUkVBTV9OQU1FID0gU3ltYm9sLmZvcignV09SS0ZMT1dfQUJPUlRfU1RSRUFNX05BTUUnKTtcbmV4cG9ydCBjb25zdCBBQk9SVF9IT09LX1RPS0VOID0gU3ltYm9sLmZvcignV09SS0ZMT1dfQUJPUlRfSE9PS19UT0tFTicpO1xuZXhwb3J0IGNvbnN0IEFCT1JUX0xJU1RFTkVSX0FUVEFDSEVEID0gU3ltYm9sLmZvcihcbiAgJ1dPUktGTE9XX0FCT1JUX0xJU1RFTkVSX0FUVEFDSEVEJ1xuKTtcbmV4cG9ydCBjb25zdCBBQk9SVF9SRUFERVJfQ0FOQ0VMID0gU3ltYm9sLmZvcignV09SS0ZMT1dfQUJPUlRfUkVBREVSX0NBTkNFTCcpO1xuIl19
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.0.0-beta.
|
|
1
|
+
export declare const version = "5.0.0-beta.8";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '5.0.0-beta.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const version = '5.0.0-beta.8';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjgnXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/workflow/abort-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/workflow/abort-controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGpE;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;;IAC9B,OAAO,UAAS;IAChB,MAAM,EAAE,OAAO,CAAa;IAE5B,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAKpC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,CAE1D;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,EAKhE;gBAEW,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD;;;;OAIG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAanC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAa1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAK7D,cAAc,IAAI,IAAI;CAQvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,2BAA2B;;yBAEvD,mBAAmB;uBAmHrB,OAAO,GAAG,IAAI;sCAlHC,MAAM;qCACP,MAAM;;EAkItC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,mBAAmB,CAAC;IACjD,GAAG,EAAE,CACH,OAAO,EAAE,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;KAC7B,CAAC,KACC,mBAAmB,CAAC;IACzB,OAAO,EAAE,MAAM,KAAK,CAAC;CACtB,CAwEA"}
|