@workflow/world-local 4.0.1-beta.7 → 4.1.0-beta.28

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.
Files changed (65) hide show
  1. package/dist/config.d.ts +15 -4
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +35 -9
  4. package/dist/config.js.map +1 -1
  5. package/dist/fs.d.ts +13 -0
  6. package/dist/fs.d.ts.map +1 -1
  7. package/dist/fs.js +108 -13
  8. package/dist/fs.js.map +1 -1
  9. package/dist/index.d.ts +10 -7
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +21 -9
  12. package/dist/index.js.map +1 -1
  13. package/dist/init.d.ts +91 -0
  14. package/dist/init.d.ts.map +1 -0
  15. package/dist/init.js +263 -0
  16. package/dist/init.js.map +1 -0
  17. package/dist/queue.d.ts +2 -1
  18. package/dist/queue.d.ts.map +1 -1
  19. package/dist/queue.js +83 -40
  20. package/dist/queue.js.map +1 -1
  21. package/dist/storage/events-storage.d.ts +7 -0
  22. package/dist/storage/events-storage.d.ts.map +1 -0
  23. package/dist/storage/events-storage.js +527 -0
  24. package/dist/storage/events-storage.js.map +1 -0
  25. package/dist/storage/filters.d.ts +26 -0
  26. package/dist/storage/filters.d.ts.map +1 -0
  27. package/dist/storage/filters.js +43 -0
  28. package/dist/storage/filters.js.map +1 -0
  29. package/dist/storage/helpers.d.ts +14 -0
  30. package/dist/storage/helpers.d.ts.map +1 -0
  31. package/dist/storage/helpers.js +34 -0
  32. package/dist/storage/helpers.js.map +1 -0
  33. package/dist/storage/hooks-storage.d.ts +12 -0
  34. package/dist/storage/hooks-storage.d.ts.map +1 -0
  35. package/dist/storage/hooks-storage.js +89 -0
  36. package/dist/storage/hooks-storage.js.map +1 -0
  37. package/dist/storage/index.d.ts +10 -0
  38. package/dist/storage/index.d.ts.map +1 -0
  39. package/dist/storage/index.js +20 -0
  40. package/dist/storage/index.js.map +1 -0
  41. package/dist/storage/legacy.d.ts +13 -0
  42. package/dist/storage/legacy.d.ts.map +1 -0
  43. package/dist/storage/legacy.js +73 -0
  44. package/dist/storage/legacy.js.map +1 -0
  45. package/dist/storage/runs-storage.d.ts +7 -0
  46. package/dist/storage/runs-storage.d.ts.map +1 -0
  47. package/dist/storage/runs-storage.js +59 -0
  48. package/dist/storage/runs-storage.js.map +1 -0
  49. package/dist/storage/steps-storage.d.ts +7 -0
  50. package/dist/storage/steps-storage.d.ts.map +1 -0
  51. package/dist/storage/steps-storage.js +58 -0
  52. package/dist/storage/steps-storage.js.map +1 -0
  53. package/dist/storage.d.ts +9 -2
  54. package/dist/storage.d.ts.map +1 -1
  55. package/dist/storage.js +8 -437
  56. package/dist/storage.js.map +1 -1
  57. package/dist/streamer.d.ts +1 -1
  58. package/dist/streamer.d.ts.map +1 -1
  59. package/dist/streamer.js +103 -20
  60. package/dist/streamer.js.map +1 -1
  61. package/dist/test-helpers.d.ts +43 -0
  62. package/dist/test-helpers.d.ts.map +1 -0
  63. package/dist/test-helpers.js +89 -0
  64. package/dist/test-helpers.js.map +1 -0
  65. package/package.json +10 -9
