@workflow/world-testing 4.1.13 → 4.1.15
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.js +1562 -993
- package/dist/.well-known/workflow/v1/manifest.json +80 -18
- package/dist/.well-known/workflow/v1/step.js +1482 -991
- package/dist/src/event-limit.d.mts +2 -0
- package/dist/src/event-limit.d.mts.map +1 -0
- package/dist/src/event-limit.mjs +23 -0
- package/dist/src/util.d.mts +1 -0
- package/dist/src/util.d.mts.map +1 -1
- package/dist/src/util.mjs +40 -3
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-limit.d.mts","sourceRoot":"","sources":["../../src/event-limit.mts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,QAgCvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { expect, test, vi } from 'vitest';
|
|
2
|
+
import { createFetcher, startServer } from './util.mjs';
|
|
3
|
+
export function eventLimit(world) {
|
|
4
|
+
test('fails a runaway run at the server-supplied event limit', { timeout: 59_000 }, async () => {
|
|
5
|
+
// Low ceiling to trip it fast.
|
|
6
|
+
const server = await startServer({
|
|
7
|
+
world,
|
|
8
|
+
env: { WORKFLOW_MAX_EVENTS: '10' },
|
|
9
|
+
}).then(createFetcher);
|
|
10
|
+
const result = await server.invoke('workflows/event-limit.ts', 'runawayWorkflow', []);
|
|
11
|
+
expect(result.runId).toMatch(/^wrun_.+/);
|
|
12
|
+
const run = await vi.waitFor(async () => {
|
|
13
|
+
const run = await server.getRun(result.runId);
|
|
14
|
+
expect(run.status).toBe('failed');
|
|
15
|
+
return run;
|
|
16
|
+
}, {
|
|
17
|
+
interval: 200,
|
|
18
|
+
timeout: 50_000,
|
|
19
|
+
});
|
|
20
|
+
expect(run.error?.code).toBe('MAX_EVENTS_EXCEEDED');
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbGltaXQubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50LWxpbWl0Lm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLElBQUksQ0FDRix3REFBd0QsRUFDeEQsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ25CLEtBQUssSUFBSSxFQUFFO1FBQ1QsK0JBQStCO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDO1lBQy9CLEtBQUs7WUFDTCxHQUFHLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUU7U0FDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2QixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQ2hDLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQzFCLEtBQUssSUFBSSxFQUFFO1lBQ1QsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFDRDtZQUNFLFFBQVEsRUFBRSxHQUFHO1lBQ2IsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FDRixDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCB0ZXN0LCB2aSB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBjcmVhdGVGZXRjaGVyLCBzdGFydFNlcnZlciB9IGZyb20gJy4vdXRpbC5tanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRMaW1pdCh3b3JsZDogc3RyaW5nKSB7XG4gIHRlc3QoXG4gICAgJ2ZhaWxzIGEgcnVuYXdheSBydW4gYXQgdGhlIHNlcnZlci1zdXBwbGllZCBldmVudCBsaW1pdCcsXG4gICAgeyB0aW1lb3V0OiA1OV8wMDAgfSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBMb3cgY2VpbGluZyB0byB0cmlwIGl0IGZhc3QuXG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcih7XG4gICAgICAgIHdvcmxkLFxuICAgICAgICBlbnY6IHsgV09SS0ZMT1dfTUFYX0VWRU5UUzogJzEwJyB9LFxuICAgICAgfSkudGhlbihjcmVhdGVGZXRjaGVyKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VydmVyLmludm9rZShcbiAgICAgICAgJ3dvcmtmbG93cy9ldmVudC1saW1pdC50cycsXG4gICAgICAgICdydW5hd2F5V29ya2Zsb3cnLFxuICAgICAgICBbXVxuICAgICAgKTtcbiAgICAgIGV4cGVjdChyZXN1bHQucnVuSWQpLnRvTWF0Y2goL153cnVuXy4rLyk7XG5cbiAgICAgIGNvbnN0IHJ1biA9IGF3YWl0IHZpLndhaXRGb3IoXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBydW4gPSBhd2FpdCBzZXJ2ZXIuZ2V0UnVuKHJlc3VsdC5ydW5JZCk7XG4gICAgICAgICAgZXhwZWN0KHJ1bi5zdGF0dXMpLnRvQmUoJ2ZhaWxlZCcpO1xuICAgICAgICAgIHJldHVybiBydW47XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpbnRlcnZhbDogMjAwLFxuICAgICAgICAgIHRpbWVvdXQ6IDUwXzAwMCxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGV4cGVjdChydW4uZXJyb3I/LmNvZGUpLnRvQmUoJ01BWF9FVkVOVFNfRVhDRUVERUQnKTtcbiAgICB9XG4gICk7XG59XG4iXX0=
|
package/dist/src/util.d.mts
CHANGED
|
@@ -12,6 +12,7 @@ type Files = keyof typeof manifest.workflows;
|
|
|
12
12
|
type Workflows<F extends Files> = keyof (typeof manifest.workflows)[F];
|
|
13
13
|
export declare function startServer(opts: {
|
|
14
14
|
world: string;
|
|
15
|
+
env?: Record<string, string | undefined>;
|
|
15
16
|
}): Promise<{
|
|
16
17
|
state: "listening";
|
|
17
18
|
info: {
|
package/dist/src/util.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.mts","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.mts","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,0CAA0C,CAAC;AAErE,eAAO,MAAM,OAAO;;;;;iBAKlB,CAAC;AACH,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAEvC,KAAK,KAAK,GAAG,MAAM,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC7C,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,MAAM,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;;;;;GAgFA;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO;WAE7B,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,QAC5C,CAAC,YACG,CAAC,QACL,OAAO,EAAE;;;eAeA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmBD,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;eAcjD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SACrC,MAAM,WACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;EAoB3D"}
|
package/dist/src/util.mjs
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import cp from 'node:child_process';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
2
3
|
import { existsSync } from 'node:fs';
|
|
4
|
+
import { rm } from 'node:fs/promises';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { setTimeout } from 'node:timers/promises';
|
|
3
8
|
import { fileURLToPath } from 'node:url';
|
|
4
9
|
import { WorkflowRunSchema } from '@workflow/world';
|
|
5
10
|
import chalk from 'chalk';
|
|
@@ -17,16 +22,48 @@ export async function startServer(opts) {
|
|
|
17
22
|
if (!existsSync(serverPath)) {
|
|
18
23
|
serverPath = new URL('./server.mjs', import.meta.url);
|
|
19
24
|
}
|
|
25
|
+
// Give each spawned server its own data directory. The Local World's default
|
|
26
|
+
// (untagged) `.workflow-data` dir is otherwise shared by every concurrently
|
|
27
|
+
// running test file's server, and its startup recovery sweep re-enqueues
|
|
28
|
+
// every untagged run it finds — including runs still mid-flight in another
|
|
29
|
+
// test's server — dispatching them against the same on-disk event log and
|
|
30
|
+
// racing the run's actual owner into spurious `ReplayDivergenceError`s.
|
|
31
|
+
const dataDir = join(tmpdir(), `workflow-world-testing-${process.pid}-${randomUUID()}`);
|
|
20
32
|
const proc = cp.spawn('node', [fileURLToPath(serverPath)], {
|
|
21
33
|
stdio: ['ignore', 'pipe', 'pipe', 'pipe'],
|
|
22
34
|
env: {
|
|
23
35
|
...process.env,
|
|
24
36
|
WORKFLOW_TARGET_WORLD: opts.world,
|
|
25
37
|
CONTROL_FD: '3',
|
|
38
|
+
WORKFLOW_LOCAL_DATA_DIR: dataDir,
|
|
39
|
+
...(opts.env ?? {}),
|
|
26
40
|
},
|
|
27
41
|
});
|
|
28
|
-
onTestFinished(() => {
|
|
29
|
-
|
|
42
|
+
onTestFinished(async () => {
|
|
43
|
+
// Wait for the child to actually exit before removing its data directory:
|
|
44
|
+
// `kill()` only requests termination, and on Windows `rm()` fails with
|
|
45
|
+
// EPERM/EBUSY while the server still holds file handles in `dataDir`.
|
|
46
|
+
if (proc.exitCode === null && proc.signalCode === null) {
|
|
47
|
+
const exited = new Promise((resolve) => {
|
|
48
|
+
proc.once('exit', () => resolve());
|
|
49
|
+
});
|
|
50
|
+
proc.kill();
|
|
51
|
+
// Bounded, so a child that refuses to die can't hang test teardown.
|
|
52
|
+
await Promise.race([
|
|
53
|
+
exited,
|
|
54
|
+
setTimeout(5_000, undefined, { ref: false }),
|
|
55
|
+
]);
|
|
56
|
+
}
|
|
57
|
+
// Windows can hold the handles for a moment past exit, hence the retries.
|
|
58
|
+
// A leaked temp dir is not worth failing an otherwise passing test over.
|
|
59
|
+
await rm(dataDir, {
|
|
60
|
+
recursive: true,
|
|
61
|
+
force: true,
|
|
62
|
+
maxRetries: 10,
|
|
63
|
+
retryDelay: 100,
|
|
64
|
+
}).catch((err) => {
|
|
65
|
+
console.warn(`Failed to remove test data dir ${dataDir}:`, err);
|
|
66
|
+
});
|
|
30
67
|
});
|
|
31
68
|
const stdio = [];
|
|
32
69
|
proc.stdout?.on('data', (chunk) => {
|
|
@@ -107,4 +144,4 @@ export function createFetcher(control) {
|
|
|
107
144
|
},
|
|
108
145
|
};
|
|
109
146
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sS0FBNkIsTUFBTSxPQUFPLENBQUM7QUFDbEQsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUd6QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDYixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtLQUNqQixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBTUgsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBdUI7SUFDdkQsSUFBSSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzVCLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFD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QyxXQUFXLENBQ2hGLENBQUM7WUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0NBQWtDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUM3RCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELEtBQUssQ0FBQyxVQUFVLENBQ2QsS0FBYSxFQUNiLE9BQXNEO1lBRXRELE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUNyQixvQkFBb0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQ3REO2dCQUNFLE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2lCQUNuQztnQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7YUFDOUIsQ0FDRixDQUFDO1lBQ0YsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztZQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsMEJBQTBCLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUN6RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcCBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IFdvcmtmbG93UnVuU2NoZW1hIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsaywgeyB0eXBlIENoYWxrSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQganNvbmxpbmVzIGZyb20gJ2pzb25saW5lcyc7XG5pbXBvcnQgeyBhc3NlcnQsIG9uVGVzdEZhaWxlZCwgb25UZXN0RmluaXNoZWQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHR5cGUgeyBUeXBlZEhvb2sgfSBmcm9tICd3b3JrZmxvdyc7XG5pbXBvcnQgKiBhcyB6IGZyb20gJ3pvZCc7XG5pbXBvcnQgdHlwZSBtYW5pZmVzdCBmcm9tICcuLi8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJztcblxuZXhwb3J0IGNvbnN0IENvbnRyb2wgPSB6Lm9iamVjdCh7XG4gIHN0YXRlOiB6LmxpdGVyYWwoJ2xpc3RlbmluZycpLFxuICBpbmZvOiB6Lm9iamVjdCh7XG4gICAgcG9ydDogei5udW1iZXIoKSxcbiAgfSksXG59KTtcbnR5cGUgQ29udHJvbCA9IHouaW5mZXI8dHlwZW9mIENvbnRyb2w+O1xuXG50eXBlIEZpbGVzID0ga2V5b2YgdHlwZW9mIG1hbmlmZXN0LndvcmtmbG93cztcbnR5cGUgV29ya2Zsb3dzPEYgZXh0ZW5kcyBGaWxlcz4gPSBrZXlvZiAodHlwZW9mIG1hbmlmZXN0LndvcmtmbG93cylbRl07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlcihvcHRzOiB7IHdvcmxkOiBzdHJpbmcgfSkge1xuICBsZXQgc2VydmVyUGF0aCA9IG5ldyBVUkwoJy4vc2VydmVyLm10cycsIGltcG9ydC5tZXRhLnVybCk7XG5cbiAgaWYgKCFleGlzdHNTeW5jKHNlcnZlclBhdGgpKSB7XG4gICAgc2VydmVyUGF0aCA9IG5ldyBVUkwoJy4vc2VydmVyLm1qcycsIGltcG9ydC5tZXRhLnVybCk7XG4gIH1cblxuICBjb25zdCBwcm9jID0gY3Auc3Bhd24oJ25vZGUnLCBbZmlsZVVSTFRvUGF0aChzZXJ2ZXJQYXRoKV0sIHtcbiAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICBlbnY6IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgV09SS0ZMT1dfVEFSR0VUX1dPUkxEOiBvcHRzLndvcmxkLFxuICAgICAgQ09OVFJPTF9GRDogJzMnLFxuICAgIH0sXG4gIH0pO1xuICBvblRlc3RGaW5pc2hlZCgoKSA9PiB7XG4gICAgcHJvYy5raWxsKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHN0ZGlvID0gW10gYXMgeyBzdHJlYW06IENoYWxrSW5zdGFuY2U7IGNodW5rOiBzdHJpbmcgfVtdO1xuICBwcm9jLnN0ZG91dD8ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICBzdGRpby5wdXNoKHsgc3RyZWFtOiBjaGFsay53aGl0ZSwgY2h1bms6IGNodW5rLnRvU3RyaW5nKCkgfSk7XG4gIH0pO1xuICBwcm9jLnN0ZGVycj8ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICBzdGRpby5wdXNoKHsgc3RyZWFtOiBjaGFsay5yZWQsIGNodW5rOiBjaHVuay50b1N0cmluZygpIH0pO1xuICB9KTtcblxuICBvblRlc3RGYWlsZWQoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCc9PT0gU0VSVkVSIFNURElPID09PScpO1xuICAgIGxldCBidWZmZXIgPSAnJztcbiAgICBmb3IgKGNvbnN0IHsgc3RyZWFtLCBjaHVuayB9IG9mIHN0ZGlvKSB7XG4gICAgICBidWZmZXIgKz0gc3RyZWFtLmludmVyc2UoY2h1bmspO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhidWZmZXIpO1xuICB9KTtcblxuICBjb25zdCBmZDMgPSBwcm9jLnN0ZGlvWzNdO1xuICBhc3NlcnQoZmQzLCAnZmQzIHNob3VsZCBiZSBkZWZpbmVkJyk7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBmZDMucGlwZShqc29ubGluZXMucGFyc2UoKSkpIHtcbiAgICByZXR1cm4gQ29udHJvbC5wYXJzZShjaHVuayk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1NlcnZlciBkaWQgbm90IHN0YXJ0IGNvcnJlY3RseScpO1xufVxuXG5jb25zdCBJbnZva2UgPSB6Lm9iamVjdCh7IHJ1bklkOiB6LmNvZXJjZS5zdHJpbmcoKSB9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZldGNoZXIoY29udHJvbDogQ29udHJvbCkge1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGludm9rZTxGIGV4dGVuZHMgRmlsZXMsIFcgZXh0ZW5kcyBXb3JrZmxvd3M8Rj4+KFxuICAgICAgZmlsZTogRixcbiAgICAgIHdvcmtmbG93OiBXLFxuICAgICAgYXJnczogdW5rbm93bltdXG4gICAgKSB7XG4gICAgICBjb25zdCB4ID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vaW52b2tlYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZmlsZSwgd29ya2Zsb3csIGFyZ3MgfSksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB4Lmpzb24oKS50aGVuKEludm9rZS5wYXJzZSk7XG4gICAgICBvblRlc3RGYWlsZWQoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdXb3JrZmxvdyBydW46JywgZGF0YS5ydW5JZCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgZ2V0UnVuKGlkOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vcnVucy8ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCB4LnRleHQoKTtcbiAgICAgIC8vIEN1c3RvbSBKU09OIHJldml2ZXIgdG8gZGVjb2RlIGJhc2U2NCBiYWNrIHRvIFVpbnQ4QXJyYXlcbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHRleHQsIChfa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgKHZhbHVlIGFzIGFueSkuX190eXBlID09PSAnVWludDhBcnJheScgJiZcbiAgICAgICAgICB0eXBlb2YgKHZhbHVlIGFzIGFueSkuZGF0YSA9PT0gJ3N0cmluZydcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKCh2YWx1ZSBhcyBhbnkpLmRhdGEsICdiYXNlNjQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gV29ya2Zsb3dSdW5TY2hlbWEucGFyc2VBc3luYyhkYXRhKTtcbiAgICB9LFxuICAgIGFzeW5jIGdldFJlYWRhYmxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+PiB7XG4gICAgICBjb25zdCB4ID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGBodHRwOi8vbG9jYWxob3N0OiR7Y29udHJvbC5pbmZvLnBvcnR9L3J1bnMvJHtlbmNvZGVVUklDb21wb25lbnQoaWQpfS9yZWFkYWJsZWBcbiAgICAgICk7XG4gICAgICBpZiAoIXgub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gZ2V0IHJlYWRhYmxlIHN0cmVhbTogJHt4LnN0YXR1c30gJHt4LnN0YXR1c1RleHR9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCF4LmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBib2R5IGluIHJlc3BvbnNlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4geC5ib2R5O1xuICAgIH0sXG4gICAgYXN5bmMgcmVzdW1lSG9vazxUIGV4dGVuZHMgVHlwZWRIb29rPGFueSwgYW55Pj4oXG4gICAgICB0b2tlbjogc3RyaW5nLFxuICAgICAgcGF5bG9hZDogT21pdDxOb0luZmVyPFR5cGVkSG9vay5JbnB1dDxUPj4sICdtZXRhZGF0YSc+XG4gICAgKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vaG9va3MvJHt0b2tlbn1gLFxuICAgICAgICB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmVzLmFycmF5QnVmZmVyKCkuY2F0Y2goKCkgPT4ge30pOyAvLyBEcmFpbiB0aGUgYm9keSB0byBhdm9pZCByZXNvdXJjZSBsZWFrc1xuICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gcmVzdW1lIGhvb2s6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxLQUE2QixNQUFNLE9BQU8sQ0FBQztBQUNsRCxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlELE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBR3pCLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlCLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM3QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNiLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0tBQ2pCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFNSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUdqQztJQUNDLElBQUksVUFBVSxHQUFHLElBQUksR0FBRyxDQUFD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QUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsMEJBQTBCLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUN6RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcCBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHJtIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgc2V0VGltZW91dCB9IGZyb20gJ25vZGU6dGltZXJzL3Byb21pc2VzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1blNjaGVtYSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgY2hhbGssIHsgdHlwZSBDaGFsa0luc3RhbmNlIH0gZnJvbSAnY2hhbGsnO1xuaW1wb3J0IGpzb25saW5lcyBmcm9tICdqc29ubGluZXMnO1xuaW1wb3J0IHsgYXNzZXJ0LCBvblRlc3RGYWlsZWQsIG9uVGVzdEZpbmlzaGVkIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB0eXBlIHsgVHlwZWRIb29rIH0gZnJvbSAnd29ya2Zsb3cnO1xuaW1wb3J0ICogYXMgeiBmcm9tICd6b2QnO1xuaW1wb3J0IHR5cGUgbWFuaWZlc3QgZnJvbSAnLi4vLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbic7XG5cbmV4cG9ydCBjb25zdCBDb250cm9sID0gei5vYmplY3Qoe1xuICBzdGF0ZTogei5saXRlcmFsKCdsaXN0ZW5pbmcnKSxcbiAgaW5mbzogei5vYmplY3Qoe1xuICAgIHBvcnQ6IHoubnVtYmVyKCksXG4gIH0pLFxufSk7XG50eXBlIENvbnRyb2wgPSB6LmluZmVyPHR5cGVvZiBDb250cm9sPjtcblxudHlwZSBGaWxlcyA9IGtleW9mIHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3M7XG50eXBlIFdvcmtmbG93czxGIGV4dGVuZHMgRmlsZXM+ID0ga2V5b2YgKHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3MpW0ZdO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIob3B0czoge1xuICB3b3JsZDogc3RyaW5nO1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkge1xuICBsZXQgc2VydmVyUGF0aCA9IG5ldyBVUkwoJy4vc2VydmVyLm10cycsIGltcG9ydC5tZXRhLnVybCk7XG5cbiAgaWYgKCFleGlzdHNTeW5jKHNlcnZlclBhdGgpKSB7XG4gICAgc2VydmVyUGF0aCA9IG5ldyBVUkwoJy4vc2VydmVyLm1qcycsIGltcG9ydC5tZXRhLnVybCk7XG4gIH1cblxuICAvLyBHaXZlIGVhY2ggc3Bhd25lZCBzZXJ2ZXIgaXRzIG93biBkYXRhIGRpcmVjdG9yeS4gVGhlIExvY2FsIFdvcmxkJ3MgZGVmYXVsdFxuICAvLyAodW50YWdnZWQpIGAud29ya2Zsb3ctZGF0YWAgZGlyIGlzIG90aGVyd2lzZSBzaGFyZWQgYnkgZXZlcnkgY29uY3VycmVudGx5XG4gIC8vIHJ1bm5pbmcgdGVzdCBmaWxlJ3Mgc2VydmVyLCBhbmQgaXRzIHN0YXJ0dXAgcmVjb3Zlcnkgc3dlZXAgcmUtZW5xdWV1ZXNcbiAgLy8gZXZlcnkgdW50YWdnZWQgcnVuIGl0IGZpbmRzIOKAlCBpbmNsdWRpbmcgcnVucyBzdGlsbCBtaWQtZmxpZ2h0IGluIGFub3RoZXJcbiAgLy8gdGVzdCdzIHNlcnZlciDigJQgZGlzcGF0Y2hpbmcgdGhlbSBhZ2FpbnN0IHRoZSBzYW1lIG9uLWRpc2sgZXZlbnQgbG9nIGFuZFxuICAvLyByYWNpbmcgdGhlIHJ1bidzIGFjdHVhbCBvd25lciBpbnRvIHNwdXJpb3VzIGBSZXBsYXlEaXZlcmdlbmNlRXJyb3Jgcy5cbiAgY29uc3QgZGF0YURpciA9IGpvaW4oXG4gICAgdG1wZGlyKCksXG4gICAgYHdvcmtmbG93LXdvcmxkLXRlc3RpbmctJHtwcm9jZXNzLnBpZH0tJHtyYW5kb21VVUlEKCl9YFxuICApO1xuXG4gIGNvbnN0IHByb2MgPSBjcC5zcGF3bignbm9kZScsIFtmaWxlVVJMVG9QYXRoKHNlcnZlclBhdGgpXSwge1xuICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgIGVudjoge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICBXT1JLRkxPV19UQVJHRVRfV09STEQ6IG9wdHMud29ybGQsXG4gICAgICBDT05UUk9MX0ZEOiAnMycsXG4gICAgICBXT1JLRkxPV19MT0NBTF9EQVRBX0RJUjogZGF0YURpcixcbiAgICAgIC4uLihvcHRzLmVudiA/PyB7fSksXG4gICAgfSxcbiAgfSk7XG4gIG9uVGVzdEZpbmlzaGVkKGFzeW5jICgpID0+IHtcbiAgICAvLyBXYWl0IGZvciB0aGUgY2hpbGQgdG8gYWN0dWFsbHkgZXhpdCBiZWZvcmUgcmVtb3ZpbmcgaXRzIGRhdGEgZGlyZWN0b3J5OlxuICAgIC8vIGBraWxsKClgIG9ubHkgcmVxdWVzdHMgdGVybWluYXRpb24sIGFuZCBvbiBXaW5kb3dzIGBybSgpYCBmYWlscyB3aXRoXG4gICAgLy8gRVBFUk0vRUJVU1kgd2hpbGUgdGhlIHNlcnZlciBzdGlsbCBob2xkcyBmaWxlIGhhbmRsZXMgaW4gYGRhdGFEaXJgLlxuICAgIGlmIChwcm9jLmV4aXRDb2RlID09PSBudWxsICYmIHByb2Muc2lnbmFsQ29kZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhpdGVkID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgcHJvYy5vbmNlKCdleGl0JywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIH0pO1xuICAgICAgcHJvYy5raWxsKCk7XG4gICAgICAvLyBCb3VuZGVkLCBzbyBhIGNoaWxkIHRoYXQgcmVmdXNlcyB0byBkaWUgY2FuJ3QgaGFuZyB0ZXN0IHRlYXJkb3duLlxuICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZXhpdGVkLFxuICAgICAgICBzZXRUaW1lb3V0KDVfMDAwLCB1bmRlZmluZWQsIHsgcmVmOiBmYWxzZSB9KSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICAvLyBXaW5kb3dzIGNhbiBob2xkIHRoZSBoYW5kbGVzIGZvciBhIG1vbWVudCBwYXN0IGV4aXQsIGhlbmNlIHRoZSByZXRyaWVzLlxuICAgIC8vIEEgbGVha2VkIHRlbXAgZGlyIGlzIG5vdCB3b3J0aCBmYWlsaW5nIGFuIG90aGVyd2lzZSBwYXNzaW5nIHRlc3Qgb3Zlci5cbiAgICBhd2FpdCBybShkYXRhRGlyLCB7XG4gICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIG1heFJldHJpZXM6IDEwLFxuICAgICAgcmV0cnlEZWxheTogMTAwLFxuICAgIH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIHJlbW92ZSB0ZXN0IGRhdGEgZGlyICR7ZGF0YURpcn06YCwgZXJyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3Qgc3RkaW8gPSBbXSBhcyB7IHN0cmVhbTogQ2hhbGtJbnN0YW5jZTsgY2h1bms6IHN0cmluZyB9W107XG4gIHByb2Muc3Rkb3V0Py5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgIHN0ZGlvLnB1c2goeyBzdHJlYW06IGNoYWxrLndoaXRlLCBjaHVuazogY2h1bmsudG9TdHJpbmcoKSB9KTtcbiAgfSk7XG4gIHByb2Muc3RkZXJyPy5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgIHN0ZGlvLnB1c2goeyBzdHJlYW06IGNoYWxrLnJlZCwgY2h1bms6IGNodW5rLnRvU3RyaW5nKCkgfSk7XG4gIH0pO1xuXG4gIG9uVGVzdEZhaWxlZCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJz09PSBTRVJWRVIgU1RESU8gPT09Jyk7XG4gICAgbGV0IGJ1ZmZlciA9ICcnO1xuICAgIGZvciAoY29uc3QgeyBzdHJlYW0sIGNodW5rIH0gb2Ygc3RkaW8pIHtcbiAgICAgIGJ1ZmZlciArPSBzdHJlYW0uaW52ZXJzZShjaHVuayk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGJ1ZmZlcik7XG4gIH0pO1xuXG4gIGNvbnN0IGZkMyA9IHByb2Muc3RkaW9bM107XG4gIGFzc2VydChmZDMsICdmZDMgc2hvdWxkIGJlIGRlZmluZWQnKTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGZkMy5waXBlKGpzb25saW5lcy5wYXJzZSgpKSkge1xuICAgIHJldHVybiBDb250cm9sLnBhcnNlKGNodW5rKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignU2VydmVyIGRpZCBub3Qgc3RhcnQgY29ycmVjdGx5Jyk7XG59XG5cbmNvbnN0IEludm9rZSA9IHoub2JqZWN0KHsgcnVuSWQ6IHouY29lcmNlLnN0cmluZygpIH0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmV0Y2hlcihjb250cm9sOiBDb250cm9sKSB7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgaW52b2tlPEYgZXh0ZW5kcyBGaWxlcywgVyBleHRlbmRzIFdvcmtmbG93czxGPj4oXG4gICAgICBmaWxlOiBGLFxuICAgICAgd29ya2Zsb3c6IFcsXG4gICAgICBhcmdzOiB1bmtub3duW11cbiAgICApIHtcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBmZXRjaChgaHR0cDovL2xvY2FsaG9zdDoke2NvbnRyb2wuaW5mby5wb3J0fS9pbnZva2VgLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBmaWxlLCB3b3JrZmxvdywgYXJncyB9KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHguanNvbigpLnRoZW4oSW52b2tlLnBhcnNlKTtcbiAgICAgIG9uVGVzdEZhaWxlZCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dvcmtmbG93IHJ1bjonLCBkYXRhLnJ1bklkKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcbiAgICBhc3luYyBnZXRSdW4oaWQ6IHN0cmluZykge1xuICAgICAgY29uc3QgeCA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgaHR0cDovL2xvY2FsaG9zdDoke2NvbnRyb2wuaW5mby5wb3J0fS9ydW5zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gXG4gICAgICApO1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHgudGV4dCgpO1xuICAgICAgLy8gQ3VzdG9tIEpTT04gcmV2aXZlciB0byBkZWNvZGUgYmFzZTY0IGJhY2sgdG8gVWludDhBcnJheVxuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodGV4dCwgKF9rZXksIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAodmFsdWUgYXMgYW55KS5fX3R5cGUgPT09ICdVaW50OEFycmF5JyAmJlxuICAgICAgICAgIHR5cGVvZiAodmFsdWUgYXMgYW55KS5kYXRhID09PSAnc3RyaW5nJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oKHZhbHVlIGFzIGFueSkuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBXb3JrZmxvd1J1blNjaGVtYS5wYXJzZUFzeW5jKGRhdGEpO1xuICAgIH0sXG4gICAgYXN5bmMgZ2V0UmVhZGFibGUoaWQ6IHN0cmluZyk6IFByb21pc2U8UmVhZGFibGVTdHJlYW08VWludDhBcnJheT4+IHtcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vcnVucy8ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9L3JlYWRhYmxlYFxuICAgICAgKTtcbiAgICAgIGlmICgheC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBnZXQgcmVhZGFibGUgc3RyZWFtOiAke3guc3RhdHVzfSAke3guc3RhdHVzVGV4dH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIXguYm9keSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJvZHkgaW4gcmVzcG9uc2UnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4LmJvZHk7XG4gICAgfSxcbiAgICBhc3luYyByZXN1bWVIb29rPFQgZXh0ZW5kcyBUeXBlZEhvb2s8YW55LCBhbnk+PihcbiAgICAgIHRva2VuOiBzdHJpbmcsXG4gICAgICBwYXlsb2FkOiBPbWl0PE5vSW5mZXI8VHlwZWRIb29rLklucHV0PFQ+PiwgJ21ldGFkYXRhJz5cbiAgICApIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgaHR0cDovL2xvY2FsaG9zdDoke2NvbnRyb2wuaW5mby5wb3J0fS9ob29rcy8ke3Rva2VufWAsXG4gICAgICAgIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXMuYXJyYXlCdWZmZXIoKS5jYXRjaCgoKSA9PiB7fSk7IC8vIERyYWluIHRoZSBib2R5IHRvIGF2b2lkIHJlc291cmNlIGxlYWtzXG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byByZXN1bWUgaG9vazogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/world-testing",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.15",
|
|
4
4
|
"description": "Testing utilities and World implementation for Workflow SDK",
|
|
5
5
|
"main": "dist/src/index.mjs",
|
|
6
6
|
"files": [
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"hono": "4.12.25",
|
|
22
22
|
"jsonlines": "0.1.1",
|
|
23
23
|
"zod": "~4.3.6",
|
|
24
|
-
"@workflow/cli": "4.3.
|
|
25
|
-
"@workflow/core": "4.
|
|
26
|
-
"workflow": "4.
|
|
27
|
-
"@workflow/world": "4.
|
|
24
|
+
"@workflow/cli": "4.3.4",
|
|
25
|
+
"@workflow/core": "4.8.0",
|
|
26
|
+
"workflow": "4.8.0",
|
|
27
|
+
"@workflow/world": "4.3.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "22.19.0",
|