@workflow/world-local 5.0.0-beta.22 → 5.0.0-beta.23

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.
@@ -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,EAKV,OAAO,EACR,MAAM,iBAAiB,CAAC;AAczB;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAiFlB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
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;AA4KzB,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,112 @@
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
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, isSystem } = 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
+ isSystem: isSystem ?? false,
32
+ };
33
+ }
34
+ function isMatchingHookCreatedEvent(event, matches) {
35
+ return (event.eventType === 'hook_created' &&
36
+ typeof event.correlationId === 'string' &&
37
+ matches(event));
38
+ }
39
+ function closesLiveHook(event, liveEvent) {
40
+ if (event.runId !== liveEvent.runId)
41
+ return false;
42
+ return ((event.eventType === 'hook_disposed' &&
43
+ event.correlationId === liveEvent.correlationId) ||
44
+ isTerminalRunEventType(event.eventType));
45
+ }
46
+ async function readEventForHookScan(filePath) {
47
+ try {
48
+ return await readJSON(filePath, EventSchema);
49
+ }
50
+ catch (error) {
51
+ if (error instanceof SyntaxError || error instanceof z.ZodError) {
52
+ return null;
53
+ }
54
+ throw error;
55
+ }
56
+ }
57
+ async function isTerminalRunCache(basedir, runId, tag) {
58
+ const run = await readJSONWithFallback(basedir, 'runs', runId, WorkflowRunSchema, tag);
59
+ return run ? isTerminalWorkflowRunStatus(run.status) : false;
60
+ }
61
+ async function findLiveHookCreatedEvent(basedir, matches, tag) {
62
+ const eventsDir = path.join(basedir, 'events');
63
+ const events = [];
64
+ for (const fileId of await listJSONFiles(eventsDir)) {
65
+ if (!isVisibleToTag(fileId, tag))
66
+ continue;
67
+ const event = await readEventForHookScan(path.join(eventsDir, `${fileId}.json`));
68
+ if (event)
69
+ events.push(event);
70
+ }
71
+ events.sort((a, b) => {
72
+ const byTime = a.createdAt.getTime() - b.createdAt.getTime();
73
+ return byTime === 0 ? a.eventId.localeCompare(b.eventId) : byTime;
74
+ });
75
+ let liveEvent = null;
76
+ for (const event of events) {
77
+ if (isMatchingHookCreatedEvent(event, matches)) {
78
+ liveEvent = event;
79
+ continue;
80
+ }
81
+ if (liveEvent && closesLiveHook(event, liveEvent)) {
82
+ liveEvent = null;
83
+ }
84
+ }
85
+ if (liveEvent && (await isTerminalRunCache(basedir, liveEvent.runId, tag))) {
86
+ return null;
87
+ }
88
+ return liveEvent;
89
+ }
90
+ async function restoreHookCachesFromEvent(basedir, event, tag) {
91
+ const hook = hookFromCreatedEvent(event);
92
+ const claimPath = path.join(basedir, 'hooks', 'tokens', `${hashToken(hook.token)}.json`);
93
+ await writeExclusive(claimPath, JSON.stringify({
94
+ token: hook.token,
95
+ hookId: hook.hookId,
96
+ runId: hook.runId,
97
+ eventId: event.eventId,
98
+ }));
99
+ await writeExclusive(taggedPath(basedir, 'hooks', hook.hookId, tag), JSON.stringify(hook, jsonReplacer, 2));
100
+ return hook;
101
+ }
102
+ export async function rebuildLiveHookByTokenFromEventLog(basedir, token, tag) {
103
+ const event = await findLiveHookCreatedEvent(basedir, (candidate) => getHookCreatedToken(candidate) === token, tag);
104
+ return event ? restoreHookCachesFromEvent(basedir, event, tag) : null;
105
+ }
106
+ async function rebuildLiveHookByIdFromEventLog(basedir, hookId, tag) {
107
+ const event = await findLiveHookCreatedEvent(basedir, (candidate) => candidate.correlationId === hookId, tag);
108
+ return event ? restoreHookCachesFromEvent(basedir, event, tag) : null;
109
+ }
8
110
  /**
9
111
  * Creates a hooks storage implementation using the filesystem.
10
112
  * Implements the Storage['hooks'] interface with hook CRUD operations.
@@ -27,13 +129,19 @@ export function createHooksStorage(basedir, tag) {
27
129
  assertSafeEntityId('hookId', hookId);
28
130
  const hook = await readJSONWithFallback(basedir, 'hooks', hookId, HookSchema, tag);
29
131
  if (!hook) {
30
- throw new HookNotFoundError(hookId);
132
+ const rebuilt = await rebuildLiveHookByIdFromEventLog(basedir, hookId, tag);
133
+ if (!rebuilt) {
134
+ throw new HookNotFoundError(hookId);
135
+ }
136
+ const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
137
+ return filterHookData({ ...rebuilt, isWebhook: rebuilt.isWebhook ?? true }, resolveData);
31
138
  }
32
139
  const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
33
140
  return filterHookData({ ...hook, isWebhook: hook.isWebhook ?? true }, resolveData);
34
141
  }
35
142
  async function getByToken(token) {
36
- const hook = await findHookByToken(token);
143
+ const hook = (await findHookByToken(token)) ??
144
+ (await rebuildLiveHookByTokenFromEventLog(basedir, token, tag));
37
145
  if (!hook) {
38
146
  throw new HookNotFoundError(token);
39
147
  }
@@ -96,4 +204,4 @@ export async function deleteAllHooksForRun(basedir, runId) {
96
204
  }
97
205
  }
98
206
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3Mtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hvb2tzLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixRQUFRLEVBQ1Isb0JBQW9CLEdBQ3JCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQWUsRUFDZixHQUFZO0lBRVosc0VBQXNFO0lBQ3RFLEtBQUssVUFBVSxlQUFlLENBQUMsS0FBYTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBc0I7UUFDdkQsa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sb0JBQW9CLENBQ3JDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixHQUFHLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFdBQVcsSUFBSSwyQkFBMkIsQ0FBQztRQUN2RSxPQUFPLGNBQWMsQ0FDbkIsRUFBRSxHQUFHLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsRUFDOUMsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxLQUFhO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxVQUFVLElBQUksQ0FDakIsTUFBdUI7UUFFdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSwyQkFBMkIsQ0FBQztRQUV0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLHdCQUF3QixDQUFDO1lBQzVDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsSUFBSSxLQUFLO1lBQ2hELEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUs7WUFDL0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTTtZQUNqQyxVQUFVLEVBQUUsU0FBUyxFQUFFLDJEQUEyRDtZQUNsRixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDZiw4QkFBOEI7Z0JBQzlCLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDaEQsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUNqQixvRUFBb0U7Z0JBQ3BFLGtFQUFrRTtnQkFDbEUsa0VBQWtFO2dCQUNsRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztRQUVILHNDQUFzQztRQUN0QyxPQUFPO1lBQ0wsR0FBRyxNQUFNO1lBQ1QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLE9BQWUsRUFDZixLQUFhO0lBRWIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakMsNkRBQTZEO1lBQzdELDREQUE0RDtZQUM1RCw4REFBOEQ7WUFDOUQsK0RBQStEO1lBQy9ELHVEQUF1RDtZQUN2RCxrREFBa0Q7WUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDOUIsUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEMsQ0FBQztZQUNGLE1BQU0sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxDQUNkLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUNyRSxDQUFDO1lBQ0YsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IEhvb2tOb3RGb3VuZEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIEdldEhvb2tQYXJhbXMsXG4gIEhvb2ssXG4gIExpc3RIb29rc1BhcmFtcyxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIFN0b3JhZ2UsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBIb29rU2NoZW1hIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTiB9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRTYWZlRW50aXR5SWQsXG4gIGRlbGV0ZUpTT04sXG4gIGxpc3RKU09ORmlsZXMsXG4gIHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeSxcbiAgcmVhZEpTT04sXG4gIHJlYWRKU09OV2l0aEZhbGxiYWNrLFxufSBmcm9tICcuLi9mcy5qcyc7XG5pbXBvcnQgeyBmaWx0ZXJIb29rRGF0YSB9IGZyb20gJy4vZmlsdGVycy5qcyc7XG5pbXBvcnQgeyBoYXNoVG9rZW4sIGhvb2tSZWNvdmVyeU1hcmtlclBhdGggfSBmcm9tICcuL2hlbHBlcnMuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBob29rcyBzdG9yYWdlIGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBmaWxlc3lzdGVtLlxuICogSW1wbGVtZW50cyB0aGUgU3RvcmFnZVsnaG9va3MnXSBpbnRlcmZhY2Ugd2l0aCBob29rIENSVUQgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhvb2tzU3RvcmFnZShcbiAgYmFzZWRpcjogc3RyaW5nLFxuICB0YWc/OiBzdHJpbmdcbik6IFN0b3JhZ2VbJ2hvb2tzJ10ge1xuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZmluZCBhIGhvb2sgYnkgdG9rZW4gKHNoYXJlZCBiZXR3ZWVuIGdldEJ5VG9rZW4pXG4gIGFzeW5jIGZ1bmN0aW9uIGZpbmRIb29rQnlUb2tlbih0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxIb29rIHwgbnVsbD4ge1xuICAgIGNvbnN0IGhvb2tzRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsICdob29rcycpO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgbGlzdEpTT05GaWxlcyhob29rc0Rpcik7XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IGhvb2tQYXRoID0gcGF0aC5qb2luKGhvb2tzRGlyLCBgJHtmaWxlfS5qc29uYCk7XG4gICAgICBjb25zdCBob29rID0gYXdhaXQgcmVhZEpTT04oaG9va1BhdGgsIEhvb2tTY2hlbWEpO1xuICAgICAgaWYgKGhvb2sgJiYgaG9vay50b2tlbiA9PT0gdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uaG9vaywgaXNXZWJob29rOiBob29rLmlzV2ViaG9vayA/PyB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXQoaG9va0lkOiBzdHJpbmcsIHBhcmFtcz86IEdldEhvb2tQYXJhbXMpOiBQcm9taXNlPEhvb2s+IHtcbiAgICBhc3NlcnRTYWZlRW50aXR5SWQoJ2hvb2tJZCcsIGhvb2tJZCk7XG4gICAgY29uc3QgaG9vayA9IGF3YWl0IHJlYWRKU09OV2l0aEZhbGxiYWNrKFxuICAgICAgYmFzZWRpcixcbiAgICAgICdob29rcycsXG4gICAgICBob29rSWQsXG4gICAgICBIb29rU2NoZW1hLFxuICAgICAgdGFnXG4gICAgKTtcbiAgICBpZiAoIWhvb2spIHtcbiAgICAgIHRocm93IG5ldyBIb29rTm90Rm91bmRFcnJvcihob29rSWQpO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcz8ucmVzb2x2ZURhdGEgfHwgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgIHJldHVybiBmaWx0ZXJIb29rRGF0YShcbiAgICAgIHsgLi4uaG9vaywgaXNXZWJob29rOiBob29rLmlzV2ViaG9vayA/PyB0cnVlIH0sXG4gICAgICByZXNvbHZlRGF0YVxuICAgICk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXRCeVRva2VuKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPEhvb2s+IHtcbiAgICBjb25zdCBob29rID0gYXdhaXQgZmluZEhvb2tCeVRva2VuKHRva2VuKTtcbiAgICBpZiAoIWhvb2spIHtcbiAgICAgIHRocm93IG5ldyBIb29rTm90Rm91bmRFcnJvcih0b2tlbik7XG4gICAgfVxuICAgIHJldHVybiBob29rO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gbGlzdChcbiAgICBwYXJhbXM6IExpc3RIb29rc1BhcmFtc1xuICApOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEhvb2s+PiB7XG4gICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXMucmVzb2x2ZURhdGEgfHwgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5KHtcbiAgICAgIGRpcmVjdG9yeTogaG9va3NEaXIsXG4gICAgICBzY2hlbWE6IEhvb2tTY2hlbWEsXG4gICAgICBzb3J0T3JkZXI6IHBhcmFtcy5wYWdpbmF0aW9uPy5zb3J0T3JkZXIgPz8gJ2FzYycsXG4gICAgICBsaW1pdDogcGFyYW1zLnBhZ2luYXRpb24/LmxpbWl0LFxuICAgICAgY3Vyc29yOiBwYXJhbXMucGFnaW5hdGlvbj8uY3Vyc29yLFxuICAgICAgZmlsZVByZWZpeDogdW5kZWZpbmVkLCAvLyBIb29rcyBkb24ndCBoYXZlIFVMSURzLCBzbyB3ZSBjYW4ndCBvcHRpbWl6ZSBieSBmaWxlbmFtZVxuICAgICAgZmlsdGVyOiAoaG9vaykgPT4ge1xuICAgICAgICAvLyBGaWx0ZXIgYnkgcnVuSWQgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHBhcmFtcy5ydW5JZCAmJiBob29rLnJ1bklkICE9PSBwYXJhbXMucnVuSWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgZ2V0Q3JlYXRlZEF0OiAoKSA9PiB7XG4gICAgICAgIC8vIEhvb2sgZmlsZXMgZG9uJ3QgaGF2ZSBVTElEIHRpbWVzdGFtcHMgaW4gZmlsZW5hbWUsIHNvIHJldHVybiBudWxsXG4gICAgICAgIC8vIHRvIHNraXAgdGhlIGZpbGVuYW1lLWJhc2VkIG9wdGltaXphdGlvbiBhbmQgZGVmZXIgdG8gSlNPTi1iYXNlZFxuICAgICAgICAvLyBjdXJzb3IgZmlsdGVyaW5nIHdoaWNoIHVzZXMgdGhlIGFjdHVhbCBjcmVhdGVkQXQgZnJvbSB0aGUgZmlsZS5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LFxuICAgICAgZ2V0SWQ6IChob29rKSA9PiBob29rLmhvb2tJZCxcbiAgICB9KTtcblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgZGF0YSBhZnRlciBwYWdpbmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3VsdCxcbiAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLm1hcCgoaG9vaykgPT4gZmlsdGVySG9va0RhdGEoaG9vaywgcmVzb2x2ZURhdGEpKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgZ2V0LCBnZXRCeVRva2VuLCBsaXN0IH07XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGRlbGV0ZSBhbGwgaG9va3MgYXNzb2NpYXRlZCB3aXRoIGEgd29ya2Zsb3cgcnVuLlxuICogQ2FsbGVkIHdoZW4gYSBydW4gcmVhY2hlcyBhIHRlcm1pbmFsIHN0YXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQWxsSG9va3NGb3JSdW4oXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgcnVuSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGhvb2tzRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsICdob29rcycpO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGxpc3RKU09ORmlsZXMoaG9va3NEaXIpO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGhvb2tQYXRoID0gcGF0aC5qb2luKGhvb2tzRGlyLCBgJHtmaWxlfS5qc29uYCk7XG4gICAgY29uc3QgaG9vayA9IGF3YWl0IHJlYWRKU09OKGhvb2tQYXRoLCBIb29rU2NoZW1hKTtcbiAgICBpZiAoaG9vayAmJiBob29rLnJ1bklkID09PSBydW5JZCkge1xuICAgICAgLy8gRGVsZXRlIHRoZSB0b2tlbiBjb25zdHJhaW50IGZpbGUgdG8gZnJlZSB1cCB0aGUgdG9rZW4sIGFuZFxuICAgICAgLy8gZGVsZXRlIHRoZSByZWNvdmVyeSBtYXJrZXIgKGlmIGFueSkgZm9yIGRpc2sgaHlnaWVuZS4gVGhlXG4gICAgICAvLyBtYXJrZXIncyBmaWxlbmFtZSBoYXNoIGluY2x1ZGVzIGAodG9rZW4sIHJ1bklkLCBob29rSWQpYCBzb1xuICAgICAgLy8gYSBsZWFrZWQgbWFya2VyIGNhbiBuZXZlciBjb3JydXB0IGEgZGlmZmVyZW50IGxpZmV0aW1lIOKAlCBidXRcbiAgICAgIC8vIGNsZWFuaW5nIGl0IHVwIGhlcmUga2VlcHMgdGhlIHRva2Vucy8gZGlyZWN0b3J5IGZyb21cbiAgICAgIC8vIGFjY3VtdWxhdGluZyByZWNvdmVyZWQtaG9vayBzaWRlY2FycyBvdmVyIHRpbWUuXG4gICAgICBjb25zdCBjb25zdHJhaW50UGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgaG9va3NEaXIsXG4gICAgICAgICd0b2tlbnMnLFxuICAgICAgICBgJHtoYXNoVG9rZW4oaG9vay50b2tlbil9Lmpzb25gXG4gICAgICApO1xuICAgICAgYXdhaXQgZGVsZXRlSlNPTihjb25zdHJhaW50UGF0aCk7XG4gICAgICBhd2FpdCBkZWxldGVKU09OKFxuICAgICAgICBob29rUmVjb3ZlcnlNYXJrZXJQYXRoKGJhc2VkaXIsIGhvb2sudG9rZW4sIGhvb2sucnVuSWQsIGhvb2suaG9va0lkKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGRlbGV0ZUpTT04oaG9va1BhdGgpO1xuICAgIH1cbiAgfVxufVxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3Mtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hvb2tzLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVXJELE9BQU8sRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNiLHdCQUF3QixFQUN4QixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixjQUFjLEdBQ2YsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpFLFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxHQUF1QjtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFZO0lBQ3ZDLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxjQUFjO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekQsTUFBTSxLQUFLLEdBQUks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dEZvdW5kRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHtcbiAgRXZlbnQsXG4gIEdldEhvb2tQYXJhbXMsXG4gIEhvb2ssXG4gIEhvb2tDcmVhdGVkRXZlbnQsXG4gIExpc3RIb29rc1BhcmFtcyxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIFN0b3JhZ2UsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQge1xuICBFdmVudFNjaGVtYSxcbiAgSG9va1NjaGVtYSxcbiAgaXNUZXJtaW5hbFJ1bkV2ZW50VHlwZSxcbiAgaXNUZXJtaW5hbFdvcmtmbG93UnVuU3RhdHVzLFxuICBXb3JrZmxvd1J1blNjaGVtYSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIGFzc2VydFNhZmVFbnRpdHlJZCxcbiAgZGVsZXRlSlNPTixcbiAgaGFzVGFnLFxuICBpc1VudGFnZ2VkLFxuICBqc29uUmVwbGFjZXIsXG4gIGxpc3RKU09ORmlsZXMsXG4gIHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeSxcbiAgcmVhZEpTT04sXG4gIHJlYWRKU09OV2l0aEZhbGxiYWNrLFxuICB0YWdnZWRQYXRoLFxuICB3cml0ZUV4Y2x1c2l2ZSxcbn0gZnJvbSAnLi4vZnMuanMnO1xuaW1wb3J0IHsgZmlsdGVySG9va0RhdGEgfSBmcm9tICcuL2ZpbHRlcnMuanMnO1xuaW1wb3J0IHsgaGFzaFRva2VuLCBob29rUmVjb3ZlcnlNYXJrZXJQYXRoIH0gZnJvbSAnLi9oZWxwZXJzLmpzJztcblxuZnVuY3Rpb24gaXNWaXNpYmxlVG9UYWcoZmlsZUlkOiBzdHJpbmcsIHRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiB0YWcgPyBpc1VudGFnZ2VkKGZpbGVJZCkgfHwgaGFzVGFnKGZpbGVJZCwgdGFnKSA6IGlzVW50YWdnZWQoZmlsZUlkKTtcbn1cblxuZnVuY3Rpb24gZ2V0SG9va0NyZWF0ZWRUb2tlbihldmVudDogRXZlbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoZXZlbnQuZXZlbnRUeXBlICE9PSAnaG9va19jcmVhdGVkJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdG9rZW4gPSAoZXZlbnQuZXZlbnREYXRhIGFzIHsgdG9rZW4/OiB1bmtub3duIH0pLnRva2VuO1xuICByZXR1cm4gdHlwZW9mIHRva2VuID09PSAnc3RyaW5nJyA/IHRva2VuIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBob29rRnJvbUNyZWF0ZWRFdmVudChldmVudDogRXZlbnQgJiBIb29rQ3JlYXRlZEV2ZW50KTogSG9vayB7XG4gIGNvbnN0IHsgdG9rZW4sIG1ldGFkYXRhLCBpc1dlYmhvb2ssIGlzU3lzdGVtIH0gPSBldmVudC5ldmVudERhdGE7XG4gIHJldHVybiB7XG4gICAgcnVuSWQ6IGV2ZW50LnJ1bklkLFxuICAgIGhvb2tJZDogZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICB0b2tlbixcbiAgICBtZXRhZGF0YSxcbiAgICBvd25lcklkOiAnbG9jYWwtb3duZXInLFxuICAgIHByb2plY3RJZDogJ2xvY2FsLXByb2plY3QnLFxuICAgIGVudmlyb25tZW50OiAnbG9jYWwnLFxuICAgIGNyZWF0ZWRBdDogZXZlbnQuY3JlYXRlZEF0LFxuICAgIHNwZWNWZXJzaW9uOiBldmVudC5zcGVjVmVyc2lvbixcbiAgICBpc1dlYmhvb2s6IGlzV2ViaG9vayA/PyB0cnVlLFxuICAgIGlzU3lzdGVtOiBpc1N5c3RlbSA/PyBmYWxzZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNNYXRjaGluZ0hvb2tDcmVhdGVkRXZlbnQoXG4gIGV2ZW50OiBFdmVudCxcbiAgbWF0Y2hlczogKGV2ZW50OiBFdmVudCkgPT4gYm9vbGVhblxuKTogZXZlbnQgaXMgRXZlbnQgJiBIb29rQ3JlYXRlZEV2ZW50IHtcbiAgcmV0dXJuIChcbiAgICBldmVudC5ldmVudFR5cGUgPT09ICdob29rX2NyZWF0ZWQnICYmXG4gICAgdHlwZW9mIGV2ZW50LmNvcnJlbGF0aW9uSWQgPT09ICdzdHJpbmcnICYmXG4gICAgbWF0Y2hlcyhldmVudClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY2xvc2VzTGl2ZUhvb2soXG4gIGV2ZW50OiBFdmVudCxcbiAgbGl2ZUV2ZW50OiBFdmVudCAmIEhvb2tDcmVhdGVkRXZlbnRcbik6IGJvb2xlYW4ge1xuICBpZiAoZXZlbnQucnVuSWQgIT09IGxpdmVFdmVudC5ydW5JZCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gKFxuICAgIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX2Rpc3Bvc2VkJyAmJlxuICAgICAgZXZlbnQuY29ycmVsYXRpb25JZCA9PT0gbGl2ZUV2ZW50LmNvcnJlbGF0aW9uSWQpIHx8XG4gICAgaXNUZXJtaW5hbFJ1bkV2ZW50VHlwZShldmVudC5ldmVudFR5cGUpXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRFdmVudEZvckhvb2tTY2FuKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEV2ZW50IHwgbnVsbD4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZWFkSlNPTihmaWxlUGF0aCwgRXZlbnRTY2hlbWEpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yIHx8IGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzVGVybWluYWxSdW5DYWNoZShcbiAgYmFzZWRpcjogc3RyaW5nLFxuICBydW5JZDogc3RyaW5nLFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBydW4gPSBhd2FpdCByZWFkSlNPTldpdGhGYWxsYmFjayhcbiAgICBiYXNlZGlyLFxuICAgICdydW5zJyxcbiAgICBydW5JZCxcbiAgICBXb3JrZmxvd1J1blNjaGVtYSxcbiAgICB0YWdcbiAgKTtcbiAgcmV0dXJuIHJ1biA/IGlzVGVybWluYWxXb3JrZmxvd1J1blN0YXR1cyhydW4uc3RhdHVzKSA6IGZhbHNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5kTGl2ZUhvb2tDcmVhdGVkRXZlbnQoXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgbWF0Y2hlczogKGV2ZW50OiBFdmVudCkgPT4gYm9vbGVhbixcbiAgdGFnPzogc3RyaW5nXG4pOiBQcm9taXNlPChFdmVudCAmIEhvb2tDcmVhdGVkRXZlbnQpIHwgbnVsbD4ge1xuICBjb25zdCBldmVudHNEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2V2ZW50cycpO1xuICBjb25zdCBldmVudHM6IEV2ZW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGZpbGVJZCBvZiBhd2FpdCBsaXN0SlNPTkZpbGVzKGV2ZW50c0RpcikpIHtcbiAgICBpZiAoIWlzVmlzaWJsZVRvVGFnKGZpbGVJZCwgdGFnKSkgY29udGludWU7XG4gICAgY29uc3QgZXZlbnQgPSBhd2FpdCByZWFkRXZlbnRGb3JIb29rU2NhbihcbiAgICAgIHBhdGguam9pbihldmVudHNEaXIsIGAke2ZpbGVJZH0uanNvbmApXG4gICAgKTtcbiAgICBpZiAoZXZlbnQpIGV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgfVxuXG4gIGV2ZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgYnlUaW1lID0gYS5jcmVhdGVkQXQuZ2V0VGltZSgpIC0gYi5jcmVhdGVkQXQuZ2V0VGltZSgpO1xuICAgIHJldHVybiBieVRpbWUgPT09IDAgPyBhLmV2ZW50SWQubG9jYWxlQ29tcGFyZShiLmV2ZW50SWQpIDogYnlUaW1lO1xuICB9KTtcblxuICBsZXQgbGl2ZUV2ZW50OiAoRXZlbnQgJiBIb29rQ3JlYXRlZEV2ZW50KSB8IG51bGwgPSBudWxsO1xuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGlmIChpc01hdGNoaW5nSG9va0NyZWF0ZWRFdmVudChldmVudCwgbWF0Y2hlcykpIHtcbiAgICAgIGxpdmVFdmVudCA9IGV2ZW50O1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGxpdmVFdmVudCAmJiBjbG9zZXNMaXZlSG9vayhldmVudCwgbGl2ZUV2ZW50KSkge1xuICAgICAgbGl2ZUV2ZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBpZiAobGl2ZUV2ZW50ICYmIChhd2FpdCBpc1Rlcm1pbmFsUnVuQ2FjaGUoYmFzZWRpciwgbGl2ZUV2ZW50LnJ1bklkLCB0YWcpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGxpdmVFdmVudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzdG9yZUhvb2tDYWNoZXNGcm9tRXZlbnQoXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgZXZlbnQ6IEV2ZW50ICYgSG9va0NyZWF0ZWRFdmVudCxcbiAgdGFnPzogc3RyaW5nXG4pOiBQcm9taXNlPEhvb2s+IHtcbiAgY29uc3QgaG9vayA9IGhvb2tGcm9tQ3JlYXRlZEV2ZW50KGV2ZW50KTtcblxuICBjb25zdCBjbGFpbVBhdGggPSBwYXRoLmpvaW4oXG4gICAgYmFzZWRpcixcbiAgICAnaG9va3MnLFxuICAgICd0b2tlbnMnLFxuICAgIGAke2hhc2hUb2tlbihob29rLnRva2VuKX0uanNvbmBcbiAgKTtcbiAgYXdhaXQgd3JpdGVFeGNsdXNpdmUoXG4gICAgY2xhaW1QYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHRva2VuOiBob29rLnRva2VuLFxuICAgICAgaG9va0lkOiBob29rLmhvb2tJZCxcbiAgICAgIHJ1bklkOiBob29rLnJ1bklkLFxuICAgICAgZXZlbnRJZDogZXZlbnQuZXZlbnRJZCxcbiAgICB9KVxuICApO1xuICBhd2FpdCB3cml0ZUV4Y2x1c2l2ZShcbiAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICdob29rcycsIGhvb2suaG9va0lkLCB0YWcpLFxuICAgIEpTT04uc3RyaW5naWZ5KGhvb2ssIGpzb25SZXBsYWNlciwgMilcbiAgKTtcblxuICByZXR1cm4gaG9vaztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYnVpbGRMaXZlSG9va0J5VG9rZW5Gcm9tRXZlbnRMb2coXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgdG9rZW46IHN0cmluZyxcbiAgdGFnPzogc3RyaW5nXG4pOiBQcm9taXNlPEhvb2sgfCBudWxsPiB7XG4gIGNvbnN0IGV2ZW50ID0gYXdhaXQgZmluZExpdmVIb29rQ3JlYXRlZEV2ZW50KFxuICAgIGJhc2VkaXIsXG4gICAgKGNhbmRpZGF0ZSkgPT4gZ2V0SG9va0NyZWF0ZWRUb2tlbihjYW5kaWRhdGUpID09PSB0b2tlbixcbiAgICB0YWdcbiAgKTtcbiAgcmV0dXJuIGV2ZW50ID8gcmVzdG9yZUhvb2tDYWNoZXNGcm9tRXZlbnQoYmFzZWRpciwgZXZlbnQsIHRhZykgOiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWJ1aWxkTGl2ZUhvb2tCeUlkRnJvbUV2ZW50TG9nKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIGhvb2tJZDogc3RyaW5nLFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8SG9vayB8IG51bGw+IHtcbiAgY29uc3QgZXZlbnQgPSBhd2FpdCBmaW5kTGl2ZUhvb2tDcmVhdGVkRXZlbnQoXG4gICAgYmFzZWRpcixcbiAgICAoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuY29ycmVsYXRpb25JZCA9PT0gaG9va0lkLFxuICAgIHRhZ1xuICApO1xuICByZXR1cm4gZXZlbnQgPyByZXN0b3JlSG9va0NhY2hlc0Zyb21FdmVudChiYXNlZGlyLCBldmVudCwgdGFnKSA6IG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhvb2tzIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBJbXBsZW1lbnRzIHRoZSBTdG9yYWdlWydob29rcyddIGludGVyZmFjZSB3aXRoIGhvb2sgQ1JVRCBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSG9va3NTdG9yYWdlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogU3RvcmFnZVsnaG9va3MnXSB7XG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGEgaG9vayBieSB0b2tlbiAoc2hhcmVkIGJldHdlZW4gZ2V0QnlUb2tlbilcbiAgYXN5bmMgZnVuY3Rpb24gZmluZEhvb2tCeVRva2VuKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPEhvb2sgfCBudWxsPiB7XG4gICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBsaXN0SlNPTkZpbGVzKGhvb2tzRGlyKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgaG9va1BhdGggPSBwYXRoLmpvaW4oaG9va3NEaXIsIGAke2ZpbGV9Lmpzb25gKTtcbiAgICAgIGNvbnN0IGhvb2sgPSBhd2FpdCByZWFkSlNPTihob29rUGF0aCwgSG9va1NjaGVtYSk7XG4gICAgICBpZiAoaG9vayAmJiBob29rLnRva2VuID09PSB0b2tlbikge1xuICAgICAgICByZXR1cm4geyAuLi5ob29rLCBpc1dlYmhvb2s6IGhvb2suaXNXZWJob29rID8/IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldChob29rSWQ6IHN0cmluZywgcGFyYW1zPzogR2V0SG9va1BhcmFtcyk6IFByb21pc2U8SG9vaz4ge1xuICAgIGFzc2VydFNhZmVFbnRpdHlJZCgnaG9va0lkJywgaG9va0lkKTtcbiAgICBjb25zdCBob29rID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICBiYXNlZGlyLFxuICAgICAgJ2hvb2tzJyxcbiAgICAgIGhvb2tJZCxcbiAgICAgIEhvb2tTY2hlbWEsXG4gICAgICB0YWdcbiAgICApO1xuICAgIGlmICghaG9vaykge1xuICAgICAgY29uc3QgcmVidWlsdCA9IGF3YWl0IHJlYnVpbGRMaXZlSG9va0J5SWRGcm9tRXZlbnRMb2coXG4gICAgICAgIGJhc2VkaXIsXG4gICAgICAgIGhvb2tJZCxcbiAgICAgICAgdGFnXG4gICAgICApO1xuICAgICAgaWYgKCFyZWJ1aWx0KSB7XG4gICAgICAgIHRocm93IG5ldyBIb29rTm90Rm91bmRFcnJvcihob29rSWQpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXM/LnJlc29sdmVEYXRhIHx8IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcbiAgICAgIHJldHVybiBmaWx0ZXJIb29rRGF0YShcbiAgICAgICAgeyAuLi5yZWJ1aWx0LCBpc1dlYmhvb2s6IHJlYnVpbHQuaXNXZWJob29rID8/IHRydWUgfSxcbiAgICAgICAgcmVzb2x2ZURhdGFcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVEYXRhID0gcGFyYW1zPy5yZXNvbHZlRGF0YSB8fCBERUZBVUxUX1JFU09MVkVfREFUQV9PUFRJT047XG4gICAgcmV0dXJuIGZpbHRlckhvb2tEYXRhKFxuICAgICAgeyAuLi5ob29rLCBpc1dlYmhvb2s6IGhvb2suaXNXZWJob29rID8/IHRydWUgfSxcbiAgICAgIHJlc29sdmVEYXRhXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldEJ5VG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8SG9vaz4ge1xuICAgIGNvbnN0IGhvb2sgPVxuICAgICAgKGF3YWl0IGZpbmRIb29rQnlUb2tlbih0b2tlbikpID8/XG4gICAgICAoYXdhaXQgcmVidWlsZExpdmVIb29rQnlUb2tlbkZyb21FdmVudExvZyhiYXNlZGlyLCB0b2tlbiwgdGFnKSk7XG4gICAgaWYgKCFob29rKSB7XG4gICAgICB0aHJvdyBuZXcgSG9va05vdEZvdW5kRXJyb3IodG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gaG9vaztcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGxpc3QoXG4gICAgcGFyYW1zOiBMaXN0SG9va3NQYXJhbXNcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxIb29rPj4ge1xuICAgIGNvbnN0IGhvb2tzRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsICdob29rcycpO1xuICAgIGNvbnN0IHJlc29sdmVEYXRhID0gcGFyYW1zLnJlc29sdmVEYXRhIHx8IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeSh7XG4gICAgICBkaXJlY3Rvcnk6IGhvb2tzRGlyLFxuICAgICAgc2NoZW1hOiBIb29rU2NoZW1hLFxuICAgICAgc29ydE9yZGVyOiBwYXJhbXMucGFnaW5hdGlvbj8uc29ydE9yZGVyID8/ICdhc2MnLFxuICAgICAgbGltaXQ6IHBhcmFtcy5wYWdpbmF0aW9uPy5saW1pdCxcbiAgICAgIGN1cnNvcjogcGFyYW1zLnBhZ2luYXRpb24/LmN1cnNvcixcbiAgICAgIGZpbGVQcmVmaXg6IHVuZGVmaW5lZCwgLy8gSG9va3MgZG9uJ3QgaGF2ZSBVTElEcywgc28gd2UgY2FuJ3Qgb3B0aW1pemUgYnkgZmlsZW5hbWVcbiAgICAgIGZpbHRlcjogKGhvb2spID0+IHtcbiAgICAgICAgLy8gRmlsdGVyIGJ5IHJ1bklkIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmIChwYXJhbXMucnVuSWQgJiYgaG9vay5ydW5JZCAhPT0gcGFyYW1zLnJ1bklkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIGdldENyZWF0ZWRBdDogKCkgPT4ge1xuICAgICAgICAvLyBIb29rIGZpbGVzIGRvbid0IGhhdmUgVUxJRCB0aW1lc3RhbXBzIGluIGZpbGVuYW1lLCBzbyByZXR1cm4gbnVsbFxuICAgICAgICAvLyB0byBza2lwIHRoZSBmaWxlbmFtZS1iYXNlZCBvcHRpbWl6YXRpb24gYW5kIGRlZmVyIHRvIEpTT04tYmFzZWRcbiAgICAgICAgLy8gY3Vyc29yIGZpbHRlcmluZyB3aGljaCB1c2VzIHRoZSBhY3R1YWwgY3JlYXRlZEF0IGZyb20gdGhlIGZpbGUuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSxcbiAgICAgIGdldElkOiAoaG9vaykgPT4gaG9vay5ob29rSWQsXG4gICAgfSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgYWZ0ZXIgcGFnaW5hdGlvblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXN1bHQsXG4gICAgICBkYXRhOiByZXN1bHQuZGF0YS5tYXAoKGhvb2spID0+IGZpbHRlckhvb2tEYXRhKGhvb2ssIHJlc29sdmVEYXRhKSksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7IGdldCwgZ2V0QnlUb2tlbiwgbGlzdCB9O1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBkZWxldGUgYWxsIGhvb2tzIGFzc29jaWF0ZWQgd2l0aCBhIHdvcmtmbG93IHJ1bi5cbiAqIENhbGxlZCB3aGVuIGEgcnVuIHJlYWNoZXMgYSB0ZXJtaW5hbCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUFsbEhvb2tzRm9yUnVuKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHJ1bklkOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBob29rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnaG9va3MnKTtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBsaXN0SlNPTkZpbGVzKGhvb2tzRGlyKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBob29rUGF0aCA9IHBhdGguam9pbihob29rc0RpciwgYCR7ZmlsZX0uanNvbmApO1xuICAgIGNvbnN0IGhvb2sgPSBhd2FpdCByZWFkSlNPTihob29rUGF0aCwgSG9va1NjaGVtYSk7XG4gICAgaWYgKGhvb2sgJiYgaG9vay5ydW5JZCA9PT0gcnVuSWQpIHtcbiAgICAgIC8vIERlbGV0ZSB0aGUgdG9rZW4gY29uc3RyYWludCBmaWxlIHRvIGZyZWUgdXAgdGhlIHRva2VuLCBhbmRcbiAgICAgIC8vIGRlbGV0ZSB0aGUgcmVjb3ZlcnkgbWFya2VyIChpZiBhbnkpIGZvciBkaXNrIGh5Z2llbmUuIFRoZVxuICAgICAgLy8gbWFya2VyJ3MgZmlsZW5hbWUgaGFzaCBpbmNsdWRlcyBgKHRva2VuLCBydW5JZCwgaG9va0lkKWAgc29cbiAgICAgIC8vIGEgbGVha2VkIG1hcmtlciBjYW4gbmV2ZXIgY29ycnVwdCBhIGRpZmZlcmVudCBsaWZldGltZSDigJQgYnV0XG4gICAgICAvLyBjbGVhbmluZyBpdCB1cCBoZXJlIGtlZXBzIHRoZSB0b2tlbnMvIGRpcmVjdG9yeSBmcm9tXG4gICAgICAvLyBhY2N1bXVsYXRpbmcgcmVjb3ZlcmVkLWhvb2sgc2lkZWNhcnMgb3ZlciB0aW1lLlxuICAgICAgY29uc3QgY29uc3RyYWludFBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgIGhvb2tzRGlyLFxuICAgICAgICAndG9rZW5zJyxcbiAgICAgICAgYCR7aGFzaFRva2VuKGhvb2sudG9rZW4pfS5qc29uYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IGRlbGV0ZUpTT04oY29uc3RyYWludFBhdGgpO1xuICAgICAgYXdhaXQgZGVsZXRlSlNPTihcbiAgICAgICAgaG9va1JlY292ZXJ5TWFya2VyUGF0aChiYXNlZGlyLCBob29rLnRva2VuLCBob29rLnJ1bklkLCBob29rLmhvb2tJZClcbiAgICAgICk7XG4gICAgICBhd2FpdCBkZWxldGVKU09OKGhvb2tQYXRoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -7,6 +7,7 @@ import { type LocalRunsStorage } from './runs-storage.js';
7
7
  */
