@workflow/world-testing 5.0.0-beta.27 → 5.0.0-beta.28
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/.well-known/workflow/v1/flow.mjs +67997 -78669
- package/dist/.well-known/workflow/v1/manifest.json +170 -108
- package/dist/.well-known/workflow/v1/step.mjs +61 -32
- package/dist/src/inline-execution.d.mts.map +1 -1
- package/dist/src/inline-execution.mjs +21 -1
- package/dist/src/server.mjs +22 -3
- package/package.json +7 -5
|
@@ -44,17 +44,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
44
44
|
mod
|
|
45
45
|
));
|
|
46
46
|
|
|
47
|
-
// ../utils/dist/pluralize.js
|
|
48
|
-
function pluralize(singular, plural, count2) {
|
|
49
|
-
return count2 === 1 ? singular : plural;
|
|
50
|
-
}
|
|
51
|
-
var init_pluralize = __esm({
|
|
52
|
-
"../utils/dist/pluralize.js"() {
|
|
53
|
-
"use strict";
|
|
54
|
-
__name(pluralize, "pluralize");
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
|
|
58
47
|
// ../utils/dist/parse-name.js
|
|
59
48
|
function parseName(tag, name) {
|
|
60
49
|
if (typeof name !== "string") {
|
|
@@ -134,6 +123,17 @@ var init_parse_name = __esm({
|
|
|
134
123
|
}
|
|
135
124
|
});
|
|
136
125
|
|
|
126
|
+
// ../utils/dist/pluralize.js
|
|
127
|
+
function pluralize(singular, plural, count2) {
|
|
128
|
+
return count2 === 1 ? singular : plural;
|
|
129
|
+
}
|
|
130
|
+
var init_pluralize = __esm({
|
|
131
|
+
"../utils/dist/pluralize.js"() {
|
|
132
|
+
"use strict";
|
|
133
|
+
__name(pluralize, "pluralize");
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
137
|
// ../utils/dist/promise.js
|
|
138
138
|
function withResolvers() {
|
|
139
139
|
let resolve;
|
|
@@ -313,6 +313,13 @@ var init_time = __esm({
|
|
|
313
313
|
}
|
|
314
314
|
});
|
|
315
315
|
|
|
316
|
+
// ../utils/dist/workflow-routes.js
|
|
317
|
+
var init_workflow_routes = __esm({
|
|
318
|
+
"../utils/dist/workflow-routes.js"() {
|
|
319
|
+
"use strict";
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
|
|
316
323
|
// ../utils/dist/world-target.js
|
|
317
324
|
var init_world_target = __esm({
|
|
318
325
|
"../utils/dist/world-target.js"() {
|
|
@@ -324,10 +331,11 @@ var init_world_target = __esm({
|
|
|
324
331
|
var init_dist = __esm({
|
|
325
332
|
"../utils/dist/index.js"() {
|
|
326
333
|
"use strict";
|
|
327
|
-
init_pluralize();
|
|
328
334
|
init_parse_name();
|
|
335
|
+
init_pluralize();
|
|
329
336
|
init_promise();
|
|
330
337
|
init_time();
|
|
338
|
+
init_workflow_routes();
|
|
331
339
|
init_world_target();
|
|
332
340
|
}
|
|
333
341
|
});
|
|
@@ -18442,12 +18450,7 @@ async function getWorldLazy() {
|
|
|
18442
18450
|
assertWorldSupportsRuntimeProtocol(world);
|
|
18443
18451
|
return world;
|
|
18444
18452
|
}
|
|
18445
|
-
|
|
18446
|
-
"./world",
|
|
18447
|
-
"js"
|
|
18448
|
-
].join(".");
|
|
18449
|
-
const { getWorld } = await import(worldPath);
|
|
18450
|
-
return getWorld();
|
|
18453
|
+
throw new Error("Workflow world runtime was not initialized. Import from the host workflow entrypoints (`workflow`, `workflow/api`, or `workflow/runtime`) so @workflow/core/runtime/world-init can register getWorld before getWorldLazy() is used.");
|
|
18451
18454
|
}
|
|
18452
18455
|
var WorldCacheKey, WorldCachePromiseKey, GetWorldFnKey;
|
|
18453
18456
|
var init_get_world_lazy = __esm({
|
|
@@ -24245,7 +24248,7 @@ var version2;
|
|
|
24245
24248
|
var init_version = __esm({
|
|
24246
24249
|
"../core/dist/version.js"() {
|
|
24247
24250
|
"use strict";
|
|
24248
|
-
version2 = "5.0.0-beta.
|
|
24251
|
+
version2 = "5.0.0-beta.28";
|
|
24249
24252
|
}
|
|
24250
24253
|
});
|
|
24251
24254
|
|
|
@@ -26377,8 +26380,11 @@ function setupAbortStreamReader(controller, runId, streamName, ops) {
|
|
|
26377
26380
|
});
|
|
26378
26381
|
})
|
|
26379
26382
|
]);
|
|
26380
|
-
reader.releaseLock();
|
|
26381
26383
|
if (result.value && !result.done) {
|
|
26384
|
+
try {
|
|
26385
|
+
reader.releaseLock();
|
|
26386
|
+
} catch {
|
|
26387
|
+
}
|
|
26382
26388
|
try {
|
|
26383
26389
|
const ctxForKey = contextStorage.getStore();
|
|
26384
26390
|
const data = await hydrateStepArguments(result.value, runId, ctxForKey?.encryptionKey);
|
|
@@ -26386,6 +26392,9 @@ function setupAbortStreamReader(controller, runId, streamName, ops) {
|
|
|
26386
26392
|
} catch {
|
|
26387
26393
|
controller.abort();
|
|
26388
26394
|
}
|
|
26395
|
+
} else {
|
|
26396
|
+
void reader.cancel().catch(() => {
|
|
26397
|
+
});
|
|
26389
26398
|
}
|
|
26390
26399
|
} catch {
|
|
26391
26400
|
}
|
|
@@ -27502,7 +27511,7 @@ __name(start, "start");
|
|
|
27502
27511
|
value: "start",
|
|
27503
27512
|
configurable: true
|
|
27504
27513
|
});
|
|
27505
|
-
})(start, "step//@workflow/core/runtime/start@5.0.0-beta.
|
|
27514
|
+
})(start, "step//@workflow/core/runtime/start@5.0.0-beta.28//start");
|
|
27506
27515
|
|
|
27507
27516
|
// ../core/dist/runtime/runs.js
|
|
27508
27517
|
async function wakeUpRun(world, runId, options) {
|
|
@@ -27829,7 +27838,7 @@ var Run = class _Run {
|
|
|
27829
27838
|
value: "wakeUp",
|
|
27830
27839
|
configurable: true
|
|
27831
27840
|
});
|
|
27832
|
-
})(Run.prototype["wakeUp"], "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27841
|
+
})(Run.prototype["wakeUp"], "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#wakeUp");
|
|
27833
27842
|
(function(__wf_fn, __wf_id) {
|
|
27834
27843
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27835
27844
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27838,7 +27847,7 @@ var Run = class _Run {
|
|
|
27838
27847
|
value: "cancel",
|
|
27839
27848
|
configurable: true
|
|
27840
27849
|
});
|
|
27841
|
-
})(Run.prototype["cancel"], "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27850
|
+
})(Run.prototype["cancel"], "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#cancel");
|
|
27842
27851
|
(function(__wf_fn, __wf_id) {
|
|
27843
27852
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27844
27853
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27847,7 +27856,7 @@ var Run = class _Run {
|
|
|
27847
27856
|
value: "getReadable",
|
|
27848
27857
|
configurable: true
|
|
27849
27858
|
});
|
|
27850
|
-
})(Run.prototype["getReadable"], "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27859
|
+
})(Run.prototype["getReadable"], "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#getReadable");
|
|
27851
27860
|
(function(__wf_fn, __wf_id) {
|
|
27852
27861
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27853
27862
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27856,7 +27865,7 @@ var Run = class _Run {
|
|
|
27856
27865
|
value: "exists",
|
|
27857
27866
|
configurable: true
|
|
27858
27867
|
});
|
|
27859
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "exists").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27868
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "exists").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#exists");
|
|
27860
27869
|
(function(__wf_fn, __wf_id) {
|
|
27861
27870
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27862
27871
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27865,7 +27874,7 @@ var Run = class _Run {
|
|
|
27865
27874
|
value: "status",
|
|
27866
27875
|
configurable: true
|
|
27867
27876
|
});
|
|
27868
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "status").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27877
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "status").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#status");
|
|
27869
27878
|
(function(__wf_fn, __wf_id) {
|
|
27870
27879
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27871
27880
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27874,7 +27883,7 @@ var Run = class _Run {
|
|
|
27874
27883
|
value: "returnValue",
|
|
27875
27884
|
configurable: true
|
|
27876
27885
|
});
|
|
27877
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "returnValue").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27886
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "returnValue").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#returnValue");
|
|
27878
27887
|
(function(__wf_fn, __wf_id) {
|
|
27879
27888
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27880
27889
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27883,7 +27892,7 @@ var Run = class _Run {
|
|
|
27883
27892
|
value: "workflowName",
|
|
27884
27893
|
configurable: true
|
|
27885
27894
|
});
|
|
27886
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "workflowName").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27895
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "workflowName").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#workflowName");
|
|
27887
27896
|
(function(__wf_fn, __wf_id) {
|
|
27888
27897
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27889
27898
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27892,7 +27901,7 @@ var Run = class _Run {
|
|
|
27892
27901
|
value: "createdAt",
|
|
27893
27902
|
configurable: true
|
|
27894
27903
|
});
|
|
27895
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "createdAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27904
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "createdAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#createdAt");
|
|
27896
27905
|
(function(__wf_fn, __wf_id) {
|
|
27897
27906
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27898
27907
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27901,7 +27910,7 @@ var Run = class _Run {
|
|
|
27901
27910
|
value: "startedAt",
|
|
27902
27911
|
configurable: true
|
|
27903
27912
|
});
|
|
27904
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "startedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27913
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "startedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#startedAt");
|
|
27905
27914
|
(function(__wf_fn, __wf_id) {
|
|
27906
27915
|
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27907
27916
|
__wf_reg.set(__wf_id, __wf_fn);
|
|
@@ -27910,7 +27919,7 @@ var Run = class _Run {
|
|
|
27910
27919
|
value: "completedAt",
|
|
27911
27920
|
configurable: true
|
|
27912
27921
|
});
|
|
27913
|
-
})(Object.getOwnPropertyDescriptor(Run.prototype, "completedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.
|
|
27922
|
+
})(Object.getOwnPropertyDescriptor(Run.prototype, "completedAt").get, "step//@workflow/core/runtime/run@5.0.0-beta.28//Run#completedAt");
|
|
27914
27923
|
(function(__wf_cls, __wf_id) {
|
|
27915
27924
|
var __wf_sym = /* @__PURE__ */ Symbol.for("workflow-class-registry"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
27916
27925
|
__wf_reg.set(__wf_id, __wf_cls);
|
|
@@ -27920,7 +27929,7 @@ var Run = class _Run {
|
|
|
27920
27929
|
enumerable: false,
|
|
27921
27930
|
configurable: false
|
|
27922
27931
|
});
|
|
27923
|
-
})(Run, "class//@workflow/core/runtime/run@5.0.0-beta.
|
|
27932
|
+
})(Run, "class//@workflow/core/runtime/run@5.0.0-beta.28//Run");
|
|
27924
27933
|
|
|
27925
27934
|
// ../workflow/dist/stdlib.js
|
|
27926
27935
|
async function fetch2(...args) {
|
|
@@ -28365,6 +28374,26 @@ __name(stepThatFails, "stepThatFails");
|
|
|
28365
28374
|
});
|
|
28366
28375
|
})(stepThatFails, "step//./workflows/retriable-and-fatal//stepThatFails");
|
|
28367
28376
|
|
|
28377
|
+
// workflows/signal-cost.ts
|
|
28378
|
+
async function trivialStep(input) {
|
|
28379
|
+
return input.index;
|
|
28380
|
+
}
|
|
28381
|
+
__name(trivialStep, "trivialStep");
|
|
28382
|
+
(function(__wf_fn, __wf_id) {
|
|
28383
|
+
var __wf_sym = /* @__PURE__ */ Symbol.for("@workflow/core//registeredSteps"), __wf_reg = globalThis[__wf_sym] || (globalThis[__wf_sym] = /* @__PURE__ */ new Map());
|
|
28384
|
+
__wf_reg.set(__wf_id, __wf_fn);
|
|
28385
|
+
__wf_fn.stepId = __wf_id;
|
|
28386
|
+
Object.defineProperty(__wf_fn, "name", {
|
|
28387
|
+
value: "trivialStep",
|
|
28388
|
+
configurable: true
|
|
28389
|
+
});
|
|
28390
|
+
})(trivialStep, "step//./workflows/signal-cost//trivialStep");
|
|
28391
|
+
async function signalCostWorkflow(input) {
|
|
28392
|
+
throw new Error("You attempted to execute workflow signalCostWorkflow function directly. To start a workflow, use start(signalCostWorkflow) from workflow/api");
|
|
28393
|
+
}
|
|
28394
|
+
__name(signalCostWorkflow, "signalCostWorkflow");
|
|
28395
|
+
signalCostWorkflow.workflowId = "workflow//./workflows/signal-cost//signalCostWorkflow";
|
|
28396
|
+
|
|
28368
28397
|
// virtual-entry.js
|
|
28369
28398
|
var __steps_registered = true;
|
|
28370
28399
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-execution.d.mts","sourceRoot":"","sources":["../../src/inline-execution.mts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"inline-execution.d.mts","sourceRoot":"","sources":["../../src/inline-execution.mts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,QAmL5C"}
|
|
@@ -73,8 +73,28 @@ export function inlineExecution(world) {
|
|
|
73
73
|
expect(count).toBeGreaterThanOrEqual(1);
|
|
74
74
|
expect(count).toBeLessThanOrEqual(3);
|
|
75
75
|
});
|
|
76
|
+
test('sequential steps carrying an AbortSignal still run in a single flow invocation', { timeout: 30_000 }, async () => {
|
|
77
|
+
// Regression for vercel/workflow#2795: a serialized AbortSignal in step
|
|
78
|
+
// arguments opens a real-time abort-stream reader for the step's
|
|
79
|
+
// duration. If that reader isn't torn down before the step's ops-settle
|
|
80
|
+
// check, its never-resolving read() makes every signal-bearing step
|
|
81
|
+
// report `hasPendingOps`, forcing a queue continuation per step (N+1
|
|
82
|
+
// invocations) instead of running inline.
|
|
83
|
+
const server = await startServer({ world }).then(createFetcher);
|
|
84
|
+
const count = 5;
|
|
85
|
+
const result = await server.invoke('workflows/signal-cost.ts', 'signalCostWorkflow', [{ count, withSignal: true }]);
|
|
86
|
+
const run = await vi.waitFor(async () => {
|
|
87
|
+
const run = await server.getRun(result.runId);
|
|
88
|
+
expect(run.status).toBe('completed');
|
|
89
|
+
return run;
|
|
90
|
+
}, { interval: 200, timeout: 29_000 });
|
|
91
|
+
const output = await hydrateWorkflowReturnValue(run.output, run.runId, undefined);
|
|
92
|
+
expect(output).toBe('done');
|
|
93
|
+
const invocations = await server.getFlowInvocationCount(result.runId);
|
|
94
|
+
expect(invocations).toBe(1);
|
|
95
|
+
});
|
|
76
96
|
// Hook invocation counting is tested by the existing hooks test suite.
|
|
77
97
|
// The hook pattern requires external resume, which involves complex
|
|
78
98
|
// timing. The invocation count for hooks is 2: create + resume.
|
|
79
99
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWV4ZWN1dGlvbi5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5saW5lLWV4ZWN1dGlvbi5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWE7SUFDM0MsSUFBSSxDQUNGLHVEQUF1RCxFQUN2RCxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDbkIsS0FBSyxJQUFJLEVBQUU7UUFDVCxNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FDaEMsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixDQUFDLEVBQUUsQ0FBQyxDQUNMLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQzFCLEtBQUssSUFBSSxFQUFFO1lBQ1QsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUNuQyxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcs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QWdFO1FBQ2hFLHdFQUF3RTtRQUN4RSwyRUFBMkU7UUFDM0UsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUNGLENBQUM7SUFFRix1RUFBdUU7SUFDdkUsb0VBQW9FO0lBQ3BFLGdFQUFnRTtBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCB0ZXN0LCB2aSB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZSB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24nO1xuaW1wb3J0IHsgY3JlYXRlRmV0Y2hlciwgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuL3V0aWwubWpzJztcblxuLyoqXG4gKiBUZXN0cyB0aGF0IHRoZSBWMiBpbmxpbmUgZXhlY3V0aW9uIGxvb3AgY29ycmVjdGx5IG1pbmltaXplcyBmbG93XG4gKiBoYW5kbGVyIGludm9jYXRpb25zLiBFYWNoIHRlc3QgdmVyaWZpZXMgYSBzcGVjaWZpYyBwYXR0ZXJuOlxuICpcbiAqIC0gU2VxdWVudGlhbCBzdGVwcyAobm8gc3RyZWFtcyk6IDEgaW52b2NhdGlvblxuICogLSBTZXF1ZW50aWFsIHN0ZXBzIHdpdGggV3JpdGFibGVTdHJlYW06IDEgaW52b2NhdGlvbiAoc3luYyBmbHVzaClcbiAqIC0gU2xlZXAgKyBzdGVwOiAyIGludm9jYXRpb25zIChzbGVlcCByZXF1aXJlcyBxdWV1ZSByb3VuZC10cmlwKVxuICogLSBQYXJhbGxlbCBzdGVwcyAoUHJvbWlzZS5hbGwpOiAxLTMgaW52b2NhdGlvbnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlXG4gKiAgIGVtYmVkZGVkIGhhcm5lc3Mgb2JzZXJ2ZXMgdGhlIGJhY2tncm91bmQgc3RlcCBhbmQgY29udGludWF0aW9uIHNlcGFyYXRlbHlcbiAqIC0gSG9vayArIHJlc3VtZTogMiBpbnZvY2F0aW9ucyAoaG9vayByZXF1aXJlcyBleHRlcm5hbCByZXN1bWUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmxpbmVFeGVjdXRpb24od29ybGQ6IHN0cmluZykge1xuICB0ZXN0KFxuICAgICdzZXF1ZW50aWFsIHN0ZXBzIGNvbXBsZXRlIGluIGEgc2luZ2xlIGZsb3cgaW52b2NhdGlvbicsXG4gICAgeyB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcih7IHdvcmxkIH0pLnRoZW4oY3JlYXRlRmV0Y2hlcik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXJ2ZXIuaW52b2tlKFxuICAgICAgICAnd29ya2Zsb3dzL2lubGluZS1leGVjdXRpb24udHMnLFxuICAgICAgICAnc2VxdWVudGlhbFN0ZXBzV29ya2Zsb3cnLFxuICAgICAgICBbMTBdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgyMCk7XG5cbiAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgc2VydmVyLmdldEZsb3dJbnZvY2F0aW9uQ291bnQocmVzdWx0LnJ1bklkKTtcbiAgICAgIGV4cGVjdChjb3VudCkudG9CZSgxKTtcbiAgICB9XG4gICk7XG5cbiAgdGVzdChcbiAgICAnc2VxdWVudGlhbCBzdGVwcyB3aXRoIHN0cmVhbSBjb21wbGV0ZSBpbiBhIHNpbmdsZSBmbG93IGludm9jYXRpb24nLFxuICAgIHsgdGltZW91dDogMzBfMDAwIH0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoeyB3b3JsZCB9KS50aGVuKGNyZWF0ZUZldGNoZXIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9pbmxpbmUtZXhlY3V0aW9uLnRzJyxcbiAgICAgICAgJ3NlcXVlbnRpYWxTdGVwc1dpdGhTdHJlYW1Xb3JrZmxvdycsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgnaGVsbG8gd29ybGQnKTtcblxuICAgICAgY29uc3QgY291bnQgPSBhd2FpdCBzZXJ2ZXIuZ2V0Rmxvd0ludm9jYXRpb25Db3VudChyZXN1bHQucnVuSWQpO1xuICAgICAgZXhwZWN0KGNvdW50KS50b0JlKDEpO1xuICAgIH1cbiAgKTtcblxuICB0ZXN0KFxuICAgICdzbGVlcCB3b3JrZmxvdyByZXF1aXJlcyBleGFjdGx5IDIgZmxvdyBpbnZvY2F0aW9ucycsXG4gICAgeyB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcih7IHdvcmxkIH0pLnRoZW4oY3JlYXRlRmV0Y2hlcik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXJ2ZXIuaW52b2tlKFxuICAgICAgICAnd29ya2Zsb3dzL2lubGluZS1leGVjdXRpb24udHMnLFxuICAgICAgICAnc2xlZXBXb3JrZmxvdycsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgzKTtcblxuICAgICAgLy8gSW52b2NhdGlvbiAxOiByZXBsYXkg4oaSIHNsZWVwIOKGkiByZXR1cm4ge3RpbWVvdXRTZWNvbmRzfVxuICAgICAgLy8gSW52b2NhdGlvbiAyOiBzbGVlcCBjb21wbGV0ZWQg4oaSIHJlcGxheSDihpIgc3RlcCBpbmxpbmUg4oaSIGNvbXBsZXRlXG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHNlcnZlci5nZXRGbG93SW52b2NhdGlvbkNvdW50KHJlc3VsdC5ydW5JZCk7XG4gICAgICBleHBlY3QoY291bnQpLnRvQmUoMik7XG4gICAgfVxuICApO1xuXG4gIHRlc3QoXG4gICAgJ3BhcmFsbGVsIHN0ZXBzIChQcm9taXNlLmFsbCkgY29tcGxldGUgaW4gMS0zIGZsb3cgaW52b2NhdGlvbnMnLFxuICAgIHsgdGltZW91dDogMzBfMDAwIH0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoeyB3b3JsZCB9KS50aGVuKGNyZWF0ZUZldGNoZXIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9pbmxpbmUtZXhlY3V0aW9uLnRzJyxcbiAgICAgICAgJ3BhcmFsbGVsU3RlcHNXb3JrZmxvdycsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgzMyk7IC8vICgxMCsxKSArICgyMCsyKVxuXG4gICAgICAvLyBJbiB0aGUgZW1iZWRkZWQgaGFybmVzcyB0aGUgYmFja2dyb3VuZCBzdGVwIGNhbiBmaW5pc2ggcXVpY2tseSBlbm91Z2hcbiAgICAgIC8vIHRoYXQgdGhlIHJ1biBjb21wbGV0ZXMgYmVmb3JlIHdlIG9ic2VydmUgYSBkaXN0aW5jdCBjb250aW51YXRpb24gcGFzcyxcbiAgICAgIC8vIHNvIHRoZSBsb3dlciBib3VuZCBpcyAxIGV2ZW4gdGhvdWdoIHByb2R1Y3Rpb24gb2Z0ZW4gc2hvd3MgMi5cbiAgICAgIC8vIFdpdGggaGlnaGVyIHF1ZXVlIGNvbmN1cnJlbmN5LCB0aGUgYmFja2dyb3VuZCBzdGVwJ3MgY29udGludWF0aW9uIG1heVxuICAgICAgLy8gYWxzbyByYWNlIHdpdGggdGhlIGlubGluZSBoYW5kbGVyJ3MgbG9vcCwgYWRkaW5nIGEgM3JkIG5vLW9wIGludm9jYXRpb24uXG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHNlcnZlci5nZXRGbG93SW52b2NhdGlvbkNvdW50KHJlc3VsdC5ydW5JZCk7XG4gICAgICBleHBlY3QoY291bnQpLnRvQmVHcmVhdGVyVGhhbk9yRXF1YWwoMSk7XG4gICAgICBleHBlY3QoY291bnQpLnRvQmVMZXNzVGhhbk9yRXF1YWwoMyk7XG4gICAgfVxuICApO1xuXG4gIC8vIEhvb2sgaW52b2NhdGlvbiBjb3VudGluZyBpcyB0ZXN0ZWQgYnkgdGhlIGV4aXN0aW5nIGhvb2tzIHRlc3Qgc3VpdGUuXG4gIC8vIFRoZSBob29rIHBhdHRlcm4gcmVxdWlyZXMgZXh0ZXJuYWwgcmVzdW1lLCB3aGljaCBpbnZvbHZlcyBjb21wbGV4XG4gIC8vIHRpbWluZy4gVGhlIGludm9jYXRpb24gY291bnQgZm9yIGhvb2tzIGlzIDI6IGNyZWF0ZSArIHJlc3VtZS5cbn1cbiJdfQ==
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWV4ZWN1dGlvbi5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5saW5lLWV4ZWN1dGlvbi5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWE7SUFDM0MsSUFBSSxDQUNGLHVEQUF1RCxFQUN2RCxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDbkIsS0FBSyxJQUFJLEVBQUU7UUFDVCxNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FDaEMsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixDQUFDLEVBQUUsQ0FBQyxDQUNMLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQzFCLEtBQUssSUFBSSxFQUFFO1lBQ1QsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUNuQyxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcs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RUFBRSxNQUFNLEVBQUUsQ0FDbkMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQzdDLEdBQUcsQ0FBQyxNQUFPLEVBQ1gsR0FBRyxDQUFDLEtBQUssRUFDVCxTQUFTLENBQ1YsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUNGLENBQUM7SUFFRix1RUFBdUU7SUFDdkUsb0VBQW9FO0lBQ3BFLGdFQUFnRTtBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCB0ZXN0LCB2aSB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZSB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24nO1xuaW1wb3J0IHsgY3JlYXRlRmV0Y2hlciwgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuL3V0aWwubWpzJztcblxuLyoqXG4gKiBUZXN0cyB0aGF0IHRoZSBWMiBpbmxpbmUgZXhlY3V0aW9uIGxvb3AgY29ycmVjdGx5IG1pbmltaXplcyBmbG93XG4gKiBoYW5kbGVyIGludm9jYXRpb25zLiBFYWNoIHRlc3QgdmVyaWZpZXMgYSBzcGVjaWZpYyBwYXR0ZXJuOlxuICpcbiAqIC0gU2VxdWVudGlhbCBzdGVwcyAobm8gc3RyZWFtcyk6IDEgaW52b2NhdGlvblxuICogLSBTZXF1ZW50aWFsIHN0ZXBzIHdpdGggV3JpdGFibGVTdHJlYW06IDEgaW52b2NhdGlvbiAoc3luYyBmbHVzaClcbiAqIC0gU2xlZXAgKyBzdGVwOiAyIGludm9jYXRpb25zIChzbGVlcCByZXF1aXJlcyBxdWV1ZSByb3VuZC10cmlwKVxuICogLSBQYXJhbGxlbCBzdGVwcyAoUHJvbWlzZS5hbGwpOiAxLTMgaW52b2NhdGlvbnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlXG4gKiAgIGVtYmVkZGVkIGhhcm5lc3Mgb2JzZXJ2ZXMgdGhlIGJhY2tncm91bmQgc3RlcCBhbmQgY29udGludWF0aW9uIHNlcGFyYXRlbHlcbiAqIC0gSG9vayArIHJlc3VtZTogMiBpbnZvY2F0aW9ucyAoaG9vayByZXF1aXJlcyBleHRlcm5hbCByZXN1bWUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmxpbmVFeGVjdXRpb24od29ybGQ6IHN0cmluZykge1xuICB0ZXN0KFxuICAgICdzZXF1ZW50aWFsIHN0ZXBzIGNvbXBsZXRlIGluIGEgc2luZ2xlIGZsb3cgaW52b2NhdGlvbicsXG4gICAgeyB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcih7IHdvcmxkIH0pLnRoZW4oY3JlYXRlRmV0Y2hlcik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXJ2ZXIuaW52b2tlKFxuICAgICAgICAnd29ya2Zsb3dzL2lubGluZS1leGVjdXRpb24udHMnLFxuICAgICAgICAnc2VxdWVudGlhbFN0ZXBzV29ya2Zsb3cnLFxuICAgICAgICBbMTBdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgyMCk7XG5cbiAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgc2VydmVyLmdldEZsb3dJbnZvY2F0aW9uQ291bnQocmVzdWx0LnJ1bklkKTtcbiAgICAgIGV4cGVjdChjb3VudCkudG9CZSgxKTtcbiAgICB9XG4gICk7XG5cbiAgdGVzdChcbiAgICAnc2VxdWVudGlhbCBzdGVwcyB3aXRoIHN0cmVhbSBjb21wbGV0ZSBpbiBhIHNpbmdsZSBmbG93IGludm9jYXRpb24nLFxuICAgIHsgdGltZW91dDogMzBfMDAwIH0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoeyB3b3JsZCB9KS50aGVuKGNyZWF0ZUZldGNoZXIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9pbmxpbmUtZXhlY3V0aW9uLnRzJyxcbiAgICAgICAgJ3NlcXVlbnRpYWxTdGVwc1dpdGhTdHJlYW1Xb3JrZmxvdycsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgnaGVsbG8gd29ybGQnKTtcblxuICAgICAgY29uc3QgY291bnQgPSBhd2FpdCBzZXJ2ZXIuZ2V0Rmxvd0ludm9jYXRpb25Db3VudChyZXN1bHQucnVuSWQpO1xuICAgICAgZXhwZWN0KGNvdW50KS50b0JlKDEpO1xuICAgIH1cbiAgKTtcblxuICB0ZXN0KFxuICAgICdzbGVlcCB3b3JrZmxvdyByZXF1aXJlcyBleGFjdGx5IDIgZmxvdyBpbnZvY2F0aW9ucycsXG4gICAgeyB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcih7IHdvcmxkIH0pLnRoZW4oY3JlYXRlRmV0Y2hlcik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXJ2ZXIuaW52b2tlKFxuICAgICAgICAnd29ya2Zsb3dzL2lubGluZS1leGVjdXRpb24udHMnLFxuICAgICAgICAnc2xlZXBXb3JrZmxvdycsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgzKTtcblxuICAgICAgLy8gSW52b2NhdGlvbiAxOiByZXBsYXkg4oaSIHNsZWVwIOKGkiByZXR1cm4ge3RpbWVvdXRTZWNvbmRzfVxuICAgICAgLy8gSW52b2NhdGlvbiAyOiBzbGVlcCBjb21wbGV0ZWQg4oaSIHJlcGxheSDihpIgc3RlcCBpbmxpbmUg4oaSIGNvbXBsZXRlXG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHNlcnZlci5nZXRGbG93SW52b2NhdGlvbkNvdW50KHJlc3VsdC5ydW5JZCk7XG4gICAgICBleHBlY3QoY291bnQpLnRvQmUoMik7XG4gICAgfVxuICApO1xuXG4gIHRlc3QoXG4gICAgJ3BhcmFsbGVsIHN0ZXBzIChQcm9taXNlLmFsbCkgY29tcGxldGUgaW4gMS0zIGZsb3cgaW52b2NhdGlvbnMnLFxuICAgIHsgdGltZW91dDogMzBfMDAwIH0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoeyB3b3JsZCB9KS50aGVuKGNyZWF0ZUZldGNoZXIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9pbmxpbmUtZXhlY3V0aW9uLnRzJyxcbiAgICAgICAgJ3BhcmFsbGVsU3RlcHNXb3JrZmxvdycsXG4gICAgICAgIFtdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBydW4gPSBhd2FpdCB2aS53YWl0Rm9yKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVuID0gYXdhaXQgc2VydmVyLmdldFJ1bihyZXN1bHQucnVuSWQpO1xuICAgICAgICAgIGV4cGVjdChydW4uc3RhdHVzKS50b0JlKCdjb21wbGV0ZWQnKTtcbiAgICAgICAgICByZXR1cm4gcnVuO1xuICAgICAgICB9LFxuICAgICAgICB7IGludGVydmFsOiAyMDAsIHRpbWVvdXQ6IDI5XzAwMCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgICAgICAgcnVuLm91dHB1dCEsXG4gICAgICAgIHJ1bi5ydW5JZCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZSgzMyk7IC8vICgxMCsxKSArICgyMCsyKVxuXG4gICAgICAvLyBJbiB0aGUgZW1iZWRkZWQgaGFybmVzcyB0aGUgYmFja2dyb3VuZCBzdGVwIGNhbiBmaW5pc2ggcXVpY2tseSBlbm91Z2hcbiAgICAgIC8vIHRoYXQgdGhlIHJ1biBjb21wbGV0ZXMgYmVmb3JlIHdlIG9ic2VydmUgYSBkaXN0aW5jdCBjb250aW51YXRpb24gcGFzcyxcbiAgICAgIC8vIHNvIHRoZSBsb3dlciBib3VuZCBpcyAxIGV2ZW4gdGhvdWdoIHByb2R1Y3Rpb24gb2Z0ZW4gc2hvd3MgMi5cbiAgICAgIC8vIFdpdGggaGlnaGVyIHF1ZXVlIGNvbmN1cnJlbmN5LCB0aGUgYmFja2dyb3VuZCBzdGVwJ3MgY29udGludWF0aW9uIG1heVxuICAgICAgLy8gYWxzbyByYWNlIHdpdGggdGhlIGlubGluZSBoYW5kbGVyJ3MgbG9vcCwgYWRkaW5nIGEgM3JkIG5vLW9wIGludm9jYXRpb24uXG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHNlcnZlci5nZXRGbG93SW52b2NhdGlvbkNvdW50KHJlc3VsdC5ydW5JZCk7XG4gICAgICBleHBlY3QoY291bnQpLnRvQmVHcmVhdGVyVGhhbk9yRXF1YWwoMSk7XG4gICAgICBleHBlY3QoY291bnQpLnRvQmVMZXNzVGhhbk9yRXF1YWwoMyk7XG4gICAgfVxuICApO1xuXG4gIHRlc3QoXG4gICAgJ3NlcXVlbnRpYWwgc3RlcHMgY2FycnlpbmcgYW4gQWJvcnRTaWduYWwgc3RpbGwgcnVuIGluIGEgc2luZ2xlIGZsb3cgaW52b2NhdGlvbicsXG4gICAgeyB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBSZWdyZXNzaW9uIGZvciB2ZXJjZWwvd29ya2Zsb3cjMjc5NTogYSBzZXJpYWxpemVkIEFib3J0U2lnbmFsIGluIHN0ZXBcbiAgICAgIC8vIGFyZ3VtZW50cyBvcGVucyBhIHJlYWwtdGltZSBhYm9ydC1zdHJlYW0gcmVhZGVyIGZvciB0aGUgc3RlcCdzXG4gICAgICAvLyBkdXJhdGlvbi4gSWYgdGhhdCByZWFkZXIgaXNuJ3QgdG9ybiBkb3duIGJlZm9yZSB0aGUgc3RlcCdzIG9wcy1zZXR0bGVcbiAgICAgIC8vIGNoZWNrLCBpdHMgbmV2ZXItcmVzb2x2aW5nIHJlYWQoKSBtYWtlcyBldmVyeSBzaWduYWwtYmVhcmluZyBzdGVwXG4gICAgICAvLyByZXBvcnQgYGhhc1BlbmRpbmdPcHNgLCBmb3JjaW5nIGEgcXVldWUgY29udGludWF0aW9uIHBlciBzdGVwIChOKzFcbiAgICAgIC8vIGludm9jYXRpb25zKSBpbnN0ZWFkIG9mIHJ1bm5pbmcgaW5saW5lLlxuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoeyB3b3JsZCB9KS50aGVuKGNyZWF0ZUZldGNoZXIpO1xuICAgICAgY29uc3QgY291bnQgPSA1O1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9zaWduYWwtY29zdC50cycsXG4gICAgICAgICdzaWduYWxDb3N0V29ya2Zsb3cnLFxuICAgICAgICBbeyBjb3VudCwgd2l0aFNpZ25hbDogdHJ1ZSB9XVxuICAgICAgKTtcblxuICAgICAgY29uc3QgcnVuID0gYXdhaXQgdmkud2FpdEZvcihcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJ1biA9IGF3YWl0IHNlcnZlci5nZXRSdW4ocmVzdWx0LnJ1bklkKTtcbiAgICAgICAgICBleHBlY3QocnVuLnN0YXR1cykudG9CZSgnY29tcGxldGVkJyk7XG4gICAgICAgICAgcmV0dXJuIHJ1bjtcbiAgICAgICAgfSxcbiAgICAgICAgeyBpbnRlcnZhbDogMjAwLCB0aW1lb3V0OiAyOV8wMDAgfVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgaHlkcmF0ZVdvcmtmbG93UmV0dXJuVmFsdWUoXG4gICAgICAgIHJ1bi5vdXRwdXQhLFxuICAgICAgICBydW4ucnVuSWQsXG4gICAgICAgIHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmUoJ2RvbmUnKTtcblxuICAgICAgY29uc3QgaW52b2NhdGlvbnMgPSBhd2FpdCBzZXJ2ZXIuZ2V0Rmxvd0ludm9jYXRpb25Db3VudChyZXN1bHQucnVuSWQpO1xuICAgICAgZXhwZWN0KGludm9jYXRpb25zKS50b0JlKDEpO1xuICAgIH1cbiAgKTtcblxuICAvLyBIb29rIGludm9jYXRpb24gY291bnRpbmcgaXMgdGVzdGVkIGJ5IHRoZSBleGlzdGluZyBob29rcyB0ZXN0IHN1aXRlLlxuICAvLyBUaGUgaG9vayBwYXR0ZXJuIHJlcXVpcmVzIGV4dGVybmFsIHJlc3VtZSwgd2hpY2ggaW52b2x2ZXMgY29tcGxleFxuICAvLyB0aW1pbmcuIFRoZSBpbnZvY2F0aW9uIGNvdW50IGZvciBob29rcyBpcyAyOiBjcmVhdGUgKyByZXN1bWUuXG59XG4iXX0=
|
package/dist/src/server.mjs
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
2
4
|
import { serve } from '@hono/node-server';
|
|
5
|
+
import { createWorldFromModule, } from '@workflow/core/runtime';
|
|
6
|
+
import { getWorldImport } from '@workflow/utils';
|
|
3
7
|
import { Hono } from 'hono';
|
|
4
8
|
import { getHookByToken, getRun, resumeHook, start } from 'workflow/api';
|
|
5
|
-
import { getWorld } from 'workflow/runtime';
|
|
9
|
+
import { getWorld, setWorld } from 'workflow/runtime';
|
|
6
10
|
import * as z from 'zod';
|
|
7
11
|
import { POST as flowPOST } from '../.well-known/workflow/v1/flow.mjs';
|
|
8
12
|
import manifest from '../.well-known/workflow/v1/manifest.json' with {
|
|
@@ -12,6 +16,21 @@ if (!process.env.WORKFLOW_TARGET_WORLD) {
|
|
|
12
16
|
console.error('Error: WORKFLOW_TARGET_WORLD environment variable is not set.');
|
|
13
17
|
process.exit(1);
|
|
14
18
|
}
|
|
19
|
+
function normalizeTargetWorldSpecifier(targetWorld) {
|
|
20
|
+
if (targetWorld.startsWith('./') || targetWorld.startsWith('../')) {
|
|
21
|
+
return pathToFileURL(resolve(process.cwd(), targetWorld)).href;
|
|
22
|
+
}
|
|
23
|
+
return getWorldImport({ WORKFLOW_TARGET_WORLD: targetWorld });
|
|
24
|
+
}
|
|
25
|
+
async function initializeTestWorld() {
|
|
26
|
+
const targetWorld = process.env.WORKFLOW_TARGET_WORLD;
|
|
27
|
+
if (!targetWorld) {
|
|
28
|
+
throw new Error('WORKFLOW_TARGET_WORLD environment variable is not set.');
|
|
29
|
+
}
|
|
30
|
+
const mod = (await import(normalizeTargetWorldSpecifier(targetWorld)));
|
|
31
|
+
setWorld(await createWorldFromModule(mod));
|
|
32
|
+
}
|
|
33
|
+
await initializeTestWorld();
|
|
15
34
|
const Invoke = z
|
|
16
35
|
.object({
|
|
17
36
|
file: z.enum(Object.keys(manifest.workflows)),
|
|
@@ -100,7 +119,7 @@ const app = new Hono()
|
|
|
100
119
|
const runId = ctx.req.param('runId');
|
|
101
120
|
const world = await getWorld();
|
|
102
121
|
const allEvents = [];
|
|
103
|
-
let cursor
|
|
122
|
+
let cursor;
|
|
104
123
|
while (true) {
|
|
105
124
|
const page = await world.events.list({
|
|
106
125
|
runId,
|
|
@@ -146,4 +165,4 @@ serve({
|
|
|
146
165
|
control.end();
|
|
147
166
|
}
|
|
148
167
|
});
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLm1qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN6QixPQUFPLEVBQUUsSUFBSSxJQUFJLFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sUUFBUSxNQUFNLDBDQUEwQyxDQUFDO0lBQzlELElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQztBQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FDWCwrREFBK0QsQ0FDaEUsQ0FBQztJQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQU1ELE1BQU0sTUFBTSxHQUFHLENBQUM7S0FDYixNQUFNLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQXlCLENBQUM7SUFDckUsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0NBQ3RDLENBQUM7S0FDRCxTQUFTLENBQUMsQ0FBQyxH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UUFBUSxFQUFFLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FDdEIsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxFQUM5QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLENBQUMsQ0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLENBQUM7QUFDSCxDQUFDLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHNlcnZlIH0gZnJvbSAnQGhvbm8vbm9kZS1zZXJ2ZXInO1xuaW1wb3J0IHsgSG9ubyB9IGZyb20gJ2hvbm8nO1xuaW1wb3J0IHsgZ2V0SG9va0J5VG9rZW4sIGdldFJ1biwgcmVzdW1lSG9vaywgc3RhcnQgfSBmcm9tICd3b3JrZmxvdy9hcGknO1xuaW1wb3J0IHsgZ2V0V29ybGQgfSBmcm9tICd3b3JrZmxvdy9ydW50aW1lJztcbmltcG9ydCAqIGFzIHogZnJvbSAnem9kJztcbmltcG9ydCB7IFBPU1QgYXMgZmxvd1BPU1QgfSBmcm9tICcuLi8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9mbG93Lm1qcyc7XG5pbXBvcnQgbWFuaWZlc3QgZnJvbSAnLi4vLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbicgd2l0aCB7XG4gIHR5cGU6ICdqc29uJyxcbn07XG5cbmlmICghcHJvY2Vzcy5lbnYuV09SS0ZMT1dfVEFSR0VUX1dPUkxEKSB7XG4gIGNvbnNvbGUuZXJyb3IoXG4gICAgJ0Vycm9yOiBXT1JLRkxPV19UQVJHRVRfV09STEQgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4nXG4gICk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxudHlwZSBGaWxlcyA9IGtleW9mIHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3M7XG50eXBlIFdvcmtmbG93czxGIGV4dGVuZHMgRmlsZXM+ID0ga2V5b2YgKHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3MpW0ZdO1xudHlwZSBOb25FbXB0eUFycmF5PFQ+ID0gW1QsIC4uLlRbXV07XG5cbmNvbnN0IEludm9rZSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZmlsZTogei5lbnVtKE9iamVjdC5rZXlzKG1hbmlmZXN0LndvcmtmbG93cykgYXMgTm9uRW1wdHlBcnJheTxGaWxlcz4pLFxuICAgIHdvcmtmbG93OiB6LnN0cmluZygpLFxuICAgIGFyZ3M6IHoudW5rbm93bigpLmFycmF5KCkuZGVmYXVsdChbXSksXG4gIH0pXG4gIC50cmFuc2Zvcm0oKG9iaikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBvYmouZmlsZSBhcyBrZXlvZiB0eXBlb2YgbWFuaWZlc3Qud29ya2Zsb3dzO1xuICAgIGNvbnN0IHdvcmtmbG93ID0gelxuICAgICAgLmVudW0oXG4gICAgICAgIE9iamVjdC5rZXlzKG1hbmlmZXN0LndvcmtmbG93c1tmaWxlXSkgYXMgTm9uRW1wdHlBcnJheTxcbiAgICAgICAgICBXb3JrZmxvd3M8dHlwZW9mIGZpbGU+XG4gICAgICAgID5cbiAgICAgIClcbiAgICAgIC5wYXJzZShvYmoud29ya2Zsb3cpO1xuICAgIHJldHVybiB7XG4gICAgICBhcmdzOiBvYmouYXJncyxcbiAgICAgIHdvcmtmbG93OiBtYW5pZmVzdC53b3JrZmxvd3NbZmlsZV1bd29ya2Zsb3ddLFxuICAgIH07XG4gIH0pO1xuXG4vLyBUcmFjayBmbG93IGhhbmRsZXIgaW52b2NhdGlvbnMgcGVyIHJ1biBmb3IgdGVzdGluZyBpbmxpbmUgZXhlY3V0aW9uXG5jb25zdCBmbG93SW52b2NhdGlvbkNvdW50cyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbmNvbnN0IGFwcCA9IG5ldyBIb25vKClcbiAgLnBvc3QoJy8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9mbG93JywgYXN5bmMgKGN0eCkgPT4ge1xuICAgIC8vIENsb25lIHRoZSByZXF1ZXN0IHRvIHJlYWQgdGhlIGJvZHkgZm9yIHRyYWNraW5nIHdpdGhvdXQgY29uc3VtaW5nIGl0LlxuICAgIC8vIFdlIG11c3QgaW5jcmVtZW50IHRoZSBpbnZvY2F0aW9uIGNvdW50ZXIgKmJlZm9yZSogYXdhaXRpbmcgZmxvd1BPU1QsXG4gICAgLy8gb3RoZXJ3aXNlIHRoZSB3b3JrZmxvdyBtYXkgY29tcGxldGUgKGFuZCB0aGUgdGVzdCBtYXkgb2JzZXJ2ZSB0aGVcbiAgICAvLyBjb21wbGV0ZWQgc3RhdHVzKSBiZWZvcmUgdGhlIGNvdW50ZXIgaXMgYnVtcGVkLCBwcm9kdWNpbmcgYSBmbGFreVxuICAgIC8vIGBleHBlY3RlZCAwIHRvIGJlIDFgIGZhaWx1cmUgd2hlbiB0aGUgdGVzdCBpbW1lZGlhdGVseSBxdWVyaWVzXG4gICAgLy8gL19mbG93LWludm9jYXRpb25zIGFmdGVyIHNlZWluZyB0aGUgcnVuIGFzIGNvbXBsZXRlZC5cbiAgICBjb25zdCBjbG9uZWQgPSBjdHgucmVxLnJhdy5jbG9uZSgpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBib2R5ID0gKGF3YWl0IGNsb25lZC5qc29uKCkpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3QgcnVuSWQgPVxuICAgICAgICB0eXBlb2YgYm9keT8ucnVuSWQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBib2R5LnJ1bklkXG4gICAgICAgICAgOiB0eXBlb2YgKGJvZHkucGF5bG9hZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICA/LnJ1bklkID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyAoKGJvZHkucGF5bG9hZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikucnVuSWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAocnVuSWQpIHtcbiAgICAgICAgZmxvd0ludm9jYXRpb25Db3VudHMuc2V0KFxuICAgICAgICAgIHJ1bklkLFxuICAgICAgICAgIChmbG93SW52b2NhdGlvbkNvdW50cy5nZXQocnVuSWQpID8/IDApICsgMVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSGVhbHRoIGNoZWNrIG9yIG5vbi1KU09OIG1lc3NhZ2VzIOKAlCBpZ25vcmVcbiAgICB9XG4gICAgcmV0dXJuIGZsb3dQT1NUKGN0eC5yZXEucmF3KTtcbiAgfSlcbiAgLmdldCgnL19mbG93LWludm9jYXRpb25zLzpydW5JZCcsIChjdHgpID0+IHtcbiAgICBjb25zdCBjb3VudCA9IGZsb3dJbnZvY2F0aW9uQ291bnRzLmdldChjdHgucmVxLnBhcmFtKCdydW5JZCcpKSA/PyAwO1xuICAgIHJldHVybiBjdHguanNvbih7IGNvdW50IH0pO1xuICB9KVxuICAuZ2V0KCcvX21hbmlmZXN0JywgKGN0eCkgPT4gY3R4Lmpzb24obWFuaWZlc3QpKVxuICAucG9zdCgnL2ludm9rZScsIGFzeW5jIChjdHgpID0+IHtcbiAgICBjb25zdCBqc29uID0gYXdhaXQgY3R4LnJlcS5qc29uKCkudGhlbihJbnZva2UucGFyc2UpO1xuICAgIGNvbnN0IGhhbmRsZXIgPSBhd2FpdCBzdGFydChqc29uLndvcmtmbG93LCBqc29uLmFyZ3MpO1xuXG4gICAgcmV0dXJuIGN0eC5qc29uKHsgcnVuSWQ6IGhhbmRsZXIucnVuSWQgfSk7XG4gIH0pXG4gIC5wb3N0KCcvaG9va3MvOnRva2VuJywgYXN5bmMgKGN0eCkgPT4ge1xuICAgIGNvbnN0IGhvb2sgPSBhd2FpdCBnZXRIb29rQnlUb2tlbihjdHgucmVxLnBhcmFtKCd0b2tlbicpKTtcbiAgICBjb25zdCB7IHJ1bklkIH0gPSBhd2FpdCByZXN1bWVIb29rKGhvb2sudG9rZW4sIHtcbiAgICAgIC4uLihhd2FpdCBjdHgucmVxLmpzb24oKSksXG4gICAgICBtZXRhZGF0YTogaG9vay5tZXRhZGF0YSxcbiAgICB9KTtcbiAgICByZXR1cm4gY3R4Lmpzb24oeyBydW5JZCwgaG9va0lkOiBob29rLmhvb2tJZCB9KTtcbiAgfSlcbiAgLmdldCgnL3J1bnMvOnJ1bklkJywgYXN5bmMgKGN0eCkgPT4ge1xuICAgIGNvbnN0IHdvcmxkID0gYXdhaXQgZ2V0V29ybGQoKTtcbiAgICBjb25zdCBydW4gPSBhd2FpdCB3b3JsZC5ydW5zLmdldChjdHgucmVxLnBhcmFtKCdydW5JZCcpKTtcbiAgICAvLyBDdXN0b20gSlNPTiBzZXJpYWxpemF0aW9uIHRvIGhhbmRsZSBVaW50OEFycmF5IGFzIGJhc2U2NFxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShydW4sIChfa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIF9fdHlwZTogJ1VpbnQ4QXJyYXknLFxuICAgICAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKHZhbHVlKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShqc29uLCB7XG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICB9KTtcbiAgfSlcbiAgLmdldCgnL3J1bnMvOnJ1bklkL3JlYWRhYmxlJywgYXN5bmMgKGN0eCkgPT4ge1xuICAgIGNvbnN0IHJ1bklkID0gY3R4LnJlcS5wYXJhbSgncnVuSWQnKTtcbiAgICBjb25zdCBydW4gPSBnZXRSdW4ocnVuSWQpO1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UocnVuLmdldFJlYWRhYmxlKCkpO1xuICB9KVxuICAuZ2V0KCcvcnVucy86cnVuSWQvZXZlbnRzJywgYXN5bmMgKGN0eCkgPT4ge1xuICAgIGNvbnN0IHJ1bklkID0gY3R4LnJlcS5wYXJhbSgncnVuSWQnKTtcbiAgICBjb25zdCB3b3JsZCA9IGF3YWl0IGdldFdvcmxkKCk7XG4gICAgY29uc3QgYWxsRXZlbnRzOiB7IGV2ZW50VHlwZTogc3RyaW5nOyBjb3JyZWxhdGlvbklkPzogc3RyaW5nIH1bXSA9IFtdO1xuICAgIGxldCBjdXJzb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHdvcmxkLmV2ZW50cy5saXN0KHtcbiAgICAgICAgcnVuSWQsXG4gICAgICAgIHBhZ2luYXRpb246IHsgc29ydE9yZGVyOiAnYXNjJywgY3Vyc29yIH0sXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZSBvZiBwYWdlLmRhdGEpIHtcbiAgICAgICAgYWxsRXZlbnRzLnB1c2goe1xuICAgICAgICAgIGV2ZW50VHlwZTogZS5ldmVudFR5cGUsXG4gICAgICAgICAgY29ycmVsYXRpb25JZDogZS5jb3JyZWxhdGlvbklkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghcGFnZS5oYXNNb3JlKSBicmVhaztcbiAgICAgIGN1cnNvciA9IHBhZ2UuY3Vyc29yID8/IHVuZGVmaW5lZDtcbiAgICAgIGlmICghY3Vyc29yKSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGN0eC5qc29uKHsgZXZlbnRzOiBhbGxFdmVudHMgfSk7XG4gIH0pO1xuXG5zZXJ2ZShcbiAge1xuICAgIGZldGNoOiBhcHAuZmV0Y2gsXG4gICAgcG9ydDogTnVtYmVyKHByb2Nlc3MuZW52LlBPUlQpIHx8IDAsXG4gIH0sXG4gIGFzeW5jIChpbmZvKSA9PiB7XG4gICAgY29uc29sZS5sb2coYPCfkYIgbGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2luZm8uYWRkcmVzc306JHtpbmZvLnBvcnR9YCk7XG4gICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgcHJvY2Vzcy5lbnYuUE9SVCA9IGluZm8ucG9ydC50b1N0cmluZygpO1xuXG4gICAgZm9yIChjb25zdCBbZmlsZW5hbWUsIHdvcmtmbG93c10gb2YgT2JqZWN0LmVudHJpZXMobWFuaWZlc3Qud29ya2Zsb3dzKSkge1xuICAgICAgZm9yIChjb25zdCB3b3JrZmxvd05hbWUgb2YgT2JqZWN0LmtleXMoXG4gICAgICAgIHdvcmtmbG93cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgJCBjdXJsIC1YIFBPU1QgaHR0cDovL2xvY2FsaG9zdDoke2luZm8ucG9ydH0vaW52b2tlIC1kICcke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmaWxlOiBmaWxlbmFtZSxcbiAgICAgICAgICAgICAgd29ya2Zsb3c6IHdvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApfSdgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd29ybGQgPSBhd2FpdCBnZXRXb3JsZCgpO1xuICAgIGlmICh3b3JsZC5zdGFydCkge1xuICAgICAgY29uc29sZS5sb2coYHN0YXJ0aW5nIGJhY2tncm91bmQgdGFza3MuLi5gKTtcbiAgICAgIGF3YWl0IHdvcmxkLnN0YXJ0KCkudGhlbihcbiAgICAgICAgKCkgPT4gY29uc29sZS5sb2coJ2JhY2tncm91bmQgdGFza3Mgc3RhcnRlZC4nKSxcbiAgICAgICAgKGVycikgPT4gY29uc29sZS5lcnJvcign4p2XIGVycm9yIHN0YXJ0aW5nIGJhY2tncm91bmQgdGFza3M6JywgZXJyKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuQ09OVFJPTF9GRCA9PT0gJzMnKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oJycsIHsgZmQ6IDMgfSk7XG4gICAgICBjb250cm9sLndyaXRlKGAke0pTT04uc3RyaW5naWZ5KHsgc3RhdGU6ICdsaXN0ZW5pbmcnLCBpbmZvIH0pfVxcbmApO1xuICAgICAgY29udHJvbC5lbmQoKTtcbiAgICB9XG4gIH1cbik7XG4iXX0=
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLm1qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFDTCxxQkFBcUIsR0FFdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLFFBQVEsTUFBTSwwQ0FBMEMsQ0FBQztJQUM5RCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQ1gsK0RBQStELENBQ2hFLENBQUM7SUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLDZCQUE2QixDQUFDLFdBQW1CO0lBQ3hELElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMs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SyxFQUFFLENBQUMsSUFBSSxDQUN0QixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLEVBQzlDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsQ0FBQyxDQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgc2VydmUgfSBmcm9tICdAaG9uby9ub2RlLXNlcnZlcic7XG5pbXBvcnQge1xuICBjcmVhdGVXb3JsZEZyb21Nb2R1bGUsXG4gIHR5cGUgV29ybGRGYWN0b3J5TW9kdWxlLFxufSBmcm9tICdAd29ya2Zsb3cvY29yZS9ydW50aW1lJztcbmltcG9ydCB7IGdldFdvcmxkSW1wb3J0IH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB7IEhvbm8gfSBmcm9tICdob25vJztcbmltcG9ydCB7IGdldEhvb2tCeVRva2VuLCBnZXRSdW4sIHJlc3VtZUhvb2ssIHN0YXJ0IH0gZnJvbSAnd29ya2Zsb3cvYXBpJztcbmltcG9ydCB7IGdldFdvcmxkLCBzZXRXb3JsZCB9IGZyb20gJ3dvcmtmbG93L3J1bnRpbWUnO1xuaW1wb3J0ICogYXMgeiBmcm9tICd6b2QnO1xuaW1wb3J0IHsgUE9TVCBhcyBmbG93UE9TVCB9IGZyb20gJy4uLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cubWpzJztcbmltcG9ydCBtYW5pZmVzdCBmcm9tICcuLi8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJyB3aXRoIHtcbiAgdHlwZTogJ2pzb24nLFxufTtcblxuaWYgKCFwcm9jZXNzLmVudi5XT1JLRkxPV19UQVJHRVRfV09STEQpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnRXJyb3I6IFdPUktGTE9XX1RBUkdFVF9XT1JMRCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LidcbiAgKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUYXJnZXRXb3JsZFNwZWNpZmllcih0YXJnZXRXb3JsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHRhcmdldFdvcmxkLnN0YXJ0c1dpdGgoJy4vJykgfHwgdGFyZ2V0V29ybGQuc3RhcnRzV2l0aCgnLi4vJykpIHtcbiAgICByZXR1cm4gcGF0aFRvRmlsZVVSTChyZXNvbHZlKHByb2Nlc3MuY3dkKCksIHRhcmdldFdvcmxkKSkuaHJlZjtcbiAgfVxuICByZXR1cm4gZ2V0V29ybGRJbXBvcnQoeyBXT1JLRkxPV19UQVJHRVRfV09STEQ6IHRhcmdldFdvcmxkIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbml0aWFsaXplVGVzdFdvcmxkKCkge1xuICBjb25zdCB0YXJnZXRXb3JsZCA9IHByb2Nlc3MuZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRDtcbiAgaWYgKCF0YXJnZXRXb3JsZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignV09SS0ZMT1dfVEFSR0VUX1dPUkxEIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQuJyk7XG4gIH1cblxuICBjb25zdCBtb2QgPSAoYXdhaXQgaW1wb3J0KFxuICAgIG5vcm1hbGl6ZVRhcmdldFdvcmxkU3BlY2lmaWVyKHRhcmdldFdvcmxkKVxuICApKSBhcyBXb3JsZEZhY3RvcnlNb2R1bGU7XG4gIHNldFdvcmxkKGF3YWl0IGNyZWF0ZVdvcmxkRnJvbU1vZHVsZShtb2QpKTtcbn1cblxuYXdhaXQgaW5pdGlhbGl6ZVRlc3RXb3JsZCgpO1xuXG50eXBlIEZpbGVzID0ga2V5b2YgdHlwZW9mIG1hbmlmZXN0LndvcmtmbG93cztcbnR5cGUgV29ya2Zsb3dzPEYgZXh0ZW5kcyBGaWxlcz4gPSBrZXlvZiAodHlwZW9mIG1hbmlmZXN0LndvcmtmbG93cylbRl07XG50eXBlIE5vbkVtcHR5QXJyYXk8VD4gPSBbVCwgLi4uVFtdXTtcblxuY29uc3QgSW52b2tlID0gelxuICAub2JqZWN0KHtcbiAgICBmaWxlOiB6LmVudW0oT2JqZWN0LmtleXMobWFuaWZlc3Qud29ya2Zsb3dzKSBhcyBOb25FbXB0eUFycmF5PEZpbGVzPiksXG4gICAgd29ya2Zsb3c6IHouc3RyaW5nKCksXG4gICAgYXJnczogei51bmtub3duKCkuYXJyYXkoKS5kZWZhdWx0KFtdKSxcbiAgfSlcbiAgLnRyYW5zZm9ybSgob2JqKSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IG9iai5maWxlIGFzIGtleW9mIHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3M7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB6XG4gICAgICAuZW51bShcbiAgICAgICAgT2JqZWN0LmtleXMobWFuaWZlc3Qud29ya2Zsb3dzW2ZpbGVdKSBhcyBOb25FbXB0eUFycmF5PFxuICAgICAgICAgIFdvcmtmbG93czx0eXBlb2YgZmlsZT5cbiAgICAgICAgPlxuICAgICAgKVxuICAgICAgLnBhcnNlKG9iai53b3JrZmxvdyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IG9iai5hcmdzLFxuICAgICAgd29ya2Zsb3c6IG1hbmlmZXN0LndvcmtmbG93c1tmaWxlXVt3b3JrZmxvd10sXG4gICAgfTtcbiAgfSk7XG5cbi8vIFRyYWNrIGZsb3cgaGFuZGxlciBpbnZvY2F0aW9ucyBwZXIgcnVuIGZvciB0ZXN0aW5nIGlubGluZSBleGVjdXRpb25cbmNvbnN0IGZsb3dJbnZvY2F0aW9uQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuY29uc3QgYXBwID0gbmV3IEhvbm8oKVxuICAucG9zdCgnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cnLCBhc3luYyAoY3R4KSA9PiB7XG4gICAgLy8gQ2xvbmUgdGhlIHJlcXVlc3QgdG8gcmVhZCB0aGUgYm9keSBmb3IgdHJhY2tpbmcgd2l0aG91dCBjb25zdW1pbmcgaXQuXG4gICAgLy8gV2UgbXVzdCBpbmNyZW1lbnQgdGhlIGludm9jYXRpb24gY291bnRlciAqYmVmb3JlKiBhd2FpdGluZyBmbG93UE9TVCxcbiAgICAvLyBvdGhlcndpc2UgdGhlIHdvcmtmbG93IG1heSBjb21wbGV0ZSAoYW5kIHRoZSB0ZXN0IG1heSBvYnNlcnZlIHRoZVxuICAgIC8vIGNvbXBsZXRlZCBzdGF0dXMpIGJlZm9yZSB0aGUgY291bnRlciBpcyBidW1wZWQsIHByb2R1Y2luZyBhIGZsYWt5XG4gICAgLy8gYGV4cGVjdGVkIDAgdG8gYmUgMWAgZmFpbHVyZSB3aGVuIHRoZSB0ZXN0IGltbWVkaWF0ZWx5IHF1ZXJpZXNcbiAgICAvLyAvX2Zsb3ctaW52b2NhdGlvbnMgYWZ0ZXIgc2VlaW5nIHRoZSBydW4gYXMgY29tcGxldGVkLlxuICAgIGNvbnN0IGNsb25lZCA9IGN0eC5yZXEucmF3LmNsb25lKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJvZHkgPSAoYXdhaXQgY2xvbmVkLmpzb24oKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBydW5JZCA9XG4gICAgICAgIHR5cGVvZiBib2R5Py5ydW5JZCA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IGJvZHkucnVuSWRcbiAgICAgICAgICA6IHR5cGVvZiAoYm9keS5wYXlsb2FkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgID8ucnVuSWQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/ICgoYm9keS5wYXlsb2FkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5ydW5JZCBhcyBzdHJpbmcpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChydW5JZCkge1xuICAgICAgICBmbG93SW52b2NhdGlvbkNvdW50cy5zZXQoXG4gICAgICAgICAgcnVuSWQsXG4gICAgICAgICAgKGZsb3dJbnZvY2F0aW9uQ291bnRzLmdldChydW5JZCkgPz8gMCkgKyAxXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBIZWFsdGggY2hlY2sgb3Igbm9uLUpTT04gbWVzc2FnZXMg4oCUIGlnbm9yZVxuICAgIH1cbiAgICByZXR1cm4gZmxvd1BPU1QoY3R4LnJlcS5yYXcpO1xuICB9KVxuICAuZ2V0KCcvX2Zsb3ctaW52b2NhdGlvbnMvOnJ1bklkJywgKGN0eCkgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gZmxvd0ludm9jYXRpb25Db3VudHMuZ2V0KGN0eC5yZXEucGFyYW0oJ3J1bklkJykpID8/IDA7XG4gICAgcmV0dXJuIGN0eC5qc29uKHsgY291bnQgfSk7XG4gIH0pXG4gIC5nZXQoJy9fbWFuaWZlc3QnLCAoY3R4KSA9PiBjdHguanNvbihtYW5pZmVzdCkpXG4gIC5wb3N0KCcvaW52b2tlJywgYXN5bmMgKGN0eCkgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhd2FpdCBjdHgucmVxLmpzb24oKS50aGVuKEludm9rZS5wYXJzZSk7XG4gICAgY29uc3QgaGFuZGxlciA9IGF3YWl0IHN0YXJ0KGpzb24ud29ya2Zsb3csIGpzb24uYXJncyk7XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oeyBydW5JZDogaGFuZGxlci5ydW5JZCB9KTtcbiAgfSlcbiAgLnBvc3QoJy9ob29rcy86dG9rZW4nLCBhc3luYyAoY3R4KSA9PiB7XG4gICAgY29uc3QgaG9vayA9IGF3YWl0IGdldEhvb2tCeVRva2VuKGN0eC5yZXEucGFyYW0oJ3Rva2VuJykpO1xuICAgIGNvbnN0IHsgcnVuSWQgfSA9IGF3YWl0IHJlc3VtZUhvb2soaG9vay50b2tlbiwge1xuICAgICAgLi4uKGF3YWl0IGN0eC5yZXEuanNvbigpKSxcbiAgICAgIG1ldGFkYXRhOiBob29rLm1ldGFkYXRhLFxuICAgIH0pO1xuICAgIHJldHVybiBjdHguanNvbih7IHJ1bklkLCBob29rSWQ6IGhvb2suaG9va0lkIH0pO1xuICB9KVxuICAuZ2V0KCcvcnVucy86cnVuSWQnLCBhc3luYyAoY3R4KSA9PiB7XG4gICAgY29uc3Qgd29ybGQgPSBhd2FpdCBnZXRXb3JsZCgpO1xuICAgIGNvbnN0IHJ1biA9IGF3YWl0IHdvcmxkLnJ1bnMuZ2V0KGN0eC5yZXEucGFyYW0oJ3J1bklkJykpO1xuICAgIC8vIEN1c3RvbSBKU09OIHNlcmlhbGl6YXRpb24gdG8gaGFuZGxlIFVpbnQ4QXJyYXkgYXMgYmFzZTY0XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHJ1biwgKF9rZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgX190eXBlOiAnVWludDhBcnJheScsXG4gICAgICAgICAgZGF0YTogQnVmZmVyLmZyb20odmFsdWUpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKGpzb24sIHtcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgIH0pO1xuICB9KVxuICAuZ2V0KCcvcnVucy86cnVuSWQvcmVhZGFibGUnLCBhc3luYyAoY3R4KSA9PiB7XG4gICAgY29uc3QgcnVuSWQgPSBjdHgucmVxLnBhcmFtKCdydW5JZCcpO1xuICAgIGNvbnN0IHJ1biA9IGdldFJ1bihydW5JZCk7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShydW4uZ2V0UmVhZGFibGUoKSk7XG4gIH0pXG4gIC5nZXQoJy9ydW5zLzpydW5JZC9ldmVudHMnLCBhc3luYyAoY3R4KSA9PiB7XG4gICAgY29uc3QgcnVuSWQgPSBjdHgucmVxLnBhcmFtKCdydW5JZCcpO1xuICAgIGNvbnN0IHdvcmxkID0gYXdhaXQgZ2V0V29ybGQoKTtcbiAgICBjb25zdCBhbGxFdmVudHM6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcgfVtdID0gW107XG4gICAgbGV0IGN1cnNvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgd29ybGQuZXZlbnRzLmxpc3Qoe1xuICAgICAgICBydW5JZCxcbiAgICAgICAgcGFnaW5hdGlvbjogeyBzb3J0T3JkZXI6ICdhc2MnLCBjdXJzb3IgfSxcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBlIG9mIHBhZ2UuZGF0YSkge1xuICAgICAgICBhbGxFdmVudHMucHVzaCh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBlLmV2ZW50VHlwZSxcbiAgICAgICAgICBjb3JyZWxhdGlvbklkOiBlLmNvcnJlbGF0aW9uSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFwYWdlLmhhc01vcmUpIGJyZWFrO1xuICAgICAgY3Vyc29yID0gcGFnZS5jdXJzb3IgPz8gdW5kZWZpbmVkO1xuICAgICAgaWYgKCFjdXJzb3IpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gY3R4Lmpzb24oeyBldmVudHM6IGFsbEV2ZW50cyB9KTtcbiAgfSk7XG5cbnNlcnZlKFxuICB7XG4gICAgZmV0Y2g6IGFwcC5mZXRjaCxcbiAgICBwb3J0OiBOdW1iZXIocHJvY2Vzcy5lbnYuUE9SVCkgfHwgMCxcbiAgfSxcbiAgYXN5bmMgKGluZm8pID0+IHtcbiAgICBjb25zb2xlLmxvZyhg8J+RgiBsaXN0ZW5pbmcgb24gaHR0cDovLyR7aW5mby5hZGRyZXNzfToke2luZm8ucG9ydH1gKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICBwcm9jZXNzLmVudi5QT1JUID0gaW5mby5wb3J0LnRvU3RyaW5nKCk7XG5cbiAgICBmb3IgKGNvbnN0IFtmaWxlbmFtZSwgd29ya2Zsb3dzXSBvZiBPYmplY3QuZW50cmllcyhtYW5pZmVzdC53b3JrZmxvd3MpKSB7XG4gICAgICBmb3IgKGNvbnN0IHdvcmtmbG93TmFtZSBvZiBPYmplY3Qua2V5cyhcbiAgICAgICAgd29ya2Zsb3dzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICApKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAkIGN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OiR7aW5mby5wb3J0fS9pbnZva2UgLWQgJyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpbGU6IGZpbGVuYW1lLFxuICAgICAgICAgICAgICB3b3JrZmxvdzogd29ya2Zsb3dOYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICl9J2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3b3JsZCA9IGF3YWl0IGdldFdvcmxkKCk7XG4gICAgaWYgKHdvcmxkLnN0YXJ0KSB7XG4gICAgICBjb25zb2xlLmxvZyhgc3RhcnRpbmcgYmFja2dyb3VuZCB0YXNrcy4uLmApO1xuICAgICAgYXdhaXQgd29ybGQuc3RhcnQoKS50aGVuKFxuICAgICAgICAoKSA9PiBjb25zb2xlLmxvZygnYmFja2dyb3VuZCB0YXNrcyBzdGFydGVkLicpLFxuICAgICAgICAoZXJyKSA9PiBjb25zb2xlLmVycm9yKCfinZcgZXJyb3Igc3RhcnRpbmcgYmFja2dyb3VuZCB0YXNrczonLCBlcnIpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5DT05UUk9MX0ZEID09PSAnMycpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmcy5jcmVhdGVXcml0ZVN0cmVhbSgnJywgeyBmZDogMyB9KTtcbiAgICAgIGNvbnRyb2wud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkoeyBzdGF0ZTogJ2xpc3RlbmluZycsIGluZm8gfSl9XFxuYCk7XG4gICAgICBjb250cm9sLmVuZCgpO1xuICAgIH1cbiAgfVxuKTtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/world-testing",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.28",
|
|
4
4
|
"description": "Testing utilities and World implementation for Workflow SDK",
|
|
5
5
|
"main": "dist/src/index.mjs",
|
|
6
6
|
"files": [
|
|
@@ -21,10 +21,12 @@
|
|
|
21
21
|
"hono": "4.12.25",
|
|
22
22
|
"jsonlines": "0.1.1",
|
|
23
23
|
"zod": "~4.3.6",
|
|
24
|
-
"@workflow/cli": "5.0.0-beta.
|
|
25
|
-
"@workflow/core": "5.0.0-beta.
|
|
26
|
-
"workflow": "5.0.0-beta.
|
|
27
|
-
"@workflow/world": "5.0.0-beta.
|
|
24
|
+
"@workflow/cli": "5.0.0-beta.28",
|
|
25
|
+
"@workflow/core": "5.0.0-beta.28",
|
|
26
|
+
"@workflow/utils": "5.0.0-beta.6",
|
|
27
|
+
"@workflow/world": "5.0.0-beta.16",
|
|
28
|
+
"@workflow/world-local": "5.0.0-beta.24",
|
|
29
|
+
"workflow": "5.0.0-beta.28"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
30
32
|
"@types/jsonlines": "0.1.5",
|