@workflow/world-local 4.0.1-beta.2 → 4.0.1-beta.21

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/storage.js CHANGED
@@ -52,16 +52,129 @@ const getObjectCreatedAt = (idPrefix) => (filename) => {
52
52
  }
53
53
  // For composite keys like {runId}-{stepId}, extract from the appropriate part
54
54
  if (idPrefix === 'step') {
55
- // For steps: wrun_ULID-step_123.json - extract from the runId part
56
- const runId = filename.substring(0, dashIndex);
57
- const ulid = runId.replace(/^wrun_/, '');
58
- return ulidToDate(ulid);
55
+ // Steps use sequential IDs (step_0, step_1, etc.) - no timestamp in filename.
56
+ // Return null to skip filename-based optimization and defer to JSON-based filtering.
57
+ return null;
59
58
  }
60
59
  // For events: wrun_ULID-evnt_ULID.json - extract from the eventId part
61
60
  const id = filename.substring(dashIndex + 1).replace(/\.json$/, '');
62
61
  const ulid = id.replace(replaceRegex, '');
63
62
  return ulidToDate(ulid);
64
63
  };
64
+ /**
65
+ * Creates a hooks storage implementation using the filesystem.
66
+ * Implements the Storage['hooks'] interface with hook CRUD operations.
67
+ */
68
+ function createHooksStorage(basedir) {
69
+ // Helper function to find a hook by token (shared between create and getByToken)
70
+ async function findHookByToken(token) {
71
+ const hooksDir = path.join(basedir, 'hooks');
72
+ const files = await listJSONFiles(hooksDir);
73
+ for (const file of files) {
74
+ const hookPath = path.join(hooksDir, `${file}.json`);
75
+ const hook = await readJSON(hookPath, HookSchema);
76
+ if (hook && hook.token === token) {
77
+ return hook;
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ async function create(runId, data) {
83
+ // Check if a hook with the same token already exists
84
+ // Token uniqueness is enforced globally per local environment
85
+ const existingHook = await findHookByToken(data.token);
86
+ if (existingHook) {
87
+ throw new Error(`Hook with token ${data.token} already exists for this project`);
88
+ }
89
+ const now = new Date();
90
+ const result = {
91
+ runId,
92
+ hookId: data.hookId,
93
+ token: data.token,
94
+ metadata: data.metadata,
95
+ ownerId: 'local-owner',
96
+ projectId: 'local-project',
97
+ environment: 'local',
98
+ createdAt: now,
99
+ };
100
+ const hookPath = path.join(basedir, 'hooks', `${data.hookId}.json`);
101
+ HookSchema.parse(result);
102
+ await writeJSON(hookPath, result);
103
+ return result;
104
+ }
105
+ async function get(hookId, params) {
106
+ const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
107
+ const hook = await readJSON(hookPath, HookSchema);
108
+ if (!hook) {
109
+ throw new Error(`Hook ${hookId} not found`);
110
+ }
111
+ const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
112
+ return filterHookData(hook, resolveData);
113
+ }
114
+ async function getByToken(token) {
115
+ const hook = await findHookByToken(token);
116
+ if (!hook) {
117
+ throw new Error(`Hook with token ${token} not found`);
118
+ }
119
+ return hook;
120
+ }
121
+ async function list(params) {
122
+ const hooksDir = path.join(basedir, 'hooks');
123
+ const resolveData = params.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
124
+ const result = await paginatedFileSystemQuery({
125
+ directory: hooksDir,
126
+ schema: HookSchema,
127
+ sortOrder: params.pagination?.sortOrder,
128
+ limit: params.pagination?.limit,
129
+ cursor: params.pagination?.cursor,
130
+ filePrefix: undefined, // Hooks don't have ULIDs, so we can't optimize by filename
131
+ filter: (hook) => {
132
+ // Filter by runId if provided
133
+ if (params.runId && hook.runId !== params.runId) {
134
+ return false;
135
+ }
136
+ return true;
137
+ },
138
+ getCreatedAt: () => {
139
+ // Hook files don't have ULID timestamps in filename
140
+ // We need to read the file to get createdAt, but that's inefficient
141
+ // So we return the hook's createdAt directly (item.createdAt will be used for sorting)
142
+ // Return a dummy date to pass the null check, actual sorting uses item.createdAt
143
+ return new Date(0);
144
+ },
145
+ getId: (hook) => hook.hookId,
146
+ });
147
+ // Transform the data after pagination
148
+ return {
149
+ ...result,
150
+ data: result.data.map((hook) => filterHookData(hook, resolveData)),
151
+ };
152
+ }
153
+ async function dispose(hookId) {
154
+ const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
155
+ const hook = await readJSON(hookPath, HookSchema);
156
+ if (!hook) {
157
+ throw new Error(`Hook ${hookId} not found`);
158
+ }
159
+ await deleteJSON(hookPath);
160
+ return hook;
161
+ }
162
+ return { create, get, getByToken, list, dispose };
163
+ }
164
+ /**
165
+ * Helper function to delete all hooks associated with a workflow run
166
+ */
167
+ async function deleteAllHooksForRun(basedir, runId) {
168
+ const hooksDir = path.join(basedir, 'hooks');
169
+ const files = await listJSONFiles(hooksDir);
170
+ for (const file of files) {
171
+ const hookPath = path.join(hooksDir, `${file}.json`);
172
+ const hook = await readJSON(hookPath, HookSchema);
173
+ if (hook && hook.runId === runId) {
174
+ await deleteJSON(hookPath);
175
+ }
176
+ }
177
+ }
65
178
  export function createStorage(basedir) {
66
179
  return {
67
180
  runs: {
@@ -77,13 +190,13 @@ export function createStorage(basedir) {
77
190
  input: data.input || [],
78
191
  output: undefined,
79
192
  error: undefined,
80
- errorCode: undefined,
81
193
  startedAt: undefined,
82
194
  completedAt: undefined,
83
195
  createdAt: now,
84
196
  updatedAt: now,
85
197
  };
86
198
  const runPath = path.join(basedir, 'runs', `${runId}.json`);
199
+ WorkflowRunSchema.parse(result);
87
200
  await writeJSON(runPath, result);
88
201
  return result;
89
202
  },
@@ -96,6 +209,15 @@ export function createStorage(basedir) {
96
209
  const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
97
210
  return filterRunData(run, resolveData);
98
211
  },
212
+ /**
213
+ * Updates a workflow run.
214
+ *
215
+ * Note: This operation is not atomic. Concurrent updates from multiple
216
+ * processes may result in lost updates (last writer wins). This is an
217
+ * inherent limitation of filesystem-based storage without locking.
218
+ * For the local world, this is acceptable as it's typically
219
+ * used in single-process scenarios.
220
+ */
99
221
  async update(id, data) {
100
222
  const runPath = path.join(basedir, 'runs', `${id}.json`);
101
223
  const run = await readJSON(runPath, WorkflowRunSchema);
@@ -112,12 +234,18 @@ export function createStorage(basedir) {
112
234
  if (data.status === 'running' && !updatedRun.startedAt) {
113
235
  updatedRun.startedAt = now;
114
236
  }
115
- if (data.status === 'completed' ||
237
+ const isBecomingTerminal = data.status === 'completed' ||
116
238
  data.status === 'failed' ||
117
- data.status === 'cancelled') {
239
+ data.status === 'cancelled';
240
+ if (isBecomingTerminal) {
118
241
  updatedRun.completedAt = now;
119
242
  }
243
+ WorkflowRunSchema.parse(updatedRun);
120
244
  await writeJSON(runPath, updatedRun, { overwrite: true });
245
+ // If transitioning to a terminal status, clean up all hooks for this run
246
+ if (isBecomingTerminal) {
247
+ await deleteAllHooksForRun(basedir, id);
248
+ }
121
249
  return updatedRun;
122
250
  },
123
251
  async list(params) {
@@ -155,6 +283,7 @@ export function createStorage(basedir) {
155
283
  return result;
156
284
  },
157
285
  async cancel(id, params) {
286
+ // This will call update which triggers hook cleanup automatically
158
287
  const run = await this.update(id, { status: 'cancelled' });
159
288
  const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
160
289
  return filterRunData(run, resolveData);
@@ -181,7 +310,6 @@ export function createStorage(basedir) {
181
310
  input: data.input,
182
311
  output: undefined,
183
312
  error: undefined,
184
- errorCode: undefined,
185
313
  attempt: 0,
186
314
  startedAt: undefined,
187
315
  completedAt: undefined,
@@ -190,6 +318,7 @@ export function createStorage(basedir) {
190
318
  };
191
319
  const compositeKey = `${runId}-${data.stepId}`;
192
320
  const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
321
+ StepSchema.parse(result);
193
322
  await writeJSON(stepPath, result);
194
323
  return result;
195
324
  },
@@ -211,6 +340,13 @@ export function createStorage(basedir) {
211
340
  const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
212
341
  return filterStepData(step, resolveData);
213
342
  },
343
+ /**
344
+ * Updates a step.
345
+ *
346
+ * Note: This operation is not atomic. Concurrent updates from multiple
347
+ * processes may result in lost updates (last writer wins). This is an
348
+ * inherent limitation of filesystem-based storage without locking.
349
+ */
214
350
  async update(runId, stepId, data) {
215
351
  const compositeKey = `${runId}-${stepId}`;
216
352
  const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
@@ -231,6 +367,7 @@ export function createStorage(basedir) {
231
367
  if (data.status === 'completed' || data.status === 'failed') {
232
368
  updatedStep.completedAt = now;
233
369
  }
370
+ StepSchema.parse(updatedStep);
234
371
  await writeJSON(stepPath, updatedStep, { overwrite: true });
235
372
  return updatedStep;
236
373
  },
@@ -274,6 +411,7 @@ export function createStorage(basedir) {
274
411
  // Store event using composite key {runId}-{eventId}
275
412
  const compositeKey = `${runId}-${eventId}`;
276
413
  const eventPath = path.join(basedir, 'events', `${compositeKey}.json`);
414
+ EventSchema.parse(result);
277
415
  await writeJSON(eventPath, result);
278
416
  const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
279
417
  return filterEventData(result, resolveData);
@@ -335,88 +473,7 @@ export function createStorage(basedir) {
335
473
  },
336
474
  },
337
475
  // Hooks
338
- hooks: {
339
- async create(runId, data) {
340
- const now = new Date();
341
- const result = {
342
- runId,
343
- hookId: data.hookId,
344
- token: data.token,
345
- metadata: data.metadata,
346
- ownerId: 'embedded-owner',
347
- projectId: 'embedded-project',
348
- environment: 'embedded',
349
- createdAt: now,
350
- };
351
- const hookPath = path.join(basedir, 'hooks', `${data.hookId}.json`);
352
- await writeJSON(hookPath, result);
353
- return result;
354
- },
355
- async get(hookId, params) {
356
- const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
357
- // Try webhook schema first (which includes response), fall back to HookSchema
358
- const hook = await readJSON(hookPath, HookSchema);
359
- if (!hook) {
360
- throw new Error(`Hook ${hookId} not found`);
361
- }
362
- const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
363
- return filterHookData(hook, resolveData);
364
- },
365
- async getByToken(token) {
366
- // Need to search through all hooks to find one with matching token
367
- const hooksDir = path.join(basedir, 'hooks');
368
- const files = await listJSONFiles(hooksDir);
369
- for (const file of files) {
370
- const hookPath = path.join(hooksDir, `${file}.json`);
371
- const hook = await readJSON(hookPath, HookSchema);
372
- if (hook && hook.token === token) {
373
- return hook;
374
- }
375
- }
376
- throw new Error(`Hook with token ${token} not found`);
377
- },
378
- async list(params) {
379
- const hooksDir = path.join(basedir, 'hooks');
380
- const resolveData = params.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
381
- const result = await paginatedFileSystemQuery({
382
- directory: hooksDir,
383
- schema: HookSchema,
384
- sortOrder: params.pagination?.sortOrder,
385
- limit: params.pagination?.limit,
386
- cursor: params.pagination?.cursor,
387
- filePrefix: undefined, // Hooks don't have ULIDs, so we can't optimize by filename
388
- filter: (hook) => {
389
- // Filter by runId if provided
390
- if (params.runId && hook.runId !== params.runId) {
391
- return false;
392
- }
393
- return true;
394
- },
395
- getCreatedAt: () => {
396
- // Hook files don't have ULID timestamps in filename
397
- // We need to read the file to get createdAt, but that's inefficient
398
- // So we return the hook's createdAt directly (item.createdAt will be used for sorting)
399
- // Return a dummy date to pass the null check, actual sorting uses item.createdAt
400
- return new Date(0);
401
- },
402
- getId: (hook) => hook.hookId,
403
- });
404
- // Transform the data after pagination
405
- return {
406
- ...result,
407
- data: result.data.map((hook) => filterHookData(hook, resolveData)),
408
- };
409
- },
410
- async dispose(hookId) {
411
- const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
412
- const hook = await readJSON(hookPath, HookSchema);
413
- if (!hook) {
414
- throw new Error(`Hook ${hookId} not found`);
415
- }
416
- await deleteJSON(hookPath);
417
- return hook;
418
- },
419
- },
476
+ hooks: createHooksStorage(basedir),
420
477
  };
421
478
  }
422
479
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAEL,WAAW,EAEX,UAAU,EAEV,UAAU,EAGV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,2EAA2E;AAC3E,kDAAkD;AAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5D,+DAA+D;AAC/D,SAAS,aAAa,CACpB,GAAgB,EAChB,WAA2B;IAE3B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,GAAG;YACN,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,IAAU,EAAE,WAA2B;IAC7D,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,WAA2B;IAChE,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAY,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAU,EAAE,WAA2B;IAC7D,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAW,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,kBAAkB,GACtB,CAAC,QAAgB,EAAE,EAAE,CACrB,CAAC,QAAgB,EAAe,EAAE;IAChC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,kFAAkF;QAClF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACvE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,8EAA8E;IAC9E,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,mEAAmE;QACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,uEAAuE;IACvE,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEJ,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO;QACL,IAAI,EAAE;YACJ,KAAK,CAAC,MAAM,CAAC,IAAI;gBACf,MAAM,KAAK,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,MAAM,MAAM,GAAgB;oBAC1B,KAAK;oBACL,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,MAAM,EAAE,SAAS;oBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAEV;oBACb,KAAK,EAAG,IAAI,CAAC,KAAe,IAAI,EAAE;oBAClC,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,SAAS;oBACpB,SAAS,EAAE,SAAS;oBACpB,WAAW,EAAE,SAAS;oBACtB,SAAS,EAAE,GAAG;oBACd,SAAS,EAAE,GAAG;iBACf,CAAC;gBAEF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;gBAC5D,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM;gBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;gBACzD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBACvD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI;gBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;gBACzD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBACvD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;gBACzC,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAgB;oBAC9B,GAAG,GAAG;oBACN,GAAG,IAAI;oBACP,SAAS,EAAE,GAAG;iBACf,CAAC;gBAEF,qEAAqE;gBACrE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;oBACvD,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC7B,CAAC;gBACD,IACE,IAAI,CAAC,MAAM,KAAK,WAAW;oBAC3B,IAAI,CAAC,MAAM,KAAK,QAAQ;oBACxB,IAAI,CAAC,MAAM,KAAK,WAAW,EAC3B,CAAC;oBACD,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC;gBAC/B,CAAC;gBAED,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,MAAM;gBACf,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBAC5C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;oBACrC,MAAM,EAAE,iBAAiB;oBACzB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;wBACd,IACE,MAAM,EAAE,YAAY;4BACpB,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,EACxC,CAAC;4BACD,OAAO,KAAK,CAAC;wBACf,CAAC;wBACD,IAAI,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;4BACnD,OAAO,KAAK,CAAC;wBACf,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI,MAAM;oBAClD,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK;oBAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;oBAClC,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;oBACxC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;iBAC1B,CAAC,CAAC;gBAEH,iEAAiE;gBACjE,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBAC3B,OAAO;wBACL,GAAG,MAAM;wBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC9B,GAAG,GAAG;4BACN,KAAK,EAAE,EAAE;4BACT,MAAM,EAAE,SAAS;yBAClB,CAAC,CAAC;qBACJ,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM;gBACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;YAED,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM;gBACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM;gBACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;SACF;QAED,KAAK,EAAE;YACL,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI;gBACtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,MAAM,MAAM,GAAS;oBACnB,KAAK;oBACL,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAc;oBAC1B,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,CAAC;oBACV,SAAS,EAAE,SAAS;oBACpB,WAAW,EAAE,SAAS;oBACtB,SAAS,EAAE,GAAG;oBACd,SAAS,EAAE,GAAG;iBACf,CAAC;gBAEF,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;gBACrE,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAElC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,GAAG,CACP,KAAyB,EACzB,MAAc,EACd,MAAM;gBAEN,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAC9B,CAAC;oBACF,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;oBAC9C,CAAC;oBACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;gBACrE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,WAAW,KAAK,YAAY,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3C,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI;gBAC9B,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;gBACrE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,WAAW,KAAK,YAAY,CAAC,CAAC;gBAC9D,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAS;oBACxB,GAAG,IAAI;oBACP,GAAG,IAAI;oBACP,SAAS,EAAE,GAAG;iBACf,CAAC;gBAEF,sEAAsE;gBACtE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;oBACxD,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC9B,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC5D,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC;gBAChC,CAAC;gBAED,MAAM,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,MAAM;gBACf,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC;gBACtE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBAC5C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;oBACtC,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG;oBAC9B,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,MAAM;oBACjD,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK;oBAC/B,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM;oBACjC,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;oBACxC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;iBAC7B,CAAC,CAAC;gBAEH,iEAAiE;gBACjE,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBAC3B,OAAO;wBACL,GAAG,MAAM;wBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC/B,GAAG,IAAI;4BACP,KAAK,EAAE,EAAE;4BACT,MAAM,EAAE,SAAS;yBAClB,CAAC,CAAC;qBACJ,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF;QAED,qCAAqC;QACrC,MAAM,EAAE;YACN,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM;gBAC9B,MAAM,OAAO,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,MAAM,MAAM,GAAU;oBACpB,GAAG,IAAI;oBACP,KAAK;oBACL,OAAO;oBACP,SAAS,EAAE,GAAG;iBACf,CAAC;gBAEF,oDAAoD;gBACpD,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;gBACvE,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAEnC,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC9C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,MAAM;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;gBACzB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC;gBACtE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBAC5C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACvC,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,GAAG,KAAK,GAAG;oBACvB,2DAA2D;oBAC3D,mDAAmD;oBACnD,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK;oBAChD,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK;oBAC/B,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM;oBACjC,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;oBACxC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO;iBAChC,CAAC,CAAC;gBAEH,yDAAyD;gBACzD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBAC3B,OAAO;wBACL,GAAG,MAAM;wBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;4BAC9B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAY,CAAC;4BACxD,OAAO,IAAI,CAAC;wBACd,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,mBAAmB,CAAC,MAAM;gBAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;gBAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC;gBACtE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBAC5C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACvC,MAAM,EAAE,WAAW;oBACnB,oCAAoC;oBACpC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,aAAa;oBACxD,2DAA2D;oBAC3D,mDAAmD;oBACnD,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK;oBAChD,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK;oBAC/B,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM;oBACjC,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;oBACxC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO;iBAChC,CAAC,CAAC;gBAEH,yDAAyD;gBACzD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBAC3B,OAAO;wBACL,GAAG,MAAM;wBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;4BAC9B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAY,CAAC;4BACxD,OAAO,IAAI,CAAC;wBACd,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF;QAED,QAAQ;QACR,KAAK,EAAE;YACL,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI;gBACtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,MAAM,MAAM,GAAG;oBACb,KAAK;oBACL,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,OAAO,EAAE,gBAAgB;oBACzB,SAAS,EAAE,kBAAkB;oBAC7B,WAAW,EAAE,UAAU;oBACvB,SAAS,EAAE,GAAG;iBACP,CAAC;gBAEV,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;gBACpE,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM;gBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;gBAC/D,8EAA8E;gBAC9E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;gBACvE,OAAO,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3C,CAAC;YAED,KAAK,CAAC,UAAU,CAAC,KAAK;gBACpB,mEAAmE;gBACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;oBACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAClD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;wBACjC,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,YAAY,CAAC,CAAC;YACxD,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,MAAM;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC;gBAEtE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBAC5C,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS;oBACvC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK;oBAC/B,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM;oBACjC,UAAU,EAAE,SAAS,EAAE,2DAA2D;oBAClF,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;wBACf,8BAA8B;wBAC9B,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;4BAChD,OAAO,KAAK,CAAC;wBACf,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,YAAY,EAAE,GAAG,EAAE;wBACjB,oDAAoD;wBACpD,oEAAoE;wBACpE,uFAAuF;wBACvF,iFAAiF;wBACjF,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC;oBACD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;iBAC7B,CAAC,CAAC;gBAEH,sCAAsC;gBACtC,OAAO;oBACL,GAAG,MAAM;oBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;iBACnE,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,MAAM;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export interface Chunk {
13
13
  export declare function serializeChunk(chunk: Chunk): Buffer<ArrayBuffer>;
14
14
  export declare function deserializeChunk(serialized: Buffer): {
15
15
  eof: boolean;
16
- chunk: Buffer<ArrayBufferLike>;
16
+ chunk: Buffer<ArrayBuffer>;
17
17
  };
18
18
  export declare function createStreamer(basedir: string): Streamer;
19
19
  //# sourceMappingURL=streamer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQhD;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,uBAG1C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM;;;EAIlD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAyKxD"}
1
+ {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAchD;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,uBAG1C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM;;;EAKlD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CA4QxD"}
package/dist/streamer.js CHANGED
@@ -1,51 +1,93 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
  import path from 'node:path';
3
3
  import { monotonicFactory } from 'ulid';
4
- import { listJSONFiles, readBuffer, write } from './fs.js';
4
+ import { z } from 'zod';
5
+ import { listJSONFiles, readBuffer, readJSON, write, writeJSON } from './fs.js';
5
6
  // Create a monotonic ULID factory that ensures ULIDs are always increasing
6
7
  // even when generated within the same millisecond
7
8
  const monotonicUlid = monotonicFactory(() => Math.random());
9
+ // Schema for the run-to-streams mapping file
10
+ const RunStreamsSchema = z.object({
11
+ streams: z.array(z.string()),
12
+ });
8
13
  export function serializeChunk(chunk) {
9
14
  const eofByte = Buffer.from([chunk.eof ? 1 : 0]);
10
15
  return Buffer.concat([eofByte, chunk.chunk]);
11
16
  }
12
17
  export function deserializeChunk(serialized) {
13
18
  const eof = serialized[0] === 1;
14
- const chunk = serialized.subarray(1);
19
+ // Create a copy instead of a view to prevent ArrayBuffer detachment
20
+ const chunk = Buffer.from(serialized.subarray(1));
15
21
  return { eof, chunk };
16
22
  }
17
23
  export function createStreamer(basedir) {
18
24
  const streamEmitter = new EventEmitter();
25
+ // Track which streams have already been registered for a run (in-memory cache)
26
+ const registeredStreams = new Set();
27
+ // Helper to record the runId <> streamId association
28
+ async function registerStreamForRun(runId, streamName) {
29
+ const cacheKey = `${runId}:${streamName}`;
30
+ if (registeredStreams.has(cacheKey)) {
31
+ return; // Already registered in this session
32
+ }
33
+ const runStreamsPath = path.join(basedir, 'streams', 'runs', `${runId}.json`);
34
+ // Read existing streams for this run
35
+ const existing = await readJSON(runStreamsPath, RunStreamsSchema);
36
+ const streams = existing?.streams ?? [];
37
+ // Add stream if not already present
38
+ if (!streams.includes(streamName)) {
39
+ streams.push(streamName);
40
+ await writeJSON(runStreamsPath, { streams }, { overwrite: true });
41
+ }
42
+ registeredStreams.add(cacheKey);
43
+ }
19
44
  return {
20
- async writeToStream(name, chunk) {
21
- const chunkId = `strm_${monotonicUlid()}`;
45
+ async writeToStream(name, _runId, chunk) {
46
+ // Await runId if it's a promise to ensure proper flushing
47
+ const runId = await _runId;
48
+ // Register this stream for the run
49
+ await registerStreamForRun(runId, name);
50
+ const chunkId = `chnk_${monotonicUlid()}`;
51
+ // Convert chunk to buffer for serialization
52
+ let chunkBuffer;
22
53
  if (typeof chunk === 'string') {
23
- chunk = new TextEncoder().encode(chunk);
54
+ chunkBuffer = Buffer.from(new TextEncoder().encode(chunk));
55
+ }
56
+ else if (chunk instanceof Buffer) {
57
+ chunkBuffer = chunk;
58
+ }
59
+ else {
60
+ chunkBuffer = Buffer.from(chunk);
24
61
  }
25
62
  const serialized = serializeChunk({
26
- chunk: Buffer.from(chunk),
63
+ chunk: chunkBuffer,
27
64
  eof: false,
28
65
  });
29
66
  const chunkPath = path.join(basedir, 'streams', 'chunks', `${name}-${chunkId}.json`);
30
67
  await write(chunkPath, serialized);
31
- // Emit real-time event
32
- const chunkData = typeof chunk === 'string'
33
- ? new TextEncoder().encode(chunk)
34
- : chunk instanceof Buffer
35
- ? new Uint8Array(chunk)
36
- : chunk;
68
+ // Emit real-time event with Uint8Array (create copy to prevent ArrayBuffer detachment)
69
+ const chunkData = Uint8Array.from(chunkBuffer);
37
70
  streamEmitter.emit(`chunk:${name}`, {
38
71
  streamName: name,
39
72
  chunkData,
40
73
  chunkId,
41
74
  });
42
75
  },
43
- async closeStream(name) {
44
- const chunkId = `strm_${monotonicUlid()}`;
76
+ async closeStream(name, _runId) {
77
+ // Await runId if it's a promise to ensure proper flushing
78
+ const runId = await _runId;
79
+ // Register this stream for the run (in case writeToStream wasn't called)
80
+ await registerStreamForRun(runId, name);
81
+ const chunkId = `chnk_${monotonicUlid()}`;
45
82
  const chunkPath = path.join(basedir, 'streams', 'chunks', `${name}-${chunkId}.json`);
46
83
  await write(chunkPath, serializeChunk({ chunk: Buffer.from([]), eof: true }));
47
84
  streamEmitter.emit(`close:${name}`, { streamName: name });
48
85
  },
86
+ async listStreamsByRunId(runId) {
87
+ const runStreamsPath = path.join(basedir, 'streams', 'runs', `${runId}.json`);
88
+ const data = await readJSON(runStreamsPath, RunStreamsSchema);
89
+ return data?.streams ?? [];
90
+ },
49
91
  async readFromStream(name, startIndex = 0) {
50
92
  const chunksDir = path.join(basedir, 'streams', 'chunks');
51
93
  let removeListeners = () => { };
@@ -56,25 +98,44 @@ export function createStreamer(basedir) {
56
98
  // Buffer for chunks that arrive via events during disk reading
57
99
  const bufferedEventChunks = [];
58
100
  let isReadingFromDisk = true;
101
+ // Buffer close event if it arrives during disk reading
102
+ let pendingClose = false;
59
103
  const chunkListener = (event) => {
60
104
  deliveredChunkIds.add(event.chunkId);
105
+ // Skip empty chunks to maintain consistency with disk reading behavior
106
+ // Empty chunks are not enqueued when read from disk (see line 184-186)
107
+ if (event.chunkData.byteLength === 0) {
108
+ return;
109
+ }
61
110
  if (isReadingFromDisk) {
62
111
  // Buffer chunks that arrive during disk reading to maintain order
112
+ // Create a copy to prevent ArrayBuffer detachment when enqueued later
63
113
  bufferedEventChunks.push({
64
114
  chunkId: event.chunkId,
65
- chunkData: event.chunkData,
115
+ chunkData: Uint8Array.from(event.chunkData),
66
116
  });
67
117
  }
68
118
  else {
69
119
  // After disk reading is complete, deliver chunks immediately
70
- controller.enqueue(event.chunkData);
120
+ // Create a copy to prevent ArrayBuffer detachment
121
+ controller.enqueue(Uint8Array.from(event.chunkData));
71
122
  }
72
123
  };
73
124
  const closeListener = () => {
125
+ // Buffer close event if disk reading is still in progress
126
+ if (isReadingFromDisk) {
127
+ pendingClose = true;
128
+ return;
129
+ }
74
130
  // Remove listeners before closing
75
131
  streamEmitter.off(`chunk:${name}`, chunkListener);
76
132
  streamEmitter.off(`close:${name}`, closeListener);
77
- controller.close();
133
+ try {
134
+ controller.close();
135
+ }
136
+ catch {
137
+ // Ignore if controller is already closed (e.g., from cancel() or EOF)
138
+ }
78
139
  };
79
140
  removeListeners = closeListener;
80
141
  // Set up listeners FIRST to avoid missing events
@@ -101,7 +162,8 @@ export function createStreamer(basedir) {
101
162
  break;
102
163
  }
103
164
  if (chunk.chunk.byteLength) {
104
- controller.enqueue(chunk.chunk);
165
+ // Create a copy to prevent ArrayBuffer detachment
166
+ controller.enqueue(Uint8Array.from(chunk.chunk));
105
167
  }
106
168
  }
107
169
  // Finished reading from disk - now deliver buffered event chunks in chronological order
@@ -109,13 +171,30 @@ export function createStreamer(basedir) {
109
171
  // Sort buffered chunks by ULID (chronological order)
110
172
  bufferedEventChunks.sort((a, b) => a.chunkId.localeCompare(b.chunkId));
111
173
  for (const buffered of bufferedEventChunks) {
112
- controller.enqueue(buffered.chunkData);
174
+ // Create a copy for defense in depth (already copied at storage, but be extra safe)
175
+ controller.enqueue(Uint8Array.from(buffered.chunkData));
113
176
  }
114
177
  if (isComplete) {
115
178
  removeListeners();
116
- controller.close();
179
+ try {
180
+ controller.close();
181
+ }
182
+ catch {
183
+ // Ignore if controller is already closed (e.g., from closeListener event)
184
+ }
117
185
  return;
118
186
  }
187
+ // Process any pending close event that arrived during disk reading
188
+ if (pendingClose) {
189
+ streamEmitter.off(`chunk:${name}`, chunkListener);
190
+ streamEmitter.off(`close:${name}`, closeListener);
191
+ try {
192
+ controller.close();
193
+ }
194
+ catch {
195
+ // Ignore if controller is already closed
196
+ }
197
+ }
119
198
  },
120
199
  cancel() {
121
200
  removeListeners();
@@ -1 +1 @@
1
- {"version":3,"file":"streamer.js","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE3D,2EAA2E;AAC3E,kDAAkD;AAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAc5D,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,aAAa,GAAG,IAAI,YAAY,EAalC,CAAC;IAEL,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK;YAC7B,MAAM,OAAO,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;YAE1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM,UAAU,GAAG,cAAc,CAAC;gBAChC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,GAAG,EAAE,KAAK;aACX,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,IAAI,OAAO,OAAO,CAC1B,CAAC;YAEF,MAAM,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEnC,uBAAuB;YACvB,MAAM,SAAS,GACb,OAAO,KAAK,KAAK,QAAQ;gBACvB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK,YAAY,MAAM;oBACvB,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,KAAK,CAAC;YAEd,aAAa,CAAC,IAAI,CAAC,SAAS,IAAI,EAAW,EAAE;gBAC3C,UAAU,EAAE,IAAI;gBAChB,SAAS;gBACT,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAI;YACpB,MAAM,OAAO,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,IAAI,OAAO,OAAO,CAC1B,CAAC;YAEF,MAAM,KAAK,CACT,SAAS,EACT,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CACtD,CAAC;YAEF,aAAa,CAAC,IAAI,CAAC,SAAS,IAAI,EAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,eAAe,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YAE/B,OAAO,IAAI,cAAc,CAAa;gBACpC,KAAK,CAAC,KAAK,CAAC,UAAU;oBACpB,8EAA8E;oBAC9E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;oBAC5C,+DAA+D;oBAC/D,MAAM,mBAAmB,GAGpB,EAAE,CAAC;oBACR,IAAI,iBAAiB,GAAG,IAAI,CAAC;oBAE7B,MAAM,aAAa,GAAG,CAAC,KAItB,EAAE,EAAE;wBACH,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAErC,IAAI,iBAAiB,EAAE,CAAC;4BACtB,kEAAkE;4BAClE,mBAAmB,CAAC,IAAI,CAAC;gCACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gCACtB,SAAS,EAAE,KAAK,CAAC,SAAS;6BAC3B,CAAC,CAAC;wBACL,CAAC;6BAAM,CAAC;4BACN,6DAA6D;4BAC7D,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC,CAAC;oBAEF,MAAM,aAAa,GAAG,GAAG,EAAE;wBACzB,kCAAkC;wBAClC,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;wBAC3D,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;wBAC3D,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,CAAC,CAAC;oBACF,eAAe,GAAG,aAAa,CAAC;oBAEhC,iDAAiD;oBACjD,aAAa,CAAC,EAAE,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;oBAC1D,aAAa,CAAC,EAAE,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;oBAE1D,qCAAqC;oBACrC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,KAAK;yBACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;yBAC7C,IAAI,EAAE,CAAC,CAAC,gDAAgD;oBAE3D,qEAAqE;oBACrE,IAAI,UAAU,GAAG,KAAK,CAAC;oBACvB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC3B,uDAAuD;wBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAEhD,sCAAsC;wBACtC,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;4BACnC,SAAS;wBACX,CAAC;wBAED,MAAM,KAAK,GAAG,gBAAgB,CAC5B,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC,CACvD,CAAC;wBACF,IAAI,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;4BACxB,UAAU,GAAG,IAAI,CAAC;4BAClB,MAAM;wBACR,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BAC3B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAClC,CAAC;oBACH,CAAC;oBAED,wFAAwF;oBACxF,iBAAiB,GAAG,KAAK,CAAC;oBAE1B,qDAAqD;oBACrD,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CACnC,CAAC;oBACF,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;wBAC3C,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACzC,CAAC;oBAED,IAAI,UAAU,EAAE,CAAC;wBACf,eAAe,EAAE,CAAC;wBAClB,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,MAAM;oBACJ,eAAe,EAAE,CAAC;gBACpB,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"streamer.js","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhF,2EAA2E;AAC3E,kDAAkD;AAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5D,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B,CAAC,CAAC;AAcH,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChC,oEAAoE;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,aAAa,GAAG,IAAI,YAAY,EAalC,CAAC;IAEL,+EAA+E;IAC/E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE5C,qDAAqD;IACrD,KAAK,UAAU,oBAAoB,CACjC,KAAa,EACb,UAAkB;QAElB,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,UAAU,EAAE,CAAC;QAC1C,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,qCAAqC;QAC/C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,KAAK,OAAO,CAChB,CAAC;QAEF,qCAAqC;QACrC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QAExC,oCAAoC;QACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,SAAS,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,MAAgC,EAChC,KAA0B;YAE1B,0DAA0D;YAC1D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;YAE3B,mCAAmC;YACnC,MAAM,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;YAE1C,4CAA4C;YAC5C,IAAI,WAAmB,CAAC;YACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,WAAW,GAAG,KAAK,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,UAAU,GAAG,cAAc,CAAC;gBAChC,KAAK,EAAE,WAAW;gBAClB,GAAG,EAAE,KAAK;aACX,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,IAAI,OAAO,OAAO,CAC1B,CAAC;YAEF,MAAM,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEnC,uFAAuF;YACvF,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/C,aAAa,CAAC,IAAI,CAAC,SAAS,IAAI,EAAW,EAAE;gBAC3C,UAAU,EAAE,IAAI;gBAChB,SAAS;gBACT,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,MAAgC;YAC9D,0DAA0D;YAC1D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;YAE3B,yEAAyE;YACzE,MAAM,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,IAAI,OAAO,OAAO,CAC1B,CAAC;YAEF,MAAM,KAAK,CACT,SAAS,EACT,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CACtD,CAAC;YAEF,aAAa,CAAC,IAAI,CAAC,SAAS,IAAI,EAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,KAAa;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,KAAK,OAAO,CAChB,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;YAC9D,OAAO,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,UAAU,GAAG,CAAC;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,eAAe,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YAE/B,OAAO,IAAI,cAAc,CAAa;gBACpC,KAAK,CAAC,KAAK,CAAC,UAAU;oBACpB,8EAA8E;oBAC9E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;oBAC5C,+DAA+D;oBAC/D,MAAM,mBAAmB,GAGpB,EAAE,CAAC;oBACR,IAAI,iBAAiB,GAAG,IAAI,CAAC;oBAC7B,uDAAuD;oBACvD,IAAI,YAAY,GAAG,KAAK,CAAC;oBAEzB,MAAM,aAAa,GAAG,CAAC,KAItB,EAAE,EAAE;wBACH,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAErC,uEAAuE;wBACvE,uEAAuE;wBACvE,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;4BACrC,OAAO;wBACT,CAAC;wBAED,IAAI,iBAAiB,EAAE,CAAC;4BACtB,kEAAkE;4BAClE,sEAAsE;4BACtE,mBAAmB,CAAC,IAAI,CAAC;gCACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gCACtB,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;6BAC5C,CAAC,CAAC;wBACL,CAAC;6BAAM,CAAC;4BACN,6DAA6D;4BAC7D,kDAAkD;4BAClD,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;wBACvD,CAAC;oBACH,CAAC,CAAC;oBAEF,MAAM,aAAa,GAAG,GAAG,EAAE;wBACzB,0DAA0D;wBAC1D,IAAI,iBAAiB,EAAE,CAAC;4BACtB,YAAY,GAAG,IAAI,CAAC;4BACpB,OAAO;wBACT,CAAC;wBACD,kCAAkC;wBAClC,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;wBAC3D,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;wBAC3D,IAAI,CAAC;4BACH,UAAU,CAAC,KAAK,EAAE,CAAC;wBACrB,CAAC;wBAAC,MAAM,CAAC;4BACP,sEAAsE;wBACxE,CAAC;oBACH,CAAC,CAAC;oBACF,eAAe,GAAG,aAAa,CAAC;oBAEhC,iDAAiD;oBACjD,aAAa,CAAC,EAAE,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;oBAC1D,aAAa,CAAC,EAAE,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;oBAE1D,qCAAqC;oBACrC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,KAAK;yBACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;yBAC7C,IAAI,EAAE,CAAC,CAAC,gDAAgD;oBAE3D,qEAAqE;oBACrE,IAAI,UAAU,GAAG,KAAK,CAAC;oBACvB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC3B,uDAAuD;wBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAEhD,sCAAsC;wBACtC,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;4BACnC,SAAS;wBACX,CAAC;wBAED,MAAM,KAAK,GAAG,gBAAgB,CAC5B,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC,CACvD,CAAC;wBACF,IAAI,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;4BACxB,UAAU,GAAG,IAAI,CAAC;4BAClB,MAAM;wBACR,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BAC3B,kDAAkD;4BAClD,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wBACnD,CAAC;oBACH,CAAC;oBAED,wFAAwF;oBACxF,iBAAiB,GAAG,KAAK,CAAC;oBAE1B,qDAAqD;oBACrD,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CACnC,CAAC;oBACF,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;wBAC3C,oFAAoF;wBACpF,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC1D,CAAC;oBAED,IAAI,UAAU,EAAE,CAAC;wBACf,eAAe,EAAE,CAAC;wBAClB,IAAI,CAAC;4BACH,UAAU,CAAC,KAAK,EAAE,CAAC;wBACrB,CAAC;wBAAC,MAAM,CAAC;4BACP,0EAA0E;wBAC5E,CAAC;wBACD,OAAO;oBACT,CAAC;oBAED,mEAAmE;oBACnE,IAAI,YAAY,EAAE,CAAC;wBACjB,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;wBAC3D,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAW,EAAE,aAAa,CAAC,CAAC;wBAC3D,IAAI,CAAC;4BACH,UAAU,CAAC,KAAK,EAAE,CAAC;wBACrB,CAAC;wBAAC,MAAM,CAAC;4BACP,yCAAyC;wBAC3C,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM;oBACJ,eAAe,EAAE,CAAC;gBACpB,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}