@workflow/world-local 4.2.0 → 4.2.1
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/fs.d.ts +10 -0
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -16
- package/dist/instrumentObject.d.ts.map +1 -1
- package/dist/instrumentObject.js +69 -3
- package/dist/storage/events-storage.d.ts.map +1 -1
- package/dist/storage/events-storage.js +1043 -610
- 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 +2 -1
- package/dist/storage/hooks-storage.d.ts.map +1 -1
- package/dist/storage/hooks-storage.js +120 -7
- package/dist/telemetry.d.ts +8 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +5 -1
- package/package.json +4 -4
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
* Hash a hook token to produce a filesystem-safe constraint filename.
|
|
3
3
|
*/
|
|
4
4
|
export declare function hashToken(token: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Compute the path of the recovery-marker sidecar for a specific
|
|
7
|
+
* `(token, runId, hookId)` triple. Identity is encoded in the
|
|
8
|
+
* filename hash so different token lifetimes (e.g. the same token
|
|
9
|
+
* reused by a later run after the first run was deleted) never
|
|
10
|
+
* contend on a single sidecar — without per-lifetime identity, a
|
|
11
|
+
* stale marker surviving prior-run cleanup could "leak" its
|
|
12
|
+
* eventId into the new lifetime's recovery and cause divergent
|
|
13
|
+
* publication.
|
|
14
|
+
*
|
|
15
|
+
* See `events-storage.ts` for the full recovery-marker rationale.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hookRecoveryMarkerPath(basedir: string, token: string, runId: string, hookId: string): string;
|
|
5
18
|
/**
|
|
6
19
|
* Create a monotonic ULID factory that ensures ULIDs are always increasing
|
|
7
20
|
* even when generated within the same millisecond.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/storage/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/storage/helpers.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,CAQR;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,4BAAwC,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC5B,UAAU,MAAM,MAChB,UAAU,MAAM,KAAG,IAAI,GAAG,IAyB1B,CAAC"}
|
package/dist/storage/helpers.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
|
+
import path from 'node:path';
|
|
2
3
|
import { monotonicFactory } from 'ulid';
|
|
3
4
|
import { stripTag, ulidToDate } from '../fs.js';
|
|
4
5
|
/**
|
|
@@ -7,6 +8,27 @@ import { stripTag, ulidToDate } from '../fs.js';
|
|
|
7
8
|
export function hashToken(token) {
|
|
8
9
|
return createHash('sha256').update(token).digest('hex');
|
|
9
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Compute the path of the recovery-marker sidecar for a specific
|
|
13
|
+
* `(token, runId, hookId)` triple. Identity is encoded in the
|
|
14
|
+
* filename hash so different token lifetimes (e.g. the same token
|
|
15
|
+
* reused by a later run after the first run was deleted) never
|
|
16
|
+
* contend on a single sidecar — without per-lifetime identity, a
|
|
17
|
+
* stale marker surviving prior-run cleanup could "leak" its
|
|
18
|
+
* eventId into the new lifetime's recovery and cause divergent
|
|
19
|
+
* publication.
|
|
20
|
+
*
|
|
21
|
+
* See `events-storage.ts` for the full recovery-marker rationale.
|
|
22
|
+
*/
|
|
23
|
+
export function hookRecoveryMarkerPath(basedir, token, runId, hookId) {
|
|
24
|
+
// Distinct from `hashToken(token)` so a token's claim file and
|
|
25
|
+
// its recovery marker live at different paths AND a different
|
|
26
|
+
// lifetime's recovery marker never collides with this one.
|
|
27
|
+
const key = createHash('sha256')
|
|
28
|
+
.update(`${token}\x00${runId}\x00${hookId}`)
|
|
29
|
+
.digest('hex');
|
|
30
|
+
return path.join(basedir, 'hooks', 'tokens', `${key}.recovery.json`);
|
|
31
|
+
}
|
|
10
32
|
/**
|
|
11
33
|
* Create a monotonic ULID factory that ensures ULIDs are always increasing
|
|
12
34
|
* even when generated within the same millisecond.
|
|
@@ -41,4 +63,4 @@ export const getObjectCreatedAt = (idPrefix) => (filename) => {
|
|
|
41
63
|
const ulid = id.replace(replaceRegex, '');
|
|
42
64
|
return ulidToDate(ulid);
|
|
43
65
|
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQ3JDLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxPQUFlLEVBQ2YsS0FBYSxFQUNiLEtBQWEsRUFDYixNQUFjO0lBRWQsK0RBQStEO0lBQy9ELDhEQUE4RDtJQUM5RCwyREFBMkQ7SUFDM0QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUM3QixNQUFNLENBQUMsR0FBRyxLQUFLLE9BQU8sS0FBSyxPQUFPLE1BQU0sRUFBRSxDQUFDO1NBQzNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxHQUFHLGdCQUFnQixDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUVuRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FDN0IsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDckIsQ0FBQyxRQUFnQixFQUFlLEVBQUU7SUFDaEMsMENBQTBDO0lBQzFDLG1EQUFtRDtJQUNuRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFFdEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXpDLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckIsa0ZBQWtGO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN4Qiw4RUFBOEU7UUFDOUUscUZBQXFGO1FBQ3JGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHVFQUF1RTtJQUN2RSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgbW9ub3RvbmljRmFjdG9yeSB9IGZyb20gJ3VsaWQnO1xuaW1wb3J0IHsgc3RyaXBUYWcsIHVsaWRUb0RhdGUgfSBmcm9tICcuLi9mcy5qcyc7XG5cbi8qKlxuICogSGFzaCBhIGhvb2sgdG9rZW4gdG8gcHJvZHVjZSBhIGZpbGVzeXN0ZW0tc2FmZSBjb25zdHJhaW50IGZpbGVuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaFRva2VuKHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHRva2VuKS5kaWdlc3QoJ2hleCcpO1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIHBhdGggb2YgdGhlIHJlY292ZXJ5LW1hcmtlciBzaWRlY2FyIGZvciBhIHNwZWNpZmljXG4gKiBgKHRva2VuLCBydW5JZCwgaG9va0lkKWAgdHJpcGxlLiBJZGVudGl0eSBpcyBlbmNvZGVkIGluIHRoZVxuICogZmlsZW5hbWUgaGFzaCBzbyBkaWZmZXJlbnQgdG9rZW4gbGlmZXRpbWVzIChlLmcuIHRoZSBzYW1lIHRva2VuXG4gKiByZXVzZWQgYnkgYSBsYXRlciBydW4gYWZ0ZXIgdGhlIGZpcnN0IHJ1biB3YXMgZGVsZXRlZCkgbmV2ZXJcbiAqIGNvbnRlbmQgb24gYSBzaW5nbGUgc2lkZWNhciDigJQgd2l0aG91dCBwZXItbGlmZXRpbWUgaWRlbnRpdHksIGFcbiAqIHN0YWxlIG1hcmtlciBzdXJ2aXZpbmcgcHJpb3ItcnVuIGNsZWFudXAgY291bGQgXCJsZWFrXCIgaXRzXG4gKiBldmVudElkIGludG8gdGhlIG5ldyBsaWZldGltZSdzIHJlY292ZXJ5IGFuZCBjYXVzZSBkaXZlcmdlbnRcbiAqIHB1YmxpY2F0aW9uLlxuICpcbiAqIFNlZSBgZXZlbnRzLXN0b3JhZ2UudHNgIGZvciB0aGUgZnVsbCByZWNvdmVyeS1tYXJrZXIgcmF0aW9uYWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va1JlY292ZXJ5TWFya2VyUGF0aChcbiAgYmFzZWRpcjogc3RyaW5nLFxuICB0b2tlbjogc3RyaW5nLFxuICBydW5JZDogc3RyaW5nLFxuICBob29rSWQ6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgLy8gRGlzdGluY3QgZnJvbSBgaGFzaFRva2VuKHRva2VuKWAgc28gYSB0b2tlbidzIGNsYWltIGZpbGUgYW5kXG4gIC8vIGl0cyByZWNvdmVyeSBtYXJrZXIgbGl2ZSBhdCBkaWZmZXJlbnQgcGF0aHMgQU5EIGEgZGlmZmVyZW50XG4gIC8vIGxpZmV0aW1lJ3MgcmVjb3ZlcnkgbWFya2VyIG5ldmVyIGNvbGxpZGVzIHdpdGggdGhpcyBvbmUuXG4gIGNvbnN0IGtleSA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpXG4gICAgLnVwZGF0ZShgJHt0b2tlbn1cXHgwMCR7cnVuSWR9XFx4MDAke2hvb2tJZH1gKVxuICAgIC5kaWdlc3QoJ2hleCcpO1xuICByZXR1cm4gcGF0aC5qb2luKGJhc2VkaXIsICdob29rcycsICd0b2tlbnMnLCBgJHtrZXl9LnJlY292ZXJ5Lmpzb25gKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtb25vdG9uaWMgVUxJRCBmYWN0b3J5IHRoYXQgZW5zdXJlcyBVTElEcyBhcmUgYWx3YXlzIGluY3JlYXNpbmdcbiAqIGV2ZW4gd2hlbiBnZW5lcmF0ZWQgd2l0aGluIHRoZSBzYW1lIG1pbGxpc2Vjb25kLlxuICovXG5leHBvcnQgY29uc3QgbW9ub3RvbmljVWxpZCA9IG1vbm90b25pY0ZhY3RvcnkoKCkgPT4gTWF0aC5yYW5kb20oKSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgY3JlYXRlZEF0IGRhdGUgZnJvbSBhIGZpbGVuYW1lIGJhc2VkIG9uIFVMSUQuXG4gKiBVc2VkIGZvciBlZmZpY2llbnQgcGFnaW5hdGlvbiB3aXRob3V0IHJlYWRpbmcgZmlsZSBjb250ZW50cy5cbiAqXG4gKiBAcGFyYW0gaWRQcmVmaXggLSBUaGUgcHJlZml4IHRvIHN0cmlwIGZyb20gZmlsZW5hbWVzIChlLmcuLCAnd3J1bicsICdldm50JywgJ3N0ZXAnKVxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIERhdGUgZnJvbSBmaWxlbmFtZSwgb3IgbnVsbCBpZiBub3QgZXh0cmFjdGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9iamVjdENyZWF0ZWRBdCA9XG4gIChpZFByZWZpeDogc3RyaW5nKSA9PlxuICAoZmlsZW5hbWU6IHN0cmluZyk6IERhdGUgfCBudWxsID0+IHtcbiAgICAvLyBTdHJpcCB0YWcgc3VmZml4IGJlZm9yZSBVTElEIGV4dHJhY3Rpb25cbiAgICAvLyBlLmcuLCBcIndydW5fQUJDLnZpdGVzdC0wLmpzb25cIiDihpIgXCJ3cnVuX0FCQy5qc29uXCJcbiAgICBjb25zdCBjbGVhbk5hbWUgPSBzdHJpcFRhZyhmaWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sICcnKSkgKyAnLmpzb24nO1xuXG4gICAgY29uc3QgcmVwbGFjZVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7aWRQcmVmaXh9X2AsICdnJyk7XG4gICAgY29uc3QgZGFzaEluZGV4ID0gY2xlYW5OYW1lLmluZGV4T2YoJy0nKTtcblxuICAgIGlmIChkYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAvLyBObyBkYXNoIC0gZXh0cmFjdCBVTElEIGZyb20gdGhlIGZpbGVuYW1lIChlLmcuLCB3cnVuX1VMSUQuanNvbiwgZXZudF9VTElELmpzb24pXG4gICAgICBjb25zdCB1bGlkID0gY2xlYW5OYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgJycpLnJlcGxhY2UocmVwbGFjZVJlZ2V4LCAnJyk7XG4gICAgICByZXR1cm4gdWxpZFRvRGF0ZSh1bGlkKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgY29tcG9zaXRlIGtleXMgbGlrZSB7cnVuSWR9LXtzdGVwSWR9LCBleHRyYWN0IGZyb20gdGhlIGFwcHJvcHJpYXRlIHBhcnRcbiAgICBpZiAoaWRQcmVmaXggPT09ICdzdGVwJykge1xuICAgICAgLy8gU3RlcHMgdXNlIHNlcXVlbnRpYWwgSURzIChzdGVwXzAsIHN0ZXBfMSwgZXRjLikgLSBubyB0aW1lc3RhbXAgaW4gZmlsZW5hbWUuXG4gICAgICAvLyBSZXR1cm4gbnVsbCB0byBza2lwIGZpbGVuYW1lLWJhc2VkIG9wdGltaXphdGlvbiBhbmQgZGVmZXIgdG8gSlNPTi1iYXNlZCBmaWx0ZXJpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBGb3IgZXZlbnRzOiB3cnVuX1VMSUQtZXZudF9VTElELmpzb24gLSBleHRyYWN0IGZyb20gdGhlIGV2ZW50SWQgcGFydFxuICAgIGNvbnN0IGlkID0gY2xlYW5OYW1lLnN1YnN0cmluZyhkYXNoSW5kZXggKyAxKS5yZXBsYWNlKC9cXC5qc29uJC8sICcnKTtcbiAgICBjb25zdCB1bGlkID0gaWQucmVwbGFjZShyZXBsYWNlUmVnZXgsICcnKTtcbiAgICByZXR1cm4gdWxpZFRvRGF0ZSh1bGlkKTtcbiAgfTtcbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Storage } from '@workflow/world';
|
|
1
|
+
import type { Hook, Storage } from '@workflow/world';
|
|
2
|
+
export declare function rebuildLiveHookByTokenFromEventLog(basedir: string, token: string, tag?: string): Promise<Hook | null>;
|
|
2
3
|
/**
|
|
3
4
|
* Creates a hooks storage implementation using the filesystem.
|
|
4
5
|
* Implements the Storage['hooks'] interface with hook CRUD operations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-storage.d.ts","sourceRoot":"","sources":["../../src/storage/hooks-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"hooks-storage.d.ts","sourceRoot":"","sources":["../../src/storage/hooks-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,IAAI,EAIJ,OAAO,EACR,MAAM,iBAAiB,CAAC;AA2KzB,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAOtB;AAeD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CA+FlB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -1,10 +1,111 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { HookNotFoundError } from '@workflow/errors';
|
|
3
|
-
import { HookSchema } from '@workflow/world';
|
|
3
|
+
import { EventSchema, HookSchema, isTerminalRunEventType, isTerminalWorkflowRunStatus, WorkflowRunSchema, } from '@workflow/world';
|
|
4
|
+
import { z } from 'zod';
|
|
4
5
|
import { DEFAULT_RESOLVE_DATA_OPTION } from '../config.js';
|
|
5
|
-
import { assertSafeEntityId, deleteJSON, listJSONFiles, paginatedFileSystemQuery, readJSON, readJSONWithFallback, } from '../fs.js';
|
|
6
|
+
import { assertSafeEntityId, deleteJSON, hasTag, isUntagged, jsonReplacer, listJSONFiles, paginatedFileSystemQuery, readJSON, readJSONWithFallback, taggedPath, writeExclusive, } from '../fs.js';
|
|
6
7
|
import { filterHookData } from './filters.js';
|
|
7
|
-
import { hashToken } from './helpers.js';
|
|
8
|
+
import { hashToken, hookRecoveryMarkerPath } from './helpers.js';
|
|
9
|
+
function isVisibleToTag(fileId, tag) {
|
|
10
|
+
return tag ? isUntagged(fileId) || hasTag(fileId, tag) : isUntagged(fileId);
|
|
11
|
+
}
|
|
12
|
+
function getHookCreatedToken(event) {
|
|
13
|
+
if (event.eventType !== 'hook_created')
|
|
14
|
+
return undefined;
|
|
15
|
+
const token = event.eventData.token;
|
|
16
|
+
return typeof token === 'string' ? token : undefined;
|
|
17
|
+
}
|
|
18
|
+
function hookFromCreatedEvent(event) {
|
|
19
|
+
const { token, metadata, isWebhook } = event.eventData;
|
|
20
|
+
return {
|
|
21
|
+
runId: event.runId,
|
|
22
|
+
hookId: event.correlationId,
|
|
23
|
+
token,
|
|
24
|
+
metadata,
|
|
25
|
+
ownerId: 'local-owner',
|
|
26
|
+
projectId: 'local-project',
|
|
27
|
+
environment: 'local',
|
|
28
|
+
createdAt: event.createdAt,
|
|
29
|
+
specVersion: event.specVersion,
|
|
30
|
+
isWebhook: isWebhook ?? true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function isMatchingHookCreatedEvent(event, matches) {
|
|
34
|
+
return (event.eventType === 'hook_created' &&
|
|
35
|
+
typeof event.correlationId === 'string' &&
|
|
36
|
+
matches(event));
|
|
37
|
+
}
|
|
38
|
+
function closesLiveHook(event, liveEvent) {
|
|
39
|
+
if (event.runId !== liveEvent.runId)
|
|
40
|
+
return false;
|
|
41
|
+
return ((event.eventType === 'hook_disposed' &&
|
|
42
|
+
event.correlationId === liveEvent.correlationId) ||
|
|
43
|
+
isTerminalRunEventType(event.eventType));
|
|
44
|
+
}
|
|
45
|
+
async function readEventForHookScan(filePath) {
|
|
46
|
+
try {
|
|
47
|
+
return await readJSON(filePath, EventSchema);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error instanceof SyntaxError || error instanceof z.ZodError) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function isTerminalRunCache(basedir, runId, tag) {
|
|
57
|
+
const run = await readJSONWithFallback(basedir, 'runs', runId, WorkflowRunSchema, tag);
|
|
58
|
+
return run ? isTerminalWorkflowRunStatus(run.status) : false;
|
|
59
|
+
}
|
|
60
|
+
async function findLiveHookCreatedEvent(basedir, matches, tag) {
|
|
61
|
+
const eventsDir = path.join(basedir, 'events');
|
|
62
|
+
const events = [];
|
|
63
|
+
for (const fileId of await listJSONFiles(eventsDir)) {
|
|
64
|
+
if (!isVisibleToTag(fileId, tag))
|
|
65
|
+
continue;
|
|
66
|
+
const event = await readEventForHookScan(path.join(eventsDir, `${fileId}.json`));
|
|
67
|
+
if (event)
|
|
68
|
+
events.push(event);
|
|
69
|
+
}
|
|
70
|
+
events.sort((a, b) => {
|
|
71
|
+
const byTime = a.createdAt.getTime() - b.createdAt.getTime();
|
|
72
|
+
return byTime === 0 ? a.eventId.localeCompare(b.eventId) : byTime;
|
|
73
|
+
});
|
|
74
|
+
let liveEvent = null;
|
|
75
|
+
for (const event of events) {
|
|
76
|
+
if (isMatchingHookCreatedEvent(event, matches)) {
|
|
77
|
+
liveEvent = event;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (liveEvent && closesLiveHook(event, liveEvent)) {
|
|
81
|
+
liveEvent = null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (liveEvent && (await isTerminalRunCache(basedir, liveEvent.runId, tag))) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return liveEvent;
|
|
88
|
+
}
|
|
89
|
+
async function restoreHookCachesFromEvent(basedir, event, tag) {
|
|
90
|
+
const hook = hookFromCreatedEvent(event);
|
|
91
|
+
const claimPath = path.join(basedir, 'hooks', 'tokens', `${hashToken(hook.token)}.json`);
|
|
92
|
+
await writeExclusive(claimPath, JSON.stringify({
|
|
93
|
+
token: hook.token,
|
|
94
|
+
hookId: hook.hookId,
|
|
95
|
+
runId: hook.runId,
|
|
96
|
+
eventId: event.eventId,
|
|
97
|
+
}));
|
|
98
|
+
await writeExclusive(taggedPath(basedir, 'hooks', hook.hookId, tag), JSON.stringify(hook, jsonReplacer, 2));
|
|
99
|
+
return hook;
|
|
100
|
+
}
|
|
101
|
+
export async function rebuildLiveHookByTokenFromEventLog(basedir, token, tag) {
|
|
102
|
+
const event = await findLiveHookCreatedEvent(basedir, (candidate) => getHookCreatedToken(candidate) === token, tag);
|
|
103
|
+
return event ? restoreHookCachesFromEvent(basedir, event, tag) : null;
|
|
104
|
+
}
|
|
105
|
+
async function rebuildLiveHookByIdFromEventLog(basedir, hookId, tag) {
|
|
106
|
+
const event = await findLiveHookCreatedEvent(basedir, (candidate) => candidate.correlationId === hookId, tag);
|
|
107
|
+
return event ? restoreHookCachesFromEvent(basedir, event, tag) : null;
|
|
108
|
+
}
|
|
8
109
|
/**
|
|
9
110
|
* Creates a hooks storage implementation using the filesystem.
|
|
10
111
|
* Implements the Storage['hooks'] interface with hook CRUD operations.
|
|
@@ -27,13 +128,19 @@ export function createHooksStorage(basedir, tag) {
|
|
|
27
128
|
assertSafeEntityId('hookId', hookId);
|
|
28
129
|
const hook = await readJSONWithFallback(basedir, 'hooks', hookId, HookSchema, tag);
|
|
29
130
|
if (!hook) {
|
|
30
|
-
|
|
131
|
+
const rebuilt = await rebuildLiveHookByIdFromEventLog(basedir, hookId, tag);
|
|
132
|
+
if (!rebuilt) {
|
|
133
|
+
throw new HookNotFoundError(hookId);
|
|
134
|
+
}
|
|
135
|
+
const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
|
|
136
|
+
return filterHookData({ ...rebuilt, isWebhook: rebuilt.isWebhook ?? true }, resolveData);
|
|
31
137
|
}
|
|
32
138
|
const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
|
|
33
139
|
return filterHookData({ ...hook, isWebhook: hook.isWebhook ?? true }, resolveData);
|
|
34
140
|
}
|
|
35
141
|
async function getByToken(token) {
|
|
36
|
-
const hook = await findHookByToken(token)
|
|
142
|
+
const hook = (await findHookByToken(token)) ??
|
|
143
|
+
(await rebuildLiveHookByTokenFromEventLog(basedir, token, tag));
|
|
37
144
|
if (!hook) {
|
|
38
145
|
throw new HookNotFoundError(token);
|
|
39
146
|
}
|
|
@@ -83,11 +190,17 @@ export async function deleteAllHooksForRun(basedir, runId) {
|
|
|
83
190
|
const hookPath = path.join(hooksDir, `${file}.json`);
|
|
84
191
|
const hook = await readJSON(hookPath, HookSchema);
|
|
85
192
|
if (hook && hook.runId === runId) {
|
|
86
|
-
// Delete the token constraint file to free up the token
|
|
193
|
+
// Delete the token constraint file to free up the token, and
|
|
194
|
+
// delete the recovery marker (if any) for disk hygiene. The
|
|
195
|
+
// marker's filename hash includes `(token, runId, hookId)` so
|
|
196
|
+
// a leaked marker can never corrupt a different lifetime — but
|
|
197
|
+
// cleaning it up here keeps the tokens/ directory from
|
|
198
|
+
// accumulating recovered-hook sidecars over time.
|
|
87
199
|
const constraintPath = path.join(hooksDir, 'tokens', `${hashToken(hook.token)}.json`);
|
|
88
200
|
await deleteJSON(constraintPath);
|
|
201
|
+
await deleteJSON(hookRecoveryMarkerPath(basedir, hook.token, hook.runId, hook.hookId));
|
|
89
202
|
await deleteJSON(hookPath);
|
|
90
203
|
}
|
|
91
204
|
}
|
|
92
205
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3Mtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hvb2tzLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixRQUFRLEVBQ1Isb0JBQW9CLEdBQ3JCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQWUsRUFDZixHQUFZO0lBRVosc0VBQXNFO0lBQ3RFLEtBQUssVUFBVSxlQUFlLENBQUMsS0FBYTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUss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LE9BQWUsRUFDZixLQUFhO0lBRWIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakMsd0RBQXdEO1lBQ3hELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hDLENBQUM7WUFDRixNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgSG9va05vdEZvdW5kRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHtcbiAgR2V0SG9va1BhcmFtcyxcbiAgSG9vayxcbiAgTGlzdEhvb2tzUGFyYW1zLFxuICBQYWdpbmF0ZWRSZXNwb25zZSxcbiAgU3RvcmFnZSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IEhvb2tTY2hlbWEgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIGFzc2VydFNhZmVFbnRpdHlJZCxcbiAgZGVsZXRlSlNPTixcbiAgbGlzdEpTT05GaWxlcyxcbiAgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5LFxuICByZWFkSlNPTixcbiAgcmVhZEpTT05XaXRoRmFsbGJhY2ssXG59IGZyb20gJy4uL2ZzLmpzJztcbmltcG9ydCB7IGZpbHRlckhvb2tEYXRhIH0gZnJvbSAnLi9maWx0ZXJzLmpzJztcbmltcG9ydCB7IGhhc2hUb2tlbiB9IGZyb20gJy4vaGVscGVycy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhvb2tzIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBJbXBsZW1lbnRzIHRoZSBTdG9yYWdlWydob29rcyddIGludGVyZmFjZSB3aXRoIGhvb2sgQ1JVRCBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSG9va3NTdG9yYWdlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogU3RvcmFnZVsnaG9va3MnXSB7XG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGEgaG9vayBieSB0b2tlbiAoc2hhcmVkIGJldHdlZW4gZ2V0QnlUb2tlbilcbiAgYXN5bmMgZnVuY3Rpb24gZmluZEhvb2tCeVRva2VuKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPEhvb2sgfCBudWxsPiB7XG4gICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBsaXN0SlNPTkZpbGVzKGhvb2tzRGlyKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgaG9va1BhdGggPSBwYXRoLmpvaW4oaG9va3NEaXIsIGAke2ZpbGV9Lmpzb25gKTtcbiAgICAgIGNvbnN0IGhvb2sgPSBhd2FpdCByZWFkSlNPTihob29rUGF0aCwgSG9va1NjaGVtYSk7XG4gICAgICBpZiAoaG9vayAmJiBob29rLnRva2VuID09PSB0b2tlbikge1xuICAgICAgICByZXR1cm4geyAuLi5ob29rLCBpc1dlYmhvb2s6IGhvb2suaXNXZWJob29rID8/IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldChob29rSWQ6IHN0cmluZywgcGFyYW1zPzogR2V0SG9va1BhcmFtcyk6IFByb21pc2U8SG9vaz4ge1xuICAgIGFzc2VydFNhZmVFbnRpdHlJZCgnaG9va0lkJywgaG9va0lkKTtcbiAgICBjb25zdCBob29rID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICBiYXNlZGlyLFxuICAgICAgJ2hvb2tzJyxcbiAgICAgIGhvb2tJZCxcbiAgICAgIEhvb2tTY2hlbWEsXG4gICAgICB0YWdcbiAgICApO1xuICAgIGlmICghaG9vaykge1xuICAgICAgdGhyb3cgbmV3IEhvb2tOb3RGb3VuZEVycm9yKGhvb2tJZCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVEYXRhID0gcGFyYW1zPy5yZXNvbHZlRGF0YSB8fCBERUZBVUxUX1JFU09MVkVfREFUQV9PUFRJT047XG4gICAgcmV0dXJuIGZpbHRlckhvb2tEYXRhKFxuICAgICAgeyAuLi5ob29rLCBpc1dlYmhvb2s6IGhvb2suaXNXZWJob29rID8/IHRydWUgfSxcbiAgICAgIHJlc29sdmVEYXRhXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldEJ5VG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8SG9vaz4ge1xuICAgIGNvbnN0IGhvb2sgPSBhd2FpdCBmaW5kSG9va0J5VG9rZW4odG9rZW4pO1xuICAgIGlmICghaG9vaykge1xuICAgICAgdGhyb3cgbmV3IEhvb2tOb3RGb3VuZEVycm9yKHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvb2s7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBsaXN0KFxuICAgIHBhcmFtczogTGlzdEhvb2tzUGFyYW1zXG4gICk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SG9vaz4+IHtcbiAgICBjb25zdCBob29rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnaG9va3MnKTtcbiAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcy5yZXNvbHZlRGF0YSB8fCBERUZBVUxUX1JFU09MVkVfREFUQV9PUFRJT047XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdpbmF0ZWRGaWxlU3lzdGVtUXVlcnkoe1xuICAgICAgZGlyZWN0b3J5OiBob29rc0RpcixcbiAgICAgIHNjaGVtYTogSG9va1NjaGVtYSxcbiAgICAgIHNvcnRPcmRlcjogcGFyYW1zLnBhZ2luYXRpb24/LnNvcnRPcmRlciA/PyAnYXNjJyxcbiAgICAgIGxpbWl0OiBwYXJhbXMucGFnaW5hdGlvbj8ubGltaXQsXG4gICAgICBjdXJzb3I6IHBhcmFtcy5wYWdpbmF0aW9uPy5jdXJzb3IsXG4gICAgICBmaWxlUHJlZml4OiB1bmRlZmluZWQsIC8vIEhvb2tzIGRvbid0IGhhdmUgVUxJRHMsIHNvIHdlIGNhbid0IG9wdGltaXplIGJ5IGZpbGVuYW1lXG4gICAgICBmaWx0ZXI6IChob29rKSA9PiB7XG4gICAgICAgIC8vIEZpbHRlciBieSBydW5JZCBpZiBwcm92aWRlZFxuICAgICAgICBpZiAocGFyYW1zLnJ1bklkICYmIGhvb2sucnVuSWQgIT09IHBhcmFtcy5ydW5JZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRDcmVhdGVkQXQ6ICgpID0+IHtcbiAgICAgICAgLy8gSG9vayBmaWxlcyBkb24ndCBoYXZlIFVMSUQgdGltZXN0YW1wcyBpbiBmaWxlbmFtZSwgc28gcmV0dXJuIG51bGxcbiAgICAgICAgLy8gdG8gc2tpcCB0aGUgZmlsZW5hbWUtYmFzZWQgb3B0aW1pemF0aW9uIGFuZCBkZWZlciB0byBKU09OLWJhc2VkXG4gICAgICAgIC8vIGN1cnNvciBmaWx0ZXJpbmcgd2hpY2ggdXNlcyB0aGUgYWN0dWFsIGNyZWF0ZWRBdCBmcm9tIHRoZSBmaWxlLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0sXG4gICAgICBnZXRJZDogKGhvb2spID0+IGhvb2suaG9va0lkLFxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBkYXRhIGFmdGVyIHBhZ2luYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzdWx0LFxuICAgICAgZGF0YTogcmVzdWx0LmRhdGEubWFwKChob29rKSA9PiBmaWx0ZXJIb29rRGF0YShob29rLCByZXNvbHZlRGF0YSkpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBnZXQsIGdldEJ5VG9rZW4sIGxpc3QgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGVsZXRlIGFsbCBob29rcyBhc3NvY2lhdGVkIHdpdGggYSB3b3JrZmxvdyBydW4uXG4gKiBDYWxsZWQgd2hlbiBhIHJ1biByZWFjaGVzIGEgdGVybWluYWwgc3RhdGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGxIb29rc0ZvclJ1bihcbiAgYmFzZWRpcjogc3RyaW5nLFxuICBydW5JZDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgbGlzdEpTT05GaWxlcyhob29rc0Rpcik7XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgaG9va1BhdGggPSBwYXRoLmpvaW4oaG9va3NEaXIsIGAke2ZpbGV9Lmpzb25gKTtcbiAgICBjb25zdCBob29rID0gYXdhaXQgcmVhZEpTT04oaG9va1BhdGgsIEhvb2tTY2hlbWEpO1xuICAgIGlmIChob29rICYmIGhvb2sucnVuSWQgPT09IHJ1bklkKSB7XG4gICAgICAvLyBEZWxldGUgdGhlIHRva2VuIGNvbnN0cmFpbnQgZmlsZSB0byBmcmVlIHVwIHRoZSB0b2tlblxuICAgICAgY29uc3QgY29uc3RyYWludFBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgIGhvb2tzRGlyLFxuICAgICAgICAndG9rZW5zJyxcbiAgICAgICAgYCR7aGFzaFRva2VuKGhvb2sudG9rZW4pfS5qc29uYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IGRlbGV0ZUpTT04oY29uc3RyYWludFBhdGgpO1xuICAgICAgYXdhaXQgZGVsZXRlSlNPTihob29rUGF0aCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3Mtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hvb2tzLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVXJELE9BQU8sRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNiLHdCQUF3QixFQUN4QixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixjQUFjLEdBQ2YsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpFLFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxHQUF1QjtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFZO0lBQ3ZDLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxjQUFjO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekQsTUFBTSxLQUFLLEdBQUks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QUFLLFVBQVUsb0JBQW9CLENBQ3hDLE9BQWUsRUFDZixLQUFhO0lBRWIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakMsNkRBQTZEO1lBQzdELDREQUE0RDtZQUM1RCw4REFBOEQ7WUFDOUQsK0RBQStEO1lBQy9ELHVEQUF1RDtZQUN2RCxrREFBa0Q7WUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDOUIsUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEMsQ0FBQztZQUNGLE1BQU0sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxDQUNkLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUNyRSxDQUFDO1lBQ0YsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IEhvb2tOb3RGb3VuZEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV2ZW50LFxuICBHZXRIb29rUGFyYW1zLFxuICBIb29rLFxuICBIb29rQ3JlYXRlZEV2ZW50LFxuICBMaXN0SG9va3NQYXJhbXMsXG4gIFBhZ2luYXRlZFJlc3BvbnNlLFxuICBTdG9yYWdlLFxufSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHtcbiAgRXZlbnRTY2hlbWEsXG4gIEhvb2tTY2hlbWEsXG4gIGlzVGVybWluYWxSdW5FdmVudFR5cGUsXG4gIGlzVGVybWluYWxXb3JrZmxvd1J1blN0YXR1cyxcbiAgV29ya2Zsb3dSdW5TY2hlbWEsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTiB9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRTYWZlRW50aXR5SWQsXG4gIGRlbGV0ZUpTT04sXG4gIGhhc1RhZyxcbiAgaXNVbnRhZ2dlZCxcbiAganNvblJlcGxhY2VyLFxuICBsaXN0SlNPTkZpbGVzLFxuICBwYWdpbmF0ZWRGaWxlU3lzdGVtUXVlcnksXG4gIHJlYWRKU09OLFxuICByZWFkSlNPTldpdGhGYWxsYmFjayxcbiAgdGFnZ2VkUGF0aCxcbiAgd3JpdGVFeGNsdXNpdmUsXG59IGZyb20gJy4uL2ZzLmpzJztcbmltcG9ydCB7IGZpbHRlckhvb2tEYXRhIH0gZnJvbSAnLi9maWx0ZXJzLmpzJztcbmltcG9ydCB7IGhhc2hUb2tlbiwgaG9va1JlY292ZXJ5TWFya2VyUGF0aCB9IGZyb20gJy4vaGVscGVycy5qcyc7XG5cbmZ1bmN0aW9uIGlzVmlzaWJsZVRvVGFnKGZpbGVJZDogc3RyaW5nLCB0YWc6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnID8gaXNVbnRhZ2dlZChmaWxlSWQpIHx8IGhhc1RhZyhmaWxlSWQsIHRhZykgOiBpc1VudGFnZ2VkKGZpbGVJZCk7XG59XG5cbmZ1bmN0aW9uIGdldEhvb2tDcmVhdGVkVG9rZW4oZXZlbnQ6IEV2ZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGV2ZW50LmV2ZW50VHlwZSAhPT0gJ2hvb2tfY3JlYXRlZCcpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHRva2VuID0gKGV2ZW50LmV2ZW50RGF0YSBhcyB7IHRva2VuPzogdW5rbm93biB9KS50b2tlbjtcbiAgcmV0dXJuIHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgPyB0b2tlbiA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaG9va0Zyb21DcmVhdGVkRXZlbnQoZXZlbnQ6IEV2ZW50ICYgSG9va0NyZWF0ZWRFdmVudCk6IEhvb2sge1xuICBjb25zdCB7IHRva2VuLCBtZXRhZGF0YSwgaXNXZWJob29rIH0gPSBldmVudC5ldmVudERhdGE7XG4gIHJldHVybiB7XG4gICAgcnVuSWQ6IGV2ZW50LnJ1bklkLFxuICAgIGhvb2tJZDogZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICB0b2tlbixcbiAgICBtZXRhZGF0YSxcbiAgICBvd25lcklkOiAnbG9jYWwtb3duZXInLFxuICAgIHByb2plY3RJZDogJ2xvY2FsLXByb2plY3QnLFxuICAgIGVudmlyb25tZW50OiAnbG9jYWwnLFxuICAgIGNyZWF0ZWRBdDogZXZlbnQuY3JlYXRlZEF0LFxuICAgIHNwZWNWZXJzaW9uOiBldmVudC5zcGVjVmVyc2lvbixcbiAgICBpc1dlYmhvb2s6IGlzV2ViaG9vayA/PyB0cnVlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc01hdGNoaW5nSG9va0NyZWF0ZWRFdmVudChcbiAgZXZlbnQ6IEV2ZW50LFxuICBtYXRjaGVzOiAoZXZlbnQ6IEV2ZW50KSA9PiBib29sZWFuXG4pOiBldmVudCBpcyBFdmVudCAmIEhvb2tDcmVhdGVkRXZlbnQge1xuICByZXR1cm4gKFxuICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCcgJiZcbiAgICB0eXBlb2YgZXZlbnQuY29ycmVsYXRpb25JZCA9PT0gJ3N0cmluZycgJiZcbiAgICBtYXRjaGVzKGV2ZW50KVxuICApO1xufVxuXG5mdW5jdGlvbiBjbG9zZXNMaXZlSG9vayhcbiAgZXZlbnQ6IEV2ZW50LFxuICBsaXZlRXZlbnQ6IEV2ZW50ICYgSG9va0NyZWF0ZWRFdmVudFxuKTogYm9vbGVhbiB7XG4gIGlmIChldmVudC5ydW5JZCAhPT0gbGl2ZUV2ZW50LnJ1bklkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiAoXG4gICAgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnICYmXG4gICAgICBldmVudC5jb3JyZWxhdGlvbklkID09PSBsaXZlRXZlbnQuY29ycmVsYXRpb25JZCkgfHxcbiAgICBpc1Rlcm1pbmFsUnVuRXZlbnRUeXBlKGV2ZW50LmV2ZW50VHlwZSlcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEV2ZW50Rm9ySG9va1NjYW4oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8RXZlbnQgfCBudWxsPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRKU09OKGZpbGVQYXRoLCBFdmVudFNjaGVtYSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNUZXJtaW5hbFJ1bkNhY2hlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHJ1bklkOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHJ1biA9IGF3YWl0IHJlYWRKU09OV2l0aEZhbGxiYWNrKFxuICAgIGJhc2VkaXIsXG4gICAgJ3J1bnMnLFxuICAgIHJ1bklkLFxuICAgIFdvcmtmbG93UnVuU2NoZW1hLFxuICAgIHRhZ1xuICApO1xuICByZXR1cm4gcnVuID8gaXNUZXJtaW5hbFdvcmtmbG93UnVuU3RhdHVzKHJ1bi5zdGF0dXMpIDogZmFsc2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmRMaXZlSG9va0NyZWF0ZWRFdmVudChcbiAgYmFzZWRpcjogc3RyaW5nLFxuICBtYXRjaGVzOiAoZXZlbnQ6IEV2ZW50KSA9PiBib29sZWFuLFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8KEV2ZW50ICYgSG9va0NyZWF0ZWRFdmVudCkgfCBudWxsPiB7XG4gIGNvbnN0IGV2ZW50c0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnZXZlbnRzJyk7XG4gIGNvbnN0IGV2ZW50czogRXZlbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZmlsZUlkIG9mIGF3YWl0IGxpc3RKU09ORmlsZXMoZXZlbnRzRGlyKSkge1xuICAgIGlmICghaXNWaXNpYmxlVG9UYWcoZmlsZUlkLCB0YWcpKSBjb250aW51ZTtcbiAgICBjb25zdCBldmVudCA9IGF3YWl0IHJlYWRFdmVudEZvckhvb2tTY2FuKFxuICAgICAgcGF0aC5qb2luKGV2ZW50c0RpciwgYCR7ZmlsZUlkfS5qc29uYClcbiAgICApO1xuICAgIGlmIChldmVudCkgZXZlbnRzLnB1c2goZXZlbnQpO1xuICB9XG5cbiAgZXZlbnRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBieVRpbWUgPSBhLmNyZWF0ZWRBdC5nZXRUaW1lKCkgLSBiLmNyZWF0ZWRBdC5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGJ5VGltZSA9PT0gMCA/IGEuZXZlbnRJZC5sb2NhbGVDb21wYXJlKGIuZXZlbnRJZCkgOiBieVRpbWU7XG4gIH0pO1xuXG4gIGxldCBsaXZlRXZlbnQ6IChFdmVudCAmIEhvb2tDcmVhdGVkRXZlbnQpIHwgbnVsbCA9IG51bGw7XG4gIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgaWYgKGlzTWF0Y2hpbmdIb29rQ3JlYXRlZEV2ZW50KGV2ZW50LCBtYXRjaGVzKSkge1xuICAgICAgbGl2ZUV2ZW50ID0gZXZlbnQ7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGl2ZUV2ZW50ICYmIGNsb3Nlc0xpdmVIb29rKGV2ZW50LCBsaXZlRXZlbnQpKSB7XG4gICAgICBsaXZlRXZlbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGlmIChsaXZlRXZlbnQgJiYgKGF3YWl0IGlzVGVybWluYWxSdW5DYWNoZShiYXNlZGlyLCBsaXZlRXZlbnQucnVuSWQsIHRhZykpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbGl2ZUV2ZW50O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXN0b3JlSG9va0NhY2hlc0Zyb21FdmVudChcbiAgYmFzZWRpcjogc3RyaW5nLFxuICBldmVudDogRXZlbnQgJiBIb29rQ3JlYXRlZEV2ZW50LFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8SG9vaz4ge1xuICBjb25zdCBob29rID0gaG9va0Zyb21DcmVhdGVkRXZlbnQoZXZlbnQpO1xuXG4gIGNvbnN0IGNsYWltUGF0aCA9IHBhdGguam9pbihcbiAgICBiYXNlZGlyLFxuICAgICdob29rcycsXG4gICAgJ3Rva2VucycsXG4gICAgYCR7aGFzaFRva2VuKGhvb2sudG9rZW4pfS5qc29uYFxuICApO1xuICBhd2FpdCB3cml0ZUV4Y2x1c2l2ZShcbiAgICBjbGFpbVBhdGgsXG4gICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdG9rZW46IGhvb2sudG9rZW4sXG4gICAgICBob29rSWQ6IGhvb2suaG9va0lkLFxuICAgICAgcnVuSWQ6IGhvb2sucnVuSWQsXG4gICAgICBldmVudElkOiBldmVudC5ldmVudElkLFxuICAgIH0pXG4gICk7XG4gIGF3YWl0IHdyaXRlRXhjbHVzaXZlKFxuICAgIHRhZ2dlZFBhdGgoYmFzZWRpciwgJ2hvb2tzJywgaG9vay5ob29rSWQsIHRhZyksXG4gICAgSlNPTi5zdHJpbmdpZnkoaG9vaywganNvblJlcGxhY2VyLCAyKVxuICApO1xuXG4gIHJldHVybiBob29rO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVidWlsZExpdmVIb29rQnlUb2tlbkZyb21FdmVudExvZyhcbiAgYmFzZWRpcjogc3RyaW5nLFxuICB0b2tlbjogc3RyaW5nLFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8SG9vayB8IG51bGw+IHtcbiAgY29uc3QgZXZlbnQgPSBhd2FpdCBmaW5kTGl2ZUhvb2tDcmVhdGVkRXZlbnQoXG4gICAgYmFzZWRpcixcbiAgICAoY2FuZGlkYXRlKSA9PiBnZXRIb29rQ3JlYXRlZFRva2VuKGNhbmRpZGF0ZSkgPT09IHRva2VuLFxuICAgIHRhZ1xuICApO1xuICByZXR1cm4gZXZlbnQgPyByZXN0b3JlSG9va0NhY2hlc0Zyb21FdmVudChiYXNlZGlyLCBldmVudCwgdGFnKSA6IG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYnVpbGRMaXZlSG9va0J5SWRGcm9tRXZlbnRMb2coXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgaG9va0lkOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogUHJvbWlzZTxIb29rIHwgbnVsbD4ge1xuICBjb25zdCBldmVudCA9IGF3YWl0IGZpbmRMaXZlSG9va0NyZWF0ZWRFdmVudChcbiAgICBiYXNlZGlyLFxuICAgIChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5jb3JyZWxhdGlvbklkID09PSBob29rSWQsXG4gICAgdGFnXG4gICk7XG4gIHJldHVybiBldmVudCA/IHJlc3RvcmVIb29rQ2FjaGVzRnJvbUV2ZW50KGJhc2VkaXIsIGV2ZW50LCB0YWcpIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgaG9va3Mgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgZmlsZXN5c3RlbS5cbiAqIEltcGxlbWVudHMgdGhlIFN0b3JhZ2VbJ2hvb2tzJ10gaW50ZXJmYWNlIHdpdGggaG9vayBDUlVEIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIb29rc1N0b3JhZ2UoXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgdGFnPzogc3RyaW5nXG4pOiBTdG9yYWdlWydob29rcyddIHtcbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGZpbmQgYSBob29rIGJ5IHRva2VuIChzaGFyZWQgYmV0d2VlbiBnZXRCeVRva2VuKVxuICBhc3luYyBmdW5jdGlvbiBmaW5kSG9va0J5VG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8SG9vayB8IG51bGw+IHtcbiAgICBjb25zdCBob29rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnaG9va3MnKTtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGxpc3RKU09ORmlsZXMoaG9va3NEaXIpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBob29rUGF0aCA9IHBhdGguam9pbihob29rc0RpciwgYCR7ZmlsZX0uanNvbmApO1xuICAgICAgY29uc3QgaG9vayA9IGF3YWl0IHJlYWRKU09OKGhvb2tQYXRoLCBIb29rU2NoZW1hKTtcbiAgICAgIGlmIChob29rICYmIGhvb2sudG9rZW4gPT09IHRva2VuKSB7XG4gICAgICAgIHJldHVybiB7IC4uLmhvb2ssIGlzV2ViaG9vazogaG9vay5pc1dlYmhvb2sgPz8gdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0KGhvb2tJZDogc3RyaW5nLCBwYXJhbXM/OiBHZXRIb29rUGFyYW1zKTogUHJvbWlzZTxIb29rPiB7XG4gICAgYXNzZXJ0U2FmZUVudGl0eUlkKCdob29rSWQnLCBob29rSWQpO1xuICAgIGNvbnN0IGhvb2sgPSBhd2FpdCByZWFkSlNPTldpdGhGYWxsYmFjayhcbiAgICAgIGJhc2VkaXIsXG4gICAgICAnaG9va3MnLFxuICAgICAgaG9va0lkLFxuICAgICAgSG9va1NjaGVtYSxcbiAgICAgIHRhZ1xuICAgICk7XG4gICAgaWYgKCFob29rKSB7XG4gICAgICBjb25zdCByZWJ1aWx0ID0gYXdhaXQgcmVidWlsZExpdmVIb29rQnlJZEZyb21FdmVudExvZyhcbiAgICAgICAgYmFzZWRpcixcbiAgICAgICAgaG9va0lkLFxuICAgICAgICB0YWdcbiAgICAgICk7XG4gICAgICBpZiAoIXJlYnVpbHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEhvb2tOb3RGb3VuZEVycm9yKGhvb2tJZCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcz8ucmVzb2x2ZURhdGEgfHwgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgcmV0dXJuIGZpbHRlckhvb2tEYXRhKFxuICAgICAgICB7IC4uLnJlYnVpbHQsIGlzV2ViaG9vazogcmVidWlsdC5pc1dlYmhvb2sgPz8gdHJ1ZSB9LFxuICAgICAgICByZXNvbHZlRGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXM/LnJlc29sdmVEYXRhIHx8IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcbiAgICByZXR1cm4gZmlsdGVySG9va0RhdGEoXG4gICAgICB7IC4uLmhvb2ssIGlzV2ViaG9vazogaG9vay5pc1dlYmhvb2sgPz8gdHJ1ZSB9LFxuICAgICAgcmVzb2x2ZURhdGFcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0QnlUb2tlbih0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxIb29rPiB7XG4gICAgY29uc3QgaG9vayA9XG4gICAgICAoYXdhaXQgZmluZEhvb2tCeVRva2VuKHRva2VuKSkgPz9cbiAgICAgIChhd2FpdCByZWJ1aWxkTGl2ZUhvb2tCeVRva2VuRnJvbUV2ZW50TG9nKGJhc2VkaXIsIHRva2VuLCB0YWcpKTtcbiAgICBpZiAoIWhvb2spIHtcbiAgICAgIHRocm93IG5ldyBIb29rTm90Rm91bmRFcnJvcih0b2tlbik7XG4gICAgfVxuICAgIHJldHVybiBob29rO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gbGlzdChcbiAgICBwYXJhbXM6IExpc3RIb29rc1BhcmFtc1xuICApOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEhvb2s+PiB7XG4gICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXMucmVzb2x2ZURhdGEgfHwgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5KHtcbiAgICAgIGRpcmVjdG9yeTogaG9va3NEaXIsXG4gICAgICBzY2hlbWE6IEhvb2tTY2hlbWEsXG4gICAgICBzb3J0T3JkZXI6IHBhcmFtcy5wYWdpbmF0aW9uPy5zb3J0T3JkZXIgPz8gJ2FzYycsXG4gICAgICBsaW1pdDogcGFyYW1zLnBhZ2luYXRpb24/LmxpbWl0LFxuICAgICAgY3Vyc29yOiBwYXJhbXMucGFnaW5hdGlvbj8uY3Vyc29yLFxuICAgICAgZmlsZVByZWZpeDogdW5kZWZpbmVkLCAvLyBIb29rcyBkb24ndCBoYXZlIFVMSURzLCBzbyB3ZSBjYW4ndCBvcHRpbWl6ZSBieSBmaWxlbmFtZVxuICAgICAgZmlsdGVyOiAoaG9vaykgPT4ge1xuICAgICAgICAvLyBGaWx0ZXIgYnkgcnVuSWQgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHBhcmFtcy5ydW5JZCAmJiBob29rLnJ1bklkICE9PSBwYXJhbXMucnVuSWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgZ2V0Q3JlYXRlZEF0OiAoKSA9PiB7XG4gICAgICAgIC8vIEhvb2sgZmlsZXMgZG9uJ3QgaGF2ZSBVTElEIHRpbWVzdGFtcHMgaW4gZmlsZW5hbWUsIHNvIHJldHVybiBudWxsXG4gICAgICAgIC8vIHRvIHNraXAgdGhlIGZpbGVuYW1lLWJhc2VkIG9wdGltaXphdGlvbiBhbmQgZGVmZXIgdG8gSlNPTi1iYXNlZFxuICAgICAgICAvLyBjdXJzb3IgZmlsdGVyaW5nIHdoaWNoIHVzZXMgdGhlIGFjdHVhbCBjcmVhdGVkQXQgZnJvbSB0aGUgZmlsZS5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LFxuICAgICAgZ2V0SWQ6IChob29rKSA9PiBob29rLmhvb2tJZCxcbiAgICB9KTtcblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgZGF0YSBhZnRlciBwYWdpbmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3VsdCxcbiAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLm1hcCgoaG9vaykgPT4gZmlsdGVySG9va0RhdGEoaG9vaywgcmVzb2x2ZURhdGEpKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgZ2V0LCBnZXRCeVRva2VuLCBsaXN0IH07XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGRlbGV0ZSBhbGwgaG9va3MgYXNzb2NpYXRlZCB3aXRoIGEgd29ya2Zsb3cgcnVuLlxuICogQ2FsbGVkIHdoZW4gYSBydW4gcmVhY2hlcyBhIHRlcm1pbmFsIHN0YXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQWxsSG9va3NGb3JSdW4oXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgcnVuSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGhvb2tzRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsICdob29rcycpO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGxpc3RKU09ORmlsZXMoaG9va3NEaXIpO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGhvb2tQYXRoID0gcGF0aC5qb2luKGhvb2tzRGlyLCBgJHtmaWxlfS5qc29uYCk7XG4gICAgY29uc3QgaG9vayA9IGF3YWl0IHJlYWRKU09OKGhvb2tQYXRoLCBIb29rU2NoZW1hKTtcbiAgICBpZiAoaG9vayAmJiBob29rLnJ1bklkID09PSBydW5JZCkge1xuICAgICAgLy8gRGVsZXRlIHRoZSB0b2tlbiBjb25zdHJhaW50IGZpbGUgdG8gZnJlZSB1cCB0aGUgdG9rZW4sIGFuZFxuICAgICAgLy8gZGVsZXRlIHRoZSByZWNvdmVyeSBtYXJrZXIgKGlmIGFueSkgZm9yIGRpc2sgaHlnaWVuZS4gVGhlXG4gICAgICAvLyBtYXJrZXIncyBmaWxlbmFtZSBoYXNoIGluY2x1ZGVzIGAodG9rZW4sIHJ1bklkLCBob29rSWQpYCBzb1xuICAgICAgLy8gYSBsZWFrZWQgbWFya2VyIGNhbiBuZXZlciBjb3JydXB0IGEgZGlmZmVyZW50IGxpZmV0aW1lIOKAlCBidXRcbiAgICAgIC8vIGNsZWFuaW5nIGl0IHVwIGhlcmUga2VlcHMgdGhlIHRva2Vucy8gZGlyZWN0b3J5IGZyb21cbiAgICAgIC8vIGFjY3VtdWxhdGluZyByZWNvdmVyZWQtaG9vayBzaWRlY2FycyBvdmVyIHRpbWUuXG4gICAgICBjb25zdCBjb25zdHJhaW50UGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgaG9va3NEaXIsXG4gICAgICAgICd0b2tlbnMnLFxuICAgICAgICBgJHtoYXNoVG9rZW4oaG9vay50b2tlbil9Lmpzb25gXG4gICAgICApO1xuICAgICAgYXdhaXQgZGVsZXRlSlNPTihjb25zdHJhaW50UGF0aCk7XG4gICAgICBhd2FpdCBkZWxldGVKU09OKFxuICAgICAgICBob29rUmVjb3ZlcnlNYXJrZXJQYXRoKGJhc2VkaXIsIGhvb2sudG9rZW4sIGhvb2sucnVuSWQsIGhvb2suaG9va0lkKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGRlbGV0ZUpTT04oaG9va1BhdGgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -25,4 +25,12 @@ export declare const RpcService: (value: string) => {
|
|
|
25
25
|
export declare const RpcMethod: (value: string) => {
|
|
26
26
|
[k: string]: string;
|
|
27
27
|
};
|
|
28
|
+
/** Unique identifier for a specific workflow run instance */
|
|
29
|
+
export declare const WorkflowRunId: (value: string) => {
|
|
30
|
+
[k: string]: string;
|
|
31
|
+
};
|
|
32
|
+
/** Unique identifier for the step instance */
|
|
33
|
+
export declare const StepId: (value: string) => {
|
|
34
|
+
[k: string]: string;
|
|
35
|
+
};
|
|
28
36
|
//# sourceMappingURL=telemetry.d.ts.map
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuBtE;;;GAGG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,OAAO,QAAQ,GAC3B,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAI/B;AASD,wFAAwF;AACxF,eAAO,MAAM,WAAW;;CAA6C,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,SAAS;;CAA2C,CAAC;AAElE,oDAAoD;AACpD,eAAO,MAAM,UAAU;;CAA4C,CAAC;AAEpE,kDAAkD;AAClD,eAAO,MAAM,SAAS;;CAA2C,CAAC"}
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuBtE;;;GAGG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,OAAO,QAAQ,GAC3B,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAI/B;AASD,wFAAwF;AACxF,eAAO,MAAM,WAAW;;CAA6C,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,SAAS;;CAA2C,CAAC;AAElE,oDAAoD;AACpD,eAAO,MAAM,UAAU;;CAA4C,CAAC;AAEpE,kDAAkD;AAClD,eAAO,MAAM,SAAS;;CAA2C,CAAC;AAElE,6DAA6D;AAC7D,eAAO,MAAM,aAAa;;CAAgD,CAAC;AAE3E,8CAA8C;AAC9C,eAAO,MAAM,MAAM;;CAAwC,CAAC"}
|
package/dist/telemetry.js
CHANGED
|
@@ -68,4 +68,8 @@ export const RpcSystem = SemanticConvention('rpc.system');
|
|
|
68
68
|
export const RpcService = SemanticConvention('rpc.service');
|
|
69
69
|
/** RPC method name (standard OTEL: rpc.method) */
|
|
70
70
|
export const RpcMethod = SemanticConvention('rpc.method');
|
|
71
|
-
|
|
71
|
+
/** Unique identifier for a specific workflow run instance */
|
|
72
|
+
export const WorkflowRunId = SemanticConvention('workflow.run.id');
|
|
73
|
+
/** Unique identifier for the step instance */
|
|
74
|
+
export const StepId = SemanticConvention('step.id');
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxrREFBa0Q7QUFDbEQsSUFBSSxjQUFjLEdBQXNDLElBQUksQ0FBQztBQUU3RCxLQUFLLFVBQVUsVUFBVTtJQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQUVELElBQUksYUFBYSxHQUFzQyxJQUFJLENBQUM7QUFFNUQsS0FBSyxVQUFVLFNBQVM7SUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLGFBQWEsR0FBRyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN6QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9DLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsS0FBSyxDQUN6QixRQUFnQixFQUNoQixHQUFHLElBRXFEO0lBRXhELE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQ2hCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVU7UUFDM0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1FBQzNCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxFQUFFO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBRS9ELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUMzRCxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztnQkFDL0IsT0FBTyxFQUFHLENBQVcsQ0FBQyxPQUFPO2FBQzlCLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixLQUE0QjtJQUU1QixNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxpREFBaUQ7QUFDakQscURBQXFEO0FBQ3JELFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQVMsYUFBYSxDQUFDLENBQUM7QUFFcEUsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxZQUFZLENBQUMsQ0FBQztBQUVsRSw2REFBNkQ7QUFDN0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFTLGlCQUFpQixDQUFDLENBQUM7QUFFM0UsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBUyxTQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWluaW1hbCB0ZWxlbWV0cnkgdXRpbGl0aWVzIGZvciB3b3JsZC1sb2NhbCBwYWNrYWdlLlxuICpcbiAqIE5PVEU6IFRoaXMgbW9kdWxlIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIHdvcmxkLXZlcmNlbCdzIHRlbGVtZXRyeS5cbiAqIEl0IHByb3ZpZGVzIHRyYWNpbmcgY2FwYWJpbGl0aWVzIGZvciBsb2NhbCBkZXZlbG9wbWVudCB0byBtYXRjaFxuICogdGhlIG9ic2VydmFiaWxpdHkgZXhwZXJpZW5jZSBpbiBwcm9kdWN0aW9uLlxuICpcbiAqIElNUE9SVEFOVDogVGhpcyBtb2R1bGUgdXNlcyB0aGUgc2FtZSB0cmFjZXIgbmFtZSAnd29ya2Zsb3cnIGFzIEB3b3JrZmxvdy9jb3JlIHRvIGVuc3VyZVxuICogYWxsIHNwYW5zIGFyZSByZXBvcnRlZCB1bmRlciB0aGUgcGFyZW50IGFwcGxpY2F0aW9uJ3Mgc2VydmljZSwgbm90IGFzIGEgc2VwYXJhdGUgc2VydmljZS5cbiAqL1xuaW1wb3J0IHR5cGUgKiBhcyBhcGkgZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbktpbmQsIFNwYW5PcHRpb25zIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcblxuLy8gTGF6eSBsb2FkIE9wZW5UZWxlbWV0cnkgQVBJIHRvIG1ha2UgaXQgb3B0aW9uYWxcbmxldCBvdGVsQXBpUHJvbWlzZTogUHJvbWlzZTx0eXBlb2YgYXBpIHwgbnVsbD4gfCBudWxsID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3RlbEFwaSgpOiBQcm9taXNlPHR5cGVvZiBhcGkgfCBudWxsPiB7XG4gIGlmICghb3RlbEFwaVByb21pc2UpIHtcbiAgICBvdGVsQXBpUHJvbWlzZSA9IGltcG9ydCgnQG9wZW50ZWxlbWV0cnkvYXBpJykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gIH1cbiAgcmV0dXJuIG90ZWxBcGlQcm9taXNlO1xufVxuXG5sZXQgdHJhY2VyUHJvbWlzZTogUHJvbWlzZTxhcGkuVHJhY2VyIHwgbnVsbD4gfCBudWxsID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VHJhY2VyKCk6IFByb21pc2U8YXBpLlRyYWNlciB8IG51bGw+IHtcbiAgaWYgKCF0cmFjZXJQcm9taXNlKSB7XG4gICAgdHJhY2VyUHJvbWlzZSA9IGdldE90ZWxBcGkoKS50aGVuKChvdGVsKSA9PlxuICAgICAgb3RlbCA/IG90ZWwudHJhY2UuZ2V0VHJhY2VyKCd3b3JrZmxvdycpIDogbnVsbFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRyYWNlclByb21pc2U7XG59XG5cbi8qKlxuICogV3JhcCBhbiBhc3luYyBmdW5jdGlvbiB3aXRoIGEgdHJhY2Ugc3Bhbi5cbiAqIE5vLW9wIGlmIE9wZW5UZWxlbWV0cnkgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWNlPFQ+KFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICAuLi5hcmdzOlxuICAgIHwgW2ZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4gICAgfCBbb3B0czogU3Bhbk9wdGlvbnMsIGZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgW3RyYWNlciwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbZ2V0VHJhY2VyKCksIGdldE90ZWxBcGkoKV0pO1xuICBjb25zdCB7IGZuLCBvcHRzIH0gPVxuICAgIHR5cGVvZiBhcmdzWzBdID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHsgZm46IGFyZ3NbMF0sIG9wdHM6IHt9IH1cbiAgICAgIDogeyBmbjogYXJnc1sxXSwgb3B0czogYXJnc1swXSB9O1xuICBpZiAoIWZuKSB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIHRvIHRyYWNlIG11c3QgYmUgcHJvdmlkZWQnKTtcblxuICBpZiAoIXRyYWNlciB8fCAhb3RlbCkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNlci5zdGFydEFjdGl2ZVNwYW4oc3Bhbk5hbWUsIG9wdHMsIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKHNwYW4pO1xuICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBvdGVsLlNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgIGNvZGU6IG90ZWwuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IChlIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzcGFuLmVuZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IFNwYW5LaW5kIGVudW0gdmFsdWUgYnkgbmFtZS5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIE9wZW5UZWxlbWV0cnkgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5LaW5kKFxuICBmaWVsZDoga2V5b2YgdHlwZW9mIFNwYW5LaW5kXG4pOiBQcm9taXNlPFNwYW5LaW5kIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IG90ZWwgPSBhd2FpdCBnZXRPdGVsQXBpKCk7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIG90ZWwuU3BhbktpbmRbZmllbGRdO1xufVxuXG4vLyBTZW1hbnRpYyBjb252ZW50aW9ucyBmb3IgV29ybGQvU3RvcmFnZSB0cmFjaW5nXG4vLyBTdGFuZGFyZCBPVEVMIGNvbnZlbnRpb25zIGZvciBwZWVyIHNlcnZpY2UgbWFwcGluZ1xuZnVuY3Rpb24gU2VtYW50aWNDb252ZW50aW9uPFQ+KC4uLm5hbWVzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gKHZhbHVlOiBUKSA9PlxuICAgIE9iamVjdC5mcm9tRW50cmllcyhuYW1lcy5tYXAoKG5hbWUpID0+IFtuYW1lLCB2YWx1ZV0gYXMgY29uc3QpKTtcbn1cblxuLyoqIFRoZSByZW1vdGUgc2VydmljZSBuYW1lIGZvciBEYXRhZG9nIHNlcnZpY2UgbWFwcyAoRGF0YWRvZy1zcGVjaWZpYzogcGVlci5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFBlZXJTZXJ2aWNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3BlZXIuc2VydmljZScpO1xuXG4vKiogUlBDIHN5c3RlbSBpZGVudGlmaWVyIChzdGFuZGFyZCBPVEVMOiBycGMuc3lzdGVtKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1N5c3RlbSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMuc3lzdGVtJyk7XG5cbi8qKiBSUEMgc2VydmljZSBuYW1lIChzdGFuZGFyZCBPVEVMOiBycGMuc2VydmljZSkgKi9cbmV4cG9ydCBjb25zdCBScGNTZXJ2aWNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgbWV0aG9kIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5tZXRob2QpICovXG5leHBvcnQgY29uc3QgUnBjTWV0aG9kID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5tZXRob2QnKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIHNwZWNpZmljIHdvcmtmbG93IHJ1biBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cucnVuLmlkJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHN0ZXAgaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBTdGVwSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5pZCcpO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/world-local",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.1",
|
|
4
4
|
"description": "Local development World implementation for Workflow SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"@vercel/queue": "0.3.1",
|
|
27
27
|
"async-sema": "3.1.1",
|
|
28
28
|
"ulid": "~3.0.1",
|
|
29
|
-
"undici": "7.
|
|
30
|
-
"zod": "4.3.6",
|
|
29
|
+
"undici": "7.28.0",
|
|
30
|
+
"zod": "~4.3.6",
|
|
31
31
|
"@workflow/errors": "4.1.4",
|
|
32
32
|
"@workflow/utils": "4.1.3",
|
|
33
|
-
"@workflow/world": "4.2.
|
|
33
|
+
"@workflow/world": "4.2.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@opentelemetry/api": "1.9.0",
|