package/dist/init.js ADDED
@@ -0,0 +1,263 @@
1
+ import { access, constants, mkdir, readFile, unlink, writeFile, } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ /** Package name - hardcoded since it doesn't change */
5
+ const PACKAGE_NAME = '@workflow/world-local';
6
+ let cachedPackageInfo = null;
7
+ /**
8
+ * Get the directory path for this module.
9
+ * Works in ESM and falls back to a constant in CJS contexts (which shouldn't happen)
10
+ */
11
+ function getModuleDir() {
12
+ // In bundled CJS contexts, import.meta.url may be undefined or empty
13
+ if (typeof import.meta.url === 'string' && import.meta.url) {
14
+ return path.dirname(fileURLToPath(import.meta.url));
15
+ }
16
+ return null;
17
+ }
18
+ /**
19
+ * Returns the package name and version from package.json.
20
+ * The result is cached after the first read.
21
+ *
22
+ * In bundled contexts where package.json cannot be read,
23
+ * returns 'bundled' as the version.
24
+ */
25
+ export async function getPackageInfo() {
26
+ if (cachedPackageInfo) {
27
+ return cachedPackageInfo;
28
+ }
29
+ const moduleDir = getModuleDir();
30
+ if (moduleDir) {
31
+ try {
32
+ const content = await readFile(path.join(moduleDir, '../package.json'), 'utf-8');
33
+ cachedPackageInfo = JSON.parse(content);
34
+ return cachedPackageInfo;
35
+ }
36
+ catch {
37
+ // Fall through to bundled fallback
38
+ }
39
+ }
40
+ // Bundled context - package.json not accessible
41
+ cachedPackageInfo = {
42
+ name: PACKAGE_NAME,
43
+ version: 'bundled',
44
+ };
45
+ return cachedPackageInfo;
46
+ }
47
+ /** Filename for storing version information in the data directory */
48
+ const VERSION_FILENAME = 'version.txt';
49
+ /**
50
+ * Error thrown when the data directory cannot be accessed or created.
51
+ */
52
+ export class DataDirAccessError extends Error {
53
+ dataDir;
54
+ code;
55
+ constructor(message, dataDir, code) {
56
+ super(message);
57
+ this.name = 'DataDirAccessError';
58
+ this.dataDir = dataDir;
59
+ this.code = code;
60
+ }
61
+ }
62
+ /**
63
+ * Error thrown when data directory version is incompatible.
64
+ */
65
+ export class DataDirVersionError extends Error {
66
+ oldVersion;
67
+ newVersion;
68
+ suggestedVersion;
69
+ constructor(message, oldVersion, newVersion, suggestedVersion) {
70
+ super(message);
71
+ this.name = 'DataDirVersionError';
72
+ this.oldVersion = oldVersion;
73
+ this.newVersion = newVersion;
74
+ this.suggestedVersion = suggestedVersion;
75
+ }
76
+ }
77
+ /**
78
+ * Parses a version string into its components.
79
+ *
80
+ * @param versionString - Version string like "4.0.1" or "4.0.1-beta.20"
81
+ * @returns Parsed version object with major, minor, patch, and optional prerelease
82
+ */
83
+ export function parseVersion(versionString) {
84
+ // Match: major.minor.patch with optional prerelease
85
+ const match = versionString.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);
86
+ if (!match) {
87
+ throw new Error(`Invalid version string: "${versionString}"`);
88
+ }
89
+ return {
90
+ major: parseInt(match[1], 10),
91
+ minor: parseInt(match[2], 10),
92
+ patch: parseInt(match[3], 10),
93
+ prerelease: match[4],
94
+ raw: versionString,
95
+ };
96
+ }
97
+ /**
98
+ * Formats a parsed version back to a string.
99
+ */
100
+ export function formatVersion(version) {
101
+ const base = `${version.major}.${version.minor}.${version.patch}`;
102
+ return version.prerelease ? `${base}-${version.prerelease}` : base;
103
+ }
104
+ /**
105
+ * Parses the version file content to extract package name and version.
106
+ *
107
+ * @param content - Content like "@workflow/world-local@4.0.1-beta.20"
108
+ * @returns Object with packageName and version
109
+ */
110
+ export function parseVersionFile(content) {
111
+ const trimmed = content.trim();
112
+ const lastAtIndex = trimmed.lastIndexOf('@');
113
+ if (lastAtIndex <= 0) {
114
+ throw new Error(`Invalid version file content: "${content}"`);
115
+ }
116
+ const packageName = trimmed.substring(0, lastAtIndex);
117
+ const versionString = trimmed.substring(lastAtIndex + 1);
118
+ return {
119
+ packageName,
120
+ version: parseVersion(versionString),
121
+ };
122
+ }
123
+ /**
124
+ * Formats the version file content.
125
+ */
126
+ export function formatVersionFile(packageName, version) {
127
+ return `${packageName}@${formatVersion(version)}`;
128
+ }
129
+ /**
130
+ * Handles version upgrades between old and new versions.
131
+ * This function is called when the data directory was created with a different version.
132
+ *
133
+ * @param oldVersion - The version that created the data directory
134
+ * @param newVersion - The current package version
135
+ * @throws {DataDirVersionError} If the versions are incompatible
136
+ */
137
+ export function upgradeVersion(oldVersion, newVersion) {
138
+ console.log(`[world-local] Upgrading from version ${formatVersion(oldVersion)} to ${formatVersion(newVersion)}`);
139
+ }
140
+ /**
141
+ * Ensures the data directory exists and is writable.
142
+ * Creates the directory if it doesn't exist.
143
+ *
144
+ * @param dataDir - The path to the data directory
145
+ * @throws {DataDirAccessError} If the directory cannot be created or accessed
146
+ */
147
+ export async function ensureDataDir(dataDir) {
148
+ const absolutePath = path.resolve(dataDir);
149
+ // Try to create the directory if it doesn't exist
150
+ try {
151
+ await mkdir(absolutePath, { recursive: true });
152
+ }
153
+ catch (error) {
154
+ const nodeError = error;
155
+ // EEXIST is fine - directory already exists
156
+ if (nodeError.code !== 'EEXIST') {
157
+ throw new DataDirAccessError(`Failed to create data directory "${absolutePath}": ${nodeError.message}`, absolutePath, nodeError.code);
158
+ }
159
+ }
160
+ // Verify the directory is accessible (readable)
161
+ try {
162
+ await access(absolutePath, constants.R_OK);
163
+ }
164
+ catch (error) {
165
+ const nodeError = error;
166
+ throw new DataDirAccessError(`Data directory "${absolutePath}" is not readable: ${nodeError.message}`, absolutePath, nodeError.code);
167
+ }
168
+ // Verify the directory is writable by attempting to write a temp file
169
+ const testFile = path.join(absolutePath, `.workflow-write-test-${Date.now()}`);
170
+ try {
171
+ await writeFile(testFile, '');
172
+ await unlink(testFile);
173
+ }
174
+ catch (error) {
175
+ const nodeError = error;
176
+ throw new DataDirAccessError(`Data directory "${absolutePath}" is not writable: ${nodeError.message}`, absolutePath, nodeError.code);
177
+ }
178
+ }
179
+ /**
180
+ * Reads the version from the data directory's version file.
181
+ *
182
+ * @param dataDir - Path to the data directory
183
+ * @returns The parsed version info, or null if the file doesn't exist
184
+ */
185
+ async function readVersionFile(dataDir) {
186
+ const versionFilePath = path.join(path.resolve(dataDir), VERSION_FILENAME);
187
+ try {
188
+ const content = await readFile(versionFilePath, 'utf-8');
189
+ return parseVersionFile(content);
190
+ }
191
+ catch (error) {
192
+ const nodeError = error;
193
+ if (nodeError.code === 'ENOENT') {
194
+ return null;
195
+ }
196
+ throw error;
197
+ }
198
+ }
199
+ /**
200
+ * Writes the current version to the data directory's version file.
201
+ *
202
+ * @param dataDir - Path to the data directory
203
+ * @param version - The version to write
204
+ */
205
+ async function writeVersionFile(dataDir, version) {
206
+ const versionFilePath = path.join(path.resolve(dataDir), VERSION_FILENAME);
207
+ const packageInfo = await getPackageInfo();
208
+ const content = formatVersionFile(packageInfo.name, version);
209
+ await writeFile(versionFilePath, content);
210
+ }
211
+ /**
212
+ * Gets the suggested downgrade version based on the old version.
213
+ * If a specific version is suggested in the error, use that.
214
+ * Otherwise, suggest the previous minor version if patch is 0,
215
+ * or previous major version if minor is also 0.
216
+ */
217
+ function getSuggestedDowngradeVersion(oldVersion, suggestedVersion) {
218
+ if (suggestedVersion) {
219
+ return suggestedVersion;
220
+ }
221
+ // Suggest the old version as the downgrade target
222
+ return formatVersion(oldVersion);
223
+ }
224
+ /**
225
+ * Initializes the data directory, ensuring it exists, is accessible,
226
+ * and handles version compatibility.
227
+ *
228
+ * @param dataDir - The path to the data directory
229
+ * @throws {DataDirAccessError} If the directory cannot be created or accessed
230
+ */
231
+ export async function initDataDir(dataDir) {
232
+ // First ensure the directory exists and is accessible
233
+ await ensureDataDir(dataDir);
234
+ const packageInfo = await getPackageInfo();
235
+ const currentVersion = parseVersion(packageInfo.version);
236
+ // Read existing version file
237
+ const existingVersionInfo = await readVersionFile(dataDir);
238
+ if (existingVersionInfo === null) {
239
+ // New data directory - write the current version
240
+ await writeVersionFile(dataDir, currentVersion);
241
+ return;
242
+ }
243
+ const { version: oldVersion } = existingVersionInfo;
244
+ // Check if versions are the same (no upgrade needed)
245
+ if (formatVersion(oldVersion) === formatVersion(currentVersion)) {
246
+ return;
247
+ }
248
+ // Attempt upgrade
249
+ try {
250
+ upgradeVersion(oldVersion, currentVersion);
251
+ // Upgrade succeeded - write the new version
252
+ await writeVersionFile(dataDir, currentVersion);
253
+ }
254
+ catch (error) {
255
+ const suggestedVersion = error instanceof DataDirVersionError ? error.suggestedVersion : undefined;
256
+ const downgradeTarget = getSuggestedDowngradeVersion(oldVersion, suggestedVersion);
257
+ console.error(`[world-local] Failed to upgrade data directory from version ${formatVersion(oldVersion)} to ${formatVersion(currentVersion)}:`, error instanceof Error ? error.message : error);
258
+ console.error(`[world-local] Data is not compatible with the current version. ` +
259
+ `Please downgrade to ${packageInfo.name}@${downgradeTarget}`);
260
+ throw error;
261
+ }
262
+ }
263
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
package/dist/queue.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { type Queue } from '@workflow/world';
2
- export declare function createQueue(port?: number): Queue;
2
+ import type { Config } from './config.js';
3
+ export declare function createQueue(config: Partial<Config>): Queue;
3
4
  //# sourceMappingURL=queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,KAAK,EAAkB,MAAM,iBAAiB,CAAC;AAgBxE,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CA0JhD"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,KAAK,EAAkB,MAAM,iBAAiB,CAAC;AAKxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkC1C,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAwL1D"}
