@workflow/core 5.0.0-beta.29 → 5.0.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/global.d.ts +20 -0
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +1 -1
- package/dist/runtime/constants.d.ts +54 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +62 -1
- package/dist/runtime/helpers.d.ts +11 -3
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +21 -2
- package/dist/runtime/runs.d.ts +25 -1
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +6 -4
- package/dist/runtime/start.d.ts +28 -0
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +13 -3
- package/dist/runtime/step-executor.d.ts +13 -0
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +37 -5
- package/dist/runtime/step-latency.d.ts +6 -0
- package/dist/runtime/step-latency.d.ts.map +1 -1
- package/dist/runtime/step-latency.js +22 -2
- package/dist/runtime/step-ownership.d.ts +72 -0
- package/dist/runtime/step-ownership.d.ts.map +1 -0
- package/dist/runtime/step-ownership.js +114 -0
- package/dist/runtime/step-single-flight.d.ts +12 -0
- package/dist/runtime/step-single-flight.d.ts.map +1 -0
- package/dist/runtime/step-single-flight.js +69 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +253 -51
- package/dist/serialization-format.d.ts +1 -0
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +17 -52
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +41 -2
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +30 -5
- package/dist/telemetry/semantic-conventions.d.ts +16 -0
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +13 -1
- package/dist/telemetry.d.ts +8 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +25 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/package.json +4 -4
|
@@ -60,6 +60,8 @@ export function computeStepLatencyTracking(params) {
|
|
|
60
60
|
// attr_set, ...) in between and this suspension scheduling nothing but
|
|
61
61
|
// steps.
|
|
62
62
|
let prevStepEndMs;
|
|
63
|
+
let stepCount;
|
|
64
|
+
let eventCount;
|
|
63
65
|
const lastEvent = events[events.length - 1];
|
|
64
66
|
if (!params.suspensionHasWaits &&
|
|
65
67
|
!params.suspensionCreatedHooks &&
|
|
@@ -67,6 +69,16 @@ export function computeStepLatencyTracking(params) {
|
|
|
67
69
|
(lastEvent.eventType === 'step_completed' ||
|
|
68
70
|
lastEvent.eventType === 'step_failed')) {
|
|
69
71
|
prevStepEndMs = +(lastEvent.occurredAt ?? lastEvent.createdAt);
|
|
72
|
+
const terminalStepIds = new Set();
|
|
73
|
+
for (const event of events) {
|
|
74
|
+
if ((event.eventType === 'step_completed' ||
|
|
75
|
+
event.eventType === 'step_failed') &&
|
|
76
|
+
event.correlationId !== undefined) {
|
|
77
|
+
terminalStepIds.add(event.correlationId);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
stepCount = terminalStepIds.size;
|
|
81
|
+
eventCount = events.length;
|
|
70
82
|
}
|
|
71
83
|
if (!ttfsEligible && prevStepEndMs === undefined) {
|
|
72
84
|
return undefined;
|
|
@@ -83,7 +95,9 @@ export function computeStepLatencyTracking(params) {
|
|
|
83
95
|
...(preStepAttrStartMs !== undefined ? { preStepAttrStartMs } : {}),
|
|
84
96
|
}
|
|
85
97
|
: {}),
|
|
86
|
-
...(prevStepEndMs !== undefined
|
|
98
|
+
...(prevStepEndMs !== undefined
|
|
99
|
+
? { prevStepEndMs, stepCount, eventCount }
|
|
100
|
+
: {}),
|
|
87
101
|
turbo: params.turbo,
|
|
88
102
|
};
|
|
89
103
|
}
|
|
@@ -129,7 +143,13 @@ export function computeStepLatencyEventData(params) {
|
|
|
129
143
|
return {
|
|
130
144
|
...(ttfs !== undefined ? { ttfs } : {}),
|
|
131
145
|
...(stso !== undefined ? { stso } : {}),
|
|
146
|
+
...(stso !== undefined && tracking.stepCount !== undefined
|
|
147
|
+
? { stepCount: tracking.stepCount }
|
|
148
|
+
: {}),
|
|
149
|
+
...(stso !== undefined && tracking.eventCount !== undefined
|
|
150
|
+
? { eventCount: tracking.eventCount }
|
|
151
|
+
: {}),
|
|
132
152
|
optimizations,
|
|
133
153
|
};
|
|
134
154
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1sYXRlbmN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvc3RlcC1sYXRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJEQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSw4QkFBOEIsR0FBb0MsSUFBSSxHQUFHLENBQzdFO0lBQ0UsY0FBYztJQUNkLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGdCQUFnQjtDQUNqQixDQUNGLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUEyQzFDO0lBQ0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUxQixJQUFJLFlBQVksR0FDZCxNQUFNLENBQUMsc0JBQXNCO1FBQzdCLE1BQU0sQ0FBQyxjQUFjLEtBQUssU0FBUztRQUNuQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUM3QixJQUFJLGtCQUFzQyxDQUFDO0lBQzNDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixJQUFJLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDckIsTUFBTTtZQUNSLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0Qsa0JBQWtCO29CQUNoQixrQkFBa0IsS0FBSyxTQUFTO3dCQUM5QixDQUFDLENBQUMsV0FBVzt3QkFDYixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcs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QUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFDbkMsSUFBSSxRQUFRLENBQUMsS0FBSztRQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLENBQUMsYUFBYTtRQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNLENBQUMsZUFBZTtRQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVsRSxPQUFPO1FBQ0wsR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLGFBQWE7S0FDZCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXZlbnQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuXG4vKipcbiAqIENsaWVudC1zaWRlIGxhdGVuY3kgbWVhc3VyZW1lbnQgKFRURlMgLyBTVFNPKSB0aHJlYWRlZCBmcm9tIHRoZVxuICogb3JjaGVzdHJhdG9yJ3MgaW5saW5lIGV4ZWN1dGlvbiBwYXRoIGludG8gYGV4ZWN1dGVTdGVwYC5cbiAqXG4gKiBUVEZTICh0aW1lLXRvLWZpcnN0LXN0ZXApIG1lYXN1cmVzIHJ1biBjcmVhdGlvbiDihpIgdGhlIGZpcnN0IHN0ZXAncyBib2R5XG4gKiBiZWdpbm5pbmcgdG8gZXhlY3V0ZS4gU1RTTyAoc3RlcC10by1zdGVwIG92ZXJoZWFkKSBtZWFzdXJlcyB0aGUgcHJldmlvdXNcbiAqIHN0ZXAncyB0ZXJtaW5hbCBldmVudCDihpIgdGhlIG5leHQgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUuIEJvdGggYXJlXG4gKiBhdHRhY2hlZCB0byB0aGUgc3RlcCdzIHRlcm1pbmFsIGV2ZW50IHNvIGEgYmFja2VuZCBjYW4gZW1pdCBsYXRlbmN5IG1ldHJpY3NcbiAqIGZyb20gdGhlIGV2ZW50IHdyaXRlIGFsb25lLCB3aXRob3V0IGV4dHJhIGV2ZW50LWxvZyBxdWVyaWVzLlxuICpcbiAqIEVsaWdpYmlsaXR5IGlzIGRlY2lkZWQgYnkgdGhlIG9yY2hlc3RyYXRvciAod2hpY2ggb3ducyB0aGUgZXZlbnQgbG9nKSB2aWFcbiAqIHtAbGluayBjb21wdXRlU3RlcExhdGVuY3lUcmFja2luZ307IHRoZSBmaW5hbCB2YWx1ZXMgYXJlIGNvbXB1dGVkIGJ5XG4gKiBgZXhlY3V0ZVN0ZXBgIHJpZ2h0IGJlZm9yZSB1c2VyIGNvZGUgcnVucyB2aWFcbiAqIHtAbGluayBjb21wdXRlU3RlcExhdGVuY3lFdmVudERhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBMYXRlbmN5VHJhY2tpbmcge1xuICAvKipcbiAgICogRXBvY2ggbXMgb2YgcnVuIGNyZWF0aW9uIChmcm9tIHRoZSBydW4taWQgVUxJRCwgZmFsbGluZyBiYWNrIHRvIHRoZSBydW5cbiAgICogc25hcHNob3QncyBgY3JlYXRlZEF0YCkuIFByZXNlbnQgb25seSB3aGVuIHRoZSBzdGVwIHF1YWxpZmllcyBmb3IgVFRGUy5cbiAgICovXG4gIHR0ZnNBbmNob3JNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdhbGwtY2xvY2sgbXMgdGhpcyBpbnZvY2F0aW9uIHNwZW50IGNvbW1pdHRpbmcgYGhvb2tfY3JlYXRlZGAgZXZlbnRzXG4gICAqIGJlZm9yZSB0aGUgZmlyc3Qgc3RlcCAoZmlyZS1hbmQtZm9yZ2V0IGBjcmVhdGVIb29rKClgIGFoZWFkIG9mIHRoZSBmaXJzdFxuICAgKiBzdGVwIGNvbW1pdHMgaW4gdGhlIHNhbWUgc3VzcGVuc2lvbiBiYXRjaCkuIFN1YnRyYWN0ZWQgZnJvbSBUVEZTIHNvIHRoZVxuICAgKiBtZXRyaWMgcmVmbGVjdHMgcnVudGltZSBvdmVyaGVhZCByYXRoZXIgdGhhbiB0aGUgdXNlcidzIGhvb2sgd3JpdGVzLlxuICAgKi9cbiAgcHJlU3RlcEJsb2NraW5nTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFcG9jaCBtcyB0aGUgZmlyc3QgcHJlLXN0ZXAgYGF0dHJfc2V0YCB3cml0ZSBiZWdhbiAoaXRzIGNsaWVudC1zdGFtcGVkXG4gICAqIGBvY2N1cnJlZEF0YCwgZmFsbGluZyBiYWNrIHRvIGBjcmVhdGVkQXRgKS4gV2hlbiBwcmVzZW50LCB0aGUgVFRGU1xuICAgKiBtZWFzdXJlbWVudCBFTkRTIGhlcmUgaW5zdGVhZCBvZiBhdCB0aGUgc3RlcCdzIGNvZGUgc3RhcnQ6IGFcbiAgICogd29ya2Zsb3ctYm9keSBgZXhwZXJpbWVudGFsX3NldEF0dHJpYnV0ZXNgIGJlZm9yZSB0aGUgZmlyc3Qgc3RlcFxuICAgKiByZXNvbHZlcyB0aHJvdWdoIGFuIGV4dHJhIHJlcGxheSAoc2VlIHRoZSBgaGFzQXR0cmlidXRlRXZlbnRzYCBicmFuY2ggaW5cbiAgICogcnVudGltZS50cyksIHNvIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIHdyaXRlIHVudGlsIHRoZSBzdGVwIGJvZHkgcnVucyBpc1xuICAgKiB0aGUgZHVyYXRpb24gb2YgdGhlIHNldEF0dHJpYnV0ZXMgY2FsbCDigJQgd2hpY2ggaXMgc3VidHJhY3RlZCBieSBlbmRpbmdcbiAgICogdGhlIG1lYXN1cmVtZW50IGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgc3RlcCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBiZWVuXG4gICAqIHNjaGVkdWxlZC5cbiAgICovXG4gIHByZVN0ZXBBdHRyU3RhcnRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEVwb2NoIG1zIHRoZSBwcmV2aW91cyBzdGVwJ3MgdGVybWluYWwgZXZlbnQgd2FzIHJlY29yZGVkIChpdHNcbiAgICogY2xpZW50LXN0YW1wZWQgYG9jY3VycmVkQXRgLCBmYWxsaW5nIGJhY2sgdG8gYGNyZWF0ZWRBdGApLiBQcmVzZW50IG9ubHlcbiAgICogd2hlbiB0aGUgc3RlcCBxdWFsaWZpZXMgZm9yIFNUU08uXG4gICAqL1xuICBwcmV2U3RlcEVuZE1zPzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0dXJibyBtb2RlIGlzIGFjdGl2ZSBmb3IgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICB0dXJibzogYm9vbGVhbjtcbn1cblxuLyoqIExhdGVuY3kgdGVsZW1ldHJ5IGF0dGFjaGVkIHRvIGEgc3RlcCdzIHRlcm1pbmFsIGV2ZW50J3MgYGV2ZW50RGF0YWAuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBMYXRlbmN5RXZlbnREYXRhIHtcbiAgdHRmcz86IG51bWJlcjtcbiAgc3Rzbz86IG51bWJlcjtcbiAgb3B0aW1pemF0aW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEV2ZW50IHR5cGVzIHRoYXQgZGlzcXVhbGlmeSBUVEZTIHdoZW4gcHJlc2VudCBpbiB0aGUgZXZlbnQgbG9nIGF0IHRoZSB0aW1lXG4gKiB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBiYXRjaCBpcyBzY2hlZHVsZWQ6XG4gKlxuICogLSBBbnkgc3RlcCBldmVudCBtZWFucyB0aGlzIGlzIG5vdCB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBleGVjdXRpb24uXG4gKiAtIGBob29rX3JlY2VpdmVkYCAvIGB3YWl0X2NyZWF0ZWRgIC8gYHdhaXRfY29tcGxldGVkYCBtZWFuIHRoZSBydW4ncyBwYXRoIHRvXG4gKiAgIHRoZSBmaXJzdCBzdGVwIGRlcGVuZGVkIG9uIHVzZXItZHJpdmVuIHRpbWluZyAoYSB3ZWJob29rIGFycml2aW5nLCBhXG4gKiAgIHNsZWVwIGVsYXBzaW5nKSwgc28gdGhlIG1lYXN1cmVtZW50IHdvdWxkIG5vdCByZWZsZWN0IHJ1bnRpbWUgb3ZlcmhlYWQuXG4gKlxuICogRGVsaWJlcmF0ZWx5IGFic2VudCwgd2l0aCB0aGVpciBjb3N0IHN1YnRyYWN0ZWQgaW5zdGVhZDpcbiAqXG4gKiAtIGBob29rX2NyZWF0ZWRgOiBhIGZpcmUtYW5kLWZvcmdldCBgY3JlYXRlSG9vaygpYCBiZWZvcmUgdGhlIGZpcnN0IHN0ZXBcbiAqICAgY29tbWl0cyBpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLCB3aG9zZSBtZWFzdXJlZCBkdXJhdGlvbiBpcyBzdWJ0cmFjdGVkIHZpYVxuICogICB7QGxpbmsgU3RlcExhdGVuY3lUcmFja2luZy5wcmVTdGVwQmxvY2tpbmdNc30uXG4gKiAtIGBhdHRyX3NldGAgKHdvcmtmbG93LWJvZHkgYGV4cGVyaW1lbnRhbF9zZXRBdHRyaWJ1dGVzYCk6IHJlc29sdmVzIHRocm91Z2hcbiAqICAgYW4gZXh0cmEgcmVwbGF5IGJlZm9yZSBzdGVwcyBydW4uIFN1YnRyYWN0ZWQgYnkgZW5kaW5nIHRoZSBtZWFzdXJlbWVudCBhdFxuICogICB0aGUgZmlyc3QgYXR0ciB3cml0ZSdzIHRpbWVzdGFtcCBpbnN0ZWFkIOKAlCBzZWVcbiAqICAge0BsaW5rIFN0ZXBMYXRlbmN5VHJhY2tpbmcucHJlU3RlcEF0dHJTdGFydE1zfS5cbiAqL1xuY29uc3QgVFRGU19ESVNRVUFMSUZZSU5HX0VWRU5UX1RZUEVTOiBSZWFkb25seVNldDxFdmVudFsnZXZlbnRUeXBlJ10+ID0gbmV3IFNldChcbiAgW1xuICAgICdzdGVwX2NyZWF0ZWQnLFxuICAgICdzdGVwX3N0YXJ0ZWQnLFxuICAgICdzdGVwX2NvbXBsZXRlZCcsXG4gICAgJ3N0ZXBfZmFpbGVkJyxcbiAgICAnc3RlcF9yZXRyeWluZycsXG4gICAgJ2hvb2tfcmVjZWl2ZWQnLFxuICAgICd3YWl0X2NyZWF0ZWQnLFxuICAgICd3YWl0X2NvbXBsZXRlZCcsXG4gIF1cbik7XG5cbi8qKlxuICogRGVjaWRlLCBmcm9tIHRoZSBvcmNoZXN0cmF0b3IncyB2aWV3IG9mIHRoZSBldmVudCBsb2csIHdoZXRoZXIgdGhlIGlubGluZVxuICogc3RlcCBiYXRjaCBhYm91dCB0byBleGVjdXRlIHF1YWxpZmllcyBmb3IgVFRGUyBhbmQvb3IgU1RTTyBtZWFzdXJlbWVudC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gbmVpdGhlciBhcHBsaWVzLiBDYWxsZWQgb25jZSBwZXIgYmF0Y2g7IHRoZSByZXN1bHRcbiAqIGlzIHBhc3NlZCB0byB0aGUgYmF0Y2gncyBmaXJzdCBzdGVwIG9ubHksIHNvIGEgcGFyYWxsZWwgZmlyc3QgYmF0Y2ggZW1pdHMgYVxuICogc2luZ2xlIHNhbXBsZSByYXRoZXIgdGhhbiBvbmUgcGVyIHNpYmxpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU3RlcExhdGVuY3lUcmFja2luZyhwYXJhbXM6IHtcbiAgLyoqIFRoZSBvcmNoZXN0cmF0b3IncyBjdXJyZW50IGluLW1lbW9yeSBldmVudCBsb2cgKGFzY2VuZGluZyBvcmRlcikuICovXG4gIGV2ZW50czogRXZlbnRbXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpbnZvY2F0aW9uJ3MgaW5pdGlhbCBldmVudCBsb2FkIGNvbnRhaW5lZCBub3RoaW5nIGJleW9uZFxuICAgKiBydW5fY3JlYXRlZC9ydW5fc3RhcnRlZC9hdHRyX3NldC4gUHJlLWV4aXN0aW5nIGhvb2sgZXZlbnRzIHdlcmUgd3JpdHRlblxuICAgKiBieSBhbiBlYXJsaWVyIGludm9jYXRpb24sIHNvIHRoZSB0aW1lIHRoZXkgYWRkZWQgKGluY2x1ZGluZyB0aGUgcXVldWVcbiAgICogaG9wIGJhY2sgdG8gdGhpcyBpbnZvY2F0aW9uKSBpcyB1bm1lYXN1cmFibGUgYW5kIGRpc3F1YWxpZmllcyBUVEZTLlxuICAgKiBhdHRyX3NldCBpcyBwZXJtaXR0ZWQ6IGEgcmVkZWxpdmVyeSBjYW4gbGFuZCBhZnRlciBhIGNvbW1pdHRlZCBwcmUtc3RlcFxuICAgKiBhdHRyX3NldCwgYW5kIHRoZSBkZXRvdXIgaXQgbWFya3MgaXMgc3VidHJhY3RlZCB2aWEgYHByZVN0ZXBBdHRyU3RhcnRNc2BcbiAgICogcmVnYXJkbGVzcyBvZiB3aGljaCBpbnZvY2F0aW9uIHdyb3RlIGl0LlxuICAgKi9cbiAgaW52b2NhdGlvblN0YXJ0ZWRDbGVhbjogYm9vbGVhbjtcbiAgLyoqIEVwb2NoIG1zIG9mIHJ1biBjcmVhdGlvbiwgaWYgcmVjb3ZlcmFibGUuIEFic2VudCBkaXNxdWFsaWZpZXMgVFRGUy4gKi9cbiAgcnVuQ3JlYXRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFNlZSB7QGxpbmsgU3RlcExhdGVuY3lUcmFja2luZy5wcmVTdGVwQmxvY2tpbmdNc30uICovXG4gIHByZVN0ZXBCbG9ja2luZ01zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgYWNjdW11bGF0b3IncyB2YWx1ZSBhcyBvZiB0aGUgc3VzcGVuc2lvbiB0aGF0IHdyb3RlIHRoZSBydW4ncyBmaXJzdFxuICAgKiBhdHRyX3NldCAoaXRzIGhvb2sgcGhhc2UgcnVucyBiZWZvcmUgaXRzIGF0dHIgd3JpdGVzKS4gV2hlbiB0aGVcbiAgICogbWVhc3VyZW1lbnQgZW5kcyBhdCB0aGUgYXR0ciB3cml0ZSwgb25seSBob29rIHRpbWUgZnJvbSBiZWZvcmUgdGhhdFxuICAgKiBwb2ludCBtYXkgYmUgc3VidHJhY3RlZCDigJQgbGF0ZXIgaG9vayB3cml0ZXMgZmFsbCBvdXRzaWRlIHRoZSBtZWFzdXJlZFxuICAgKiB3aW5kb3cuIFVuZGVmaW5lZCB3aGVuIG5vIGF0dHIgc3VzcGVuc2lvbiBoYXBwZW5lZCBpbiB0aGlzIGludm9jYXRpb25cbiAgICogKGUuZy4gdGhlIGF0dHJfc2V0IHdhcyBsb2FkZWQgZnJvbSBhIHJlZGVsaXZlcnkncyBzbmFwc2hvdCwgd2hlcmUgbm9cbiAgICogc2FtZS1pbnZvY2F0aW9uIGhvb2sgdGltZSBwcmVjZWRlcyBpdCkuXG4gICAqL1xuICBwcmVTdGVwQmxvY2tpbmdCZWZvcmVBdHRyTXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN1c3BlbnNpb24gdGhhdCBzY2hlZHVsZWQgdGhpcyBiYXRjaCBhbHNvIGNyZWF0ZWQgd2FpdHMuXG4gICAqIFRob3NlIGB3YWl0X2NyZWF0ZWRgIHdyaXRlcyBhcmUgbm90IGluIGBldmVudHNgIHlldCAodGhleSB3ZXJlIGNvbW1pdHRlZFxuICAgKiBieSB0aGlzIHZlcnkgc3VzcGVuc2lvbiBwYXNzKSwgc28gdGhleSBtdXN0IGJlIHJlcG9ydGVkIHNlcGFyYXRlbHkuIEFcbiAgICogd2FpdCBkaXNxdWFsaWZpZXMgYm90aCBtZWFzdXJlbWVudHMuXG4gICAqL1xuICBzdXNwZW5zaW9uSGFzV2FpdHM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdXNwZW5zaW9uIHRoYXQgc2NoZWR1bGVkIHRoaXMgYmF0Y2ggYWxzbyBjcmVhdGVkIGhvb2tzXG4gICAqIChhbHNvIG5vdCBpbiBgZXZlbnRzYCB5ZXQpLiBIb29rcyBrZWVwIFRURlMgZWxpZ2libGUg4oCUIHRoZWlyIG1lYXN1cmVkXG4gICAqIHdyaXRlIHRpbWUgaXMgc3VidHJhY3RlZCB2aWEgYHByZVN0ZXBCbG9ja2luZ01zYCDigJQgYnV0IGRpc3F1YWxpZnkgU1RTTyxcbiAgICogd2hpY2ggaXMgb25seSBtZWFuaW5nZnVsIGZvciBhIHB1cmUgYmFjay10by1iYWNrIHN0ZXAgZ2FwLlxuICAgKi9cbiAgc3VzcGVuc2lvbkNyZWF0ZWRIb29rczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdHVyYm8gbW9kZSBpcyBhY3RpdmUgZm9yIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgdHVyYm86IGJvb2xlYW47XG59KTogU3RlcExhdGVuY3lUcmFja2luZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgZXZlbnRzIH0gPSBwYXJhbXM7XG5cbiAgbGV0IHR0ZnNFbGlnaWJsZSA9XG4gICAgcGFyYW1zLmludm9jYXRpb25TdGFydGVkQ2xlYW4gJiZcbiAgICBwYXJhbXMucnVuQ3JlYXRlZEF0TXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICFwYXJhbXMuc3VzcGVuc2lvbkhhc1dhaXRzO1xuICBsZXQgcHJlU3RlcEF0dHJTdGFydE1zOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGlmICh0dGZzRWxpZ2libGUpIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgaWYgKFRURlNfRElTUVVBTElGWUlOR19FVkVOVF9UWVBFUy5oYXMoZXZlbnQuZXZlbnRUeXBlKSkge1xuICAgICAgICB0dGZzRWxpZ2libGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnYXR0cl9zZXQnKSB7XG4gICAgICAgIGNvbnN0IGF0dHJTdGFydE1zID0gKyhldmVudC5vY2N1cnJlZEF0ID8/IGV2ZW50LmNyZWF0ZWRBdCk7XG4gICAgICAgIHByZVN0ZXBBdHRyU3RhcnRNcyA9XG4gICAgICAgICAgcHJlU3RlcEF0dHJTdGFydE1zID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYXR0clN0YXJ0TXNcbiAgICAgICAgICAgIDogTWF0aC5taW4ocHJlU3RlcEF0dHJTdGFydE1zLCBhdHRyU3RhcnRNcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RTTzogdGhlIHR3byBzdGVwcyByYW4gYmFjay10by1iYWNrIOKAlCB0aGUgbmV3ZXN0IGtub3duIGV2ZW50IGlzIHRoZVxuICAvLyBwcmV2aW91cyBzdGVwJ3MgdGVybWluYWwgZXZlbnQsIHdpdGggbm90aGluZyAoaG9va19yZWNlaXZlZCwgd2FpdHMsXG4gIC8vIGF0dHJfc2V0LCAuLi4pIGluIGJldHdlZW4gYW5kIHRoaXMgc3VzcGVuc2lvbiBzY2hlZHVsaW5nIG5vdGhpbmcgYnV0XG4gIC8vIHN0ZXBzLlxuICBsZXQgcHJldlN0ZXBFbmRNczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb25zdCBsYXN0RXZlbnQgPSBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdO1xuICBpZiAoXG4gICAgIXBhcmFtcy5zdXNwZW5zaW9uSGFzV2FpdHMgJiZcbiAgICAhcGFyYW1zLnN1c3BlbnNpb25DcmVhdGVkSG9va3MgJiZcbiAgICBsYXN0RXZlbnQgJiZcbiAgICAobGFzdEV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJyB8fFxuICAgICAgbGFzdEV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfZmFpbGVkJylcbiAgKSB7XG4gICAgcHJldlN0ZXBFbmRNcyA9ICsobGFzdEV2ZW50Lm9jY3VycmVkQXQgPz8gbGFzdEV2ZW50LmNyZWF0ZWRBdCk7XG4gIH1cblxuICBpZiAoIXR0ZnNFbGlnaWJsZSAmJiBwcmV2U3RlcEVuZE1zID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4odHRmc0VsaWdpYmxlXG4gICAgICA/IHtcbiAgICAgICAgICB0dGZzQW5jaG9yTXM6IHBhcmFtcy5ydW5DcmVhdGVkQXRNcyxcbiAgICAgICAgICAvLyBXaGVuIHRoZSBtZWFzdXJlbWVudCBlbmRzIGF0IHRoZSBmaXJzdCBhdHRyIHdyaXRlLCBvbmx5IGhvb2tcbiAgICAgICAgICAvLyB0aW1lIGZyb20gYmVmb3JlIHRoYXQgcG9pbnQgaXMgaW5zaWRlIHRoZSBtZWFzdXJlZCB3aW5kb3cuXG4gICAgICAgICAgcHJlU3RlcEJsb2NraW5nTXM6XG4gICAgICAgICAgICBwcmVTdGVwQXR0clN0YXJ0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChwYXJhbXMucHJlU3RlcEJsb2NraW5nQmVmb3JlQXR0ck1zID8/IDApXG4gICAgICAgICAgICAgIDogcGFyYW1zLnByZVN0ZXBCbG9ja2luZ01zLFxuICAgICAgICAgIC4uLihwcmVTdGVwQXR0clN0YXJ0TXMgIT09IHVuZGVmaW5lZCA/IHsgcHJlU3RlcEF0dHJTdGFydE1zIH0gOiB7fSksXG4gICAgICAgIH1cbiAgICAgIDoge30pLFxuICAgIC4uLihwcmV2U3RlcEVuZE1zICE9PSB1bmRlZmluZWQgPyB7IHByZXZTdGVwRW5kTXMgfSA6IHt9KSxcbiAgICB0dXJibzogcGFyYW1zLnR1cmJvLFxuICB9O1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIGxhdGVuY3kgdGVsZW1ldHJ5IHRvIGF0dGFjaCB0byB0aGUgc3RlcCdzIHRlcm1pbmFsIGV2ZW50LlxuICogQ2FsbGVkIGJ5IGBleGVjdXRlU3RlcGAgd2l0aCB0aGUgd2FsbC1jbG9jayB0aW1lc3RhbXAgdGFrZW4gaW1tZWRpYXRlbHlcbiAqIGJlZm9yZSB1c2VyIHN0ZXAgY29kZSBydW5zLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG9cbiAqIHJlcG9ydCAobm8gdHJhY2tpbmcsIG9yIGEgcmV0cnkgYXR0ZW1wdCDigJQgcmV0cmllcyBtZWFzdXJlIG5laXRoZXIgVFRGUyBub3JcbiAqIFNUU08pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVN0ZXBMYXRlbmN5RXZlbnREYXRhKHBhcmFtczoge1xuICB0cmFja2luZzogU3RlcExhdGVuY3lUcmFja2luZyB8IHVuZGVmaW5lZDtcbiAgLyoqIGBEYXRlLm5vdygpYCB0YWtlbiBpbW1lZGlhdGVseSBiZWZvcmUgdXNlciBzdGVwIGNvZGUgYmVnYW4gZXhlY3V0aW5nLiAqL1xuICBzdGVwQ29kZVN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdGhpcyBzdGVwIHdhcyBzdGFydGVkIGxhemlseSAobm8gc2VwYXJhdGUgc3RlcF9jcmVhdGVkIHdyaXRlKS4gKi9cbiAgbGF6eVN0ZXBTdGFydDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGJvZHkgcmFuIG9wdGltaXN0aWNhbGx5LCB3aXRob3V0IGF3YWl0aW5nIHN0ZXBfc3RhcnRlZC4gKi9cbiAgb3B0aW1pc3RpY1N0YXJ0OiBib29sZWFuO1xufSk6IFN0ZXBMYXRlbmN5RXZlbnREYXRhIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyB0cmFja2luZyB9ID0gcGFyYW1zO1xuICBpZiAoIXRyYWNraW5nIHx8IHBhcmFtcy5hdHRlbXB0ICE9PSAxKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIENsYW1wIGF0IDA6IGNyb3NzLWludm9jYXRpb24gdGltZXN0YW1wcyBjYW4gY29tZSBmcm9tIGFub3RoZXIgbWFjaGluZSdzXG4gIC8vIGNsb2NrLCBzbyBzbWFsbCBza2V3cyBtdXN0IG5vdCBwcm9kdWNlIG5lZ2F0aXZlIGR1cmF0aW9ucy5cbiAgLy9cbiAgLy8gQSBwcmUtc3RlcCBzZXRBdHRyaWJ1dGVzIGRldG91ciBlbmRzIHRoZSBtZWFzdXJlbWVudCBhdCB0aGUgZmlyc3QgYXR0clxuICAvLyB3cml0ZSBpbnN0ZWFkIG9mIHRoZSBzdGVwJ3MgY29kZSBzdGFydCDigJQgdGhlIHJlbWFpbmRlciBpcyB0aGUgZHVyYXRpb25cbiAgLy8gb2YgdGhlIHNldEF0dHJpYnV0ZXMgY2FsbCAocmVzb2x2ZWQgdmlhIGFuIGV4dHJhIHJlcGxheSksIHdoaWNoIGlzXG4gIC8vIHN1YnRyYWN0ZWQgcmF0aGVyIHRoYW4gZGlzcXVhbGlmeWluZyB0aGUgc2FtcGxlLiBJbiB0aGF0IGNhc2VcbiAgLy8gYHRyYWNraW5nLnByZVN0ZXBCbG9ja2luZ01zYCBhbHJlYWR5IGhvbGRzIG9ubHkgdGhlIGhvb2sgdGltZSBmcm9tXG4gIC8vIEJFRk9SRSB0aGUgYXR0ciB3cml0ZSDigJQgaG9vayB3cml0ZXMgYWZ0ZXIgdGhlIHdpbmRvdyBjbG9zZWQgYXJlIGV4Y2x1ZGVkXG4gIC8vIGJ5IGNvbXB1dGVTdGVwTGF0ZW5jeVRyYWNraW5nIChzZWUgcHJlU3RlcEJsb2NraW5nQmVmb3JlQXR0ck1zKS5cbiAgY29uc3QgdHRmc0VuZE1zID0gdHJhY2tpbmcucHJlU3RlcEF0dHJTdGFydE1zID8/IHBhcmFtcy5zdGVwQ29kZVN0YXJ0ZWRBdE1zO1xuICBjb25zdCB0dGZzID1cbiAgICB0cmFja2luZy50dGZzQW5jaG9yTXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyBNYXRoLm1heChcbiAgICAgICAgICAwLFxuICAgICAgICAgIHR0ZnNFbmRNcyAtIHRyYWNraW5nLnR0ZnNBbmNob3JNcyAtICh0cmFja2luZy5wcmVTdGVwQmxvY2tpbmdNcyA/PyAwKVxuICAgICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc3RzbyA9XG4gICAgdHJhY2tpbmcucHJldlN0ZXBFbmRNcyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IE1hdGgubWF4KDAsIHBhcmFtcy5zdGVwQ29kZVN0YXJ0ZWRBdE1zIC0gdHJhY2tpbmcucHJldlN0ZXBFbmRNcylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gIGlmICh0dGZzID09PSB1bmRlZmluZWQgJiYgc3RzbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG9wdGltaXphdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIGlmICh0cmFja2luZy50dXJibykgb3B0aW1pemF0aW9ucy5wdXNoKCd0dXJibycpO1xuICBpZiAocGFyYW1zLmxhenlTdGVwU3RhcnQpIG9wdGltaXphdGlvbnMucHVzaCgnbGF6eVN0ZXBTdGFydCcpO1xuICBpZiAocGFyYW1zLm9wdGltaXN0aWNTdGFydCkgb3B0aW1pemF0aW9ucy5wdXNoKCdvcHRpbWlzdGljU3RhcnQnKTtcblxuICByZXR1cm4ge1xuICAgIC4uLih0dGZzICE9PSB1bmRlZmluZWQgPyB7IHR0ZnMgfSA6IHt9KSxcbiAgICAuLi4oc3RzbyAhPT0gdW5kZWZpbmVkID8geyBzdHNvIH0gOiB7fSksXG4gICAgb3B0aW1pemF0aW9ucyxcbiAgfTtcbn1cbiJdfQ==
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1sYXRlbmN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvc3RlcC1sYXRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSw4QkFBOEIsR0FBb0MsSUFBSSxHQUFHLENBQzdFO0lBQ0UsY0FBYztJQUNkLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGdCQUFnQjtDQUNqQixDQUNGLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUEyQzFDO0lBQ0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUxQixJQUFJLFlBQVksR0FDZCxNQUFNLENBQUMsc0JBQXNCO1FBQzdCLE1BQU0sQ0FBQyxjQUFjLEtBQUssU0FBUztRQUNuQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUM3QixJQUFJLGtCQUFzQyxDQUFDO0lBQzNDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixJQUFJLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDckIsTUFBTTtZQUNSLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0Qsa0JBQWtCO29CQUNoQixrQkFBa0IsS0FBSyxTQUFTO3dCQUM5QixDQUFDLENBQUMsV0FBVzt3QkFDYixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcs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O1lBQ3hELENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQ25DLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFNBQVM7WUFDekQsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDckMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLGFBQWE7S0FDZCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXZlbnQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuXG4vKipcbiAqIENsaWVudC1zaWRlIGxhdGVuY3kgbWVhc3VyZW1lbnQgKFRURlMgLyBTVFNPKSB0aHJlYWRlZCBmcm9tIHRoZVxuICogb3JjaGVzdHJhdG9yJ3MgaW5saW5lIGV4ZWN1dGlvbiBwYXRoIGludG8gYGV4ZWN1dGVTdGVwYC5cbiAqXG4gKiBUVEZTICh0aW1lLXRvLWZpcnN0LXN0ZXApIG1lYXN1cmVzIHJ1biBjcmVhdGlvbiDihpIgdGhlIGZpcnN0IHN0ZXAncyBib2R5XG4gKiBiZWdpbm5pbmcgdG8gZXhlY3V0ZS4gU1RTTyAoc3RlcC10by1zdGVwIG92ZXJoZWFkKSBtZWFzdXJlcyB0aGUgcHJldmlvdXNcbiAqIHN0ZXAncyB0ZXJtaW5hbCBldmVudCDihpIgdGhlIG5leHQgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUuIEJvdGggYXJlXG4gKiBhdHRhY2hlZCB0byB0aGUgc3RlcCdzIHRlcm1pbmFsIGV2ZW50IHNvIGEgYmFja2VuZCBjYW4gZW1pdCBsYXRlbmN5IG1ldHJpY3NcbiAqIGZyb20gdGhlIGV2ZW50IHdyaXRlIGFsb25lLCB3aXRob3V0IGV4dHJhIGV2ZW50LWxvZyBxdWVyaWVzLlxuICpcbiAqIEVsaWdpYmlsaXR5IGlzIGRlY2lkZWQgYnkgdGhlIG9yY2hlc3RyYXRvciAod2hpY2ggb3ducyB0aGUgZXZlbnQgbG9nKSB2aWFcbiAqIHtAbGluayBjb21wdXRlU3RlcExhdGVuY3lUcmFja2luZ307IHRoZSBmaW5hbCB2YWx1ZXMgYXJlIGNvbXB1dGVkIGJ5XG4gKiBgZXhlY3V0ZVN0ZXBgIHJpZ2h0IGJlZm9yZSB1c2VyIGNvZGUgcnVucyB2aWFcbiAqIHtAbGluayBjb21wdXRlU3RlcExhdGVuY3lFdmVudERhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBMYXRlbmN5VHJhY2tpbmcge1xuICAvKipcbiAgICogRXBvY2ggbXMgb2YgcnVuIGNyZWF0aW9uIChmcm9tIHRoZSBydW4taWQgVUxJRCwgZmFsbGluZyBiYWNrIHRvIHRoZSBydW5cbiAgICogc25hcHNob3QncyBgY3JlYXRlZEF0YCkuIFByZXNlbnQgb25seSB3aGVuIHRoZSBzdGVwIHF1YWxpZmllcyBmb3IgVFRGUy5cbiAgICovXG4gIHR0ZnNBbmNob3JNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdhbGwtY2xvY2sgbXMgdGhpcyBpbnZvY2F0aW9uIHNwZW50IGNvbW1pdHRpbmcgYGhvb2tfY3JlYXRlZGAgZXZlbnRzXG4gICAqIGJlZm9yZSB0aGUgZmlyc3Qgc3RlcCAoZmlyZS1hbmQtZm9yZ2V0IGBjcmVhdGVIb29rKClgIGFoZWFkIG9mIHRoZSBmaXJzdFxuICAgKiBzdGVwIGNvbW1pdHMgaW4gdGhlIHNhbWUgc3VzcGVuc2lvbiBiYXRjaCkuIFN1YnRyYWN0ZWQgZnJvbSBUVEZTIHNvIHRoZVxuICAgKiBtZXRyaWMgcmVmbGVjdHMgcnVudGltZSBvdmVyaGVhZCByYXRoZXIgdGhhbiB0aGUgdXNlcidzIGhvb2sgd3JpdGVzLlxuICAgKi9cbiAgcHJlU3RlcEJsb2NraW5nTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFcG9jaCBtcyB0aGUgZmlyc3QgcHJlLXN0ZXAgYGF0dHJfc2V0YCB3cml0ZSBiZWdhbiAoaXRzIGNsaWVudC1zdGFtcGVkXG4gICAqIGBvY2N1cnJlZEF0YCwgZmFsbGluZyBiYWNrIHRvIGBjcmVhdGVkQXRgKS4gV2hlbiBwcmVzZW50LCB0aGUgVFRGU1xuICAgKiBtZWFzdXJlbWVudCBFTkRTIGhlcmUgaW5zdGVhZCBvZiBhdCB0aGUgc3RlcCdzIGNvZGUgc3RhcnQ6IGFcbiAgICogd29ya2Zsb3ctYm9keSBgZXhwZXJpbWVudGFsX3NldEF0dHJpYnV0ZXNgIGJlZm9yZSB0aGUgZmlyc3Qgc3RlcFxuICAgKiByZXNvbHZlcyB0aHJvdWdoIGFuIGV4dHJhIHJlcGxheSAoc2VlIHRoZSBgaGFzQXR0cmlidXRlRXZlbnRzYCBicmFuY2ggaW5cbiAgICogcnVudGltZS50cyksIHNvIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIHdyaXRlIHVudGlsIHRoZSBzdGVwIGJvZHkgcnVucyBpc1xuICAgKiB0aGUgZHVyYXRpb24gb2YgdGhlIHNldEF0dHJpYnV0ZXMgY2FsbCDigJQgd2hpY2ggaXMgc3VidHJhY3RlZCBieSBlbmRpbmdcbiAgICogdGhlIG1lYXN1cmVtZW50IGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgc3RlcCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBiZWVuXG4gICAqIHNjaGVkdWxlZC5cbiAgICovXG4gIHByZVN0ZXBBdHRyU3RhcnRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEVwb2NoIG1zIHRoZSBwcmV2aW91cyBzdGVwJ3MgdGVybWluYWwgZXZlbnQgd2FzIHJlY29yZGVkIChpdHNcbiAgICogY2xpZW50LXN0YW1wZWQgYG9jY3VycmVkQXRgLCBmYWxsaW5nIGJhY2sgdG8gYGNyZWF0ZWRBdGApLiBQcmVzZW50IG9ubHlcbiAgICogd2hlbiB0aGUgc3RlcCBxdWFsaWZpZXMgZm9yIFNUU08uXG4gICAqL1xuICBwcmV2U3RlcEVuZE1zPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHVuaXF1ZSB0ZXJtaW5hbCBzdGVwcyBhbHJlYWR5IGluIHRoZSBldmVudCBsb2cuICovXG4gIHN0ZXBDb3VudD86IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBldmVudHMgYWxyZWFkeSBpbiB0aGUgZXZlbnQgbG9nLiAqL1xuICBldmVudENvdW50PzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0dXJibyBtb2RlIGlzIGFjdGl2ZSBmb3IgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICB0dXJibzogYm9vbGVhbjtcbn1cblxuLyoqIExhdGVuY3kgdGVsZW1ldHJ5IGF0dGFjaGVkIHRvIGEgc3RlcCdzIHRlcm1pbmFsIGV2ZW50J3MgYGV2ZW50RGF0YWAuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBMYXRlbmN5RXZlbnREYXRhIHtcbiAgdHRmcz86IG51bWJlcjtcbiAgc3Rzbz86IG51bWJlcjtcbiAgc3RlcENvdW50PzogbnVtYmVyO1xuICBldmVudENvdW50PzogbnVtYmVyO1xuICBvcHRpbWl6YXRpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogRXZlbnQgdHlwZXMgdGhhdCBkaXNxdWFsaWZ5IFRURlMgd2hlbiBwcmVzZW50IGluIHRoZSBldmVudCBsb2cgYXQgdGhlIHRpbWVcbiAqIHRoZSBydW4ncyBmaXJzdCBzdGVwIGJhdGNoIGlzIHNjaGVkdWxlZDpcbiAqXG4gKiAtIEFueSBzdGVwIGV2ZW50IG1lYW5zIHRoaXMgaXMgbm90IHRoZSBydW4ncyBmaXJzdCBzdGVwIGV4ZWN1dGlvbi5cbiAqIC0gYGhvb2tfcmVjZWl2ZWRgIC8gYHdhaXRfY3JlYXRlZGAgLyBgd2FpdF9jb21wbGV0ZWRgIG1lYW4gdGhlIHJ1bidzIHBhdGggdG9cbiAqICAgdGhlIGZpcnN0IHN0ZXAgZGVwZW5kZWQgb24gdXNlci1kcml2ZW4gdGltaW5nIChhIHdlYmhvb2sgYXJyaXZpbmcsIGFcbiAqICAgc2xlZXAgZWxhcHNpbmcpLCBzbyB0aGUgbWVhc3VyZW1lbnQgd291bGQgbm90IHJlZmxlY3QgcnVudGltZSBvdmVyaGVhZC5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgYWJzZW50LCB3aXRoIHRoZWlyIGNvc3Qgc3VidHJhY3RlZCBpbnN0ZWFkOlxuICpcbiAqIC0gYGhvb2tfY3JlYXRlZGA6IGEgZmlyZS1hbmQtZm9yZ2V0IGBjcmVhdGVIb29rKClgIGJlZm9yZSB0aGUgZmlyc3Qgc3RlcFxuICogICBjb21taXRzIGluIHRoZSBzYW1lIGludm9jYXRpb24sIHdob3NlIG1lYXN1cmVkIGR1cmF0aW9uIGlzIHN1YnRyYWN0ZWQgdmlhXG4gKiAgIHtAbGluayBTdGVwTGF0ZW5jeVRyYWNraW5nLnByZVN0ZXBCbG9ja2luZ01zfS5cbiAqIC0gYGF0dHJfc2V0YCAod29ya2Zsb3ctYm9keSBgZXhwZXJpbWVudGFsX3NldEF0dHJpYnV0ZXNgKTogcmVzb2x2ZXMgdGhyb3VnaFxuICogICBhbiBleHRyYSByZXBsYXkgYmVmb3JlIHN0ZXBzIHJ1bi4gU3VidHJhY3RlZCBieSBlbmRpbmcgdGhlIG1lYXN1cmVtZW50IGF0XG4gKiAgIHRoZSBmaXJzdCBhdHRyIHdyaXRlJ3MgdGltZXN0YW1wIGluc3RlYWQg4oCUIHNlZVxuICogICB7QGxpbmsgU3RlcExhdGVuY3lUcmFja2luZy5wcmVTdGVwQXR0clN0YXJ0TXN9LlxuICovXG5jb25zdCBUVEZTX0RJU1FVQUxJRllJTkdfRVZFTlRfVFlQRVM6IFJlYWRvbmx5U2V0PEV2ZW50WydldmVudFR5cGUnXT4gPSBuZXcgU2V0KFxuICBbXG4gICAgJ3N0ZXBfY3JlYXRlZCcsXG4gICAgJ3N0ZXBfc3RhcnRlZCcsXG4gICAgJ3N0ZXBfY29tcGxldGVkJyxcbiAgICAnc3RlcF9mYWlsZWQnLFxuICAgICdzdGVwX3JldHJ5aW5nJyxcbiAgICAnaG9va19yZWNlaXZlZCcsXG4gICAgJ3dhaXRfY3JlYXRlZCcsXG4gICAgJ3dhaXRfY29tcGxldGVkJyxcbiAgXVxuKTtcblxuLyoqXG4gKiBEZWNpZGUsIGZyb20gdGhlIG9yY2hlc3RyYXRvcidzIHZpZXcgb2YgdGhlIGV2ZW50IGxvZywgd2hldGhlciB0aGUgaW5saW5lXG4gKiBzdGVwIGJhdGNoIGFib3V0IHRvIGV4ZWN1dGUgcXVhbGlmaWVzIGZvciBUVEZTIGFuZC9vciBTVFNPIG1lYXN1cmVtZW50LlxuICogUmV0dXJucyB1bmRlZmluZWQgd2hlbiBuZWl0aGVyIGFwcGxpZXMuIENhbGxlZCBvbmNlIHBlciBiYXRjaDsgdGhlIHJlc3VsdFxuICogaXMgcGFzc2VkIHRvIHRoZSBiYXRjaCdzIGZpcnN0IHN0ZXAgb25seSwgc28gYSBwYXJhbGxlbCBmaXJzdCBiYXRjaCBlbWl0cyBhXG4gKiBzaW5nbGUgc2FtcGxlIHJhdGhlciB0aGFuIG9uZSBwZXIgc2libGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTdGVwTGF0ZW5jeVRyYWNraW5nKHBhcmFtczoge1xuICAvKiogVGhlIG9yY2hlc3RyYXRvcidzIGN1cnJlbnQgaW4tbWVtb3J5IGV2ZW50IGxvZyAoYXNjZW5kaW5nIG9yZGVyKS4gKi9cbiAgZXZlbnRzOiBFdmVudFtdO1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIGludm9jYXRpb24ncyBpbml0aWFsIGV2ZW50IGxvYWQgY29udGFpbmVkIG5vdGhpbmcgYmV5b25kXG4gICAqIHJ1bl9jcmVhdGVkL3J1bl9zdGFydGVkL2F0dHJfc2V0LiBQcmUtZXhpc3RpbmcgaG9vayBldmVudHMgd2VyZSB3cml0dGVuXG4gICAqIGJ5IGFuIGVhcmxpZXIgaW52b2NhdGlvbiwgc28gdGhlIHRpbWUgdGhleSBhZGRlZCAoaW5jbHVkaW5nIHRoZSBxdWV1ZVxuICAgKiBob3AgYmFjayB0byB0aGlzIGludm9jYXRpb24pIGlzIHVubWVhc3VyYWJsZSBhbmQgZGlzcXVhbGlmaWVzIFRURlMuXG4gICAqIGF0dHJfc2V0IGlzIHBlcm1pdHRlZDogYSByZWRlbGl2ZXJ5IGNhbiBsYW5kIGFmdGVyIGEgY29tbWl0dGVkIHByZS1zdGVwXG4gICAqIGF0dHJfc2V0LCBhbmQgdGhlIGRldG91ciBpdCBtYXJrcyBpcyBzdWJ0cmFjdGVkIHZpYSBgcHJlU3RlcEF0dHJTdGFydE1zYFxuICAgKiByZWdhcmRsZXNzIG9mIHdoaWNoIGludm9jYXRpb24gd3JvdGUgaXQuXG4gICAqL1xuICBpbnZvY2F0aW9uU3RhcnRlZENsZWFuOiBib29sZWFuO1xuICAvKiogRXBvY2ggbXMgb2YgcnVuIGNyZWF0aW9uLCBpZiByZWNvdmVyYWJsZS4gQWJzZW50IGRpc3F1YWxpZmllcyBUVEZTLiAqL1xuICBydW5DcmVhdGVkQXRNczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKiogU2VlIHtAbGluayBTdGVwTGF0ZW5jeVRyYWNraW5nLnByZVN0ZXBCbG9ja2luZ01zfS4gKi9cbiAgcHJlU3RlcEJsb2NraW5nTXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBhY2N1bXVsYXRvcidzIHZhbHVlIGFzIG9mIHRoZSBzdXNwZW5zaW9uIHRoYXQgd3JvdGUgdGhlIHJ1bidzIGZpcnN0XG4gICAqIGF0dHJfc2V0IChpdHMgaG9vayBwaGFzZSBydW5zIGJlZm9yZSBpdHMgYXR0ciB3cml0ZXMpLiBXaGVuIHRoZVxuICAgKiBtZWFzdXJlbWVudCBlbmRzIGF0IHRoZSBhdHRyIHdyaXRlLCBvbmx5IGhvb2sgdGltZSBmcm9tIGJlZm9yZSB0aGF0XG4gICAqIHBvaW50IG1heSBiZSBzdWJ0cmFjdGVkIOKAlCBsYXRlciBob29rIHdyaXRlcyBmYWxsIG91dHNpZGUgdGhlIG1lYXN1cmVkXG4gICAqIHdpbmRvdy4gVW5kZWZpbmVkIHdoZW4gbm8gYXR0ciBzdXNwZW5zaW9uIGhhcHBlbmVkIGluIHRoaXMgaW52b2NhdGlvblxuICAgKiAoZS5nLiB0aGUgYXR0cl9zZXQgd2FzIGxvYWRlZCBmcm9tIGEgcmVkZWxpdmVyeSdzIHNuYXBzaG90LCB3aGVyZSBub1xuICAgKiBzYW1lLWludm9jYXRpb24gaG9vayB0aW1lIHByZWNlZGVzIGl0KS5cbiAgICovXG4gIHByZVN0ZXBCbG9ja2luZ0JlZm9yZUF0dHJNczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgc3VzcGVuc2lvbiB0aGF0IHNjaGVkdWxlZCB0aGlzIGJhdGNoIGFsc28gY3JlYXRlZCB3YWl0cy5cbiAgICogVGhvc2UgYHdhaXRfY3JlYXRlZGAgd3JpdGVzIGFyZSBub3QgaW4gYGV2ZW50c2AgeWV0ICh0aGV5IHdlcmUgY29tbWl0dGVkXG4gICAqIGJ5IHRoaXMgdmVyeSBzdXNwZW5zaW9uIHBhc3MpLCBzbyB0aGV5IG11c3QgYmUgcmVwb3J0ZWQgc2VwYXJhdGVseS4gQVxuICAgKiB3YWl0IGRpc3F1YWxpZmllcyBib3RoIG1lYXN1cmVtZW50cy5cbiAgICovXG4gIHN1c3BlbnNpb25IYXNXYWl0czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN1c3BlbnNpb24gdGhhdCBzY2hlZHVsZWQgdGhpcyBiYXRjaCBhbHNvIGNyZWF0ZWQgaG9va3NcbiAgICogKGFsc28gbm90IGluIGBldmVudHNgIHlldCkuIEhvb2tzIGtlZXAgVFRGUyBlbGlnaWJsZSDigJQgdGhlaXIgbWVhc3VyZWRcbiAgICogd3JpdGUgdGltZSBpcyBzdWJ0cmFjdGVkIHZpYSBgcHJlU3RlcEJsb2NraW5nTXNgIOKAlCBidXQgZGlzcXVhbGlmeSBTVFNPLFxuICAgKiB3aGljaCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGEgcHVyZSBiYWNrLXRvLWJhY2sgc3RlcCBnYXAuXG4gICAqL1xuICBzdXNwZW5zaW9uQ3JlYXRlZEhvb2tzOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0dXJibyBtb2RlIGlzIGFjdGl2ZSBmb3IgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICB0dXJibzogYm9vbGVhbjtcbn0pOiBTdGVwTGF0ZW5jeVRyYWNraW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyBldmVudHMgfSA9IHBhcmFtcztcblxuICBsZXQgdHRmc0VsaWdpYmxlID1cbiAgICBwYXJhbXMuaW52b2NhdGlvblN0YXJ0ZWRDbGVhbiAmJlxuICAgIHBhcmFtcy5ydW5DcmVhdGVkQXRNcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgIXBhcmFtcy5zdXNwZW5zaW9uSGFzV2FpdHM7XG4gIGxldCBwcmVTdGVwQXR0clN0YXJ0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaWYgKHR0ZnNFbGlnaWJsZSkge1xuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgICBpZiAoVFRGU19ESVNRVUFMSUZZSU5HX0VWRU5UX1RZUEVTLmhhcyhldmVudC5ldmVudFR5cGUpKSB7XG4gICAgICAgIHR0ZnNFbGlnaWJsZSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdhdHRyX3NldCcpIHtcbiAgICAgICAgY29uc3QgYXR0clN0YXJ0TXMgPSArKGV2ZW50Lm9jY3VycmVkQXQgPz8gZXZlbnQuY3JlYXRlZEF0KTtcbiAgICAgICAgcHJlU3RlcEF0dHJTdGFydE1zID1cbiAgICAgICAgICBwcmVTdGVwQXR0clN0YXJ0TXMgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhdHRyU3RhcnRNc1xuICAgICAgICAgICAgOiBNYXRoLm1pbihwcmVTdGVwQXR0clN0YXJ0TXMsIGF0dHJTdGFydE1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTVFNPOiB0aGUgdHdvIHN0ZXBzIHJhbiBiYWNrLXRvLWJhY2sg4oCUIHRoZSBuZXdlc3Qga25vd24gZXZlbnQgaXMgdGhlXG4gIC8vIHByZXZpb3VzIHN0ZXAncyB0ZXJtaW5hbCBldmVudCwgd2l0aCBub3RoaW5nIChob29rX3JlY2VpdmVkLCB3YWl0cyxcbiAgLy8gYXR0cl9zZXQsIC4uLikgaW4gYmV0d2VlbiBhbmQgdGhpcyBzdXNwZW5zaW9uIHNjaGVkdWxpbmcgbm90aGluZyBidXRcbiAgLy8gc3RlcHMuXG4gIGxldCBwcmV2U3RlcEVuZE1zOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGxldCBzdGVwQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbGV0IGV2ZW50Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgY29uc3QgbGFzdEV2ZW50ID0gZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAxXTtcbiAgaWYgKFxuICAgICFwYXJhbXMuc3VzcGVuc2lvbkhhc1dhaXRzICYmXG4gICAgIXBhcmFtcy5zdXNwZW5zaW9uQ3JlYXRlZEhvb2tzICYmXG4gICAgbGFzdEV2ZW50ICYmXG4gICAgKGxhc3RFdmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2NvbXBsZXRlZCcgfHxcbiAgICAgIGxhc3RFdmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2ZhaWxlZCcpXG4gICkge1xuICAgIHByZXZTdGVwRW5kTXMgPSArKGxhc3RFdmVudC5vY2N1cnJlZEF0ID8/IGxhc3RFdmVudC5jcmVhdGVkQXQpO1xuICAgIGNvbnN0IHRlcm1pbmFsU3RlcElkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2ZhaWxlZCcpICYmXG4gICAgICAgIGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIHRlcm1pbmFsU3RlcElkcy5hZGQoZXZlbnQuY29ycmVsYXRpb25JZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHN0ZXBDb3VudCA9IHRlcm1pbmFsU3RlcElkcy5zaXplO1xuICAgIGV2ZW50Q291bnQgPSBldmVudHMubGVuZ3RoO1xuICB9XG5cbiAgaWYgKCF0dGZzRWxpZ2libGUgJiYgcHJldlN0ZXBFbmRNcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uKHR0ZnNFbGlnaWJsZVxuICAgICAgPyB7XG4gICAgICAgICAgdHRmc0FuY2hvck1zOiBwYXJhbXMucnVuQ3JlYXRlZEF0TXMsXG4gICAgICAgICAgLy8gV2hlbiB0aGUgbWVhc3VyZW1lbnQgZW5kcyBhdCB0aGUgZmlyc3QgYXR0ciB3cml0ZSwgb25seSBob29rXG4gICAgICAgICAgLy8gdGltZSBmcm9tIGJlZm9yZSB0aGF0IHBvaW50IGlzIGluc2lkZSB0aGUgbWVhc3VyZWQgd2luZG93LlxuICAgICAgICAgIHByZVN0ZXBCbG9ja2luZ01zOlxuICAgICAgICAgICAgcHJlU3RlcEF0dHJTdGFydE1zICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAocGFyYW1zLnByZVN0ZXBCbG9ja2luZ0JlZm9yZUF0dHJNcyA/PyAwKVxuICAgICAgICAgICAgICA6IHBhcmFtcy5wcmVTdGVwQmxvY2tpbmdNcyxcbiAgICAgICAgICAuLi4ocHJlU3RlcEF0dHJTdGFydE1zICE9PSB1bmRlZmluZWQgPyB7IHByZVN0ZXBBdHRyU3RhcnRNcyB9IDoge30pLFxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4ocHJldlN0ZXBFbmRNcyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgcHJldlN0ZXBFbmRNcywgc3RlcENvdW50LCBldmVudENvdW50IH1cbiAgICAgIDoge30pLFxuICAgIHR1cmJvOiBwYXJhbXMudHVyYm8sXG4gIH07XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgbGF0ZW5jeSB0ZWxlbWV0cnkgdG8gYXR0YWNoIHRvIHRoZSBzdGVwJ3MgdGVybWluYWwgZXZlbnQuXG4gKiBDYWxsZWQgYnkgYGV4ZWN1dGVTdGVwYCB3aXRoIHRoZSB3YWxsLWNsb2NrIHRpbWVzdGFtcCB0YWtlbiBpbW1lZGlhdGVseVxuICogYmVmb3JlIHVzZXIgc3RlcCBjb2RlIHJ1bnMuIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0b1xuICogcmVwb3J0IChubyB0cmFja2luZywgb3IgYSByZXRyeSBhdHRlbXB0IOKAlCByZXRyaWVzIG1lYXN1cmUgbmVpdGhlciBUVEZTIG5vclxuICogU1RTTykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU3RlcExhdGVuY3lFdmVudERhdGEocGFyYW1zOiB7XG4gIHRyYWNraW5nOiBTdGVwTGF0ZW5jeVRyYWNraW5nIHwgdW5kZWZpbmVkO1xuICAvKiogYERhdGUubm93KClgIHRha2VuIGltbWVkaWF0ZWx5IGJlZm9yZSB1c2VyIHN0ZXAgY29kZSBiZWdhbiBleGVjdXRpbmcuICovXG4gIHN0ZXBDb2RlU3RhcnRlZEF0TXM6IG51bWJlcjtcbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogV2hldGhlciB0aGlzIHN0ZXAgd2FzIHN0YXJ0ZWQgbGF6aWx5IChubyBzZXBhcmF0ZSBzdGVwX2NyZWF0ZWQgd3JpdGUpLiAqL1xuICBsYXp5U3RlcFN0YXJ0OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgYm9keSByYW4gb3B0aW1pc3RpY2FsbHksIHdpdGhvdXQgYXdhaXRpbmcgc3RlcF9zdGFydGVkLiAqL1xuICBvcHRpbWlzdGljU3RhcnQ6IGJvb2xlYW47XG59KTogU3RlcExhdGVuY3lFdmVudERhdGEgfCB1bmRlZmluZWQge1xuICBjb25zdCB7IHRyYWNraW5nIH0gPSBwYXJhbXM7XG4gIGlmICghdHJhY2tpbmcgfHwgcGFyYW1zLmF0dGVtcHQgIT09IDEpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gQ2xhbXAgYXQgMDogY3Jvc3MtaW52b2NhdGlvbiB0aW1lc3RhbXBzIGNhbiBjb21lIGZyb20gYW5vdGhlciBtYWNoaW5lJ3NcbiAgLy8gY2xvY2ssIHNvIHNtYWxsIHNrZXdzIG11c3Qgbm90IHByb2R1Y2UgbmVnYXRpdmUgZHVyYXRpb25zLlxuICAvL1xuICAvLyBBIHByZS1zdGVwIHNldEF0dHJpYnV0ZXMgZGV0b3VyIGVuZHMgdGhlIG1lYXN1cmVtZW50IGF0IHRoZSBmaXJzdCBhdHRyXG4gIC8vIHdyaXRlIGluc3RlYWQgb2YgdGhlIHN0ZXAncyBjb2RlIHN0YXJ0IOKAlCB0aGUgcmVtYWluZGVyIGlzIHRoZSBkdXJhdGlvblxuICAvLyBvZiB0aGUgc2V0QXR0cmlidXRlcyBjYWxsIChyZXNvbHZlZCB2aWEgYW4gZXh0cmEgcmVwbGF5KSwgd2hpY2ggaXNcbiAgLy8gc3VidHJhY3RlZCByYXRoZXIgdGhhbiBkaXNxdWFsaWZ5aW5nIHRoZSBzYW1wbGUuIEluIHRoYXQgY2FzZVxuICAvLyBgdHJhY2tpbmcucHJlU3RlcEJsb2NraW5nTXNgIGFscmVhZHkgaG9sZHMgb25seSB0aGUgaG9vayB0aW1lIGZyb21cbiAgLy8gQkVGT1JFIHRoZSBhdHRyIHdyaXRlIOKAlCBob29rIHdyaXRlcyBhZnRlciB0aGUgd2luZG93IGNsb3NlZCBhcmUgZXhjbHVkZWRcbiAgLy8gYnkgY29tcHV0ZVN0ZXBMYXRlbmN5VHJhY2tpbmcgKHNlZSBwcmVTdGVwQmxvY2tpbmdCZWZvcmVBdHRyTXMpLlxuICBjb25zdCB0dGZzRW5kTXMgPSB0cmFja2luZy5wcmVTdGVwQXR0clN0YXJ0TXMgPz8gcGFyYW1zLnN0ZXBDb2RlU3RhcnRlZEF0TXM7XG4gIGNvbnN0IHR0ZnMgPVxuICAgIHRyYWNraW5nLnR0ZnNBbmNob3JNcyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IE1hdGgubWF4KFxuICAgICAgICAgIDAsXG4gICAgICAgICAgdHRmc0VuZE1zIC0gdHJhY2tpbmcudHRmc0FuY2hvck1zIC0gKHRyYWNraW5nLnByZVN0ZXBCbG9ja2luZ01zID8/IDApXG4gICAgICAgIClcbiAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBzdHNvID1cbiAgICB0cmFja2luZy5wcmV2U3RlcEVuZE1zICE9PSB1bmRlZmluZWRcbiAgICAgID8gTWF0aC5tYXgoMCwgcGFyYW1zLnN0ZXBDb2RlU3RhcnRlZEF0TXMgLSB0cmFja2luZy5wcmV2U3RlcEVuZE1zKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKHR0ZnMgPT09IHVuZGVmaW5lZCAmJiBzdHNvID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3Qgb3B0aW1pemF0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKHRyYWNraW5nLnR1cmJvKSBvcHRpbWl6YXRpb25zLnB1c2goJ3R1cmJvJyk7XG4gIGlmIChwYXJhbXMubGF6eVN0ZXBTdGFydCkgb3B0aW1pemF0aW9ucy5wdXNoKCdsYXp5U3RlcFN0YXJ0Jyk7XG4gIGlmIChwYXJhbXMub3B0aW1pc3RpY1N0YXJ0KSBvcHRpbWl6YXRpb25zLnB1c2goJ29wdGltaXN0aWNTdGFydCcpO1xuXG4gIHJldHVybiB7XG4gICAgLi4uKHR0ZnMgIT09IHVuZGVmaW5lZCA/IHsgdHRmcyB9IDoge30pLFxuICAgIC4uLihzdHNvICE9PSB1bmRlZmluZWQgPyB7IHN0c28gfSA6IHt9KSxcbiAgICAuLi4oc3RzbyAhPT0gdW5kZWZpbmVkICYmIHRyYWNraW5nLnN0ZXBDb3VudCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgc3RlcENvdW50OiB0cmFja2luZy5zdGVwQ291bnQgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHN0c28gIT09IHVuZGVmaW5lZCAmJiB0cmFja2luZy5ldmVudENvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBldmVudENvdW50OiB0cmFja2luZy5ldmVudENvdW50IH1cbiAgICAgIDoge30pLFxuICAgIG9wdGltaXphdGlvbnMsXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { Event } from '@workflow/world';
|
|
2
|
+
import type { StepInvocationQueueItem } from '../global.js';
|
|
3
|
+
/**
|
|
4
|
+
* Inline step ownership helpers for the pending-step dispatch decision table
|
|
5
|
+
* in runtime.ts (workflow#2780). Ownership state itself is derived per-replay
|
|
6
|
+
* from the event log by the step consumer in step.ts and surfaced on
|
|
7
|
+
* StepInvocationQueueItem; these functions interpret that state at dispatch
|
|
8
|
+
* time.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Whether inline step ownership is active for a pending step: created,
|
|
12
|
+
* latest `step_started` carries an owner stamp, and no `step_retrying` has
|
|
13
|
+
* been observed (from `step_retrying` on, the step is queue-owned by its
|
|
14
|
+
* delayed retry handoff / replay requeue, so ownership is permanently
|
|
15
|
+
* lapsed for the correlation ID).
|
|
16
|
+
*/
|
|
17
|
+
export declare function isStepOwnershipActive(step: StepInvocationQueueItem): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Seconds left on an owned step's liveness lease, anchored at its latest
|
|
20
|
+
* `step_started`. 0 means the lease has expired (or the start timestamp is
|
|
21
|
+
* missing — the degraded mode for worlds whose events lack usable
|
|
22
|
+
* timestamps), in which case dispatch falls back to the immediate enqueue.
|
|
23
|
+
*
|
|
24
|
+
* The result is clamped to the configured lease: `lastStartedAt` is the
|
|
25
|
+
* server-stamped event `createdAt` while `nowMs` is the local clock, so a
|
|
26
|
+
* client running behind the server would otherwise compute a remainder
|
|
27
|
+
* LONGER than the lease itself — and with the lease tuned to the 900s cap,
|
|
28
|
+
* a `delaySeconds` above the queue's per-message maximum, which SQS-backed
|
|
29
|
+
* worlds reject outright (the wake replay's enqueue would throw and ride
|
|
30
|
+
* the redelivery loop). The clamp makes skew strictly harmless; remaining
|
|
31
|
+
* time can never legitimately exceed the full lease anyway.
|
|
32
|
+
*/
|
|
33
|
+
export declare function stepLeaseRemainingSeconds(step: StepInvocationQueueItem, nowMs: number): number;
|
|
34
|
+
/**
|
|
35
|
+
* Idempotency key for the delayed backstop wake of an inline-owned step.
|
|
36
|
+
*
|
|
37
|
+
* The key is scoped to the current OWNERSHIP EPOCH — the timestamp of the
|
|
38
|
+
* latest `step_started` — not just the correlation ID. Within one epoch,
|
|
39
|
+
* every wake replay derives the same key, so fan-out stays capped at one
|
|
40
|
+
* pending backstop per step. But when owner recovery re-stamps the step
|
|
41
|
+
* (queue redelivery of the owning message → new `step_started` → new
|
|
42
|
+
* `lastStartedAt`), the key CHANGES. This is load-bearing for liveness:
|
|
43
|
+
* queues dedupe an idempotency key for the lifetime of the original
|
|
44
|
+
* message — including while a delivery of it is in flight — so a backstop
|
|
45
|
+
* that fires during a refreshed lease and tries to re-arm under a fixed key
|
|
46
|
+
* would dedupe against ITSELF and be dropped, leaving no escape hatch if
|
|
47
|
+
* the recovered owner later dies without further redeliveries. The epoch
|
|
48
|
+
* suffix gives the re-arm a fresh key. Pending backstops are bounded by the
|
|
49
|
+
* number of ownership epochs, i.e. the queue's redelivery budget for the
|
|
50
|
+
* owning message.
|
|
51
|
+
*
|
|
52
|
+
* The epoch value comes from the persisted event's `createdAt`, so every
|
|
53
|
+
* replayer derives the same key. Callers only build backstops when the
|
|
54
|
+
* lease has time remaining, which requires `lastStartedAt` to be set.
|
|
55
|
+
*
|
|
56
|
+
* The key must also never be the step message's own `idempotencyKey`
|
|
57
|
+
* (the bare correlation ID): the owner's retry handoff enqueues the step
|
|
58
|
+
* under that key with a short backoff, and a pending backstop sharing it
|
|
59
|
+
* would absorb the retry — turning a 1s backoff into a full-lease stall.
|
|
60
|
+
*/
|
|
61
|
+
export declare function backstopIdempotencyKey(step: StepInvocationQueueItem): string;
|
|
62
|
+
/**
|
|
63
|
+
* Whether any of the given pending correlation IDs is inline-owned by
|
|
64
|
+
* `messageId` per the raw event log: its LATEST `step_started` carries
|
|
65
|
+
* `ownerMessageId === messageId` and no `step_retrying` follows it. Used by
|
|
66
|
+
* the background-step fast path, which sees raw events (not the replay's
|
|
67
|
+
* queueItems), to decide whether to fall through to the main loop so this
|
|
68
|
+
* invocation can recover a step it owns instead of returning and leaving it
|
|
69
|
+
* to the delayed backstop.
|
|
70
|
+
*/
|
|
71
|
+
export declare function hasPendingStepOwnedByMessage(events: Event[], pendingCorrelationIds: Set<string | undefined>, messageId: string): boolean;
|
|
72
|
+
//# sourceMappingURL=step-ownership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-ownership.d.ts","sourceRoot":"","sources":["../../src/runtime/step-ownership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG5D;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAM5E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,KAAK,EAAE,EACf,qBAAqB,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAC9C,SAAS,EAAE,MAAM,GAChB,OAAO,CAgCT"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { getInlineOwnershipLeaseSeconds } from './constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Inline step ownership helpers for the pending-step dispatch decision table
|
|
4
|
+
* in runtime.ts (workflow#2780). Ownership state itself is derived per-replay
|
|
5
|
+
* from the event log by the step consumer in step.ts and surfaced on
|
|
6
|
+
* StepInvocationQueueItem; these functions interpret that state at dispatch
|
|
7
|
+
* time.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Whether inline step ownership is active for a pending step: created,
|
|
11
|
+
* latest `step_started` carries an owner stamp, and no `step_retrying` has
|
|
12
|
+
* been observed (from `step_retrying` on, the step is queue-owned by its
|
|
13
|
+
* delayed retry handoff / replay requeue, so ownership is permanently
|
|
14
|
+
* lapsed for the correlation ID).
|
|
15
|
+
*/
|
|
16
|
+
export function isStepOwnershipActive(step) {
|
|
17
|
+
return (step.hasCreatedEvent === true &&
|
|
18
|
+
step.ownerMessageId !== undefined &&
|
|
19
|
+
step.sawRetrying !== true);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Seconds left on an owned step's liveness lease, anchored at its latest
|
|
23
|
+
* `step_started`. 0 means the lease has expired (or the start timestamp is
|
|
24
|
+
* missing — the degraded mode for worlds whose events lack usable
|
|
25
|
+
* timestamps), in which case dispatch falls back to the immediate enqueue.
|
|
26
|
+
*
|
|
27
|
+
* The result is clamped to the configured lease: `lastStartedAt` is the
|
|
28
|
+
* server-stamped event `createdAt` while `nowMs` is the local clock, so a
|
|
29
|
+
* client running behind the server would otherwise compute a remainder
|
|
30
|
+
* LONGER than the lease itself — and with the lease tuned to the 900s cap,
|
|
31
|
+
* a `delaySeconds` above the queue's per-message maximum, which SQS-backed
|
|
32
|
+
* worlds reject outright (the wake replay's enqueue would throw and ride
|
|
33
|
+
* the redelivery loop). The clamp makes skew strictly harmless; remaining
|
|
34
|
+
* time can never legitimately exceed the full lease anyway.
|
|
35
|
+
*/
|
|
36
|
+
export function stepLeaseRemainingSeconds(step, nowMs) {
|
|
37
|
+
if (step.lastStartedAt === undefined)
|
|
38
|
+
return 0;
|
|
39
|
+
const leaseSeconds = getInlineOwnershipLeaseSeconds();
|
|
40
|
+
const remainingMs = step.lastStartedAt + leaseSeconds * 1000 - nowMs;
|
|
41
|
+
return Math.min(leaseSeconds, Math.max(0, Math.ceil(remainingMs / 1000)));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Idempotency key for the delayed backstop wake of an inline-owned step.
|
|
45
|
+
*
|
|
46
|
+
* The key is scoped to the current OWNERSHIP EPOCH — the timestamp of the
|
|
47
|
+
* latest `step_started` — not just the correlation ID. Within one epoch,
|
|
48
|
+
* every wake replay derives the same key, so fan-out stays capped at one
|
|
49
|
+
* pending backstop per step. But when owner recovery re-stamps the step
|
|
50
|
+
* (queue redelivery of the owning message → new `step_started` → new
|
|
51
|
+
* `lastStartedAt`), the key CHANGES. This is load-bearing for liveness:
|
|
52
|
+
* queues dedupe an idempotency key for the lifetime of the original
|
|
53
|
+
* message — including while a delivery of it is in flight — so a backstop
|
|
54
|
+
* that fires during a refreshed lease and tries to re-arm under a fixed key
|
|
55
|
+
* would dedupe against ITSELF and be dropped, leaving no escape hatch if
|
|
56
|
+
* the recovered owner later dies without further redeliveries. The epoch
|
|
57
|
+
* suffix gives the re-arm a fresh key. Pending backstops are bounded by the
|
|
58
|
+
* number of ownership epochs, i.e. the queue's redelivery budget for the
|
|
59
|
+
* owning message.
|
|
60
|
+
*
|
|
61
|
+
* The epoch value comes from the persisted event's `createdAt`, so every
|
|
62
|
+
* replayer derives the same key. Callers only build backstops when the
|
|
63
|
+
* lease has time remaining, which requires `lastStartedAt` to be set.
|
|
64
|
+
*
|
|
65
|
+
* The key must also never be the step message's own `idempotencyKey`
|
|
66
|
+
* (the bare correlation ID): the owner's retry handoff enqueues the step
|
|
67
|
+
* under that key with a short backoff, and a pending backstop sharing it
|
|
68
|
+
* would absorb the retry — turning a 1s backoff into a full-lease stall.
|
|
69
|
+
*/
|
|
70
|
+
export function backstopIdempotencyKey(step) {
|
|
71
|
+
return `${step.correlationId}:backstop:${step.lastStartedAt}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Whether any of the given pending correlation IDs is inline-owned by
|
|
75
|
+
* `messageId` per the raw event log: its LATEST `step_started` carries
|
|
76
|
+
* `ownerMessageId === messageId` and no `step_retrying` follows it. Used by
|
|
77
|
+
* the background-step fast path, which sees raw events (not the replay's
|
|
78
|
+
* queueItems), to decide whether to fall through to the main loop so this
|
|
79
|
+
* invocation can recover a step it owns instead of returning and leaving it
|
|
80
|
+
* to the delayed backstop.
|
|
81
|
+
*/
|
|
82
|
+
export function hasPendingStepOwnedByMessage(events, pendingCorrelationIds, messageId) {
|
|
83
|
+
// Latest-wins scan: events are in log order, so later entries overwrite.
|
|
84
|
+
// A step_retrying lapses ownership permanently (matching the sawRetrying
|
|
85
|
+
// semantics of the replay consumer in step.ts) — from that point the step
|
|
86
|
+
// is queue-owned, whatever starts follow.
|
|
87
|
+
const latestOwner = new Map();
|
|
88
|
+
const sawRetrying = new Set();
|
|
89
|
+
for (const e of events) {
|
|
90
|
+
if (e.correlationId === undefined)
|
|
91
|
+
continue;
|
|
92
|
+
if (e.eventType === 'step_started') {
|
|
93
|
+
const owner = 'eventData' in e &&
|
|
94
|
+
e.eventData &&
|
|
95
|
+
'ownerMessageId' in e.eventData &&
|
|
96
|
+
typeof e.eventData.ownerMessageId === 'string'
|
|
97
|
+
? e.eventData.ownerMessageId
|
|
98
|
+
: undefined;
|
|
99
|
+
latestOwner.set(e.correlationId, owner);
|
|
100
|
+
}
|
|
101
|
+
else if (e.eventType === 'step_retrying') {
|
|
102
|
+
sawRetrying.add(e.correlationId);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (const id of pendingCorrelationIds) {
|
|
106
|
+
if (id !== undefined &&
|
|
107
|
+
!sawRetrying.has(id) &&
|
|
108
|
+
latestOwner.get(id) === messageId) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1vd25lcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9zdGVwLW93bmVyc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRTs7Ozs7O0dBTUc7QUFFSDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBNkI7SUFDakUsT0FBTyxDQUNMLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSTtRQUM3QixJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVM7UUFDakMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLElBQTZCLEVBQzdCLEtBQWE7SUFFYixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sWUFBWSxHQUFHLDhCQUE4QixFQUFFLENBQUM7SUFDdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNyRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQTZCO0lBQ2xFLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxhQUFhLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNoRSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLE1BQWUsRUFDZixxQkFBOEMsRUFDOUMsU0FBaUI7SUFFakIseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsMENBQTBDO0lBQzFDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO0lBQzFELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDdEMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUztZQUFFLFNBQVM7UUFDNUMsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUNULFdBQVcsSUFBSSxDQUFDO2dCQUNoQixDQUFDLENBQUMsU0FBUztnQkFDWCxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsU0FBUztnQkFDL0IsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsS0FBSyxRQUFRO2dCQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjO2dCQUM1QixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQzNDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBQ0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3ZDLElBQ0UsRUFBRSxLQUFLLFNBQVM7WUFDaEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFDakMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEV2ZW50IH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgU3RlcEludm9jYXRpb25RdWV1ZUl0ZW0gfSBmcm9tICcuLi9nbG9iYWwuanMnO1xuaW1wb3J0IHsgZ2V0SW5saW5lT3duZXJzaGlwTGVhc2VTZWNvbmRzIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG4vKipcbiAqIElubGluZSBzdGVwIG93bmVyc2hpcCBoZWxwZXJzIGZvciB0aGUgcGVuZGluZy1zdGVwIGRpc3BhdGNoIGRlY2lzaW9uIHRhYmxlXG4gKiBpbiBydW50aW1lLnRzICh3b3JrZmxvdyMyNzgwKS4gT3duZXJzaGlwIHN0YXRlIGl0c2VsZiBpcyBkZXJpdmVkIHBlci1yZXBsYXlcbiAqIGZyb20gdGhlIGV2ZW50IGxvZyBieSB0aGUgc3RlcCBjb25zdW1lciBpbiBzdGVwLnRzIGFuZCBzdXJmYWNlZCBvblxuICogU3RlcEludm9jYXRpb25RdWV1ZUl0ZW07IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcnByZXQgdGhhdCBzdGF0ZSBhdCBkaXNwYXRjaFxuICogdGltZS5cbiAqL1xuXG4vKipcbiAqIFdoZXRoZXIgaW5saW5lIHN0ZXAgb3duZXJzaGlwIGlzIGFjdGl2ZSBmb3IgYSBwZW5kaW5nIHN0ZXA6IGNyZWF0ZWQsXG4gKiBsYXRlc3QgYHN0ZXBfc3RhcnRlZGAgY2FycmllcyBhbiBvd25lciBzdGFtcCwgYW5kIG5vIGBzdGVwX3JldHJ5aW5nYCBoYXNcbiAqIGJlZW4gb2JzZXJ2ZWQgKGZyb20gYHN0ZXBfcmV0cnlpbmdgIG9uLCB0aGUgc3RlcCBpcyBxdWV1ZS1vd25lZCBieSBpdHNcbiAqIGRlbGF5ZWQgcmV0cnkgaGFuZG9mZiAvIHJlcGxheSByZXF1ZXVlLCBzbyBvd25lcnNoaXAgaXMgcGVybWFuZW50bHlcbiAqIGxhcHNlZCBmb3IgdGhlIGNvcnJlbGF0aW9uIElEKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RlcE93bmVyc2hpcEFjdGl2ZShzdGVwOiBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHN0ZXAuaGFzQ3JlYXRlZEV2ZW50ID09PSB0cnVlICYmXG4gICAgc3RlcC5vd25lck1lc3NhZ2VJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgc3RlcC5zYXdSZXRyeWluZyAhPT0gdHJ1ZVxuICApO1xufVxuXG4vKipcbiAqIFNlY29uZHMgbGVmdCBvbiBhbiBvd25lZCBzdGVwJ3MgbGl2ZW5lc3MgbGVhc2UsIGFuY2hvcmVkIGF0IGl0cyBsYXRlc3RcbiAqIGBzdGVwX3N0YXJ0ZWRgLiAwIG1lYW5zIHRoZSBsZWFzZSBoYXMgZXhwaXJlZCAob3IgdGhlIHN0YXJ0IHRpbWVzdGFtcCBpc1xuICogbWlzc2luZyDigJQgdGhlIGRlZ3JhZGVkIG1vZGUgZm9yIHdvcmxkcyB3aG9zZSBldmVudHMgbGFjayB1c2FibGVcbiAqIHRpbWVzdGFtcHMpLCBpbiB3aGljaCBjYXNlIGRpc3BhdGNoIGZhbGxzIGJhY2sgdG8gdGhlIGltbWVkaWF0ZSBlbnF1ZXVlLlxuICpcbiAqIFRoZSByZXN1bHQgaXMgY2xhbXBlZCB0byB0aGUgY29uZmlndXJlZCBsZWFzZTogYGxhc3RTdGFydGVkQXRgIGlzIHRoZVxuICogc2VydmVyLXN0YW1wZWQgZXZlbnQgYGNyZWF0ZWRBdGAgd2hpbGUgYG5vd01zYCBpcyB0aGUgbG9jYWwgY2xvY2ssIHNvIGFcbiAqIGNsaWVudCBydW5uaW5nIGJlaGluZCB0aGUgc2VydmVyIHdvdWxkIG90aGVyd2lzZSBjb21wdXRlIGEgcmVtYWluZGVyXG4gKiBMT05HRVIgdGhhbiB0aGUgbGVhc2UgaXRzZWxmIOKAlCBhbmQgd2l0aCB0aGUgbGVhc2UgdHVuZWQgdG8gdGhlIDkwMHMgY2FwLFxuICogYSBgZGVsYXlTZWNvbmRzYCBhYm92ZSB0aGUgcXVldWUncyBwZXItbWVzc2FnZSBtYXhpbXVtLCB3aGljaCBTUVMtYmFja2VkXG4gKiB3b3JsZHMgcmVqZWN0IG91dHJpZ2h0ICh0aGUgd2FrZSByZXBsYXkncyBlbnF1ZXVlIHdvdWxkIHRocm93IGFuZCByaWRlXG4gKiB0aGUgcmVkZWxpdmVyeSBsb29wKS4gVGhlIGNsYW1wIG1ha2VzIHNrZXcgc3RyaWN0bHkgaGFybWxlc3M7IHJlbWFpbmluZ1xuICogdGltZSBjYW4gbmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2VlZCB0aGUgZnVsbCBsZWFzZSBhbnl3YXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwTGVhc2VSZW1haW5pbmdTZWNvbmRzKFxuICBzdGVwOiBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSxcbiAgbm93TXM6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgaWYgKHN0ZXAubGFzdFN0YXJ0ZWRBdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgY29uc3QgbGVhc2VTZWNvbmRzID0gZ2V0SW5saW5lT3duZXJzaGlwTGVhc2VTZWNvbmRzKCk7XG4gIGNvbnN0IHJlbWFpbmluZ01zID0gc3RlcC5sYXN0U3RhcnRlZEF0ICsgbGVhc2VTZWNvbmRzICogMTAwMCAtIG5vd01zO1xuICByZXR1cm4gTWF0aC5taW4obGVhc2VTZWNvbmRzLCBNYXRoLm1heCgwLCBNYXRoLmNlaWwocmVtYWluaW5nTXMgLyAxMDAwKSkpO1xufVxuXG4vKipcbiAqIElkZW1wb3RlbmN5IGtleSBmb3IgdGhlIGRlbGF5ZWQgYmFja3N0b3Agd2FrZSBvZiBhbiBpbmxpbmUtb3duZWQgc3RlcC5cbiAqXG4gKiBUaGUga2V5IGlzIHNjb3BlZCB0byB0aGUgY3VycmVudCBPV05FUlNISVAgRVBPQ0gg4oCUIHRoZSB0aW1lc3RhbXAgb2YgdGhlXG4gKiBsYXRlc3QgYHN0ZXBfc3RhcnRlZGAg4oCUIG5vdCBqdXN0IHRoZSBjb3JyZWxhdGlvbiBJRC4gV2l0aGluIG9uZSBlcG9jaCxcbiAqIGV2ZXJ5IHdha2UgcmVwbGF5IGRlcml2ZXMgdGhlIHNhbWUga2V5LCBzbyBmYW4tb3V0IHN0YXlzIGNhcHBlZCBhdCBvbmVcbiAqIHBlbmRpbmcgYmFja3N0b3AgcGVyIHN0ZXAuIEJ1dCB3aGVuIG93bmVyIHJlY292ZXJ5IHJlLXN0YW1wcyB0aGUgc3RlcFxuICogKHF1ZXVlIHJlZGVsaXZlcnkgb2YgdGhlIG93bmluZyBtZXNzYWdlIOKGkiBuZXcgYHN0ZXBfc3RhcnRlZGAg4oaSIG5ld1xuICogYGxhc3RTdGFydGVkQXRgKSwgdGhlIGtleSBDSEFOR0VTLiBUaGlzIGlzIGxvYWQtYmVhcmluZyBmb3IgbGl2ZW5lc3M6XG4gKiBxdWV1ZXMgZGVkdXBlIGFuIGlkZW1wb3RlbmN5IGtleSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBvcmlnaW5hbFxuICogbWVzc2FnZSDigJQgaW5jbHVkaW5nIHdoaWxlIGEgZGVsaXZlcnkgb2YgaXQgaXMgaW4gZmxpZ2h0IOKAlCBzbyBhIGJhY2tzdG9wXG4gKiB0aGF0IGZpcmVzIGR1cmluZyBhIHJlZnJlc2hlZCBsZWFzZSBhbmQgdHJpZXMgdG8gcmUtYXJtIHVuZGVyIGEgZml4ZWQga2V5XG4gKiB3b3VsZCBkZWR1cGUgYWdhaW5zdCBJVFNFTEYgYW5kIGJlIGRyb3BwZWQsIGxlYXZpbmcgbm8gZXNjYXBlIGhhdGNoIGlmXG4gKiB0aGUgcmVjb3ZlcmVkIG93bmVyIGxhdGVyIGRpZXMgd2l0aG91dCBmdXJ0aGVyIHJlZGVsaXZlcmllcy4gVGhlIGVwb2NoXG4gKiBzdWZmaXggZ2l2ZXMgdGhlIHJlLWFybSBhIGZyZXNoIGtleS4gUGVuZGluZyBiYWNrc3RvcHMgYXJlIGJvdW5kZWQgYnkgdGhlXG4gKiBudW1iZXIgb2Ygb3duZXJzaGlwIGVwb2NocywgaS5lLiB0aGUgcXVldWUncyByZWRlbGl2ZXJ5IGJ1ZGdldCBmb3IgdGhlXG4gKiBvd25pbmcgbWVzc2FnZS5cbiAqXG4gKiBUaGUgZXBvY2ggdmFsdWUgY29tZXMgZnJvbSB0aGUgcGVyc2lzdGVkIGV2ZW50J3MgYGNyZWF0ZWRBdGAsIHNvIGV2ZXJ5XG4gKiByZXBsYXllciBkZXJpdmVzIHRoZSBzYW1lIGtleS4gQ2FsbGVycyBvbmx5IGJ1aWxkIGJhY2tzdG9wcyB3aGVuIHRoZVxuICogbGVhc2UgaGFzIHRpbWUgcmVtYWluaW5nLCB3aGljaCByZXF1aXJlcyBgbGFzdFN0YXJ0ZWRBdGAgdG8gYmUgc2V0LlxuICpcbiAqIFRoZSBrZXkgbXVzdCBhbHNvIG5ldmVyIGJlIHRoZSBzdGVwIG1lc3NhZ2UncyBvd24gYGlkZW1wb3RlbmN5S2V5YFxuICogKHRoZSBiYXJlIGNvcnJlbGF0aW9uIElEKTogdGhlIG93bmVyJ3MgcmV0cnkgaGFuZG9mZiBlbnF1ZXVlcyB0aGUgc3RlcFxuICogdW5kZXIgdGhhdCBrZXkgd2l0aCBhIHNob3J0IGJhY2tvZmYsIGFuZCBhIHBlbmRpbmcgYmFja3N0b3Agc2hhcmluZyBpdFxuICogd291bGQgYWJzb3JiIHRoZSByZXRyeSDigJQgdHVybmluZyBhIDFzIGJhY2tvZmYgaW50byBhIGZ1bGwtbGVhc2Ugc3RhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYWNrc3RvcElkZW1wb3RlbmN5S2V5KHN0ZXA6IFN0ZXBJbnZvY2F0aW9uUXVldWVJdGVtKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3N0ZXAuY29ycmVsYXRpb25JZH06YmFja3N0b3A6JHtzdGVwLmxhc3RTdGFydGVkQXR9YDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGFueSBvZiB0aGUgZ2l2ZW4gcGVuZGluZyBjb3JyZWxhdGlvbiBJRHMgaXMgaW5saW5lLW93bmVkIGJ5XG4gKiBgbWVzc2FnZUlkYCBwZXIgdGhlIHJhdyBldmVudCBsb2c6IGl0cyBMQVRFU1QgYHN0ZXBfc3RhcnRlZGAgY2Fycmllc1xuICogYG93bmVyTWVzc2FnZUlkID09PSBtZXNzYWdlSWRgIGFuZCBubyBgc3RlcF9yZXRyeWluZ2AgZm9sbG93cyBpdC4gVXNlZCBieVxuICogdGhlIGJhY2tncm91bmQtc3RlcCBmYXN0IHBhdGgsIHdoaWNoIHNlZXMgcmF3IGV2ZW50cyAobm90IHRoZSByZXBsYXknc1xuICogcXVldWVJdGVtcyksIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGZhbGwgdGhyb3VnaCB0byB0aGUgbWFpbiBsb29wIHNvIHRoaXNcbiAqIGludm9jYXRpb24gY2FuIHJlY292ZXIgYSBzdGVwIGl0IG93bnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYW5kIGxlYXZpbmcgaXRcbiAqIHRvIHRoZSBkZWxheWVkIGJhY2tzdG9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGVuZGluZ1N0ZXBPd25lZEJ5TWVzc2FnZShcbiAgZXZlbnRzOiBFdmVudFtdLFxuICBwZW5kaW5nQ29ycmVsYXRpb25JZHM6IFNldDxzdHJpbmcgfCB1bmRlZmluZWQ+LFxuICBtZXNzYWdlSWQ6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIC8vIExhdGVzdC13aW5zIHNjYW46IGV2ZW50cyBhcmUgaW4gbG9nIG9yZGVyLCBzbyBsYXRlciBlbnRyaWVzIG92ZXJ3cml0ZS5cbiAgLy8gQSBzdGVwX3JldHJ5aW5nIGxhcHNlcyBvd25lcnNoaXAgcGVybWFuZW50bHkgKG1hdGNoaW5nIHRoZSBzYXdSZXRyeWluZ1xuICAvLyBzZW1hbnRpY3Mgb2YgdGhlIHJlcGxheSBjb25zdW1lciBpbiBzdGVwLnRzKSDigJQgZnJvbSB0aGF0IHBvaW50IHRoZSBzdGVwXG4gIC8vIGlzIHF1ZXVlLW93bmVkLCB3aGF0ZXZlciBzdGFydHMgZm9sbG93LlxuICBjb25zdCBsYXRlc3RPd25lciA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIGNvbnN0IHNhd1JldHJ5aW5nID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgZSBvZiBldmVudHMpIHtcbiAgICBpZiAoZS5jb3JyZWxhdGlvbklkID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgIGlmIChlLmV2ZW50VHlwZSA9PT0gJ3N0ZXBfc3RhcnRlZCcpIHtcbiAgICAgIGNvbnN0IG93bmVyID1cbiAgICAgICAgJ2V2ZW50RGF0YScgaW4gZSAmJlxuICAgICAgICBlLmV2ZW50RGF0YSAmJlxuICAgICAgICAnb3duZXJNZXNzYWdlSWQnIGluIGUuZXZlbnREYXRhICYmXG4gICAgICAgIHR5cGVvZiBlLmV2ZW50RGF0YS5vd25lck1lc3NhZ2VJZCA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IGUuZXZlbnREYXRhLm93bmVyTWVzc2FnZUlkXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBsYXRlc3RPd25lci5zZXQoZS5jb3JyZWxhdGlvbklkLCBvd25lcik7XG4gICAgfSBlbHNlIGlmIChlLmV2ZW50VHlwZSA9PT0gJ3N0ZXBfcmV0cnlpbmcnKSB7XG4gICAgICBzYXdSZXRyeWluZy5hZGQoZS5jb3JyZWxhdGlvbklkKTtcbiAgICB9XG4gIH1cbiAgZm9yIChjb25zdCBpZCBvZiBwZW5kaW5nQ29ycmVsYXRpb25JZHMpIHtcbiAgICBpZiAoXG4gICAgICBpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhc2F3UmV0cnlpbmcuaGFzKGlkKSAmJlxuICAgICAgbGF0ZXN0T3duZXIuZ2V0KGlkKSA9PT0gbWVzc2FnZUlkXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StepExecutionResult } from './step-executor.js';
|
|
2
|
+
/**
|
|
3
|
+
* Run `execute` unless an execution for the same run + step correlation ID is
|
|
4
|
+
* already in flight in this process. The winner's result is returned to the
|
|
5
|
+
* winner; a loser awaits the winner's settlement (success OR failure) and
|
|
6
|
+
* then returns `{ type: 'skipped' }` so its caller acks without running the
|
|
7
|
+
* body. A winner failure is not propagated to the loser — the winner's own
|
|
8
|
+
* queue message redelivers and drives the retry, so exactly one message
|
|
9
|
+
* keeps owning the outcome.
|
|
10
|
+
*/
|
|
11
|
+
export declare function runStepSingleFlight(runId: string, correlationId: string, execute: () => Promise<StepExecutionResult>): Promise<StepExecutionResult>;
|
|
12
|
+
//# sourceMappingURL=step-single-flight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-single-flight.d.ts","sourceRoot":"","sources":["../../src/runtime/step-single-flight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAgC9D;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,GAC1C,OAAO,CAAC,mBAAmB,CAAC,CA8B9B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { runtimeLogger } from '../logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-process single-flight for step body execution, keyed by
|
|
4
|
+
* `runId:correlationId`.
|
|
5
|
+
*
|
|
6
|
+
* This is a required companion to inline step ownership (see
|
|
7
|
+
* `isInlineOwnershipEnabled` in constants.ts): the ownership lease is a
|
|
8
|
+
* *death proof* only on platforms with a bounded invocation lifetime. On
|
|
9
|
+
* worlds without an invocation kill bound (world-local's single process,
|
|
10
|
+
* self-hosted deployments) a delayed backstop can fire while the owning
|
|
11
|
+
* execution is still mid-body — in the same process. This map absorbs that
|
|
12
|
+
* race: the loser awaits the winner's settlement and then acks WITHOUT
|
|
13
|
+
* executing. On Vercel Fluid compute it also absorbs same-instance races
|
|
14
|
+
* between an owner redelivery and a backstop.
|
|
15
|
+
*
|
|
16
|
+
* The loser must not ack-and-skip early (before the winner settles): a crash
|
|
17
|
+
* after an early ack would consume the loser's queue message while the
|
|
18
|
+
* winner's outcome is still unknown, potentially orphaning the step with no
|
|
19
|
+
* message left to drive it. Awaiting settlement first keeps the at-least-once
|
|
20
|
+
* envelope intact — if the loser's own invocation hits its deadline while
|
|
21
|
+
* waiting, its message redelivers and re-checks, degrading gracefully to
|
|
22
|
+
* polling.
|
|
23
|
+
*
|
|
24
|
+
* Cross-instance duplicates (two separate processes racing the same step)
|
|
25
|
+
* are out of scope here — that is what the ownership lease bounds on
|
|
26
|
+
* platforms where it is a death proof, and the documented residual risk on
|
|
27
|
+
* multi-instance self-hosted worlds (mitigate by raising
|
|
28
|
+
* `WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS`).
|
|
29
|
+
*/
|
|
30
|
+
const inFlightSteps = new Map();
|
|
31
|
+
/**
|
|
32
|
+
* Run `execute` unless an execution for the same run + step correlation ID is
|
|
33
|
+
* already in flight in this process. The winner's result is returned to the
|
|
34
|
+
* winner; a loser awaits the winner's settlement (success OR failure) and
|
|
35
|
+
* then returns `{ type: 'skipped' }` so its caller acks without running the
|
|
36
|
+
* body. A winner failure is not propagated to the loser — the winner's own
|
|
37
|
+
* queue message redelivers and drives the retry, so exactly one message
|
|
38
|
+
* keeps owning the outcome.
|
|
39
|
+
*/
|
|
40
|
+
export async function runStepSingleFlight(runId, correlationId, execute) {
|
|
41
|
+
const key = `${runId}:${correlationId}`;
|
|
42
|
+
const existing = inFlightSteps.get(key);
|
|
43
|
+
if (existing) {
|
|
44
|
+
// warn (always printed, unlike debug/info): the single-flight is
|
|
45
|
+
// absorbing what would have been a duplicate execution — typically a
|
|
46
|
+
// delayed backstop or retry message landing in the same process while
|
|
47
|
+
// the owner is still mid-body. Rare by design; a burst of these means
|
|
48
|
+
// leases are expiring under live executions (raise
|
|
49
|
+
// WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS).
|
|
50
|
+
runtimeLogger.warn('Step execution already in flight in this process; awaiting its settlement instead of executing again', { workflowRunId: runId, stepId: correlationId });
|
|
51
|
+
try {
|
|
52
|
+
await existing;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// The winner failed (typically a transient world error). Its own queue
|
|
56
|
+
// message redelivers and retries; this loser still just skips.
|
|
57
|
+
}
|
|
58
|
+
return { type: 'skipped' };
|
|
59
|
+
}
|
|
60
|
+
const promise = execute();
|
|
61
|
+
inFlightSteps.set(key, promise);
|
|
62
|
+
try {
|
|
63
|
+
return await promise;
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
inFlightSteps.delete(key);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zaW5nbGUtZmxpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvc3RlcC1zaW5nbGUtZmxpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNILE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUF3QyxDQUFDO0FBRXRFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsS0FBYSxFQUNiLGFBQXFCLEVBQ3JCLE9BQTJDO0lBRTNDLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLGlFQUFpRTtRQUNqRSxxRUFBcUU7UUFDckUsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSxtREFBbUQ7UUFDbkQsNENBQTRDO1FBQzVDLGFBQWEsQ0FBQyxJQUFJLENBQ2hCLHNHQUFzRyxFQUN0RyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUNoRCxDQUFDO1FBQ0YsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLENBQUM7UUFDakIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLHVFQUF1RTtZQUN2RSwrREFBK0Q7UUFDakUsQ0FBQztRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQzFCLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxPQUFPLENBQUM7SUFDdkIsQ0FBQztZQUFTLENBQUM7UUFDVCxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcnVudGltZUxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0ZXBFeGVjdXRpb25SZXN1bHQgfSBmcm9tICcuL3N0ZXAtZXhlY3V0b3IuanMnO1xuXG4vKipcbiAqIEluLXByb2Nlc3Mgc2luZ2xlLWZsaWdodCBmb3Igc3RlcCBib2R5IGV4ZWN1dGlvbiwga2V5ZWQgYnlcbiAqIGBydW5JZDpjb3JyZWxhdGlvbklkYC5cbiAqXG4gKiBUaGlzIGlzIGEgcmVxdWlyZWQgY29tcGFuaW9uIHRvIGlubGluZSBzdGVwIG93bmVyc2hpcCAoc2VlXG4gKiBgaXNJbmxpbmVPd25lcnNoaXBFbmFibGVkYCBpbiBjb25zdGFudHMudHMpOiB0aGUgb3duZXJzaGlwIGxlYXNlIGlzIGFcbiAqICpkZWF0aCBwcm9vZiogb25seSBvbiBwbGF0Zm9ybXMgd2l0aCBhIGJvdW5kZWQgaW52b2NhdGlvbiBsaWZldGltZS4gT25cbiAqIHdvcmxkcyB3aXRob3V0IGFuIGludm9jYXRpb24ga2lsbCBib3VuZCAod29ybGQtbG9jYWwncyBzaW5nbGUgcHJvY2VzcyxcbiAqIHNlbGYtaG9zdGVkIGRlcGxveW1lbnRzKSBhIGRlbGF5ZWQgYmFja3N0b3AgY2FuIGZpcmUgd2hpbGUgdGhlIG93bmluZ1xuICogZXhlY3V0aW9uIGlzIHN0aWxsIG1pZC1ib2R5IOKAlCBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIG1hcCBhYnNvcmJzIHRoYXRcbiAqIHJhY2U6IHRoZSBsb3NlciBhd2FpdHMgdGhlIHdpbm5lcidzIHNldHRsZW1lbnQgYW5kIHRoZW4gYWNrcyBXSVRIT1VUXG4gKiBleGVjdXRpbmcuIE9uIFZlcmNlbCBGbHVpZCBjb21wdXRlIGl0IGFsc28gYWJzb3JicyBzYW1lLWluc3RhbmNlIHJhY2VzXG4gKiBiZXR3ZWVuIGFuIG93bmVyIHJlZGVsaXZlcnkgYW5kIGEgYmFja3N0b3AuXG4gKlxuICogVGhlIGxvc2VyIG11c3Qgbm90IGFjay1hbmQtc2tpcCBlYXJseSAoYmVmb3JlIHRoZSB3aW5uZXIgc2V0dGxlcyk6IGEgY3Jhc2hcbiAqIGFmdGVyIGFuIGVhcmx5IGFjayB3b3VsZCBjb25zdW1lIHRoZSBsb3NlcidzIHF1ZXVlIG1lc3NhZ2Ugd2hpbGUgdGhlXG4gKiB3aW5uZXIncyBvdXRjb21lIGlzIHN0aWxsIHVua25vd24sIHBvdGVudGlhbGx5IG9ycGhhbmluZyB0aGUgc3RlcCB3aXRoIG5vXG4gKiBtZXNzYWdlIGxlZnQgdG8gZHJpdmUgaXQuIEF3YWl0aW5nIHNldHRsZW1lbnQgZmlyc3Qga2VlcHMgdGhlIGF0LWxlYXN0LW9uY2VcbiAqIGVudmVsb3BlIGludGFjdCDigJQgaWYgdGhlIGxvc2VyJ3Mgb3duIGludm9jYXRpb24gaGl0cyBpdHMgZGVhZGxpbmUgd2hpbGVcbiAqIHdhaXRpbmcsIGl0cyBtZXNzYWdlIHJlZGVsaXZlcnMgYW5kIHJlLWNoZWNrcywgZGVncmFkaW5nIGdyYWNlZnVsbHkgdG9cbiAqIHBvbGxpbmcuXG4gKlxuICogQ3Jvc3MtaW5zdGFuY2UgZHVwbGljYXRlcyAodHdvIHNlcGFyYXRlIHByb2Nlc3NlcyByYWNpbmcgdGhlIHNhbWUgc3RlcClcbiAqIGFyZSBvdXQgb2Ygc2NvcGUgaGVyZSDigJQgdGhhdCBpcyB3aGF0IHRoZSBvd25lcnNoaXAgbGVhc2UgYm91bmRzIG9uXG4gKiBwbGF0Zm9ybXMgd2hlcmUgaXQgaXMgYSBkZWF0aCBwcm9vZiwgYW5kIHRoZSBkb2N1bWVudGVkIHJlc2lkdWFsIHJpc2sgb25cbiAqIG11bHRpLWluc3RhbmNlIHNlbGYtaG9zdGVkIHdvcmxkcyAobWl0aWdhdGUgYnkgcmFpc2luZ1xuICogYFdPUktGTE9XX0lOTElORV9PV05FUlNISVBfTEVBU0VfU0VDT05EU2ApLlxuICovXG5jb25zdCBpbkZsaWdodFN0ZXBzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8U3RlcEV4ZWN1dGlvblJlc3VsdD4+KCk7XG5cbi8qKlxuICogUnVuIGBleGVjdXRlYCB1bmxlc3MgYW4gZXhlY3V0aW9uIGZvciB0aGUgc2FtZSBydW4gKyBzdGVwIGNvcnJlbGF0aW9uIElEIGlzXG4gKiBhbHJlYWR5IGluIGZsaWdodCBpbiB0aGlzIHByb2Nlc3MuIFRoZSB3aW5uZXIncyByZXN1bHQgaXMgcmV0dXJuZWQgdG8gdGhlXG4gKiB3aW5uZXI7IGEgbG9zZXIgYXdhaXRzIHRoZSB3aW5uZXIncyBzZXR0bGVtZW50IChzdWNjZXNzIE9SIGZhaWx1cmUpIGFuZFxuICogdGhlbiByZXR1cm5zIGB7IHR5cGU6ICdza2lwcGVkJyB9YCBzbyBpdHMgY2FsbGVyIGFja3Mgd2l0aG91dCBydW5uaW5nIHRoZVxuICogYm9keS4gQSB3aW5uZXIgZmFpbHVyZSBpcyBub3QgcHJvcGFnYXRlZCB0byB0aGUgbG9zZXIg4oCUIHRoZSB3aW5uZXIncyBvd25cbiAqIHF1ZXVlIG1lc3NhZ2UgcmVkZWxpdmVycyBhbmQgZHJpdmVzIHRoZSByZXRyeSwgc28gZXhhY3RseSBvbmUgbWVzc2FnZVxuICoga2VlcHMgb3duaW5nIHRoZSBvdXRjb21lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU3RlcFNpbmdsZUZsaWdodChcbiAgcnVuSWQ6IHN0cmluZyxcbiAgY29ycmVsYXRpb25JZDogc3RyaW5nLFxuICBleGVjdXRlOiAoKSA9PiBQcm9taXNlPFN0ZXBFeGVjdXRpb25SZXN1bHQ+XG4pOiBQcm9taXNlPFN0ZXBFeGVjdXRpb25SZXN1bHQ+IHtcbiAgY29uc3Qga2V5ID0gYCR7cnVuSWR9OiR7Y29ycmVsYXRpb25JZH1gO1xuICBjb25zdCBleGlzdGluZyA9IGluRmxpZ2h0U3RlcHMuZ2V0KGtleSk7XG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIHdhcm4gKGFsd2F5cyBwcmludGVkLCB1bmxpa2UgZGVidWcvaW5mbyk6IHRoZSBzaW5nbGUtZmxpZ2h0IGlzXG4gICAgLy8gYWJzb3JiaW5nIHdoYXQgd291bGQgaGF2ZSBiZWVuIGEgZHVwbGljYXRlIGV4ZWN1dGlvbiDigJQgdHlwaWNhbGx5IGFcbiAgICAvLyBkZWxheWVkIGJhY2tzdG9wIG9yIHJldHJ5IG1lc3NhZ2UgbGFuZGluZyBpbiB0aGUgc2FtZSBwcm9jZXNzIHdoaWxlXG4gICAgLy8gdGhlIG93bmVyIGlzIHN0aWxsIG1pZC1ib2R5LiBSYXJlIGJ5IGRlc2lnbjsgYSBidXJzdCBvZiB0aGVzZSBtZWFuc1xuICAgIC8vIGxlYXNlcyBhcmUgZXhwaXJpbmcgdW5kZXIgbGl2ZSBleGVjdXRpb25zIChyYWlzZVxuICAgIC8vIFdPUktGTE9XX0lOTElORV9PV05FUlNISVBfTEVBU0VfU0VDT05EUykuXG4gICAgcnVudGltZUxvZ2dlci53YXJuKFxuICAgICAgJ1N0ZXAgZXhlY3V0aW9uIGFscmVhZHkgaW4gZmxpZ2h0IGluIHRoaXMgcHJvY2VzczsgYXdhaXRpbmcgaXRzIHNldHRsZW1lbnQgaW5zdGVhZCBvZiBleGVjdXRpbmcgYWdhaW4nLFxuICAgICAgeyB3b3JrZmxvd1J1bklkOiBydW5JZCwgc3RlcElkOiBjb3JyZWxhdGlvbklkIH1cbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGlzdGluZztcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFRoZSB3aW5uZXIgZmFpbGVkICh0eXBpY2FsbHkgYSB0cmFuc2llbnQgd29ybGQgZXJyb3IpLiBJdHMgb3duIHF1ZXVlXG4gICAgICAvLyBtZXNzYWdlIHJlZGVsaXZlcnMgYW5kIHJldHJpZXM7IHRoaXMgbG9zZXIgc3RpbGwganVzdCBza2lwcy5cbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZTogJ3NraXBwZWQnIH07XG4gIH1cblxuICBjb25zdCBwcm9taXNlID0gZXhlY3V0ZSgpO1xuICBpbkZsaWdodFN0ZXBzLnNldChrZXksIHByb21pc2UpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBwcm9taXNlO1xuICB9IGZpbmFsbHkge1xuICAgIGluRmxpZ2h0U3RlcHMuZGVsZXRlKGtleSk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/runtime.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { WorkflowSuspension } from './global.js';
|
|
|
4
4
|
export { type HealthCheckEndpoint, type HealthCheckOptions, type HealthCheckResult, healthCheck, } from './runtime/helpers.js';
|
|
5
5
|
export { getHookByToken, resumeHook, resumeWebhook, } from './runtime/resume-hook.js';
|
|
6
6
|
export { getRun, Run, type WorkflowReadableStream, type WorkflowReadableStreamOptions, } from './runtime/run.js';
|
|
7
|
-
export { type CancelRunOptions, cancelRun, listStreams, type ReadStreamOptions, type RecreateRunOptions, readStream, recreateRunFromExisting, reenqueueRun, type StopSleepOptions, type StopSleepResult, wakeUpRun, } from './runtime/runs.js';
|
|
7
|
+
export { type CancelRunOptions, cancelRun, listStreams, type ReadStreamOptions, type RecreateRunOptions, type ReenqueueRunOptions, readStream, recreateRunFromExisting, reenqueueRun, type StopSleepOptions, type StopSleepResult, wakeUpRun, } from './runtime/runs.js';
|
|
8
8
|
export { type StartOptions, type StartOptionsBase, type StartOptionsWithDeploymentId, type StartOptionsWithoutDeploymentId, start, } from './runtime/start.js';
|
|
9
9
|
export { createWorld, createWorldFromModule, getWorld, getWorldHandlers, setWorld, type WorldFactoryModule, } from './runtime/world.js';
|
|
10
10
|
/**
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,KAAK,EAMV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,KAAK,EAMV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAmEzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,GACN,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAwJ5B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAonErC"}
|