@workflow/world-local 5.0.0-beta.19 → 5.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +175 -12
- package/dist/telemetry.d.ts +8 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +5 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentObject.d.ts","sourceRoot":"","sources":["../src/instrumentObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instrumentObject.d.ts","sourceRoot":"","sources":["../src/instrumentObject.ts"],"names":[],"mappings":"AAgHA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CA4C1E"}
|
package/dist/instrumentObject.js
CHANGED
|
@@ -2,13 +2,25 @@
|
|
|
2
2
|
* Utility to instrument object methods with tracing.
|
|
3
3
|
* This mirrors world-vercel's implementation for consistent observability.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getSpanKind, PeerService, RpcMethod, RpcService, RpcSystem, StepId, trace, WorkflowRunId, } from './telemetry.js';
|
|
6
6
|
/** Configuration for peer service attribution */
|
|
7
7
|
const WORLD_LOCAL_SERVICE = {
|
|
8
8
|
peerService: 'world-local',
|
|
9
9
|
rpcSystem: 'local',
|
|
10
10
|
rpcService: 'world-local',
|
|
11
11
|
};
|
|
12
|
+
const RUN_ID_ARG_INDEX_BY_METHOD = {
|
|
13
|
+
'world.runs.get': 0,
|
|
14
|
+
'world.runs.experimentalSetAttributes': 0,
|
|
15
|
+
'world.steps.get': 0,
|
|
16
|
+
'world.events.create': 0,
|
|
17
|
+
'world.events.get': 0,
|
|
18
|
+
};
|
|
19
|
+
const RUN_ID_PARAM_METHODS = new Set([
|
|
20
|
+
'world.steps.list',
|
|
21
|
+
'world.events.list',
|
|
22
|
+
'world.hooks.list',
|
|
23
|
+
]);
|
|
12
24
|
/**
|
|
13
25
|
* Extracts the event type from arguments for events.create calls.
|
|
14
26
|
* The event data is the second argument and contains eventType.
|
|
@@ -22,6 +34,54 @@ function extractEventType(args) {
|
|
|
22
34
|
}
|
|
23
35
|
return undefined;
|
|
24
36
|
}
|
|
37
|
+
function getStringArg(args, index) {
|
|
38
|
+
return typeof args[index] === 'string' ? args[index] : undefined;
|
|
39
|
+
}
|
|
40
|
+
function getRunIdFromParams(params) {
|
|
41
|
+
if (typeof params !== 'object' || params === null) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const runId = params.runId;
|
|
45
|
+
return typeof runId === 'string' ? runId : undefined;
|
|
46
|
+
}
|
|
47
|
+
function getRunIdFromResult(result) {
|
|
48
|
+
if (typeof result !== 'object' || result === null) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const record = result;
|
|
52
|
+
if (typeof record.runId === 'string') {
|
|
53
|
+
return record.runId;
|
|
54
|
+
}
|
|
55
|
+
for (const key of ['run', 'step', 'hook', 'wait']) {
|
|
56
|
+
const entity = record[key];
|
|
57
|
+
if (typeof entity === 'object' && entity !== null) {
|
|
58
|
+
const runId = entity.runId;
|
|
59
|
+
if (typeof runId === 'string') {
|
|
60
|
+
return runId;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
function extractWorkflowAttributes(prefix, methodName, args) {
|
|
67
|
+
const methodKey = `${prefix}.${methodName}`;
|
|
68
|
+
const attributes = {};
|
|
69
|
+
const runIdArgIndex = RUN_ID_ARG_INDEX_BY_METHOD[methodKey];
|
|
70
|
+
const runId = runIdArgIndex === undefined
|
|
71
|
+
? RUN_ID_PARAM_METHODS.has(methodKey)
|
|
72
|
+
? getRunIdFromParams(args[0])
|
|
73
|
+
: undefined
|
|
74
|
+
: getStringArg(args, runIdArgIndex);
|
|
75
|
+
if (runId) {
|
|
76
|
+
Object.assign(attributes, WorkflowRunId(runId));
|
|
77
|
+
}
|
|
78
|
+
if (methodKey === 'world.steps.get') {
|
|
79
|
+
const stepId = getStringArg(args, 1);
|
|
80
|
+
if (stepId)
|
|
81
|
+
Object.assign(attributes, StepId(stepId));
|
|
82
|
+
}
|
|
83
|
+
return attributes;
|
|
84
|
+
}
|
|
25
85
|
/**
|
|
26
86
|
* Wraps all methods of an object with tracing spans.
|
|
27
87
|
* @param prefix - Prefix for span names (e.g., "world.runs")
|
|
@@ -55,12 +115,18 @@ export function instrumentObject(prefix, o) {
|
|
|
55
115
|
...RpcSystem(WORLD_LOCAL_SERVICE.rpcSystem),
|
|
56
116
|
...RpcService(WORLD_LOCAL_SERVICE.rpcService),
|
|
57
117
|
...RpcMethod(spanName),
|
|
118
|
+
...extractWorkflowAttributes(prefix, methodName, args),
|
|
58
119
|
});
|
|
59
|
-
|
|
120
|
+
const result = await f(...args);
|
|
121
|
+
const resultRunId = getRunIdFromResult(result);
|
|
122
|
+
if (resultRunId) {
|
|
123
|
+
span?.setAttributes(WorkflowRunId(resultRunId));
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
60
126
|
});
|
|
61
127
|
};
|
|
62
128
|
}
|
|
63
129
|
}
|
|
64
130
|
return handlers;
|
|
65
131
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudE9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0cnVtZW50T2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFDTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLGlEQUFpRDtBQUNqRCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFVBQVUsRUFBRSxhQUFhO0NBQzFCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQWU7SUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFtQixNQUFjLEVBQUUsQ0FBSTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxFQUFPLENBQUM7SUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxDQUFDO1FBQ2hELElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDakMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsK0NBQStDO1lBQy9DLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFlLEVBQUUsRUFBRTtnQkFDM0MsOERBQThEO2dCQUM5RCxJQUFJLFFBQVEsR0FBRyxHQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxNQUFNLEtBQUssY0FBYyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDekQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ2QsUUFBUSxHQUFHLEdBQUcsTUFBTSxJQUFJLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDcEQsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sS0FBSyxDQUNWLFFBQVEsRUFDUixFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUN2QyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsK0NBQStDO29CQUMvQyxzRUFBc0U7b0JBQ3RFLElBQUksRUFBRSxhQUFhLENBQUM7d0JBQ2xCLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQzt3QkFDL0MsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO3dCQUMzQyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7d0JBQzdDLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztxQkFDdkIsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHRvIGluc3RydW1lbnQgb2JqZWN0IG1ldGhvZHMgd2l0aCB0cmFjaW5nLlxuICogVGhpcyBtaXJyb3JzIHdvcmxkLXZlcmNlbCdzIGltcGxlbWVudGF0aW9uIGZvciBjb25zaXN0ZW50IG9ic2VydmFiaWxpdHkuXG4gKi9cbmltcG9ydCB7XG4gIHRyYWNlLFxuICBnZXRTcGFuS2luZCxcbiAgUGVlclNlcnZpY2UsXG4gIFJwY1N5c3RlbSxcbiAgUnBjU2VydmljZSxcbiAgUnBjTWV0aG9kLFxufSBmcm9tICcuL3RlbGVtZXRyeS5qcyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciBwZWVyIHNlcnZpY2UgYXR0cmlidXRpb24gKi9cbmNvbnN0IFdPUkxEX0xPQ0FMX1NFUlZJQ0UgPSB7XG4gIHBlZXJTZXJ2aWNlOiAnd29ybGQtbG9jYWwnLFxuICBycGNTeXN0ZW06ICdsb2NhbCcsXG4gIHJwY1NlcnZpY2U6ICd3b3JsZC1sb2NhbCcsXG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBldmVudCB0eXBlIGZyb20gYXJndW1lbnRzIGZvciBldmVudHMuY3JlYXRlIGNhbGxzLlxuICogVGhlIGV2ZW50IGRhdGEgaXMgdGhlIHNlY29uZCBhcmd1bWVudCBhbmQgY29udGFpbnMgZXZlbnRUeXBlLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RXZlbnRUeXBlKGFyZ3M6IHVua25vd25bXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChhcmdzLmxlbmd0aCA+PSAyICYmIHR5cGVvZiBhcmdzWzFdID09PSAnb2JqZWN0JyAmJiBhcmdzWzFdICE9PSBudWxsKSB7XG4gICAgY29uc3QgZGF0YSA9IGFyZ3NbMV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBkYXRhLmV2ZW50VHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhLmV2ZW50VHlwZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBXcmFwcyBhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3Qgd2l0aCB0cmFjaW5nIHNwYW5zLlxuICogQHBhcmFtIHByZWZpeCAtIFByZWZpeCBmb3Igc3BhbiBuYW1lcyAoZS5nLiwgXCJ3b3JsZC5ydW5zXCIpXG4gKiBAcGFyYW0gbyAtIE9iamVjdCB3aXRoIG1ldGhvZHMgdG8gaW5zdHJ1bWVudFxuICogQHJldHVybnMgSW5zdHJ1bWVudGVkIG9iamVjdCB3aXRoIHNhbWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVtZW50T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KHByZWZpeDogc3RyaW5nLCBvOiBUKTogVCB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge30gYXMgVDtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobykgYXMgKGtleW9mIFQpW10pIHtcbiAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlcnNba2V5XSA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZiA9IG9ba2V5XTtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBTdHJpbmcoa2V5KTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBkeW5hbWljIGZ1bmN0aW9uIHdyYXBwaW5nXG4gICAgICBoYW5kbGVyc1trZXldID0gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAvLyBCdWlsZCBzcGFuIG5hbWUgLSBmb3IgZXZlbnRzLmNyZWF0ZSwgaW5jbHVkZSB0aGUgZXZlbnQgdHlwZVxuICAgICAgICBsZXQgc3Bhbk5hbWUgPSBgJHtwcmVmaXh9LiR7bWV0aG9kTmFtZX1gO1xuICAgICAgICBpZiAocHJlZml4ID09PSAnd29ybGQuZXZlbnRzJyAmJiBtZXRob2ROYW1lID09PSAnY3JlYXRlJykge1xuICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV4dHJhY3RFdmVudFR5cGUoYXJncyk7XG4gICAgICAgICAgaWYgKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgc3Bhbk5hbWUgPSBgJHtwcmVmaXh9LiR7bWV0aG9kTmFtZX0gJHtldmVudFR5cGV9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJhY2UoXG4gICAgICAgICAgc3Bhbk5hbWUsXG4gICAgICAgICAgeyBraW5kOiBhd2FpdCBnZXRTcGFuS2luZCgnSU5URVJOQUwnKSB9LFxuICAgICAgICAgIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgICAgICAgICAvLyBBZGQgcGVlciBzZXJ2aWNlIGF0dHJpYnV0ZXMgZm9yIHNlcnZpY2UgbWFwc1xuICAgICAgICAgICAgLy8gVXNlIHNwYW5OYW1lIGZvciBycGMubWV0aG9kIHNvIERhdGFkb2cgc2hvd3MgZXZlbnQgdHlwZSBpbiByZXNvdXJjZVxuICAgICAgICAgICAgc3Bhbj8uc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgIC4uLlBlZXJTZXJ2aWNlKFdPUkxEX0xPQ0FMX1NFUlZJQ0UucGVlclNlcnZpY2UpLFxuICAgICAgICAgICAgICAuLi5ScGNTeXN0ZW0oV09STERfTE9DQUxfU0VSVklDRS5ycGNTeXN0ZW0pLFxuICAgICAgICAgICAgICAuLi5ScGNTZXJ2aWNlKFdPUkxEX0xPQ0FMX1NFUlZJQ0UucnBjU2VydmljZSksXG4gICAgICAgICAgICAgIC4uLlJwY01ldGhvZChzcGFuTmFtZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmKC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cbiJdfQ==
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudE9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0cnVtZW50T2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsaURBQWlEO0FBQ2pELE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsU0FBUyxFQUFFLE9BQU87SUFDbEIsVUFBVSxFQUFFLGFBQWE7Q0FDMUIsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQTJCO0lBQ3pELGdCQUFnQixFQUFFLENBQUM7SUFDbkIsc0NBQXNDLEVBQUUsQ0FBQztJQUN6QyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEVBQUUsQ0FBQztDQUN0QixDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtDQUNuQixDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQWU7SUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7SUFD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QkFBbUIsQ0FBQyxTQUFTLENBQUM7d0JBQzNDLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQzt3QkFDN0MsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO3dCQUN0QixHQUFHLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDO3FCQUN2RCxDQUFDLENBQUM7b0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9DLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLElBQUksRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2xELENBQUM7b0JBQ0QsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHRvIGluc3RydW1lbnQgb2JqZWN0IG1ldGhvZHMgd2l0aCB0cmFjaW5nLlxuICogVGhpcyBtaXJyb3JzIHdvcmxkLXZlcmNlbCdzIGltcGxlbWVudGF0aW9uIGZvciBjb25zaXN0ZW50IG9ic2VydmFiaWxpdHkuXG4gKi9cbmltcG9ydCB7XG4gIGdldFNwYW5LaW5kLFxuICBQZWVyU2VydmljZSxcbiAgUnBjTWV0aG9kLFxuICBScGNTZXJ2aWNlLFxuICBScGNTeXN0ZW0sXG4gIFN0ZXBJZCxcbiAgdHJhY2UsXG4gIFdvcmtmbG93UnVuSWQsXG59IGZyb20gJy4vdGVsZW1ldHJ5LmpzJztcblxuLyoqIENvbmZpZ3VyYXRpb24gZm9yIHBlZXIgc2VydmljZSBhdHRyaWJ1dGlvbiAqL1xuY29uc3QgV09STERfTE9DQUxfU0VSVklDRSA9IHtcbiAgcGVlclNlcnZpY2U6ICd3b3JsZC1sb2NhbCcsXG4gIHJwY1N5c3RlbTogJ2xvY2FsJyxcbiAgcnBjU2VydmljZTogJ3dvcmxkLWxvY2FsJyxcbn07XG5cbmNvbnN0IFJVTl9JRF9BUkdfSU5ERVhfQllfTUVUSE9EOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAnd29ybGQucnVucy5nZXQnOiAwLFxuICAnd29ybGQucnVucy5leHBlcmltZW50YWxTZXRBdHRyaWJ1dGVzJzogMCxcbiAgJ3dvcmxkLnN0ZXBzLmdldCc6IDAsXG4gICd3b3JsZC5ldmVudHMuY3JlYXRlJzogMCxcbiAgJ3dvcmxkLmV2ZW50cy5nZXQnOiAwLFxufTtcblxuY29uc3QgUlVOX0lEX1BBUkFNX01FVEhPRFMgPSBuZXcgU2V0KFtcbiAgJ3dvcmxkLnN0ZXBzLmxpc3QnLFxuICAnd29ybGQuZXZlbnRzLmxpc3QnLFxuICAnd29ybGQuaG9va3MubGlzdCcsXG5dKTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZXZlbnQgdHlwZSBmcm9tIGFyZ3VtZW50cyBmb3IgZXZlbnRzLmNyZWF0ZSBjYWxscy5cbiAqIFRoZSBldmVudCBkYXRhIGlzIHRoZSBzZWNvbmQgYXJndW1lbnQgYW5kIGNvbnRhaW5zIGV2ZW50VHlwZS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEV2ZW50VHlwZShhcmdzOiB1bmtub3duW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoYXJncy5sZW5ndGggPj0gMiAmJiB0eXBlb2YgYXJnc1sxXSA9PT0gJ29iamVjdCcgJiYgYXJnc1sxXSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGRhdGEgPSBhcmdzWzFdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2YgZGF0YS5ldmVudFR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YS5ldmVudFR5cGU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0cmluZ0FyZyhhcmdzOiB1bmtub3duW10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIGFyZ3NbaW5kZXhdID09PSAnc3RyaW5nJyA/IGFyZ3NbaW5kZXhdIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRSdW5JZEZyb21QYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IHBhcmFtcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcnVuSWQgPSAocGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5ydW5JZDtcbiAgcmV0dXJuIHR5cGVvZiBydW5JZCA9PT0gJ3N0cmluZycgPyBydW5JZCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0UnVuSWRGcm9tUmVzdWx0KHJlc3VsdDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0JyB8fCByZXN1bHQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcmVjb3JkID0gcmVzdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIHJlY29yZC5ydW5JZCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVjb3JkLnJ1bklkO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydydW4nLCAnc3RlcCcsICdob29rJywgJ3dhaXQnXSkge1xuICAgIGNvbnN0IGVudGl0eSA9IHJlY29yZFtrZXldO1xuICAgIGlmICh0eXBlb2YgZW50aXR5ID09PSAnb2JqZWN0JyAmJiBlbnRpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bklkID0gKGVudGl0eSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikucnVuSWQ7XG4gICAgICBpZiAodHlwZW9mIHJ1bklkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcnVuSWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFdvcmtmbG93QXR0cmlidXRlcyhcbiAgcHJlZml4OiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgYXJnczogdW5rbm93bltdXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgbWV0aG9kS2V5ID0gYCR7cHJlZml4fS4ke21ldGhvZE5hbWV9YDtcbiAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGNvbnN0IHJ1bklkQXJnSW5kZXggPSBSVU5fSURfQVJHX0lOREVYX0JZX01FVEhPRFttZXRob2RLZXldO1xuICBjb25zdCBydW5JZCA9XG4gICAgcnVuSWRBcmdJbmRleCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IFJVTl9JRF9QQVJBTV9NRVRIT0RTLmhhcyhtZXRob2RLZXkpXG4gICAgICAgID8gZ2V0UnVuSWRGcm9tUGFyYW1zKGFyZ3NbMF0pXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgICA6IGdldFN0cmluZ0FyZyhhcmdzLCBydW5JZEFyZ0luZGV4KTtcbiAgaWYgKHJ1bklkKSB7XG4gICAgT2JqZWN0LmFzc2lnbihhdHRyaWJ1dGVzLCBXb3JrZmxvd1J1bklkKHJ1bklkKSk7XG4gIH1cblxuICBpZiAobWV0aG9kS2V5ID09PSAnd29ybGQuc3RlcHMuZ2V0Jykge1xuICAgIGNvbnN0IHN0ZXBJZCA9IGdldFN0cmluZ0FyZyhhcmdzLCAxKTtcbiAgICBpZiAoc3RlcElkKSBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIFN0ZXBJZChzdGVwSWQpKTtcbiAgfVxuXG4gIHJldHVybiBhdHRyaWJ1dGVzO1xufVxuXG4vKipcbiAqIFdyYXBzIGFsbCBtZXRob2RzIG9mIGFuIG9iamVjdCB3aXRoIHRyYWNpbmcgc3BhbnMuXG4gKiBAcGFyYW0gcHJlZml4IC0gUHJlZml4IGZvciBzcGFuIG5hbWVzIChlLmcuLCBcIndvcmxkLnJ1bnNcIilcbiAqIEBwYXJhbSBvIC0gT2JqZWN0IHdpdGggbWV0aG9kcyB0byBpbnN0cnVtZW50XG4gKiBAcmV0dXJucyBJbnN0cnVtZW50ZWQgb2JqZWN0IHdpdGggc2FtZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RydW1lbnRPYmplY3Q8VCBleHRlbmRzIG9iamVjdD4ocHJlZml4OiBzdHJpbmcsIG86IFQpOiBUIHtcbiAgY29uc3QgaGFuZGxlcnMgPSB7fSBhcyBUO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvKSBhcyAoa2V5b2YgVClbXSkge1xuICAgIGlmICh0eXBlb2Ygb1trZXldICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBoYW5kbGVyc1trZXldID0gb1trZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmID0gb1trZXldO1xuICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IFN0cmluZyhrZXkpO1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIGR5bmFtaWMgZnVuY3Rpb24gd3JhcHBpbmdcbiAgICAgIGhhbmRsZXJzW2tleV0gPSBhc3luYyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgIC8vIEJ1aWxkIHNwYW4gbmFtZSAtIGZvciBldmVudHMuY3JlYXRlLCBpbmNsdWRlIHRoZSBldmVudCB0eXBlXG4gICAgICAgIGxldCBzcGFuTmFtZSA9IGAke3ByZWZpeH0uJHttZXRob2ROYW1lfWA7XG4gICAgICAgIGlmIChwcmVmaXggPT09ICd3b3JsZC5ldmVudHMnICYmIG1ldGhvZE5hbWUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXh0cmFjdEV2ZW50VHlwZShhcmdzKTtcbiAgICAgICAgICBpZiAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBzcGFuTmFtZSA9IGAke3ByZWZpeH0uJHttZXRob2ROYW1lfSAke2V2ZW50VHlwZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFjZShcbiAgICAgICAgICBzcGFuTmFtZSxcbiAgICAgICAgICB7IGtpbmQ6IGF3YWl0IGdldFNwYW5LaW5kKCdJTlRFUk5BTCcpIH0sXG4gICAgICAgICAgYXN5bmMgKHNwYW4pID0+IHtcbiAgICAgICAgICAgIC8vIEFkZCBwZWVyIHNlcnZpY2UgYXR0cmlidXRlcyBmb3Igc2VydmljZSBtYXBzXG4gICAgICAgICAgICAvLyBVc2Ugc3Bhbk5hbWUgZm9yIHJwYy5tZXRob2Qgc28gRGF0YWRvZyBzaG93cyBldmVudCB0eXBlIGluIHJlc291cmNlXG4gICAgICAgICAgICBzcGFuPy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgLi4uUGVlclNlcnZpY2UoV09STERfTE9DQUxfU0VSVklDRS5wZWVyU2VydmljZSksXG4gICAgICAgICAgICAgIC4uLlJwY1N5c3RlbShXT1JMRF9MT0NBTF9TRVJWSUNFLnJwY1N5c3RlbSksXG4gICAgICAgICAgICAgIC4uLlJwY1NlcnZpY2UoV09STERfTE9DQUxfU0VSVklDRS5ycGNTZXJ2aWNlKSxcbiAgICAgICAgICAgICAgLi4uUnBjTWV0aG9kKHNwYW5OYW1lKSxcbiAgICAgICAgICAgICAgLi4uZXh0cmFjdFdvcmtmbG93QXR0cmlidXRlcyhwcmVmaXgsIG1ldGhvZE5hbWUsIGFyZ3MpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0UnVuSWQgPSBnZXRSdW5JZEZyb21SZXN1bHQocmVzdWx0KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHRSdW5JZCkge1xuICAgICAgICAgICAgICBzcGFuPy5zZXRBdHRyaWJ1dGVzKFdvcmtmbG93UnVuSWQocmVzdWx0UnVuSWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGhhbmRsZXJzO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAsXzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAsXzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CA8oDnB"}
|