package/dist/queue.js CHANGED
@@ -1,21 +1,40 @@
1
1
  import { setTimeout } from 'node:timers/promises';
2
2
  import { JsonTransport } from '@vercel/queue';
3
- import { getPort } from '@workflow/utils/get-port';
4
3
  import { MessageId, ValidQueueName } from '@workflow/world';
4
+ import { Sema } from 'async-sema';
5
5
  import { monotonicFactory } from 'ulid';
6
6
  import { Agent } from 'undici';
7
7
  import z from 'zod';
8
+ import { resolveBaseUrl } from './config.js';
9
+ import { getPackageInfo } from './init.js';
8
10
  // For local queue, there is no technical limit on the message visibility lifespan,
9
11
  // but the environment variable can be used for testing purposes to set a max visibility limit.
10
12
  const LOCAL_QUEUE_MAX_VISIBILITY = parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY ?? '0', 10) ||
11
13
  Infinity;
12
- // Create a custom agent with unlimited headers timeout for long-running steps
14
+ // Maximum safe delay for setTimeout in Node.js (2^31 - 1 milliseconds ≈ 24.85 days)
15
+ // Larger values cause "TimeoutOverflowWarning: X does not fit into a 32-bit signed integer"
16
+ // When the clamped timeout fires, the handler will recalculate remaining time from
17
+ // persistent state and return another timeoutSeconds if needed.
18
+ const MAX_SAFE_TIMEOUT_MS = 2147483647;
19
+ // The local workers share the same Node.js process and event loop,
20
+ // so we need to limit concurrency to avoid overwhelming the system.
21
+ const DEFAULT_CONCURRENCY_LIMIT = 1000;
22
+ const WORKFLOW_LOCAL_QUEUE_CONCURRENCY = parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY ?? '0', 10) ||
23
+ DEFAULT_CONCURRENCY_LIMIT;
24
+ // Create a custom agent optimized for high-concurrency local workflows:
25
+ // - headersTimeout: 0 allows long-running steps
26
+ // - connections: 1000 allows many parallel connections to the same host
27
+ // - pipelining: 1 (default) for HTTP/1.1 compatibility
28
+ // - keepAliveTimeout: 30s keeps connections warm for rapid step execution
13
29
  const httpAgent = new Agent({
14
30
  headersTimeout: 0,
31
+ connections: 1000,
32
+ keepAliveTimeout: 30_000,
15
33
  });