8
8
  export type LocalStorage = Omit<Storage, 'runs'> & {
9
9
  runs: LocalRunsStorage;
10
+ clearCache(): void;
10
11
  };
11
12
  /**
12
13
  * Creates a complete storage implementation using the filesystem.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG7E;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAezE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG7E;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG;IACjD,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,IAAI,IAAI,CAAC;CACpB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAgBzE"}
@@ -25,6 +25,7 @@ export function createStorage(basedir, tag) {
25
25
  steps: instrumentObject('world.steps', steps),
26
26
  events: instrumentObject('world.events', events),
27
27
  hooks: instrumentObject('world.hooks', hooks),
28
+ clearCache: () => events.clearCache(),
28
29
  };
29
30
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTeEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQWUsRUFBRSxHQUFZO0lBQ3pELHFDQUFxQztJQUNyQyxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFL0MsOENBQThDO0lBQzlDLCtEQUErRDtJQUMvRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDMUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDN0MsTUFBTSxFQUFFLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7UUFDaEQsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7S0FDOUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0b3JhZ2UgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgaW5zdHJ1bWVudE9iamVjdCB9IGZyb20gJy4uL2luc3RydW1lbnRPYmplY3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlRXZlbnRzU3RvcmFnZSB9IGZyb20gJy4vZXZlbnRzLXN0b3JhZ2UuanMnO1xuaW1wb3J0IHsgY3JlYXRlSG9va3NTdG9yYWdlIH0gZnJvbSAnLi9ob29rcy1zdG9yYWdlLmpzJztcbmltcG9ydCB7IGNyZWF0ZVJ1bnNTdG9yYWdlLCB0eXBlIExvY2FsUnVuc1N0b3JhZ2UgfSBmcm9tICcuL3J1bnMtc3RvcmFnZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdGVwc1N0b3JhZ2UgfSBmcm9tICcuL3N0ZXBzLXN0b3JhZ2UuanMnO1xuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcGUgdXNlZCBpbnNpZGUgd29ybGQtbG9jYWw6IGlkZW50aWNhbCB0byBgU3RvcmFnZWAsIGJ1dCBgcnVuc2BcbiAqIGV4cG9zZXMgdGhlIGludGVybmFsIGBmaWxlSWRGaWx0ZXJgIG9wdGlvbiBvbiBgbGlzdCgpYC4gU3RydWN0dXJhbGx5XG4gKiBhc3NpZ25hYmxlIHRvIGBTdG9yYWdlYCBhdCBwdWJsaWMgYm91bmRhcmllcyAoZS5nLiwgYHJlZW5xdWV1ZUFjdGl2ZVJ1bnNgKS5cbiAqL1xuZXhwb3J0IHR5cGUgTG9jYWxTdG9yYWdlID0gT21pdDxTdG9yYWdlLCAncnVucyc+ICYgeyBydW5zOiBMb2NhbFJ1bnNTdG9yYWdlIH07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBsZXRlIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IHRoYXQgY29tcG9zZXMgYWxsIHN0b3JhZ2UgaW1wbGVtZW50YXRpb25zLlxuICpcbiAqIEFsbCBzdG9yYWdlIG1ldGhvZHMgYXJlIGluc3RydW1lbnRlZCB3aXRoIHRyYWNpbmcgc3BhbnMgZm9yIG9ic2VydmFiaWxpdHkuXG4gKlxuICogQHBhcmFtIGJhc2VkaXIgLSBUaGUgYmFzZSBkaXJlY3RvcnkgZm9yIHN0b3Jpbmcgd29ya2Zsb3cgZGF0YVxuICogQHJldHVybnMgQSBjb21wbGV0ZSBTdG9yYWdlIGltcGxlbWVudGF0aW9uIHdpdGggdHJhY2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RvcmFnZShiYXNlZGlyOiBzdHJpbmcsIHRhZz86IHN0cmluZyk6IExvY2FsU3RvcmFnZSB7XG4gIC8vIENyZWF0ZSByYXcgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbnNcbiAgY29uc3QgcnVucyA9IGNyZWF0ZVJ1bnNTdG9yYWdlKGJhc2VkaXIsIHRhZyk7XG4gIGNvbnN0IHN0ZXBzID0gY3JlYXRlU3RlcHNTdG9yYWdlKGJhc2VkaXIsIHRhZyk7XG4gIGNvbnN0IGV2ZW50cyA9IGNyZWF0ZUV2ZW50c1N0b3JhZ2UoYmFzZWRpciwgdGFnKTtcbiAgY29uc3QgaG9va3MgPSBjcmVhdGVIb29rc1N0b3JhZ2UoYmFzZWRpciwgdGFnKTtcblxuICAvLyBJbnN0cnVtZW50IGFsbCBzdG9yYWdlIG1ldGhvZHMgd2l0aCB0cmFjaW5nXG4gIC8vIE5PVEU6IFNwYW4gbmFtZXMgYXJlIGxvd2VyY2FzZSBwZXIgT1RFTCBzZW1hbnRpYyBjb252ZW50aW9uc1xuICByZXR1cm4ge1xuICAgIHJ1bnM6IGluc3RydW1lbnRPYmplY3QoJ3dvcmxkLnJ1bnMnLCBydW5zKSxcbiAgICBzdGVwczogaW5zdHJ1bWVudE9iamVjdCgnd29ybGQuc3RlcHMnLCBzdGVwcyksXG4gICAgZXZlbnRzOiBpbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5ldmVudHMnLCBldmVudHMpLFxuICAgIGhvb2tzOiBpbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5ob29rcycsIGhvb2tzKSxcbiAgfTtcbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFZeEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQWUsRUFBRSxHQUFZO0lBQ3pELHFDQUFxQztJQUNyQyxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFL0MsOENBQThDO0lBQzlDLCtEQUErRDtJQUMvRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDMUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDN0MsTUFBTSxFQUFFLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7UUFDaEQsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDN0MsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7S0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0b3JhZ2UgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgaW5zdHJ1bWVudE9iamVjdCB9IGZyb20gJy4uL2luc3RydW1lbnRPYmplY3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlRXZlbnRzU3RvcmFnZSB9IGZyb20gJy4vZXZlbnRzLXN0b3JhZ2UuanMnO1xuaW1wb3J0IHsgY3JlYXRlSG9va3NTdG9yYWdlIH0gZnJvbSAnLi9ob29rcy1zdG9yYWdlLmpzJztcbmltcG9ydCB7IGNyZWF0ZVJ1bnNTdG9yYWdlLCB0eXBlIExvY2FsUnVuc1N0b3JhZ2UgfSBmcm9tICcuL3J1bnMtc3RvcmFnZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdGVwc1N0b3JhZ2UgfSBmcm9tICcuL3N0ZXBzLXN0b3JhZ2UuanMnO1xuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcGUgdXNlZCBpbnNpZGUgd29ybGQtbG9jYWw6IGlkZW50aWNhbCB0byBgU3RvcmFnZWAsIGJ1dCBgcnVuc2BcbiAqIGV4cG9zZXMgdGhlIGludGVybmFsIGBmaWxlSWRGaWx0ZXJgIG9wdGlvbiBvbiBgbGlzdCgpYC4gU3RydWN0dXJhbGx5XG4gKiBhc3NpZ25hYmxlIHRvIGBTdG9yYWdlYCBhdCBwdWJsaWMgYm91bmRhcmllcyAoZS5nLiwgYHJlZW5xdWV1ZUFjdGl2ZVJ1bnNgKS5cbiAqL1xuZXhwb3J0IHR5cGUgTG9jYWxTdG9yYWdlID0gT21pdDxTdG9yYWdlLCAncnVucyc+ICYge1xuICBydW5zOiBMb2NhbFJ1bnNTdG9yYWdlO1xuICBjbGVhckNhY2hlKCk6IHZvaWQ7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb21wbGV0ZSBzdG9yYWdlIGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBmaWxlc3lzdGVtLlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0aGF0IGNvbXBvc2VzIGFsbCBzdG9yYWdlIGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBBbGwgc3RvcmFnZSBtZXRob2RzIGFyZSBpbnN0cnVtZW50ZWQgd2l0aCB0cmFjaW5nIHNwYW5zIGZvciBvYnNlcnZhYmlsaXR5LlxuICpcbiAqIEBwYXJhbSBiYXNlZGlyIC0gVGhlIGJhc2UgZGlyZWN0b3J5IGZvciBzdG9yaW5nIHdvcmtmbG93IGRhdGFcbiAqIEByZXR1cm5zIEEgY29tcGxldGUgU3RvcmFnZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRyYWNpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0b3JhZ2UoYmFzZWRpcjogc3RyaW5nLCB0YWc/OiBzdHJpbmcpOiBMb2NhbFN0b3JhZ2Uge1xuICAvLyBDcmVhdGUgcmF3IHN0b3JhZ2UgaW1wbGVtZW50YXRpb25zXG4gIGNvbnN0IHJ1bnMgPSBjcmVhdGVSdW5zU3RvcmFnZShiYXNlZGlyLCB0YWcpO1xuICBjb25zdCBzdGVwcyA9IGNyZWF0ZVN0ZXBzU3RvcmFnZShiYXNlZGlyLCB0YWcpO1xuICBjb25zdCBldmVudHMgPSBjcmVhdGVFdmVudHNTdG9yYWdlKGJhc2VkaXIsIHRhZyk7XG4gIGNvbnN0IGhvb2tzID0gY3JlYXRlSG9va3NTdG9yYWdlKGJhc2VkaXIsIHRhZyk7XG5cbiAgLy8gSW5zdHJ1bWVudCBhbGwgc3RvcmFnZSBtZXRob2RzIHdpdGggdHJhY2luZ1xuICAvLyBOT1RFOiBTcGFuIG5hbWVzIGFyZSBsb3dlcmNhc2UgcGVyIE9URUwgc2VtYW50aWMgY29udmVudGlvbnNcbiAgcmV0dXJuIHtcbiAgICBydW5zOiBpbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5ydW5zJywgcnVucyksXG4gICAgc3RlcHM6IGluc3RydW1lbnRPYmplY3QoJ3dvcmxkLnN0ZXBzJywgc3RlcHMpLFxuICAgIGV2ZW50czogaW5zdHJ1bWVudE9iamVjdCgnd29ybGQuZXZlbnRzJywgZXZlbnRzKSxcbiAgICBob29rczogaW5zdHJ1bWVudE9iamVjdCgnd29ybGQuaG9va3MnLCBob29rcyksXG4gICAgY2xlYXJDYWNoZTogKCkgPT4gZXZlbnRzLmNsZWFyQ2FjaGUoKSxcbiAgfTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/world-local",
3
- "version": "5.0.0-beta.22",
3
+ "version": "5.0.0-beta.23",
4
4
  "description": "Local development World implementation for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,9 +28,9 @@
28
28
  "ulid": "~3.0.1",
29
29
  "undici": "7.28.0",
30
30
  "zod": "~4.3.6",
31
- "@workflow/errors": "5.0.0-beta.8",
32
- "@workflow/utils": "5.0.0-beta.4",
33
- "@workflow/world": "5.0.0-beta.14"
31
+ "@workflow/errors": "5.0.0-beta.9",
32
+ "@workflow/utils": "5.0.0-beta.5",
33
+ "@workflow/world": "5.0.0-beta.15"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@opentelemetry/api": "1.9.0",