@workflow/world-local 5.0.0-beta.2 → 5.0.0-beta.20
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/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/fs.d.ts +64 -5
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +148 -19
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -9
- package/dist/init.js +1 -1
- package/dist/instrumentObject.d.ts.map +1 -1
- package/dist/instrumentObject.js +69 -3
- package/dist/queue.d.ts +2 -2
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +64 -12
- package/dist/storage/events-storage.d.ts.map +1 -1
- package/dist/storage/events-storage.js +1393 -601
- package/dist/storage/filters.js +1 -1
- package/dist/storage/helpers.d.ts +13 -0
- package/dist/storage/helpers.d.ts.map +1 -1
- package/dist/storage/helpers.js +23 -1
- package/dist/storage/hooks-storage.d.ts.map +1 -1
- package/dist/storage/hooks-storage.js +11 -4
- package/dist/storage/index.d.ts +10 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +9 -11
- package/dist/storage/legacy.d.ts.map +1 -1
- package/dist/storage/legacy.js +10 -5
- package/dist/storage/runs-storage.d.ts +29 -3
- package/dist/storage/runs-storage.d.ts.map +1 -1
- package/dist/storage/runs-storage.js +76 -4
- package/dist/storage/steps-storage.d.ts.map +1 -1
- package/dist/storage/steps-storage.js +5 -2
- package/dist/storage.js +1 -1
- package/dist/streamer.d.ts.map +1 -1
- package/dist/streamer.js +45 -32
- package/dist/telemetry.d.ts +8 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +5 -1
- package/dist/test-helpers.d.ts +1 -0
- package/dist/test-helpers.d.ts.map +1 -1
- package/dist/test-helpers.js +1 -1
- package/dist/util.js +1 -1
- package/package.json +6 -6
- package/dist/config.js.map +0 -1
- package/dist/fs.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/instrumentObject.js.map +0 -1
- package/dist/queue.js.map +0 -1
- package/dist/storage/events-storage.js.map +0 -1
- package/dist/storage/filters.js.map +0 -1
- package/dist/storage/helpers.js.map +0 -1
- package/dist/storage/hooks-storage.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/legacy.js.map +0 -1
- package/dist/storage/runs-storage.js.map +0 -1
- package/dist/storage/steps-storage.js.map +0 -1
- package/dist/storage.js.map +0 -1
- package/dist/streamer.js.map +0 -1
- package/dist/telemetry.js.map +0 -1
- package/dist/test-helpers.js.map +0 -1
- package/dist/util.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -3,11 +3,11 @@ import { rm } from 'node:fs/promises';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { reenqueueActiveRuns, SPEC_VERSION_CURRENT } from '@workflow/world';
|
|
5
5
|
import { config } from './config.js';
|
|
6
|
-
import { clearCreatedFilesCache, deleteJSON, listTaggedFiles, listTaggedFilesByExtension, readJSON, } from './fs.js';
|
|
6
|
+
import { clearCreatedFilesCache, deleteJSON, hasTag, listTaggedFiles, listTaggedFilesByExtension, readJSON, } from './fs.js';
|
|
7
7
|
import { initDataDir } from './init.js';
|
|
8
8
|
import { instrumentObject } from './instrumentObject.js';
|
|
9
9
|
import { createQueue } from './queue.js';
|
|
10
|
-
import { hashToken } from './storage/helpers.js';
|
|
10
|
+
import { hashToken, hookRecoveryMarkerPath } from './storage/helpers.js';
|
|
11
11
|
import { createStorage } from './storage.js';
|
|
12
12
|
import { createStreamer } from './streamer.js';
|
|
13
13
|
// Re-export init types and utilities for consumers
|
|
@@ -19,6 +19,7 @@ export { DataDirAccessError, DataDirVersionError, ensureDataDir, initDataDir, pa
|
|
|
19
19
|
* @param args.dataDir - Directory for storing workflow data (default: `.workflow-data/`)
|
|
20
20
|
* @param args.port - Port override for queue transport (default: auto-detected)
|
|
21
21
|
* @param args.baseUrl - Full base URL override for queue transport (default: `http://localhost:{port}`)
|
|
22
|
+
* @param args.recoverActiveRuns - Whether `start()` should re-enqueue pending/running runs from storage (default: `true`)
|
|
22
23
|
* @param args.tag - Optional tag to scope files (e.g., `vitest-0`). When set, files are written
|
|
23
24
|
* as `{id}.{tag}.json` and `clear()` only deletes files matching this tag.
|
|
24
25
|
* @throws {DataDirAccessError} If the data directory cannot be created or accessed
|
|
@@ -32,10 +33,11 @@ export function createLocalWorld(args) {
|
|
|
32
33
|
const tag = mergedConfig.tag;
|
|
33
34
|
const queue = createQueue(mergedConfig);
|
|
34
35
|
const storage = createStorage(mergedConfig.dataDir, tag);
|
|
36
|
+
const recoverActiveRuns = mergedConfig.recoverActiveRuns ?? true;
|
|
35
37
|
return {
|
|
36
38
|
specVersion: SPEC_VERSION_CURRENT,
|
|
37
39
|
...queue,
|
|
38
|
-
...
|
|
40
|
+
...storage,
|
|
39
41
|
...instrumentObject('world.streams', {
|
|
40
42
|
...createStreamer(mergedConfig.dataDir, tag),
|
|
41
43
|
...(mergedConfig.streamFlushIntervalMs !== undefined && {
|
|
@@ -44,7 +46,19 @@ export function createLocalWorld(args) {
|
|
|
44
46
|
}),
|
|
45
47
|
async start() {
|
|
46
48
|
await initDataDir(mergedConfig.dataDir);
|
|
47
|
-
|
|
49
|
+
if (!recoverActiveRuns) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const recoveryRuns = tag
|
|
53
|
+
? {
|
|
54
|
+
...storage.runs,
|
|
55
|
+
list: ((params) => storage.runs.list({
|
|
56
|
+
...params,
|
|
57
|
+
fileIdFilter: (fileId) => hasTag(fileId, tag),
|
|
58
|
+
})),
|
|
59
|
+
}
|
|
60
|
+
: storage.runs;
|
|
61
|
+
await reenqueueActiveRuns(recoveryRuns, queue.queue, 'world-local');
|
|
48
62
|
},
|
|
49
63
|
async close() {
|
|
50
64
|
await queue.close();
|
|
@@ -53,10 +67,12 @@ export function createLocalWorld(args) {
|
|
|
53
67
|
if (tag) {
|
|
54
68
|
// Selectively delete only files matching this tag
|
|
55
69
|
const basedir = mergedConfig.dataDir;
|
|
56
|
-
// Delete hook token constraint files
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
//
|
|
70
|
+
// Delete hook token constraint files (and recovery markers,
|
|
71
|
+
// for disk hygiene) BEFORE deleting the hooks, since we need
|
|
72
|
+
// to read each hook to extract its token hash. Constraint
|
|
73
|
+
// files and markers are untagged (`{sha256}.json` and
|
|
74
|
+
// `{sha256}.recovery.json`) so listTaggedFiles won't find
|
|
75
|
+
// them — we must resolve them via the hook data.
|
|
60
76
|
const hooksDir = path.join(basedir, 'hooks');
|
|
61
77
|
const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
|
|
62
78
|
const { HookSchema } = await import('@workflow/world');
|
|
@@ -64,6 +80,7 @@ export function createLocalWorld(args) {
|
|
|
64
80
|
const hook = await readJSON(path.join(hooksDir, hookFile), HookSchema);
|
|
65
81
|
if (hook?.token) {
|
|
66
82
|
await deleteJSON(path.join(hooksDir, 'tokens', `${hashToken(hook.token)}.json`));
|
|
83
|
+
await deleteJSON(hookRecoveryMarkerPath(basedir, hook.token, hook.runId, hook.hookId));
|
|
67
84
|
}
|
|
68
85
|
}));
|
|
69
86
|
// Delete tagged entity files across all directories
|
|
@@ -98,4 +115,4 @@ export function createLocalWorld(args) {
|
|
|
98
115
|
},
|
|
99
116
|
};
|
|
100
117
|
}
|
|
101
|
-
//# sourceMappingURL=index.js.map
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLE1BQU0sRUFDTixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLFFBQVEsR0FDVCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQXNCLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsbURBQW1EO0FBQ25ELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEVBRVgsWUFBWSxHQUNiLE1BQU0sV0FBVyxDQUFDO0FBV25COzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFzQjtJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJO1FBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUNo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QUUsSUFBSSxFQUFFLENBQUM7cUJBQ2xFLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsaURBQWlEO2dCQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzFELE1BQU0sY0FBYyxHQUFHLE1BQU0sMEJBQTBCLENBQ3JELFNBQVMsRUFDVCxHQUFHLEVBQ0gsTUFBTSxDQUNQLENBQUM7Z0JBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUNuRCxDQUNGLENBQUM7Z0JBQ0YsaUVBQWlFO2dCQUNqRSxzQkFBc0IsRUFBRSxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDakUsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgcm0gfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IFF1ZXVlUHJlZml4LCBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyByZWVucXVldWVBY3RpdmVSdW5zLCBTUEVDX1ZFUlNJT05fQ1VSUkVOVCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gJy4vY29uZmlnLmpzJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIGNsZWFyQ3JlYXRlZEZpbGVzQ2FjaGUsXG4gIGRlbGV0ZUpTT04sXG4gIGhhc1RhZyxcbiAgbGlzdFRhZ2dlZEZpbGVzLFxuICBsaXN0VGFnZ2VkRmlsZXNCeUV4dGVuc2lvbixcbiAgcmVhZEpTT04sXG59IGZyb20gJy4vZnMuanMnO1xuaW1wb3J0IHsgaW5pdERhdGFEaXIgfSBmcm9tICcuL2luaXQuanMnO1xuaW1wb3J0IHsgaW5zdHJ1bWVudE9iamVjdCB9IGZyb20gJy4vaW5zdHJ1bWVudE9iamVjdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVRdWV1ZSwgdHlwZSBEaXJlY3RIYW5kbGVyIH0gZnJvbSAnLi9xdWV1ZS5qcyc7XG5pbXBvcnQgeyBoYXNoVG9rZW4sIGhvb2tSZWNvdmVyeU1hcmtlclBhdGggfSBmcm9tICcuL3N0b3JhZ2UvaGVscGVycy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlLmpzJztcbmltcG9ydCB7IGNyZWF0ZVN0cmVhbWVyIH0gZnJvbSAnLi9zdHJlYW1lci5qcyc7XG5cbi8vIFJlLWV4cG9ydCBpbml0IHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIGNvbnN1bWVyc1xuZXhwb3J0IHtcbiAgRGF0YURpckFjY2Vzc0Vycm9yLFxuICBEYXRhRGlyVmVyc2lvbkVycm9yLFxuICBlbnN1cmVEYXRhRGlyLFxuICBpbml0RGF0YURpcixcbiAgdHlwZSBQYXJzZWRWZXJzaW9uLFxuICBwYXJzZVZlcnNpb24sXG59IGZyb20gJy4vaW5pdC5qcyc7XG5cbmV4cG9ydCB0eXBlIHsgRGlyZWN0SGFuZGxlciB9IGZyb20gJy4vcXVldWUuanMnO1xuXG5leHBvcnQgdHlwZSBMb2NhbFdvcmxkID0gV29ybGQgJiB7XG4gIC8qKiBSZWdpc3RlciBhIGRpcmVjdCBpbi1wcm9jZXNzIGhhbmRsZXIgZm9yIGEgcXVldWUgcHJlZml4LCBieXBhc3NpbmcgSFRUUC4gKi9cbiAgcmVnaXN0ZXJIYW5kbGVyKHByZWZpeDogUXVldWVQcmVmaXgsIGhhbmRsZXI6IERpcmVjdEhhbmRsZXIpOiB2b2lkO1xuICAvKiogQ2xlYXIgYWxsIHdvcmtmbG93IGRhdGEgKHJ1bnMsIHN0ZXBzLCBldmVudHMsIGhvb2tzLCBzdHJlYW1zKS4gKi9cbiAgY2xlYXIoKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGxvY2FsIHdvcmxkIGluc3RhbmNlIHRoYXQgY29tYmluZXMgcXVldWUsIHN0b3JhZ2UsIGFuZCBzdHJlYW1lciBmdW5jdGlvbmFsaXRpZXMuXG4gKlxuICogQHBhcmFtIGFyZ3MgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdFxuICogQHBhcmFtIGFyZ3MuZGF0YURpciAtIERpcmVjdG9yeSBmb3Igc3RvcmluZyB3b3JrZmxvdyBkYXRhIChkZWZhdWx0OiBgLndvcmtmbG93LWRhdGEvYClcbiAqIEBwYXJhbSBhcmdzLnBvcnQgLSBQb3J0IG92ZXJyaWRlIGZvciBxdWV1ZSB0cmFuc3BvcnQgKGRlZmF1bHQ6IGF1dG8tZGV0ZWN0ZWQpXG4gKiBAcGFyYW0gYXJncy5iYXNlVXJsIC0gRnVsbCBiYXNlIFVSTCBvdmVycmlkZSBmb3IgcXVldWUgdHJhbnNwb3J0IChkZWZhdWx0OiBgaHR0cDovL2xvY2FsaG9zdDp7cG9ydH1gKVxuICogQHBhcmFtIGFyZ3MucmVjb3ZlckFjdGl2ZVJ1bnMgLSBXaGV0aGVyIGBzdGFydCgpYCBzaG91bGQgcmUtZW5xdWV1ZSBwZW5kaW5nL3J1bm5pbmcgcnVucyBmcm9tIHN0b3JhZ2UgKGRlZmF1bHQ6IGB0cnVlYClcbiAqIEBwYXJhbSBhcmdzLnRhZyAtIE9wdGlvbmFsIHRhZyB0byBzY29wZSBmaWxlcyAoZS5nLiwgYHZpdGVzdC0wYCkuIFdoZW4gc2V0LCBmaWxlcyBhcmUgd3JpdHRlblxuICogICBhcyBge2lkfS57dGFnfS5qc29uYCBhbmQgYGNsZWFyKClgIG9ubHkgZGVsZXRlcyBmaWxlcyBtYXRjaGluZyB0aGlzIHRhZy5cbiAqIEB0aHJvd3Mge0RhdGFEaXJBY2Nlc3NFcnJvcn0gSWYgdGhlIGRhdGEgZGlyZWN0b3J5IGNhbm5vdCBiZSBjcmVhdGVkIG9yIGFjY2Vzc2VkXG4gKiBAdGhyb3dzIHtEYXRhRGlyVmVyc2lvbkVycm9yfSBJZiB0aGUgZGF0YSBkaXJlY3RvcnkgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvY2FsV29ybGQoYXJncz86IFBhcnRpYWw8Q29uZmlnPik6IExvY2FsV29ybGQge1xuICBjb25zdCBkZWZpbmVkQXJncyA9IGFyZ3NcbiAgICA/IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoYXJncykuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICApXG4gICAgOiB7fTtcbiAgY29uc3QgbWVyZ2VkQ29uZmlnID0geyAuLi5jb25maWcudmFsdWUsIC4uLmRlZmluZWRBcmdzIH07XG4gIGNvbnN0IHRhZyA9IG1lcmdlZENvbmZpZy50YWc7XG4gIGNvbnN0IHF1ZXVlID0gY3JlYXRlUXVldWUobWVyZ2VkQ29uZmlnKTtcbiAgY29uc3Qgc3RvcmFnZSA9IGNyZWF0ZVN0b3JhZ2UobWVyZ2VkQ29uZmlnLmRhdGFEaXIsIHRhZyk7XG4gIGNvbnN0IHJlY292ZXJBY3RpdmVSdW5zID0gbWVyZ2VkQ29uZmlnLnJlY292ZXJBY3RpdmVSdW5zID8/IHRydWU7XG4gIHJldHVybiB7XG4gICAgc3BlY1ZlcnNpb246IFNQRUNfVkVSU0lPTl9DVVJSRU5ULFxuICAgIC4uLnF1ZXVlLFxuICAgIC4uLnN0b3JhZ2UsXG4gICAgLi4uaW5zdHJ1bWVudE9iamVjdCgnd29ybGQuc3RyZWFtcycsIHtcbiAgICAgIC4uLmNyZWF0ZVN0cmVhbWVyKG1lcmdlZENvbmZpZy5kYXRhRGlyLCB0YWcpLFxuICAgICAgLi4uKG1lcmdlZENvbmZpZy5zdHJlYW1GbHVzaEludGVydmFsTXMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIHN0cmVhbUZsdXNoSW50ZXJ2YWxNczogbWVyZ2VkQ29uZmlnLnN0cmVhbUZsdXNoSW50ZXJ2YWxNcyxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIGFzeW5jIHN0YXJ0KCkge1xuICAgICAgYXdhaXQgaW5pdERhdGFEaXIobWVyZ2VkQ29uZmlnLmRhdGFEaXIpO1xuICAgICAgaWYgKCFyZWNvdmVyQWN0aXZlUnVucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZWNvdmVyeVJ1bnMgPSB0YWdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5zdG9yYWdlLnJ1bnMsXG4gICAgICAgICAgICBsaXN0OiAoKHBhcmFtcykgPT5cbiAgICAgICAgICAgICAgc3RvcmFnZS5ydW5zLmxpc3Qoe1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICBmaWxlSWRGaWx0ZXI6IChmaWxlSWQpID0+IGhhc1RhZyhmaWxlSWQsIHRhZyksXG4gICAgICAgICAgICAgIH0pKSBhcyB0eXBlb2Ygc3RvcmFnZS5ydW5zLmxpc3QsXG4gICAgICAgICAgfVxuICAgICAgICA6IHN0b3JhZ2UucnVucztcbiAgICAgIGF3YWl0IHJlZW5xdWV1ZUFjdGl2ZVJ1bnMocmVjb3ZlcnlSdW5zLCBxdWV1ZS5xdWV1ZSwgJ3dvcmxkLWxvY2FsJyk7XG4gICAgfSxcbiAgICBhc3luYyBjbG9zZSgpIHtcbiAgICAgIGF3YWl0IHF1ZXVlLmNsb3NlKCk7XG4gICAgfSxcbiAgICBhc3luYyBjbGVhcigpIHtcbiAgICAgIGlmICh0YWcpIHtcbiAgICAgICAgLy8gU2VsZWN0aXZlbHkgZGVsZXRlIG9ubHkgZmlsZXMgbWF0Y2hpbmcgdGhpcyB0YWdcbiAgICAgICAgY29uc3QgYmFzZWRpciA9IG1lcmdlZENvbmZpZy5kYXRhRGlyO1xuXG4gICAgICAgIC8vIERlbGV0ZSBob29rIHRva2VuIGNvbnN0cmFpbnQgZmlsZXMgKGFuZCByZWNvdmVyeSBtYXJrZXJzLFxuICAgICAgICAvLyBmb3IgZGlzayBoeWdpZW5lKSBCRUZPUkUgZGVsZXRpbmcgdGhlIGhvb2tzLCBzaW5jZSB3ZSBuZWVkXG4gICAgICAgIC8vIHRvIHJlYWQgZWFjaCBob29rIHRvIGV4dHJhY3QgaXRzIHRva2VuIGhhc2guIENvbnN0cmFpbnRcbiAgICAgICAgLy8gZmlsZXMgYW5kIG1hcmtlcnMgYXJlIHVudGFnZ2VkIChge3NoYTI1Nn0uanNvbmAgYW5kXG4gICAgICAgIC8vIGB7c2hhMjU2fS5yZWNvdmVyeS5qc29uYCkgc28gbGlzdFRhZ2dlZEZpbGVzIHdvbid0IGZpbmRcbiAgICAgICAgLy8gdGhlbSDigJQgd2UgbXVzdCByZXNvbHZlIHRoZW0gdmlhIHRoZSBob29rIGRhdGEuXG4gICAgICAgIGNvbnN0IGhvb2tzRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsICdob29rcycpO1xuICAgICAgICBjb25zdCB0YWdnZWRIb29rRmlsZXMgPSBhd2FpdCBsaXN0VGFnZ2VkRmlsZXMoaG9va3NEaXIsIHRhZyk7XG4gICAgICAgIGNvbnN0IHsgSG9va1NjaGVtYSB9ID0gYXdhaXQgaW1wb3J0KCdAd29ya2Zsb3cvd29ybGQnKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgdGFnZ2VkSG9va0ZpbGVzLm1hcChhc3luYyAoaG9va0ZpbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhvb2sgPSBhd2FpdCByZWFkSlNPTihcbiAgICAgICAgICAgICAgcGF0aC5qb2luKGhvb2tzRGlyLCBob29rRmlsZSksXG4gICAgICAgICAgICAgIEhvb2tTY2hlbWFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaG9vaz8udG9rZW4pIHtcbiAgICAgICAgICAgICAgYXdhaXQgZGVsZXRlSlNPTihcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oaG9va3NEaXIsICd0b2tlbnMnLCBgJHtoYXNoVG9rZW4oaG9vay50b2tlbil9Lmpzb25gKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBhd2FpdCBkZWxldGVKU09OKFxuICAgICAgICAgICAgICAgIGhvb2tSZWNvdmVyeU1hcmtlclBhdGgoXG4gICAgICAgICAgICAgICAgICBiYXNlZGlyLFxuICAgICAgICAgICAgICAgICAgaG9vay50b2tlbixcbiAgICAgICAgICAgICAgICAgIGhvb2sucnVuSWQsXG4gICAgICAgICAgICAgICAgICBob29rLmhvb2tJZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIERlbGV0ZSB0YWdnZWQgZW50aXR5IGZpbGVzIGFjcm9zcyBhbGwgZGlyZWN0b3JpZXNcbiAgICAgICAgY29uc3QgZW50aXR5RGlycyA9IFtcbiAgICAgICAgICAncnVucycsXG4gICAgICAgICAgJ3N0ZXBzJyxcbiAgICAgICAgICAnZXZlbnRzJyxcbiAgICAgICAgICAnaG9va3MnLFxuICAgICAgICAgICd3YWl0cycsXG4gICAgICAgICAgJ3N0cmVhbXMvcnVucycsXG4gICAgICAgIF07XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIGVudGl0eURpcnMubWFwKGFzeW5jIChkaXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgZGlyKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgbGlzdFRhZ2dlZEZpbGVzKGZ1bGxEaXIsIHRhZyk7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgZmlsZXMubWFwKChmKSA9PiBkZWxldGVKU09OKHBhdGguam9pbihmdWxsRGlyLCBmKSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIC8vIENsZWFuIHVwIGxvY2sgZmlsZXMgdXNlZCBmb3IgYXRvbWljIHRlcm1pbmFsLXN0YXRlIGd1YXJkc1xuICAgICAgICBhd2FpdCBmc1xuICAgICAgICAgIC5ybShwYXRoLmpvaW4oYmFzZWRpciwgJy5sb2NrcycpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgICAvLyBEZWxldGUgdGFnZ2VkIHN0cmVhbSBjaHVua3MgKC57dGFnfS5iaW4gZmlsZXMpXG4gICAgICAgIGNvbnN0IGNodW5rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnc3RyZWFtcycsICdjaHVua3MnKTtcbiAgICAgICAgY29uc3QgdGFnZ2VkQmluRmlsZXMgPSBhd2FpdCBsaXN0VGFnZ2VkRmlsZXNCeUV4dGVuc2lvbihcbiAgICAgICAgICBjaHVua3NEaXIsXG4gICAgICAgICAgdGFnLFxuICAgICAgICAgICcuYmluJ1xuICAgICAgICApO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB0YWdnZWRCaW5GaWxlcy5tYXAoKGYpID0+XG4gICAgICAgICAgICBmcy51bmxpbmsocGF0aC5qb2luKGNodW5rc0RpciwgZikpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gQ2xlYXIgdGhlIGluLW1lbW9yeSB3cml0ZSBjYWNoZSBzbyBkZWxldGVkIHBhdGhzIGFyZSBmb3Jnb3R0ZW5cbiAgICAgICAgY2xlYXJDcmVhdGVkRmlsZXNDYWNoZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgcm0obWVyZ2VkQ29uZmlnLmRhdGFEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgICAgYXdhaXQgaW5pdERhdGFEaXIobWVyZ2VkQ29uZmlnLmRhdGFEaXIpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
package/dist/init.js
CHANGED
|
@@ -265,4 +265,4 @@ export async function initDataDir(dataDir) {
|
|
|
265
265
|
throw error;
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
|
-
//# sourceMappingURL=init.js.map
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLHVEQUF1RDtBQUN2RCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQztBQU83QyxJQUFJLGlCQUFpQixHQUF1QixJQUFJLENBQUM7QUFFakQ7OztHQUdHO0FBQ0gsU0FBUyxZQUFZO0lBQ25CLHFFQUFxRTtJQUNyRSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYztJQUNsQyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDakMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUN2QyxPQUFPLENBQ1IsQ0FBQztZQUNGLGlCQUFpQixHQUFHLElBQUks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Q0FDakIsQ0FBQztRQUVGLE9BQU8sQ0FBQyxLQUFLLENBQ1gsK0RBQStELGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFDL0gsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUMvQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUssQ0FDWCxpRUFBaUU7WUFDL0QsdUJBQXVCLFdBQVcsQ0FBQyxJQUFJLElBQUksZUFBZSxFQUFFLENBQy9ELENBQUM7UUFFRixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWNjZXNzLFxuICBjb25zdGFudHMsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgdW5saW5rLFxuICB3cml0ZUZpbGUsXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5cbi8qKiBQYWNrYWdlIG5hbWUgLSBoYXJkY29kZWQgc2luY2UgaXQgZG9lc24ndCBjaGFuZ2UgKi9cbmNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAd29ya2Zsb3cvd29ybGQtbG9jYWwnO1xuXG5pbnRlcmZhY2UgUGFja2FnZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbn1cblxubGV0IGNhY2hlZFBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEdldCB0aGUgZGlyZWN0b3J5IHBhdGggZm9yIHRoaXMgbW9kdWxlLlxuICogV29ya3MgaW4gRVNNIGFuZCBmYWxscyBiYWNrIHRvIGEgY29uc3RhbnQgaW4gQ0pTIGNvbnRleHRzICh3aGljaCBzaG91bGRuJ3QgaGFwcGVuKVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVEaXIoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIEluIGJ1bmRsZWQgQ0pTIGNvbnRleHRzLCBpbXBvcnQubWV0YS51cmwgbWF5IGJlIHVuZGVmaW5lZCBvciBlbXB0eVxuICBpZiAodHlwZW9mIGltcG9ydC5tZXRhLnVybCA9PT0gJ3N0cmluZycgJiYgaW1wb3J0Lm1ldGEudXJsKSB7XG4gICAgcmV0dXJuIHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhY2thZ2UgbmFtZSBhbmQgdmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIFRoZSByZXN1bHQgaXMgY2FjaGVkIGFmdGVyIHRoZSBmaXJzdCByZWFkLlxuICpcbiAqIEluIGJ1bmRsZWQgY29udGV4dHMgd2hlcmUgcGFja2FnZS5qc29uIGNhbm5vdCBiZSByZWFkLFxuICogcmV0dXJucyAnYnVuZGxlZCcgYXMgdGhlIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWNrYWdlSW5mbygpOiBQcm9taXNlPFBhY2thZ2VJbmZvPiB7XG4gIGlmIChjYWNoZWRQYWNrYWdlSW5mbykge1xuICAgIHJldHVybiBjYWNoZWRQYWNrYWdlSW5mbztcbiAgfVxuXG4gIGNvbnN0IG1vZHVsZURpciA9IGdldE1vZHVsZURpcigpO1xuICBpZiAobW9kdWxlRGlyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShcbiAgICAgICAgcGF0aC5qb2luKG1vZHVsZURpciwgJy4uL3BhY2thZ2UuanNvbicpLFxuICAgICAgICAndXRmLTgnXG4gICAgICApO1xuICAgICAgY2FjaGVkUGFja2FnZUluZm8gPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIFBhY2thZ2VJbmZvO1xuICAgICAgcmV0dXJuIGNhY2hlZFBhY2thZ2VJbmZvO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGJ1bmRsZWQgZmFsbGJhY2tcbiAgICB9XG4gIH1cblxuICAvLyBCdW5kbGVkIGNvbnRleHQgLSBwYWNrYWdlLmpzb24gbm90IGFjY2Vzc2libGVcbiAgY2FjaGVkUGFja2FnZUluZm8gPSB7XG4gICAgbmFtZTogUEFDS0FHRV9OQU1FLFxuICAgIHZlcnNpb246ICdidW5kbGVkJyxcbiAgfTtcbiAgcmV0dXJuIGNhY2hlZFBhY2thZ2VJbmZvO1xufVxuXG4vKiogRmlsZW5hbWUgZm9yIHN0b3JpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZGF0YSBkaXJlY3RvcnkgKi9cbmNvbnN0IFZFUlNJT05fRklMRU5BTUUgPSAndmVyc2lvbi50eHQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXJzZWQgc2VtYW50aWMgdmVyc2lvbiB3aXRoIG9wdGlvbmFsIHByZXJlbGVhc2UgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFZlcnNpb24ge1xuICBtYWpvcjogbnVtYmVyO1xuICBtaW5vcjogbnVtYmVyO1xuICBwYXRjaDogbnVtYmVyO1xuICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0aGUgZGF0YSBkaXJlY3RvcnkgY2Fubm90IGJlIGFjY2Vzc2VkIG9yIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhRGlyQWNjZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGRhdGFEaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgY29kZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGRhdGFEaXI6IHN0cmluZywgY29kZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdEYXRhRGlyQWNjZXNzRXJyb3InO1xuICAgIHRoaXMuZGF0YURpciA9IGRhdGFEaXI7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGRhdGEgZGlyZWN0b3J5IHZlcnNpb24gaXMgaW5jb21wYXRpYmxlLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURpclZlcnNpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgb2xkVmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbiAgcmVhZG9ubHkgbmV3VmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbiAgcmVhZG9ubHkgc3VnZ2VzdGVkVmVyc2lvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb2xkVmVyc2lvbjogUGFyc2VkVmVyc2lvbixcbiAgICBuZXdWZXJzaW9uOiBQYXJzZWRWZXJzaW9uLFxuICAgIHN1Z2dlc3RlZFZlcnNpb24/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0RhdGFEaXJWZXJzaW9uRXJyb3InO1xuICAgIHRoaXMub2xkVmVyc2lvbiA9IG9sZFZlcnNpb247XG4gICAgdGhpcy5uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICB0aGlzLnN1Z2dlc3RlZFZlcnNpb24gPSBzdWdnZXN0ZWRWZXJzaW9uO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGEgdmVyc2lvbiBzdHJpbmcgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblN0cmluZyAtIFZlcnNpb24gc3RyaW5nIGxpa2UgXCI0LjAuMVwiIG9yIFwiNC4wLjEtYmV0YS4yMFwiXG4gKiBAcmV0dXJucyBQYXJzZWQgdmVyc2lvbiBvYmplY3Qgd2l0aCBtYWpvciwgbWlub3IsIHBhdGNoLCBhbmQgb3B0aW9uYWwgcHJlcmVsZWFzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHZlcnNpb25TdHJpbmc6IHN0cmluZyk6IFBhcnNlZFZlcnNpb24ge1xuICAvLyBNYXRjaDogbWFqb3IubWlub3IucGF0Y2ggd2l0aCBvcHRpb25hbCBwcmVyZWxlYXNlXG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvblN0cmluZy5tYXRjaCgvXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSg/Oi0oLispKT8kLyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2ZXJzaW9uIHN0cmluZzogXCIke3ZlcnNpb25TdHJpbmd9XCJgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWFqb3I6IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksXG4gICAgbWlub3I6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksXG4gICAgcGF0Y2g6IHBhcnNlSW50KG1hdGNoWzNdLCAxMCksXG4gICAgcHJlcmVsZWFzZTogbWF0Y2hbNF0sXG4gICAgcmF3OiB2ZXJzaW9uU3RyaW5nLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBwYXJzZWQgdmVyc2lvbiBiYWNrIHRvIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbih2ZXJzaW9uOiBQYXJzZWRWZXJzaW9uKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IGAke3ZlcnNpb24ubWFqb3J9LiR7dmVyc2lvbi5taW5vcn0uJHt2ZXJzaW9uLnBhdGNofWA7XG4gIHJldHVybiB2ZXJzaW9uLnByZXJlbGVhc2UgPyBgJHtiYXNlfS0ke3ZlcnNpb24ucHJlcmVsZWFzZX1gIDogYmFzZTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHZlcnNpb24gZmlsZSBjb250ZW50IHRvIGV4dHJhY3QgcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gQ29udGVudCBsaWtlIFwiQHdvcmtmbG93L3dvcmxkLWxvY2FsQDQuMC4xLWJldGEuMjBcIlxuICogQHJldHVybnMgT2JqZWN0IHdpdGggcGFja2FnZU5hbWUgYW5kIHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvbkZpbGUoY29udGVudDogc3RyaW5nKToge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBQYXJzZWRWZXJzaW9uO1xufSB7XG4gIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcbiAgY29uc3QgbGFzdEF0SW5kZXggPSB0cmltbWVkLmxhc3RJbmRleE9mKCdAJyk7XG5cbiAgaWYgKGxhc3RBdEluZGV4IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmVyc2lvbiBmaWxlIGNvbnRlbnQ6IFwiJHtjb250ZW50fVwiYCk7XG4gIH1cblxuICBjb25zdCBwYWNrYWdlTmFtZSA9IHRyaW1tZWQuc3Vic3RyaW5nKDAsIGxhc3RBdEluZGV4KTtcbiAgY29uc3QgdmVyc2lvblN0cmluZyA9IHRyaW1tZWQuc3Vic3RyaW5nKGxhc3RBdEluZGV4ICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlTmFtZSxcbiAgICB2ZXJzaW9uOiBwYXJzZVZlcnNpb24odmVyc2lvblN0cmluZyksXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgdmVyc2lvbiBmaWxlIGNvbnRlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uRmlsZShcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvblxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3BhY2thZ2VOYW1lfUAke2Zvcm1hdFZlcnNpb24odmVyc2lvbil9YDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIHZlcnNpb24gdXBncmFkZXMgYmV0d2VlbiBvbGQgYW5kIG5ldyB2ZXJzaW9ucy5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIGRhdGEgZGlyZWN0b3J5IHdhcyBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gb2xkVmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRoYXQgY3JlYXRlZCB0aGUgZGF0YSBkaXJlY3RvcnlcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAdGhyb3dzIHtEYXRhRGlyVmVyc2lvbkVycm9yfSBJZiB0aGUgdmVyc2lvbnMgYXJlIGluY29tcGF0aWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBncmFkZVZlcnNpb24oXG4gIG9sZFZlcnNpb246IFBhcnNlZFZlcnNpb24sXG4gIG5ld1ZlcnNpb246IFBhcnNlZFZlcnNpb25cbik6IHZvaWQge1xuICBjb25zb2xlLmxvZyhcbiAgICBgW3dvcmxkLWxvY2FsXSBVcGdyYWRpbmcgZnJvbSB2ZXJzaW9uICR7Zm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKX0gdG8gJHtmb3JtYXRWZXJzaW9uKG5ld1ZlcnNpb24pfWBcbiAgKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIHdyaXRhYmxlLlxuICogQ3JlYXRlcyB0aGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIGRhdGFEaXIgLSBUaGUgcGF0aCB0byB0aGUgZGF0YSBkaXJlY3RvcnlcbiAqIEB0aHJvd3Mge0RhdGFEaXJBY2Nlc3NFcnJvcn0gSWYgdGhlIGRpcmVjdG9yeSBjYW5ub3QgYmUgY3JlYXRlZCBvciBhY2Nlc3NlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGF0YURpcihkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gcGF0aC5yZXNvbHZlKGRhdGFEaXIpO1xuXG4gIC8vIFRyeSB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gIHRyeSB7XG4gICAgYXdhaXQgbWtkaXIoYWJzb2x1dGVQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBub2RlRXJyb3IgPSBlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb247XG4gICAgLy8gRUVYSVNUIGlzIGZpbmUgLSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHNcbiAgICBpZiAobm9kZUVycm9yLmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBkYXRhIGRpcmVjdG9yeSBcIiR7YWJzb2x1dGVQYXRofVwiOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICAgIGFic29sdXRlUGF0aCxcbiAgICAgICAgbm9kZUVycm9yLmNvZGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBkaXJlY3RvcnkgaXMgYWNjZXNzaWJsZSAocmVhZGFibGUpXG4gIHRyeSB7XG4gICAgYXdhaXQgYWNjZXNzKGFic29sdXRlUGF0aCwgY29uc3RhbnRzLlJfT0spO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG5vZGVFcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgYERhdGEgZGlyZWN0b3J5IFwiJHthYnNvbHV0ZVBhdGh9XCIgaXMgbm90IHJlYWRhYmxlOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBub2RlRXJyb3IuY29kZVxuICAgICk7XG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIGRpcmVjdG9yeSBpcyB3cml0YWJsZSBieSBhdHRlbXB0aW5nIHRvIHdyaXRlIGEgdGVtcCBmaWxlXG4gIGNvbnN0IHRlc3RGaWxlID0gcGF0aC5qb2luKFxuICAgIGFic29sdXRlUGF0aCxcbiAgICBgLndvcmtmbG93LXdyaXRlLXRlc3QtJHtEYXRlLm5vdygpfWBcbiAgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUodGVzdEZpbGUsICcnKTtcbiAgICAvLyBDbGVhbiB1cCB0ZXN0IGZpbGUg4oCUIEVOT0VOVCBkdXJpbmcgY2xlYW51cCBpcyBoYXJtbGVzcyAobWF5IHJhY2VcbiAgICAvLyB3aXRoIGFub3RoZXIgcHJvY2VzcyBwZXJmb3JtaW5nIHRoZSBzYW1lIGNoZWNrIGNvbmN1cnJlbnRseSlcbiAgICBhd2FpdCB1bmxpbmsodGVzdEZpbGUpLmNhdGNoKChlOiBOb2RlSlMuRXJybm9FeGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlO1xuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG5vZGVFcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgYERhdGEgZGlyZWN0b3J5IFwiJHthYnNvbHV0ZVBhdGh9XCIgaXMgbm90IHdyaXRhYmxlOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBub2RlRXJyb3IuY29kZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgdmVyc2lvbiBmcm9tIHRoZSBkYXRhIGRpcmVjdG9yeSdzIHZlcnNpb24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFBhdGggdG8gdGhlIGRhdGEgZGlyZWN0b3J5XG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZlcnNpb24gaW5mbywgb3IgbnVsbCBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRWZXJzaW9uRmlsZShkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbn0gfCBudWxsPiB7XG4gIGNvbnN0IHZlcnNpb25GaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLnJlc29sdmUoZGF0YURpciksIFZFUlNJT05fRklMRU5BTUUpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHZlcnNpb25GaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIHBhcnNlVmVyc2lvbkZpbGUoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgY29uc3Qgbm9kZUVycm9yID0gZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgIGlmIChub2RlRXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgY3VycmVudCB2ZXJzaW9uIHRvIHRoZSBkYXRhIGRpcmVjdG9yeSdzIHZlcnNpb24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFBhdGggdG8gdGhlIGRhdGEgZGlyZWN0b3J5XG4gKiBAcGFyYW0gdmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRvIHdyaXRlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlVmVyc2lvbkZpbGUoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvblxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHZlcnNpb25GaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLnJlc29sdmUoZGF0YURpciksIFZFUlNJT05fRklMRU5BTUUpO1xuICBjb25zdCBwYWNrYWdlSW5mbyA9IGF3YWl0IGdldFBhY2thZ2VJbmZvKCk7XG4gIGNvbnN0IGNvbnRlbnQgPSBmb3JtYXRWZXJzaW9uRmlsZShwYWNrYWdlSW5mby5uYW1lLCB2ZXJzaW9uKTtcbiAgYXdhaXQgd3JpdGVGaWxlKHZlcnNpb25GaWxlUGF0aCwgY29udGVudCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc3VnZ2VzdGVkIGRvd25ncmFkZSB2ZXJzaW9uIGJhc2VkIG9uIHRoZSBvbGQgdmVyc2lvbi5cbiAqIElmIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBzdWdnZXN0ZWQgaW4gdGhlIGVycm9yLCB1c2UgdGhhdC5cbiAqIE90aGVyd2lzZSwgc3VnZ2VzdCB0aGUgcHJldmlvdXMgbWlub3IgdmVyc2lvbiBpZiBwYXRjaCBpcyAwLFxuICogb3IgcHJldmlvdXMgbWFqb3IgdmVyc2lvbiBpZiBtaW5vciBpcyBhbHNvIDAuXG4gKi9cbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZERvd25ncmFkZVZlcnNpb24oXG4gIG9sZFZlcnNpb246IFBhcnNlZFZlcnNpb24sXG4gIHN1Z2dlc3RlZFZlcnNpb24/OiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmIChzdWdnZXN0ZWRWZXJzaW9uKSB7XG4gICAgcmV0dXJuIHN1Z2dlc3RlZFZlcnNpb247XG4gIH1cblxuICAvLyBTdWdnZXN0IHRoZSBvbGQgdmVyc2lvbiBhcyB0aGUgZG93bmdyYWRlIHRhcmdldFxuICByZXR1cm4gZm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgZGF0YSBkaXJlY3RvcnksIGVuc3VyaW5nIGl0IGV4aXN0cywgaXMgYWNjZXNzaWJsZSxcbiAqIGFuZCBoYW5kbGVzIHZlcnNpb24gY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFRoZSBwYXRoIHRvIHRoZSBkYXRhIGRpcmVjdG9yeVxuICogQHRocm93cyB7RGF0YURpckFjY2Vzc0Vycm9yfSBJZiB0aGUgZGlyZWN0b3J5IGNhbm5vdCBiZSBjcmVhdGVkIG9yIGFjY2Vzc2VkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0RGF0YURpcihkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlXG4gIGF3YWl0IGVuc3VyZURhdGFEaXIoZGF0YURpcik7XG5cbiAgY29uc3QgcGFja2FnZUluZm8gPSBhd2FpdCBnZXRQYWNrYWdlSW5mbygpO1xuICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHBhcnNlVmVyc2lvbihwYWNrYWdlSW5mby52ZXJzaW9uKTtcblxuICAvLyBSZWFkIGV4aXN0aW5nIHZlcnNpb24gZmlsZVxuICBjb25zdCBleGlzdGluZ1ZlcnNpb25JbmZvID0gYXdhaXQgcmVhZFZlcnNpb25GaWxlKGRhdGFEaXIpO1xuXG4gIGlmIChleGlzdGluZ1ZlcnNpb25JbmZvID09PSBudWxsKSB7XG4gICAgLy8gTmV3IGRhdGEgZGlyZWN0b3J5IC0gd3JpdGUgdGhlIGN1cnJlbnQgdmVyc2lvblxuICAgIGF3YWl0IHdyaXRlVmVyc2lvbkZpbGUoZGF0YURpciwgY3VycmVudFZlcnNpb24pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgdmVyc2lvbjogb2xkVmVyc2lvbiB9ID0gZXhpc3RpbmdWZXJzaW9uSW5mbztcblxuICAvLyBDaGVjayBpZiB2ZXJzaW9ucyBhcmUgdGhlIHNhbWUgKG5vIHVwZ3JhZGUgbmVlZGVkKVxuICBpZiAoZm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKSA9PT0gZm9ybWF0VmVyc2lvbihjdXJyZW50VmVyc2lvbikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBdHRlbXB0IHVwZ3JhZGVcbiAgdHJ5IHtcbiAgICB1cGdyYWRlVmVyc2lvbihvbGRWZXJzaW9uLCBjdXJyZW50VmVyc2lvbik7XG4gICAgLy8gVXBncmFkZSBzdWNjZWVkZWQgLSB3cml0ZSB0aGUgbmV3IHZlcnNpb25cbiAgICBhd2FpdCB3cml0ZVZlcnNpb25GaWxlKGRhdGFEaXIsIGN1cnJlbnRWZXJzaW9uKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBzdWdnZXN0ZWRWZXJzaW9uID1cbiAgICAgIGVycm9yIGluc3RhbmNlb2YgRGF0YURpclZlcnNpb25FcnJvciA/IGVycm9yLnN1Z2dlc3RlZFZlcnNpb24gOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkb3duZ3JhZGVUYXJnZXQgPSBnZXRTdWdnZXN0ZWREb3duZ3JhZGVWZXJzaW9uKFxuICAgICAgb2xkVmVyc2lvbixcbiAgICAgIHN1Z2dlc3RlZFZlcnNpb25cbiAgICApO1xuXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBbd29ybGQtbG9jYWxdIEZhaWxlZCB0byB1cGdyYWRlIGRhdGEgZGlyZWN0b3J5IGZyb20gdmVyc2lvbiAke2Zvcm1hdFZlcnNpb24ob2xkVmVyc2lvbil9IHRvICR7Zm9ybWF0VmVyc2lvbihjdXJyZW50VmVyc2lvbil9OmAsXG4gICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yXG4gICAgKTtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYFt3b3JsZC1sb2NhbF0gRGF0YSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24uIGAgK1xuICAgICAgICBgUGxlYXNlIGRvd25ncmFkZSB0byAke3BhY2thZ2VJbmZvLm5hbWV9QCR7ZG93bmdyYWRlVGFyZ2V0fWBcbiAgICApO1xuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentObject.d.ts","sourceRoot":"","sources":["../src/instrumentObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instrumentObject.d.ts","sourceRoot":"","sources":["../src/instrumentObject.ts"],"names":[],"mappings":"AAgHA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CA4C1E"}
|
package/dist/instrumentObject.js
CHANGED
|
@@ -2,13 +2,25 @@
|
|
|
2
2
|
* Utility to instrument object methods with tracing.
|
|
3
3
|
* This mirrors world-vercel's implementation for consistent observability.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getSpanKind, PeerService, RpcMethod, RpcService, RpcSystem, StepId, trace, WorkflowRunId, } from './telemetry.js';
|
|
6
6
|
/** Configuration for peer service attribution */
|
|
7
7
|
const WORLD_LOCAL_SERVICE = {
|
|
8
8
|
peerService: 'world-local',
|
|
9
9
|
rpcSystem: 'local',
|
|
10
10
|
rpcService: 'world-local',
|
|
11
11
|
};
|
|
12
|
+
const RUN_ID_ARG_INDEX_BY_METHOD = {
|
|
13
|
+
'world.runs.get': 0,
|
|
14
|
+
'world.runs.experimentalSetAttributes': 0,
|
|
15
|
+
'world.steps.get': 0,
|
|
16
|
+
'world.events.create': 0,
|
|
17
|
+
'world.events.get': 0,
|
|
18
|
+
};
|
|
19
|
+
const RUN_ID_PARAM_METHODS = new Set([
|
|
20
|
+
'world.steps.list',
|
|
21
|
+
'world.events.list',
|
|
22
|
+
'world.hooks.list',
|
|
23
|
+
]);
|
|
12
24
|
/**
|
|
13
25
|
* Extracts the event type from arguments for events.create calls.
|
|
14
26
|
* The event data is the second argument and contains eventType.
|
|
@@ -22,6 +34,54 @@ function extractEventType(args) {
|
|
|
22
34
|
}
|
|
23
35
|
return undefined;
|
|
24
36
|
}
|
|
37
|
+
function getStringArg(args, index) {
|
|
38
|
+
return typeof args[index] === 'string' ? args[index] : undefined;
|
|
39
|
+
}
|
|
40
|
+
function getRunIdFromParams(params) {
|
|
41
|
+
if (typeof params !== 'object' || params === null) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const runId = params.runId;
|
|
45
|
+
return typeof runId === 'string' ? runId : undefined;
|
|
46
|
+
}
|
|
47
|
+
function getRunIdFromResult(result) {
|
|
48
|
+
if (typeof result !== 'object' || result === null) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const record = result;
|
|
52
|
+
if (typeof record.runId === 'string') {
|
|
53
|
+
return record.runId;
|
|
54
|
+
}
|
|
55
|
+
for (const key of ['run', 'step', 'hook', 'wait']) {
|
|
56
|
+
const entity = record[key];
|
|
57
|
+
if (typeof entity === 'object' && entity !== null) {
|
|
58
|
+
const runId = entity.runId;
|
|
59
|
+
if (typeof runId === 'string') {
|
|
60
|
+
return runId;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
function extractWorkflowAttributes(prefix, methodName, args) {
|
|
67
|
+
const methodKey = `${prefix}.${methodName}`;
|
|
68
|
+
const attributes = {};
|
|
69
|
+
const runIdArgIndex = RUN_ID_ARG_INDEX_BY_METHOD[methodKey];
|
|
70
|
+
const runId = runIdArgIndex === undefined
|
|
71
|
+
? RUN_ID_PARAM_METHODS.has(methodKey)
|
|
72
|
+
? getRunIdFromParams(args[0])
|
|
73
|
+
: undefined
|
|
74
|
+
: getStringArg(args, runIdArgIndex);
|
|
75
|
+
if (runId) {
|
|
76
|
+
Object.assign(attributes, WorkflowRunId(runId));
|
|
77
|
+
}
|
|
78
|
+
if (methodKey === 'world.steps.get') {
|
|
79
|
+
const stepId = getStringArg(args, 1);
|
|
80
|
+
if (stepId)
|
|
81
|
+
Object.assign(attributes, StepId(stepId));
|
|
82
|
+
}
|
|
83
|
+
return attributes;
|
|
84
|
+
}
|
|
25
85
|
/**
|
|
26
86
|
* Wraps all methods of an object with tracing spans.
|
|
27
87
|
* @param prefix - Prefix for span names (e.g., "world.runs")
|
|
@@ -55,12 +115,18 @@ export function instrumentObject(prefix, o) {
|
|
|
55
115
|
...RpcSystem(WORLD_LOCAL_SERVICE.rpcSystem),
|
|
56
116
|
...RpcService(WORLD_LOCAL_SERVICE.rpcService),
|
|
57
117
|
...RpcMethod(spanName),
|
|
118
|
+
...extractWorkflowAttributes(prefix, methodName, args),
|
|
58
119
|
});
|
|
59
|
-
|
|
120
|
+
const result = await f(...args);
|
|
121
|
+
const resultRunId = getRunIdFromResult(result);
|
|
122
|
+
if (resultRunId) {
|
|
123
|
+
span?.setAttributes(WorkflowRunId(resultRunId));
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
60
126
|
});
|
|
61
127
|
};
|
|
62
128
|
}
|
|
63
129
|
}
|
|
64
130
|
return handlers;
|
|
65
131
|
}
|
|
66
|
-
//# sourceMappingURL=instrumentObject.js.map
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudE9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0cnVtZW50T2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsaURBQWlEO0FBQ2pELE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsU0FBUyxFQUFFLE9BQU87SUFDbEIsVUFBVSxFQUFFLGFBQWE7Q0FDMUIsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQTJCO0lBQ3pELGdCQUFnQixFQUFFLENBQUM7SUFDbkIsc0NBQXNDLEVBQUUsQ0FBQztJQUN6QyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEVBQUUsQ0FBQztDQUN0QixDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtDQUNuQixDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQWU7SUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7SUFD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QkFBbUIsQ0FBQyxTQUFTLENBQUM7d0JBQzNDLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQzt3QkFDN0MsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO3dCQUN0QixHQUFHLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDO3FCQUN2RCxDQUFDLENBQUM7b0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9DLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLElBQUksRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2xELENBQUM7b0JBQ0QsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHRvIGluc3RydW1lbnQgb2JqZWN0IG1ldGhvZHMgd2l0aCB0cmFjaW5nLlxuICogVGhpcyBtaXJyb3JzIHdvcmxkLXZlcmNlbCdzIGltcGxlbWVudGF0aW9uIGZvciBjb25zaXN0ZW50IG9ic2VydmFiaWxpdHkuXG4gKi9cbmltcG9ydCB7XG4gIGdldFNwYW5LaW5kLFxuICBQZWVyU2VydmljZSxcbiAgUnBjTWV0aG9kLFxuICBScGNTZXJ2aWNlLFxuICBScGNTeXN0ZW0sXG4gIFN0ZXBJZCxcbiAgdHJhY2UsXG4gIFdvcmtmbG93UnVuSWQsXG59IGZyb20gJy4vdGVsZW1ldHJ5LmpzJztcblxuLyoqIENvbmZpZ3VyYXRpb24gZm9yIHBlZXIgc2VydmljZSBhdHRyaWJ1dGlvbiAqL1xuY29uc3QgV09STERfTE9DQUxfU0VSVklDRSA9IHtcbiAgcGVlclNlcnZpY2U6ICd3b3JsZC1sb2NhbCcsXG4gIHJwY1N5c3RlbTogJ2xvY2FsJyxcbiAgcnBjU2VydmljZTogJ3dvcmxkLWxvY2FsJyxcbn07XG5cbmNvbnN0IFJVTl9JRF9BUkdfSU5ERVhfQllfTUVUSE9EOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAnd29ybGQucnVucy5nZXQnOiAwLFxuICAnd29ybGQucnVucy5leHBlcmltZW50YWxTZXRBdHRyaWJ1dGVzJzogMCxcbiAgJ3dvcmxkLnN0ZXBzLmdldCc6IDAsXG4gICd3b3JsZC5ldmVudHMuY3JlYXRlJzogMCxcbiAgJ3dvcmxkLmV2ZW50cy5nZXQnOiAwLFxufTtcblxuY29uc3QgUlVOX0lEX1BBUkFNX01FVEhPRFMgPSBuZXcgU2V0KFtcbiAgJ3dvcmxkLnN0ZXBzLmxpc3QnLFxuICAnd29ybGQuZXZlbnRzLmxpc3QnLFxuICAnd29ybGQuaG9va3MubGlzdCcsXG5dKTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZXZlbnQgdHlwZSBmcm9tIGFyZ3VtZW50cyBmb3IgZXZlbnRzLmNyZWF0ZSBjYWxscy5cbiAqIFRoZSBldmVudCBkYXRhIGlzIHRoZSBzZWNvbmQgYXJndW1lbnQgYW5kIGNvbnRhaW5zIGV2ZW50VHlwZS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEV2ZW50VHlwZShhcmdzOiB1bmtub3duW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoYXJncy5sZW5ndGggPj0gMiAmJiB0eXBlb2YgYXJnc1sxXSA9PT0gJ29iamVjdCcgJiYgYXJnc1sxXSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGRhdGEgPSBhcmdzWzFdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2YgZGF0YS5ldmVudFR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YS5ldmVudFR5cGU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0cmluZ0FyZyhhcmdzOiB1bmtub3duW10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIGFyZ3NbaW5kZXhdID09PSAnc3RyaW5nJyA/IGFyZ3NbaW5kZXhdIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRSdW5JZEZyb21QYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IHBhcmFtcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcnVuSWQgPSAocGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5ydW5JZDtcbiAgcmV0dXJuIHR5cGVvZiBydW5JZCA9PT0gJ3N0cmluZycgPyBydW5JZCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0UnVuSWRGcm9tUmVzdWx0KHJlc3VsdDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0JyB8fCByZXN1bHQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcmVjb3JkID0gcmVzdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIHJlY29yZC5ydW5JZCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVjb3JkLnJ1bklkO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydydW4nLCAnc3RlcCcsICdob29rJywgJ3dhaXQnXSkge1xuICAgIGNvbnN0IGVudGl0eSA9IHJlY29yZFtrZXldO1xuICAgIGlmICh0eXBlb2YgZW50aXR5ID09PSAnb2JqZWN0JyAmJiBlbnRpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bklkID0gKGVudGl0eSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikucnVuSWQ7XG4gICAgICBpZiAodHlwZW9mIHJ1bklkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcnVuSWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFdvcmtmbG93QXR0cmlidXRlcyhcbiAgcHJlZml4OiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgYXJnczogdW5rbm93bltdXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgbWV0aG9kS2V5ID0gYCR7cHJlZml4fS4ke21ldGhvZE5hbWV9YDtcbiAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGNvbnN0IHJ1bklkQXJnSW5kZXggPSBSVU5fSURfQVJHX0lOREVYX0JZX01FVEhPRFttZXRob2RLZXldO1xuICBjb25zdCBydW5JZCA9XG4gICAgcnVuSWRBcmdJbmRleCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IFJVTl9JRF9QQVJBTV9NRVRIT0RTLmhhcyhtZXRob2RLZXkpXG4gICAgICAgID8gZ2V0UnVuSWRGcm9tUGFyYW1zKGFyZ3NbMF0pXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgICA6IGdldFN0cmluZ0FyZyhhcmdzLCBydW5JZEFyZ0luZGV4KTtcbiAgaWYgKHJ1bklkKSB7XG4gICAgT2JqZWN0LmFzc2lnbihhdHRyaWJ1dGVzLCBXb3JrZmxvd1J1bklkKHJ1bklkKSk7XG4gIH1cblxuICBpZiAobWV0aG9kS2V5ID09PSAnd29ybGQuc3RlcHMuZ2V0Jykge1xuICAgIGNvbnN0IHN0ZXBJZCA9IGdldFN0cmluZ0FyZyhhcmdzLCAxKTtcbiAgICBpZiAoc3RlcElkKSBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIFN0ZXBJZChzdGVwSWQpKTtcbiAgfVxuXG4gIHJldHVybiBhdHRyaWJ1dGVzO1xufVxuXG4vKipcbiAqIFdyYXBzIGFsbCBtZXRob2RzIG9mIGFuIG9iamVjdCB3aXRoIHRyYWNpbmcgc3BhbnMuXG4gKiBAcGFyYW0gcHJlZml4IC0gUHJlZml4IGZvciBzcGFuIG5hbWVzIChlLmcuLCBcIndvcmxkLnJ1bnNcIilcbiAqIEBwYXJhbSBvIC0gT2JqZWN0IHdpdGggbWV0aG9kcyB0byBpbnN0cnVtZW50XG4gKiBAcmV0dXJucyBJbnN0cnVtZW50ZWQgb2JqZWN0IHdpdGggc2FtZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RydW1lbnRPYmplY3Q8VCBleHRlbmRzIG9iamVjdD4ocHJlZml4OiBzdHJpbmcsIG86IFQpOiBUIHtcbiAgY29uc3QgaGFuZGxlcnMgPSB7fSBhcyBUO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvKSBhcyAoa2V5b2YgVClbXSkge1xuICAgIGlmICh0eXBlb2Ygb1trZXldICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBoYW5kbGVyc1trZXldID0gb1trZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmID0gb1trZXldO1xuICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IFN0cmluZyhrZXkpO1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIGR5bmFtaWMgZnVuY3Rpb24gd3JhcHBpbmdcbiAgICAgIGhhbmRsZXJzW2tleV0gPSBhc3luYyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgIC8vIEJ1aWxkIHNwYW4gbmFtZSAtIGZvciBldmVudHMuY3JlYXRlLCBpbmNsdWRlIHRoZSBldmVudCB0eXBlXG4gICAgICAgIGxldCBzcGFuTmFtZSA9IGAke3ByZWZpeH0uJHttZXRob2ROYW1lfWA7XG4gICAgICAgIGlmIChwcmVmaXggPT09ICd3b3JsZC5ldmVudHMnICYmIG1ldGhvZE5hbWUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXh0cmFjdEV2ZW50VHlwZShhcmdzKTtcbiAgICAgICAgICBpZiAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBzcGFuTmFtZSA9IGAke3ByZWZpeH0uJHttZXRob2ROYW1lfSAke2V2ZW50VHlwZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFjZShcbiAgICAgICAgICBzcGFuTmFtZSxcbiAgICAgICAgICB7IGtpbmQ6IGF3YWl0IGdldFNwYW5LaW5kKCdJTlRFUk5BTCcpIH0sXG4gICAgICAgICAgYXN5bmMgKHNwYW4pID0+IHtcbiAgICAgICAgICAgIC8vIEFkZCBwZWVyIHNlcnZpY2UgYXR0cmlidXRlcyBmb3Igc2VydmljZSBtYXBzXG4gICAgICAgICAgICAvLyBVc2Ugc3Bhbk5hbWUgZm9yIHJwYy5tZXRob2Qgc28gRGF0YWRvZyBzaG93cyBldmVudCB0eXBlIGluIHJlc291cmNlXG4gICAgICAgICAgICBzcGFuPy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgLi4uUGVlclNlcnZpY2UoV09STERfTE9DQUxfU0VSVklDRS5wZWVyU2VydmljZSksXG4gICAgICAgICAgICAgIC4uLlJwY1N5c3RlbShXT1JMRF9MT0NBTF9TRVJWSUNFLnJwY1N5c3RlbSksXG4gICAgICAgICAgICAgIC4uLlJwY1NlcnZpY2UoV09STERfTE9DQUxfU0VSVklDRS5ycGNTZXJ2aWNlKSxcbiAgICAgICAgICAgICAgLi4uUnBjTWV0aG9kKHNwYW5OYW1lKSxcbiAgICAgICAgICAgICAgLi4uZXh0cmFjdFdvcmtmbG93QXR0cmlidXRlcyhwcmVmaXgsIG1ldGhvZE5hbWUsIGFyZ3MpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0UnVuSWQgPSBnZXRSdW5JZEZyb21SZXN1bHQocmVzdWx0KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHRSdW5JZCkge1xuICAgICAgICAgICAgICBzcGFuPy5zZXRBdHRyaWJ1dGVzKFdvcmtmbG93UnVuSWQocmVzdWx0UnVuSWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGhhbmRsZXJzO1xufVxuIl19
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { type Queue } from '@workflow/world';
|
|
1
|
+
import { type Queue, type QueuePrefix } from '@workflow/world';
|
|
2
2
|
import type { Config } from './config.js';
|
|
3
3
|
export type DirectHandler = (req: Request) => Promise<Response>;
|
|
4
4
|
export type LocalQueue = Queue & {
|
|
5
5
|
/** Close the HTTP agent and release resources. */
|
|
6
6
|
close(): Promise<void>;
|
|
7
7
|
/** Register a direct in-process handler for a queue prefix, bypassing HTTP. */
|
|
8
|
-
registerHandler(prefix:
|
|
8
|
+
registerHandler(prefix: QueuePrefix, handler: DirectHandler): void;
|
|
9
9
|
};
|
|
10
10
|
export declare function createQueue(config: Partial<Config>): LocalQueue;
|
|
11
11
|
//# sourceMappingURL=queue.d.ts.map
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiD1C,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhE,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,kDAAkD;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+EAA+E;IAC/E,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACpE,CAAC;AAsCF,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CA0R/D"}
|
package/dist/queue.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setTimeout } from 'node:timers/promises';
|
|
2
|
-
import { MessageId, ValidQueueName } from '@workflow/world';
|
|
2
|
+
import { MessageId, parseQueueName, ValidQueueName, } from '@workflow/world';
|
|
3
3
|
import { Sema } from 'async-sema';
|
|
4
4
|
import { monotonicFactory } from 'ulid';
|
|
5
5
|
import { Agent } from 'undici';
|
|
@@ -45,14 +45,28 @@ const MAX_SAFE_TIMEOUT_MS = 2147483647;
|
|
|
45
45
|
const DEFAULT_CONCURRENCY_LIMIT = 1000;
|
|
46
46
|
const WORKFLOW_LOCAL_QUEUE_CONCURRENCY = parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY ?? '0', 10) ||
|
|
47
47
|
DEFAULT_CONCURRENCY_LIMIT;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
const DETACHED_ARRAYBUFFER_ERROR = 'Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer';
|
|
49
|
+
const PROXY_HANDLER_DOCS_URL = 'https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler';
|
|
50
|
+
function isDetachedArrayBufferQueueError(error) {
|
|
51
|
+
let current = error;
|
|
52
|
+
const visited = new Set();
|
|
53
|
+
while (current && typeof current === 'object' && !visited.has(current)) {
|
|
54
|
+
visited.add(current);
|
|
55
|
+
if ('message' in current &&
|
|
56
|
+
typeof current.message === 'string' &&
|
|
57
|
+
current.message.includes(DETACHED_ARRAYBUFFER_ERROR)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
current = 'cause' in current ? current.cause : undefined;
|
|
54
61
|
}
|
|
55
|
-
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
function getQueueRoute(queueName) {
|
|
65
|
+
const { kind, prefix } = parseQueueName(queueName);
|
|
66
|
+
return {
|
|
67
|
+
pathname: kind === 'workflow' ? 'flow' : 'step',
|
|
68
|
+
prefix,
|
|
69
|
+
};
|
|
56
70
|
}
|
|
57
71
|
export function createQueue(config) {
|
|
58
72
|
// Create a custom agent optimized for high-concurrency local workflows:
|
|
@@ -68,6 +82,13 @@ export function createQueue(config) {
|
|
|
68
82
|
const transport = new TypedJsonTransport();
|
|
69
83
|
const generateId = monotonicFactory();
|
|
70
84
|
const semaphore = new Sema(WORKFLOW_LOCAL_QUEUE_CONCURRENCY);
|
|
85
|
+
// Aborted by close(): cancels every pending sleep (delayed deliveries,
|
|
86
|
+
// timeoutSeconds re-deliveries, retry backoffs) so shutdown isn't held
|
|
87
|
+
// hostage by a timer and no delivery is attempted against the closed
|
|
88
|
+
// agent. The resulting AbortError is silently dropped by the
|
|
89
|
+
// isAbortError check in the delivery catch handler.
|
|
90
|
+
const closeController = new AbortController();
|
|
91
|
+
const closeSignal = closeController.signal;
|
|
71
92
|
/**
|
|
72
93
|
* holds inflight messages by idempotency key to ensure
|
|
73
94
|
* that we don't queue the same message multiple times
|
|
@@ -99,6 +120,16 @@ export function createQueue(config) {
|
|
|
99
120
|
});
|
|
100
121
|
}
|
|
101
122
|
(async () => {
|
|
123
|
+
// Honor the caller's requested delivery delay before acquiring a queue
|
|
124
|
+
// slot. Sleeping outside the semaphore so a delayed message doesn't
|
|
125
|
+
// hold a worker hostage for its delay window — the worker should be
|
|
126
|
+
// free to process other (immediate) messages until this one is ready.
|
|
127
|
+
// VQS-side queues honor delaySeconds at the broker, so this brings
|
|
128
|
+
// world-local in line with production behavior.
|
|
129
|
+
if (opts?.delaySeconds && opts.delaySeconds > 0) {
|
|
130
|
+
const delayMs = Math.min(opts.delaySeconds * 1000, MAX_SAFE_TIMEOUT_MS);
|
|
131
|
+
await setTimeout(delayMs, undefined, { signal: closeSignal });
|
|
132
|
+
}
|
|
102
133
|
const token = semaphore.tryAcquire();
|
|
103
134
|
if (!token) {
|
|
104
135
|
console.warn(`[world-local]: concurrency limit (${WORKFLOW_LOCAL_QUEUE_CONCURRENCY}) reached, waiting for queue to free up`);
|
|
@@ -148,7 +179,9 @@ export function createQueue(config) {
|
|
|
148
179
|
// persistent state and returns another timeoutSeconds if needed.
|
|
149
180
|
if (timeoutSeconds > 0) {
|
|
150
181
|
const timeoutMs = Math.min(timeoutSeconds * 1000, MAX_SAFE_TIMEOUT_MS);
|
|
151
|
-
await setTimeout(timeoutMs
|
|
182
|
+
await setTimeout(timeoutMs, undefined, {
|
|
183
|
+
signal: closeSignal,
|
|
184
|
+
});
|
|
152
185
|
}
|
|
153
186
|
continue;
|
|
154
187
|
}
|
|
@@ -167,7 +200,7 @@ export function createQueue(config) {
|
|
|
167
200
|
// VQS uses 5s linear for attempts 1–32, then exponential, but for
|
|
168
201
|
// local dev linear 5s is sufficient — the handler enforces the real
|
|
169
202
|
// cap at MAX_QUEUE_DELIVERIES (48) which keeps total time under ~4min.
|
|
170
|
-
await setTimeout(5000);
|
|
203
|
+
await setTimeout(5000, undefined, { signal: closeSignal });
|
|
171
204
|
}
|
|
172
205
|
console.error(`[world-local] Queue message exhausted safety limit (${MAX_LOCAL_SAFETY_LIMIT} attempts)`, {
|
|
173
206
|
queueName,
|
|
@@ -185,7 +218,21 @@ export function createQueue(config) {
|
|
|
185
218
|
// These are expected and should not cause unhandled rejection warnings
|
|
186
219
|
const isAbortError = err?.name === 'AbortError' || err?.name === 'ResponseAborted';
|
|
187
220
|
if (!isAbortError) {
|
|
188
|
-
|
|
221
|
+
if (isDetachedArrayBufferQueueError(err)) {
|
|
222
|
+
console.error(`[local world] Queue operation failed: detected "${DETACHED_ARRAYBUFFER_ERROR}". ` +
|
|
223
|
+
"This usually means a Next.js proxy/middleware consumed Workflow's internal " +
|
|
224
|
+
'request before the executor could read it. Exclude `/.well-known/workflow/*` ' +
|
|
225
|
+
`from your matcher. See ${PROXY_HANDLER_DOCS_URL}`, {
|
|
226
|
+
queueName,
|
|
227
|
+
messageId,
|
|
228
|
+
...(runId && { runId }),
|
|
229
|
+
...(stepId && { stepId }),
|
|
230
|
+
originalError: err,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
console.error('[local world] Queue operation failed:', err);
|
|
235
|
+
}
|
|
189
236
|
}
|
|
190
237
|
})
|
|
191
238
|
.finally(() => {
|
|
@@ -245,8 +292,13 @@ export function createQueue(config) {
|
|
|
245
292
|
directHandlers.set(prefix, handler);
|
|
246
293
|
},
|
|
247
294
|
async close() {
|
|
295
|
+
// Idempotent: shutdown paths (CLI signal handlers, test teardown)
|
|
296
|
+
// may close the queue more than once.
|
|
297
|
+
if (closeSignal.aborted)
|
|
298
|
+
return;
|
|
299
|
+
closeController.abort();
|
|
248
300
|
await httpAgent.close();
|
|
249
301
|
},
|
|
250
302
|
};
|
|
251
303
|
}
|
|
252
|
-
//# sourceMappingURL=queue.js.map
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFDTCxTQUFTLEVBQ1QsY0FBYyxFQUdkLGNBQWMsR0FDZixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sa0JBQWtCO0lBQ2IsV0FBVyxHQUFHLGtCQUFrQixDQUFDO0lBRTFDLFNBQVMsQ0FBQyxLQUFjO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWtDO1FBQ2xELE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7UUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSTtnQkFBRSxNQUFNO1lBQ2hCLElBQUksS0FBSztnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsbUZBQW1GO0FBQ25GLCtGQUErRjtBQUMvRixNQUFNLDBCQUEwQixHQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLFFBQVEsQ0FBQztBQUVYLG9GQUFvRjtBQUNwRiw0RkFBNEY7QUFDNUYsbUZBQW1GO0FBQ25GLGdFQUFnRTtBQUNoRSxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQUV2QyxtRUFBbUU7QUFDbkUsb0VBQW9FO0FBQ3BFLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLE1BQU0sZ0NBQWdDLEdBQ3BDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDakUseUJBQXlCLENBQUM7QUFXNUIsTUFBTSwwQkFBMEIsR0FDOUIsc0VBQXNFLENBQUM7QUFDekUsTUFBTSxzQkFBc0IsR0FDMUIsNEVBQTRFLENBQUM7QUFFL0UsU0FBUywrQkFBK0IsQ0FBQyxLQUFjO0lBQ3JELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVyxDQUFDO0lBRW5DLE9BQU8sT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN2RSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLElBQ0UsU0FBUyxJQUFJLE9BQU87WUFDcEIsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFDbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsRUFDcEQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLFNBQXlCO0lBSTlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRW5ELE9BQU87UUFDTCxRQUFRLEVBQUUsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQy9DLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBdUI7SUFDakQsd0VBQXdFO0lBQ3hFLGdEQUFnRDtJQUNoRCx3RUFBd0U7SUFDeEUsdURBQXVEO0lBQ3ZELDBFQUEwRTtJQUMxRSxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQztRQUMxQixjQUFjLEVBQUUsQ0FBQztRQUNqQixXQUFXLEVBQUUsSUFBSTtRQUNqQixnQkFBZ0IsRUFBRSxNQUFNO0tBQ3pCLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFFN0QsdUVBQXVFO0lBQ3ZFLHVFQUF1RTtJQUN2RSxxRUFBcUU7SUFDckUsNkRBQTZEO0lBQzdELG9EQUFvRDtJQUNwRCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQzlDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFFM0M7OztPQUdHO0lBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUN0RCwyRUFBMkU7SUFDM0UsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7SUFFeEQsTUFBTSxLQUFLLEdBQW1CLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQy9ELE1BQU0sT0FBTyxHQUFHLEVBQW9CLENBQUM7UUFFckMsSUFBSSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzRCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekQsK0RBQStEO1FBQy9ELGlGQUFpRjtRQUNqRixNQUFNLEdBQUcsR0FBRyxPQUFrQyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FFN0MsQ0FBQztRQUNkLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQXVCLENBQUM7UUFFL0QsSUFBSSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNoQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNoQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNWLHVFQUF1RTtZQUN2RSxvRUFBb0U7WUFDcEUsb0VBQW9FO1lBQ3BFLHNFQUFzRTtZQUN0RSxtRUFBbUU7WUFDbkUsZ0RBQWdEO1lBQ2hELElBQUksSUFBSSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsSUFBSSxDQUNWLHFDQUFxQyxnQ0FBZ0MseUNBQXlDLENBQy9HLENBQUM7Z0JBQ0YsTUFBTSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsQ0FBQztZQUNELDZEQUE2RDtZQUM3RCw0RUFBNEU7WUFDNUUsK0VBQStFO1lBQy9FLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO1lBQ25DLElBQUksQ0FBQztnQkFDSCxLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsTUFBTSxPQUFPLEdBQTJCO3dCQUN0QyxHQUFHLElBQUksRUFBRSxPQUFPO3dCQUNoQixjQUFjLEVBQUUsa0JBQWtCO3dCQUNsQyxrQkFBa0IsRUFBRSxTQUFTO3dCQUM3QixrQkFBa0IsRUFBRSxTQUFTO3dCQUM3Qix1QkFBdUIsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztxQkFDN0MsQ0FBQztvQkFDRixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNqRCxJQUFJLFFBQWtCLENBQUM7b0JBRXZCLElBQUksYUFBYSxFQUFFLENBQUM7d0JBQ2xCLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUNyQiw0Q0FBNEMsUUFBUSxFQUFFLEVBQ3REOzRCQUNFLE1BQU0sRUFBRSxNQUFNOzRCQUNkLE9BQU87NEJBQ1AsSUFBSTt5QkFDTCxDQUNGLENBQUM7d0JBQ0YsUUFBUSxHQUFHLE1BQU0sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0QyxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzdDLGtJQUFrSTt3QkFDbEksUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUNwQixHQUFHLE9BQU8sNEJBQTRCLFFBQVEsRUFBRSxFQUNoRDs0QkFDRSxNQUFNLEVBQUUsTUFBTTs0QkFDZCxNQUFNLEVBQUUsTUFBTTs0QkFDZCxVQUFVLEVBQUUsU0FBUzs0QkFDckIsT0FBTzs0QkFDUCxJQUFJO3lCQUNFLENBQ1QsQ0FBQztvQkFDSixDQUFDO29CQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUVuQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDaEIsSUFBSSxDQUFDOzRCQUNILE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRCQUMvRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksY0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDO2dDQUMzRCw2RUFBNkU7Z0NBQzdFLHNFQUFzRTtnQ0FDdEUsaUVBQWlFO2dDQUNqRSxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQ0FDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDeEIsY0FBYyxHQUFHLElBQUksRUFDckIsbUJBQW1CLENBQ3BCLENBQUM7b0NBQ0YsTUFBTSxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRTt3Q0FDckMsTUFBTSxFQUFFLFdBQVc7cUNBQ3BCLENBQUMsQ0FBQztnQ0FDTCxDQUFDO2dDQUNELFNBQVM7NEJBQ1gsQ0FBQzt3QkFDSCxDQUFDO3dCQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7d0JBQ1YsT0FBTztvQkFDVCxDQUFDO29CQUVELE9BQU8sQ0FBQyxLQUFLLENBQ1gsK0NBQStDLE9BQU8sR0FBRyxDQUFDLFVBQVUsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUN0Rjt3QkFDRSxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO3dCQUN2QixHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7d0JBQ3pCLFlBQVksRUFBRSxJQUFJO3FCQUNuQixDQUNGLENBQUM7b0JBRUYsa0VBQWtFO29CQUNsRSxrRUFBa0U7b0JBQ2xFLG9FQUFvRTtvQkFDcEUsdUVBQXVFO29CQUN2RSxNQUFNLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQzdELENBQUM7Z0JBRUQsT0FBTyxDQUFDLEtBQUssQ0FDWCx1REFBdUQsc0JBQXNCLFlBQVksRUFDekY7b0JBQ0UsU0FBUztvQkFDVCxTQUFTO29CQUNULEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUMxQixDQUNGLENBQUM7WUFDSixDQUFDO29CQUFTLENBQUM7Z0JBQ1QsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsRUFBRTthQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2Isb0ZBQW9GO1lBQ3BGLHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FDaEIsR0FBRyxFQUFFLElBQUksS0FBSyxZQUFZLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyxpQkFBaUIsQ0FBQztZQUNoRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksK0JBQStCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxDQUFDLEtBQUssQ0FDWCxtREFBbUQsMEJBQTBCLEtBQUs7d0JBQ2hGLDZFQUE2RTt3QkFDN0UsK0VBQStFO3dCQUMvRSwwQkFBMEIsc0JBQXNCLEVBQUUsRUFDcEQ7d0JBQ0UsU0FBUzt3QkFDVCxTQUFTO3dCQUNULEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDdkIsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUN6QixhQUFhLEVBQUUsR0FBRztxQkFDbkIsQ0FDRixDQUFDO2dCQUNKLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDWixLQUFLLE1BQU0sRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUN6QixFQUFFLEVBQUUsQ0FBQztZQUNQLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVCLGtCQUFrQixFQUFFLGNBQWM7UUFDbEMsa0JBQWtCLEVBQUUsU0FBUztRQUM3Qix1QkFBdUIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtLQUMzQyxDQUFDLENBQUM7SUFFSCxNQUFNLGtCQUFrQixHQUFnQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUMxRSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNuQixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEI7b0JBQ0UsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUk7d0JBQ2QsQ0FBQyxDQUFDLHNCQUFzQjt3QkFDeEIsQ0FBQyxDQUFDLDBCQUEwQjtpQkFDL0IsRUFDRCxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbkQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUV0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksa0JBQWtCLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBRXRFLElBQUksY0FBYyxHQUFrQixJQUFJLENBQUM7Z0JBQ3pDLElBQUksT0FBTyxNQUFNLEVBQUUsY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMvQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDdkIsTUFBTSxDQUFDLGNBQWMsRUFDckIsMEJBQTBCLENBQzNCLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztnQkFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUE2QixLQUFLLElBQUksRUFBRTtRQUMzRCxNQUFNLFdBQVcsR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFDO1FBQzNDLE9BQU8sYUFBYSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUs7UUFDTCxrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLGVBQWUsQ0FBQyxNQUFtQixFQUFFLE9BQXNCO1lBQ3pELGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSztZQUNULGtFQUFrRTtZQUNsRSxzQ0FBc0M7WUFDdEMsSUFBSSxXQUFXLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ2hDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSAnbm9kZTp0aW1lcnMvcHJvbWlzZXMnO1xuaW1wb3J0IHR5cGUgeyBUcmFuc3BvcnQgfSBmcm9tICdAdmVyY2VsL3F1ZXVlJztcbmltcG9ydCB7XG4gIE1lc3NhZ2VJZCxcbiAgcGFyc2VRdWV1ZU5hbWUsXG4gIHR5cGUgUXVldWUsXG4gIHR5cGUgUXVldWVQcmVmaXgsXG4gIFZhbGlkUXVldWVOYW1lLFxufSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgU2VtYSB9IGZyb20gJ2FzeW5jLXNlbWEnO1xuaW1wb3J0IHsgbW9ub3RvbmljRmFjdG9yeSB9IGZyb20gJ3VsaWQnO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICd1bmRpY2knO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZC92NCc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gJy4vY29uZmlnLmpzJztcbmltcG9ydCB7IHJlc29sdmVCYXNlVXJsIH0gZnJvbSAnLi9jb25maWcuanMnO1xuaW1wb3J0IHsganNvblJlcGxhY2VyLCBqc29uUmV2aXZlciB9IGZyb20gJy4vZnMuanMnO1xuaW1wb3J0IHsgZ2V0UGFja2FnZUluZm8gfSBmcm9tICcuL2luaXQuanMnO1xuXG4vKipcbiAqIEpTT04gdHJhbnNwb3J0IHRoYXQgcHJlc2VydmVzIFVpbnQ4QXJyYXkgdmFsdWVzIHVzaW5nIHRoZSBzYW1lXG4gKiByZXBsYWNlci9yZXZpdmVyIHRoYXQgd29ybGQtbG9jYWwgdXNlcyBmb3IgZmlsZXN5c3RlbSBzdG9yYWdlLlxuICogVWludDhBcnJheSDihpIgeyBfX3R5cGU6ICdVaW50OEFycmF5JywgZGF0YTogJzxiYXNlNjQ+JyB9IGluIEpTT04uXG4gKi9cbmNsYXNzIFR5cGVkSnNvblRyYW5zcG9ydCBpbXBsZW1lbnRzIFRyYW5zcG9ydDx1bmtub3duPiB7XG4gIHJlYWRvbmx5IGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuXG4gIHNlcmlhbGl6ZSh2YWx1ZTogdW5rbm93bik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHZhbHVlLCBqc29uUmVwbGFjZXIpKTtcbiAgfVxuXG4gIGFzeW5jIGRlc2VyaWFsaXplKHN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBjb25zdCBjaHVua3M6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGlmIChkb25lKSBicmVhaztcbiAgICAgIGlmICh2YWx1ZSkgY2h1bmtzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodGV4dCwganNvblJldml2ZXIpO1xuICB9XG59XG5cbi8vIEZvciBsb2NhbCBxdWV1ZSwgdGhlcmUgaXMgbm8gdGVjaG5pY2FsIGxpbWl0IG9uIHRoZSBtZXNzYWdlIHZpc2liaWxpdHkgbGlmZXNwYW4sXG4vLyBidXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIHRvIHNldCBhIG1heCB2aXNpYmlsaXR5IGxpbWl0LlxuY29uc3QgTE9DQUxfUVVFVUVfTUFYX1ZJU0lCSUxJVFkgPVxuICBwYXJzZUludChwcm9jZXNzLmVudi5XT1JLRkxPV19MT0NBTF9RVUVVRV9NQVhfVklTSUJJTElUWSA/PyAnMCcsIDEwKSB8fFxuICBJbmZpbml0eTtcblxuLy8gTWF4aW11bSBzYWZlIGRlbGF5IGZvciBzZXRUaW1lb3V0IGluIE5vZGUuanMgKDJeMzEgLSAxIG1pbGxpc2Vjb25kcyDiiYggMjQuODUgZGF5cylcbi8vIExhcmdlciB2YWx1ZXMgY2F1c2UgXCJUaW1lb3V0T3ZlcmZsb3dXYXJuaW5nOiBYIGRvZXMgbm90IGZpdCBpbnRvIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyXCJcbi8vIFdoZW4gdGhlIGNsYW1wZWQgdGltZW91dCBmaXJlcywgdGhlIGhhbmRsZXIgd2lsbCByZWNhbGN1bGF0ZSByZW1haW5pbmcgdGltZSBmcm9tXG4vLyBwZXJzaXN0ZW50IHN0YXRlIGFuZCByZXR1cm4gYW5vdGhlciB0aW1lb3V0U2Vjb25kcyBpZiBuZWVkZWQuXG5jb25zdCBNQVhfU0FGRV9USU1FT1VUX01TID0gMjE0NzQ4MzY0NztcblxuLy8gVGhlIGxvY2FsIHdvcmtlcnMgc2hhcmUgdGhlIHNhbWUgTm9kZS5qcyBwcm9jZXNzIGFuZCBldmVudCBsb29wLFxuLy8gc28gd2UgbmVlZCB0byBsaW1pdCBjb25jdXJyZW5jeSB0byBhdm9pZCBvdmVyd2hlbG1pbmcgdGhlIHN5c3RlbS5cbmNvbnN0IERFRkFVTFRfQ09OQ1VSUkVOQ1lfTElNSVQgPSAxMDAwO1xuY29uc3QgV09SS0ZMT1dfTE9DQUxfUVVFVUVfQ09OQ1VSUkVOQ1kgPVxuICBwYXJzZUludChwcm9jZXNzLmVudi5XT1JLRkxPV19MT0NBTF9RVUVVRV9DT05DVVJSRU5DWSA/PyAnMCcsIDEwKSB8fFxuICBERUZBVUxUX0NPTkNVUlJFTkNZX0xJTUlUO1xuXG5leHBvcnQgdHlwZSBEaXJlY3RIYW5kbGVyID0gKHJlcTogUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXNwb25zZT47XG5cbmV4cG9ydCB0eXBlIExvY2FsUXVldWUgPSBRdWV1ZSAmIHtcbiAgLyoqIENsb3NlIHRoZSBIVFRQIGFnZW50IGFuZCByZWxlYXNlIHJlc291cmNlcy4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFJlZ2lzdGVyIGEgZGlyZWN0IGluLXByb2Nlc3MgaGFuZGxlciBmb3IgYSBxdWV1ZSBwcmVmaXgsIGJ5cGFzc2luZyBIVFRQLiAqL1xuICByZWdpc3RlckhhbmRsZXIocHJlZml4OiBRdWV1ZVByZWZpeCwgaGFuZGxlcjogRGlyZWN0SGFuZGxlcik6IHZvaWQ7XG59O1xuXG5jb25zdCBERVRBQ0hFRF9BUlJBWUJVRkZFUl9FUlJPUiA9XG4gICdDYW5ub3QgcGVyZm9ybSBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2Ugb24gYSBkZXRhY2hlZCBBcnJheUJ1ZmZlcic7XG5jb25zdCBQUk9YWV9IQU5ETEVSX0RPQ1NfVVJMID1cbiAgJ2h0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi9kb2NzL2dldHRpbmctc3RhcnRlZC9uZXh0I2NvbmZpZ3VyZS1wcm94eS1oYW5kbGVyJztcblxuZnVuY3Rpb24gaXNEZXRhY2hlZEFycmF5QnVmZmVyUXVldWVFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBsZXQgY3VycmVudCA9IGVycm9yO1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDx1bmtub3duPigpO1xuXG4gIHdoaWxlIChjdXJyZW50ICYmIHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyAmJiAhdmlzaXRlZC5oYXMoY3VycmVudCkpIHtcbiAgICB2aXNpdGVkLmFkZChjdXJyZW50KTtcbiAgICBpZiAoXG4gICAgICAnbWVzc2FnZScgaW4gY3VycmVudCAmJlxuICAgICAgdHlwZW9mIGN1cnJlbnQubWVzc2FnZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgIGN1cnJlbnQubWVzc2FnZS5pbmNsdWRlcyhERVRBQ0hFRF9BUlJBWUJVRkZFUl9FUlJPUilcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjdXJyZW50ID0gJ2NhdXNlJyBpbiBjdXJyZW50ID8gY3VycmVudC5jYXVzZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0UXVldWVSb3V0ZShxdWV1ZU5hbWU6IFZhbGlkUXVldWVOYW1lKToge1xuICBwYXRobmFtZTogJ2Zsb3cnIHwgJ3N0ZXAnO1xuICBwcmVmaXg6IFF1ZXVlUHJlZml4O1xufSB7XG4gIGNvbnN0IHsga2luZCwgcHJlZml4IH0gPSBwYXJzZVF1ZXVlTmFtZShxdWV1ZU5hbWUpO1xuXG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWU6IGtpbmQgPT09ICd3b3JrZmxvdycgPyAnZmxvdycgOiAnc3RlcCcsXG4gICAgcHJlZml4LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUXVldWUoY29uZmlnOiBQYXJ0aWFsPENvbmZpZz4pOiBMb2NhbFF1ZXVlIHtcbiAgLy8gQ3JlYXRlIGEgY3VzdG9tIGFnZW50IG9wdGltaXplZCBmb3IgaGlnaC1jb25jdXJyZW5jeSBsb2NhbCB3b3JrZmxvd3M6XG4gIC8vIC0gaGVhZGVyc1RpbWVvdXQ6IDAgYWxsb3dzIGxvbmctcnVubmluZyBzdGVwc1xuICAvLyAtIGNvbm5lY3Rpb25zOiAxMDAwIGFsbG93cyBtYW55IHBhcmFsbGVsIGNvbm5lY3Rpb25zIHRvIHRoZSBzYW1lIGhvc3RcbiAgLy8gLSBwaXBlbGluaW5nOiAxIChkZWZhdWx0KSBmb3IgSFRUUC8xLjEgY29tcGF0aWJpbGl0eVxuICAvLyAtIGtlZXBBbGl2ZVRpbWVvdXQ6IDMwcyBrZWVwcyBjb25uZWN0aW9ucyB3YXJtIGZvciByYXBpZCBzdGVwIGV4ZWN1dGlvblxuICBjb25zdCBodHRwQWdlbnQgPSBuZXcgQWdlbnQoe1xuICAgIGhlYWRlcnNUaW1lb3V0OiAwLFxuICAgIGNvbm5lY3Rpb25zOiAxMDAwLFxuICAgIGtlZXBBbGl2ZVRpbWVvdXQ6IDMwXzAwMCxcbiAgfSk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IG5ldyBUeXBlZEpzb25UcmFuc3BvcnQoKTtcbiAgY29uc3QgZ2VuZXJhdGVJZCA9IG1vbm90b25pY0ZhY3RvcnkoKTtcbiAgY29uc3Qgc2VtYXBob3JlID0gbmV3IFNlbWEoV09SS0ZMT1dfTE9DQUxfUVVFVUVfQ09OQ1VSUkVOQ1kpO1xuXG4gIC8vIEFib3J0ZWQgYnkgY2xvc2UoKTogY2FuY2VscyBldmVyeSBwZW5kaW5nIHNsZWVwIChkZWxheWVkIGRlbGl2ZXJpZXMsXG4gIC8vIHRpbWVvdXRTZWNvbmRzIHJlLWRlbGl2ZXJpZXMsIHJldHJ5IGJhY2tvZmZzKSBzbyBzaHV0ZG93biBpc24ndCBoZWxkXG4gIC8vIGhvc3RhZ2UgYnkgYSB0aW1lciBhbmQgbm8gZGVsaXZlcnkgaXMgYXR0ZW1wdGVkIGFnYWluc3QgdGhlIGNsb3NlZFxuICAvLyBhZ2VudC4gVGhlIHJlc3VsdGluZyBBYm9ydEVycm9yIGlzIHNpbGVudGx5IGRyb3BwZWQgYnkgdGhlXG4gIC8vIGlzQWJvcnRFcnJvciBjaGVjayBpbiB0aGUgZGVsaXZlcnkgY2F0Y2ggaGFuZGxlci5cbiAgY29uc3QgY2xvc2VDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCBjbG9zZVNpZ25hbCA9IGNsb3NlQ29udHJvbGxlci5zaWduYWw7XG5cbiAgLyoqXG4gICAqIGhvbGRzIGluZmxpZ2h0IG1lc3NhZ2VzIGJ5IGlkZW1wb3RlbmN5IGtleSB0byBlbnN1cmVcbiAgICogdGhhdCB3ZSBkb24ndCBxdWV1ZSB0aGUgc2FtZSBtZXNzYWdlIG11bHRpcGxlIHRpbWVzXG4gICAqL1xuICBjb25zdCBpbmZsaWdodE1lc3NhZ2VzID0gbmV3IE1hcDxzdHJpbmcsIE1lc3NhZ2VJZD4oKTtcbiAgLyoqIERpcmVjdCBpbi1wcm9jZXNzIGhhbmRsZXJzIGJ5IHF1ZXVlIHByZWZpeCwgYnlwYXNzaW5nIEhUVFAgd2hlbiBzZXQuICovXG4gIGNvbnN0IGRpcmVjdEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIERpcmVjdEhhbmRsZXI+KCk7XG5cbiAgY29uc3QgcXVldWU6IFF1ZXVlWydxdWV1ZSddID0gYXN5bmMgKHF1ZXVlTmFtZSwgbWVzc2FnZSwgb3B0cykgPT4ge1xuICAgIGNvbnN0IGNsZWFudXAgPSBbXSBhcyAoKCkgPT4gdm9pZClbXTtcblxuICAgIGlmIChvcHRzPy5pZGVtcG90ZW5jeUtleSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBpbmZsaWdodE1lc3NhZ2VzLmdldChvcHRzLmlkZW1wb3RlbmN5S2V5KTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICByZXR1cm4geyBtZXNzYWdlSWQ6IGV4aXN0aW5nIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYm9keSA9IHRyYW5zcG9ydC5zZXJpYWxpemUobWVzc2FnZSk7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgcHJlZml4IH0gPSBnZXRRdWV1ZVJvdXRlKHF1ZXVlTmFtZSk7XG4gICAgY29uc3QgbWVzc2FnZUlkID0gTWVzc2FnZUlkLnBhcnNlKGBtc2dfJHtnZW5lcmF0ZUlkKCl9YCk7XG5cbiAgICAvLyBFeHRyYWN0IGlkZW50aWZpZXJzIGZyb20gdGhlIG1lc3NhZ2UgZm9yIHN0cnVjdHVyZWQgbG9nZ2luZy5cbiAgICAvLyBXb3JrZmxvdyBtZXNzYWdlcyBoYXZlIGBydW5JZGAsIHN0ZXAgbWVzc2FnZXMgaGF2ZSBgd29ya2Zsb3dSdW5JZGAgKyBgc3RlcElkYC5cbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IHJ1bklkID0gKG1zZy5ydW5JZCA/PyBtc2cud29ya2Zsb3dSdW5JZCA/PyB1bmRlZmluZWQpIGFzXG4gICAgICB8IHN0cmluZ1xuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RlcElkID0gKG1zZy5zdGVwSWQgPz8gdW5kZWZpbmVkKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0cz8uaWRlbXBvdGVuY3lLZXkpIHtcbiAgICAgIGNvbnN0IGtleSA9IG9wdHMuaWRlbXBvdGVuY3lLZXk7XG4gICAgICBpbmZsaWdodE1lc3NhZ2VzLnNldChrZXksIG1lc3NhZ2VJZCk7XG4gICAgICBjbGVhbnVwLnB1c2goKCkgPT4ge1xuICAgICAgICBpbmZsaWdodE1lc3NhZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIC8vIEhvbm9yIHRoZSBjYWxsZXIncyByZXF1ZXN0ZWQgZGVsaXZlcnkgZGVsYXkgYmVmb3JlIGFjcXVpcmluZyBhIHF1ZXVlXG4gICAgICAvLyBzbG90LiBTbGVlcGluZyBvdXRzaWRlIHRoZSBzZW1hcGhvcmUgc28gYSBkZWxheWVkIG1lc3NhZ2UgZG9lc24ndFxuICAgICAgLy8gaG9sZCBhIHdvcmtlciBob3N0YWdlIGZvciBpdHMgZGVsYXkgd2luZG93IOKAlCB0aGUgd29ya2VyIHNob3VsZCBiZVxuICAgICAgLy8gZnJlZSB0byBwcm9jZXNzIG90aGVyIChpbW1lZGlhdGUpIG1lc3NhZ2VzIHVudGlsIHRoaXMgb25lIGlzIHJlYWR5LlxuICAgICAgLy8gVlFTLXNpZGUgcXVldWVzIGhvbm9yIGRlbGF5U2Vjb25kcyBhdCB0aGUgYnJva2VyLCBzbyB0aGlzIGJyaW5nc1xuICAgICAgLy8gd29ybGQtbG9jYWwgaW4gbGluZSB3aXRoIHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gICAgICBpZiAob3B0cz8uZGVsYXlTZWNvbmRzICYmIG9wdHMuZGVsYXlTZWNvbmRzID4gMCkge1xuICAgICAgICBjb25zdCBkZWxheU1zID0gTWF0aC5taW4ob3B0cy5kZWxheVNlY29uZHMgKiAxMDAwLCBNQVhfU0FGRV9USU1FT1VUX01TKTtcbiAgICAgICAgYXdhaXQgc2V0VGltZW91dChkZWxheU1zLCB1bmRlZmluZWQsIHsgc2lnbmFsOiBjbG9zZVNpZ25hbCB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9rZW4gPSBzZW1hcGhvcmUudHJ5QWNxdWlyZSgpO1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFt3b3JsZC1sb2NhbF06IGNvbmN1cnJlbmN5IGxpbWl0ICgke1dPUktGTE9XX0xPQ0FMX1FVRVVFX0NPTkNVUlJFTkNZfSkgcmVhY2hlZCwgd2FpdGluZyBmb3IgcXVldWUgdG8gZnJlZSB1cGBcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgc2VtYXBob3JlLmFjcXVpcmUoKTtcbiAgICAgIH1cbiAgICAgIC8vIFNhZmV0eSBsaW1pdCB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzIGluIHRoZSBsb2NhbCBxdWV1ZS5cbiAgICAgIC8vIFRoZSBhY3R1YWwgbWF4IGRlbGl2ZXJ5IGVuZm9yY2VtZW50IGhhcHBlbnMgaW4gdGhlIHdvcmtmbG93L3N0ZXAgaGFuZGxlcnNcbiAgICAgIC8vIChhdCBNQVhfUVVFVUVfREVMSVZFUklFUyA9IDQ4KSwgc28gdGhpcyBqdXN0IG5lZWRzIHRvIGJlIGNvbWZvcnRhYmx5IGhpZ2hlci5cbiAgICAgIGNvbnN0IE1BWF9MT0NBTF9TQUZFVFlfTElNSVQgPSAyNTY7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IE1BWF9MT0NBTF9TQUZFVFlfTElNSVQ7IGF0dGVtcHQrKykge1xuICAgICAgICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICAuLi5vcHRzPy5oZWFkZXJzLFxuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICd4LXZxcy1xdWV1ZS1uYW1lJzogcXVldWVOYW1lLFxuICAgICAgICAgICAgJ3gtdnFzLW1lc3NhZ2UtaWQnOiBtZXNzYWdlSWQsXG4gICAgICAgICAgICAneC12cXMtbWVzc2FnZS1hdHRlbXB0JzogU3RyaW5nKGF0dGVtcHQgKyAxKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGRpcmVjdEhhbmRsZXIgPSBkaXJlY3RIYW5kbGVycy5nZXQocHJlZml4KTtcbiAgICAgICAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgICAgICAgaWYgKGRpcmVjdEhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgICAgICAgICAgICBgaHR0cDovL2xvY2FsaG9zdC8ud2VsbC1rbm93bi93b3JrZmxvdy92MS8ke3BhdGhuYW1lfWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGRpcmVjdEhhbmRsZXIocmVxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IGF3YWl0IHJlc29sdmVCYXNlVXJsKGNvbmZpZyk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSB1bmRpY2kgdjcgZGlzcGF0Y2hlciB0eXBlcyBkb24ndCBtYXRjaCBAdHlwZXMvbm9kZSdzIFJlcXVlc3RJbml0XG4gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgICAgICAgICBgJHtiYXNlVXJsfS8ud2VsbC1rbm93bi93b3JrZmxvdy92MS8ke3BhdGhuYW1lfWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBkdXBsZXg6ICdoYWxmJyxcbiAgICAgICAgICAgICAgICBkaXNwYXRjaGVyOiBodHRwQWdlbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICB9IGFzIGFueVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0U2Vjb25kcyA9IE51bWJlcihKU09OLnBhcnNlKHRleHQpLnRpbWVvdXRTZWNvbmRzKTtcbiAgICAgICAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZSh0aW1lb3V0U2Vjb25kcykgJiYgdGltZW91dFNlY29uZHMgPj0gMCkge1xuICAgICAgICAgICAgICAgIC8vIENsYW1wIHRvIE1BWF9TQUZFX1RJTUVPVVRfTVMgdG8gYXZvaWQgTm9kZS5qcyBzZXRUaW1lb3V0IG92ZXJmbG93IHdhcm5pbmcuXG4gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGlzIGZpcmVzIGVhcmx5LCB0aGUgaGFuZGxlciByZWNhbGN1bGF0ZXMgcmVtYWluaW5nIHRpbWUgZnJvbVxuICAgICAgICAgICAgICAgIC8vIHBlcnNpc3RlbnQgc3RhdGUgYW5kIHJldHVybnMgYW5vdGhlciB0aW1lb3V0U2Vjb25kcyBpZiBuZWVkZWQuXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXRTZWNvbmRzID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGltZW91dE1zID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzICogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgTUFYX1NBRkVfVElNRU9VVF9NU1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHNldFRpbWVvdXQodGltZW91dE1zLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsOiBjbG9zZVNpZ25hbCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgW3dvcmxkLWxvY2FsXSBRdWV1ZSBtZXNzYWdlIGZhaWxlZCAoYXR0ZW1wdCAke2F0dGVtcHQgKyAxfSwgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c30pYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcXVldWVOYW1lLFxuICAgICAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgICAgIC4uLihydW5JZCAmJiB7IHJ1bklkIH0pLFxuICAgICAgICAgICAgICAuLi4oc3RlcElkICYmIHsgc3RlcElkIH0pLFxuICAgICAgICAgICAgICBoYW5kbGVyRXJyb3I6IHRleHQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIDVzIGxpbmVhciBiYWNrb2ZmIHRvIGFwcHJveGltYXRlIFZRUyByZXRyeSB0aW1pbmcgaW4gbG9jYWwgZGV2LlxuICAgICAgICAgIC8vIFZRUyB1c2VzIDVzIGxpbmVhciBmb3IgYXR0ZW1wdHMgMeKAkzMyLCB0aGVuIGV4cG9uZW50aWFsLCBidXQgZm9yXG4gICAgICAgICAgLy8gbG9jYWwgZGV2IGxpbmVhciA1cyBpcyBzdWZmaWNpZW50IOKAlCB0aGUgaGFuZGxlciBlbmZvcmNlcyB0aGUgcmVhbFxuICAgICAgICAgIC8vIGNhcCBhdCBNQVhfUVVFVUVfREVMSVZFUklFUyAoNDgpIHdoaWNoIGtlZXBzIHRvdGFsIHRpbWUgdW5kZXIgfjRtaW4uXG4gICAgICAgICAgYXdhaXQgc2V0VGltZW91dCg1MDAwLCB1bmRlZmluZWQsIHsgc2lnbmFsOiBjbG9zZVNpZ25hbCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFt3b3JsZC1sb2NhbF0gUXVldWUgbWVzc2FnZSBleGhhdXN0ZWQgc2FmZXR5IGxpbWl0ICgke01BWF9MT0NBTF9TQUZFVFlfTElNSVR9IGF0dGVtcHRzKWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcXVldWVOYW1lLFxuICAgICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgICAgLi4uKHJ1bklkICYmIHsgcnVuSWQgfSksXG4gICAgICAgICAgICAuLi4oc3RlcElkICYmIHsgc3RlcElkIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNlbWFwaG9yZS5yZWxlYXNlKCk7XG4gICAgICB9XG4gICAgfSkoKVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGNsaWVudCBkaXNjb25uZWN0IGVycm9ycyAoZS5nLiwgYnJvd3NlciByZWZyZXNoIGR1cmluZyBzdHJlYW1pbmcpXG4gICAgICAgIC8vIFRoZXNlIGFyZSBleHBlY3RlZCBhbmQgc2hvdWxkIG5vdCBjYXVzZSB1bmhhbmRsZWQgcmVqZWN0aW9uIHdhcm5pbmdzXG4gICAgICAgIGNvbnN0IGlzQWJvcnRFcnJvciA9XG4gICAgICAgICAgZXJyPy5uYW1lID09PSAnQWJvcnRFcnJvcicgfHwgZXJyPy5uYW1lID09PSAnUmVzcG9uc2VBYm9ydGVkJztcbiAgICAgICAgaWYgKCFpc0Fib3J0RXJyb3IpIHtcbiAgICAgICAgICBpZiAoaXNEZXRhY2hlZEFycmF5QnVmZmVyUXVldWVFcnJvcihlcnIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgW2xvY2FsIHdvcmxkXSBRdWV1ZSBvcGVyYXRpb24gZmFpbGVkOiBkZXRlY3RlZCBcIiR7REVUQUNIRURfQVJSQVlCVUZGRVJfRVJST1J9XCIuIGAgK1xuICAgICAgICAgICAgICAgIFwiVGhpcyB1c3VhbGx5IG1lYW5zIGEgTmV4dC5qcyBwcm94eS9taWRkbGV3YXJlIGNvbnN1bWVkIFdvcmtmbG93J3MgaW50ZXJuYWwgXCIgK1xuICAgICAgICAgICAgICAgICdyZXF1ZXN0IGJlZm9yZSB0aGUgZXhlY3V0b3IgY291bGQgcmVhZCBpdC4gRXhjbHVkZSBgLy53ZWxsLWtub3duL3dvcmtmbG93LypgICcgK1xuICAgICAgICAgICAgICAgIGBmcm9tIHlvdXIgbWF0Y2hlci4gU2VlICR7UFJPWFlfSEFORExFUl9ET0NTX1VSTH1gLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcXVldWVOYW1lLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICAgICAgICAuLi4ocnVuSWQgJiYgeyBydW5JZCB9KSxcbiAgICAgICAgICAgICAgICAuLi4oc3RlcElkICYmIHsgc3RlcElkIH0pLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXJyb3I6IGVycixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW2xvY2FsIHdvcmxkXSBRdWV1ZSBvcGVyYXRpb24gZmFpbGVkOicsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGNsZWFudXApIHtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiB7IG1lc3NhZ2VJZCB9O1xuICB9O1xuXG4gIGNvbnN0IEhlYWRlclBhcnNlciA9IHoub2JqZWN0KHtcbiAgICAneC12cXMtcXVldWUtbmFtZSc6IFZhbGlkUXVldWVOYW1lLFxuICAgICd4LXZxcy1tZXNzYWdlLWlkJzogTWVzc2FnZUlkLFxuICAgICd4LXZxcy1tZXNzYWdlLWF0dGVtcHQnOiB6LmNvZXJjZS5udW1iZXIoKSxcbiAgfSk7XG5cbiAgY29uc3QgY3JlYXRlUXVldWVIYW5kbGVyOiBRdWV1ZVsnY3JlYXRlUXVldWVIYW5kbGVyJ10gPSAocHJlZml4LCBoYW5kbGVyKSA9PiB7XG4gICAgcmV0dXJuIGFzeW5jIChyZXEpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBIZWFkZXJQYXJzZXIuc2FmZVBhcnNlKE9iamVjdC5mcm9tRW50cmllcyhyZXEuaGVhZGVycykpO1xuXG4gICAgICBpZiAoIWhlYWRlcnMuc3VjY2VzcyB8fCAhcmVxLmJvZHkpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXJyb3I6ICFyZXEuYm9keVxuICAgICAgICAgICAgICA/ICdNaXNzaW5nIHJlcXVlc3QgYm9keSdcbiAgICAgICAgICAgICAgOiAnTWlzc2luZyByZXF1aXJlZCBoZWFkZXJzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgc3RhdHVzOiA0MDAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWV1ZU5hbWUgPSBoZWFkZXJzLmRhdGFbJ3gtdnFzLXF1ZXVlLW5hbWUnXTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IGhlYWRlcnMuZGF0YVsneC12cXMtbWVzc2FnZS1pZCddO1xuICAgICAgY29uc3QgYXR0ZW1wdCA9IGhlYWRlcnMuZGF0YVsneC12cXMtbWVzc2FnZS1hdHRlbXB0J107XG5cbiAgICAgIGlmICghcXVldWVOYW1lLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbih7IGVycm9yOiAnVW5oYW5kbGVkIHF1ZXVlJyB9LCB7IHN0YXR1czogNDAwIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgbmV3IFR5cGVkSnNvblRyYW5zcG9ydCgpLmRlc2VyaWFsaXplKHJlcS5ib2R5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoYm9keSwgeyBhdHRlbXB0LCBxdWV1ZU5hbWUsIG1lc3NhZ2VJZCB9KTtcblxuICAgICAgICBsZXQgdGltZW91dFNlY29uZHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdD8udGltZW91dFNlY29uZHMgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGltZW91dFNlY29uZHMgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHJlc3VsdC50aW1lb3V0U2Vjb25kcyxcbiAgICAgICAgICAgIExPQ0FMX1FVRVVFX01BWF9WSVNJQklMSVRZXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aW1lb3V0U2Vjb25kcyAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oeyB0aW1lb3V0U2Vjb25kcyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKHsgb2s6IHRydWUgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihTdHJpbmcoZXJyb3IpLCB7IHN0YXR1czogNTAwIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgZ2V0RGVwbG95bWVudElkOiBRdWV1ZVsnZ2V0RGVwbG95bWVudElkJ10gPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZUluZm8gPSBhd2FpdCBnZXRQYWNrYWdlSW5mbygpO1xuICAgIHJldHVybiBgZHBsX2xvY2FsQCR7cGFja2FnZUluZm8udmVyc2lvbn1gO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcXVldWUsXG4gICAgY3JlYXRlUXVldWVIYW5kbGVyLFxuICAgIGdldERlcGxveW1lbnRJZCxcbiAgICByZWdpc3RlckhhbmRsZXIocHJlZml4OiBRdWV1ZVByZWZpeCwgaGFuZGxlcjogRGlyZWN0SGFuZGxlcikge1xuICAgICAgZGlyZWN0SGFuZGxlcnMuc2V0KHByZWZpeCwgaGFuZGxlcik7XG4gICAgfSxcbiAgICBhc3luYyBjbG9zZSgpIHtcbiAgICAgIC8vIElkZW1wb3RlbnQ6IHNodXRkb3duIHBhdGhzIChDTEkgc2lnbmFsIGhhbmRsZXJzLCB0ZXN0IHRlYXJkb3duKVxuICAgICAgLy8gbWF5IGNsb3NlIHRoZSBxdWV1ZSBtb3JlIHRoYW4gb25jZS5cbiAgICAgIGlmIChjbG9zZVNpZ25hbC5hYm9ydGVkKSByZXR1cm47XG4gICAgICBjbG9zZUNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIGF3YWl0IGh0dHBBZ2VudC5jbG9zZSgpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAsXzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CA8oDnB"}
|