16
- export function createQueue(port) {
34
+ export function createQueue(config) {
17
35
  const transport = new JsonTransport();
18
36
  const generateId = monotonicFactory();
37
+ const semaphore = new Sema(WORKFLOW_LOCAL_QUEUE_CONCURRENCY);
19
38
  /**
20
39
  * holds inflight messages by idempotency key to ensure
21
40
  * that we don't queue the same message multiple times
@@ -49,45 +68,68 @@ export function createQueue(port) {
49
68
  });
50
69
  }
51
70
  (async () => {
52
- let defaultRetriesLeft = 3;
53
- const portToUse = port ?? (await getPort());
54
- for (let attempt = 0; defaultRetriesLeft > 0; attempt++) {
55
- defaultRetriesLeft--;
56
- const response = await fetch(`http://localhost:${portToUse}/.well-known/workflow/v1/${pathname}`, {
57
- method: 'POST',
58
- duplex: 'half',
59
- dispatcher: httpAgent,
60
- headers: {
61
- 'content-type': 'application/json',
62
- 'x-vqs-queue-name': queueName,
63
- 'x-vqs-message-id': messageId,
64
- 'x-vqs-message-attempt': String(attempt + 1),
65
- },
66
- body,
67
- });
68
- if (response.ok) {
69
- return;
70
- }
71
- const text = await response.text();
72
- if (response.status === 503) {
73
- try {
74
- const timeoutSeconds = Number(JSON.parse(text).timeoutSeconds);
75
- await setTimeout(timeoutSeconds * 1000);
76
- defaultRetriesLeft++;
77
- continue;
71
+ const token = semaphore.tryAcquire();
72
+ if (!token) {
73
+ console.warn(`[world-local]: concurrency limit (${WORKFLOW_LOCAL_QUEUE_CONCURRENCY}) reached, waiting for queue to free up`);
74
+ await semaphore.acquire();
75
+ }
76
+ try {
77
+ let defaultRetriesLeft = 3;
78
+ const baseUrl = await resolveBaseUrl(config);
79
+ for (let attempt = 0; defaultRetriesLeft > 0; attempt++) {
80
+ defaultRetriesLeft--;
81
+ const response = await fetch(`${baseUrl}/.well-known/workflow/v1/${pathname}`, {
82
+ method: 'POST',
83
+ duplex: 'half',
84
+ dispatcher: httpAgent,
85
+ headers: {
86
+ 'content-type': 'application/json',
87
+ 'x-vqs-queue-name': queueName,
88
+ 'x-vqs-message-id': messageId,
89
+ 'x-vqs-message-attempt': String(attempt + 1),
90
+ },
91
+ body,
92
+ });
93
+ if (response.ok) {
94
+ return;
78
95
  }
79
- catch { }
96
+ const text = await response.text();
97
+ if (response.status === 503) {
98
+ try {
99
+ const timeoutSeconds = Number(JSON.parse(text).timeoutSeconds);
100
+ // Clamp to MAX_SAFE_TIMEOUT_MS to avoid Node.js setTimeout overflow warning.
101
+ // When this fires early, the handler recalculates remaining time from
102
+ // persistent state and returns another timeoutSeconds if needed.
103
+ const timeoutMs = Math.min(timeoutSeconds * 1000, MAX_SAFE_TIMEOUT_MS);
104
+ await setTimeout(timeoutMs);
105
+ defaultRetriesLeft++;
106
+ continue;
107
+ }
108
+ catch { }
109
+ }
110
+ console.error(`[local world] Failed to queue message`, {
111
+ queueName,
112
+ text,
113
+ status: response.status,
114
+ headers: Object.fromEntries(response.headers.entries()),
115
+ body: body.toString(),
116
+ });
80
117
  }
81
- console.error(`[embedded world] Failed to queue message`, {
82
- queueName,
83
- text,
84
- status: response.status,
85
- headers: Object.fromEntries(response.headers.entries()),
86
- body: body.toString(),
87
- });
118
+ console.error(`[local world] Reached max retries of local world queue implementation`);
119
+ }
120
+ finally {
121
+ semaphore.release();
122
+ }
123
+ })()
124
+ .catch((err) => {
125
+ // Silently ignore client disconnect errors (e.g., browser refresh during streaming)
126
+ // These are expected and should not cause unhandled rejection warnings
127
+ const isAbortError = err?.name === 'AbortError' || err?.name === 'ResponseAborted';
128
+ if (!isAbortError) {
129
+ console.error('[local world] Queue operation failed:', err);
88
130
  }
89
- console.error(`[embedded world] Reached max retries of embedded world queue implementation`);
90
- })().finally(() => {
131
+ })
132
+ .finally(() => {
91
133
  for (const fn of cleanup) {
92
134
  fn();
93
135
  }
@@ -133,7 +175,8 @@ export function createQueue(port) {
133
175
  };
134
176
  };
135
177
  const getDeploymentId = async () => {
136
- return 'dpl_embedded';
178
+ const packageInfo = await getPackageInfo();
179
+ return `dpl_local@${packageInfo.version}`;
137
180
  };
138
181
  return { queue, createQueueHandler, getDeploymentId };
139
182
  }
package/dist/queue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Storage } from '@workflow/world';
2
+ /**
3
+ * Creates the events storage implementation using the filesystem.
4
+ * Implements the Storage['events'] interface with create, list, and listByCorrelationId operations.
5
+ */
6
+ export declare function createEventsStorage(basedir: string): Storage['events'];
7
+ //# sourceMappingURL=events-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,OAAO,EAER,MAAM,iBAAiB,CAAC;AAuBzB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+nBtE"}