@workflow/world-postgres 4.0.1-beta.2 → 4.1.0-beta.10

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 (52) hide show
  1. package/LICENSE.md +201 -21
  2. package/README.md +33 -0
  3. package/bin/setup.js +12 -0
  4. package/dist/boss.d.ts +15 -0
  5. package/dist/boss.d.ts.map +1 -0
  6. package/dist/boss.js +18 -0
  7. package/dist/boss.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +44 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/config.d.ts +6 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +2 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/drizzle/index.d.ts +8 -0
  17. package/dist/drizzle/index.d.ts.map +1 -0
  18. package/dist/drizzle/index.js +7 -0
  19. package/dist/drizzle/index.js.map +1 -0
  20. package/dist/drizzle/schema.d.ts +843 -0
  21. package/dist/drizzle/schema.d.ts.map +1 -0
  22. package/dist/drizzle/schema.js +88 -0
  23. package/dist/drizzle/schema.js.map +1 -0
  24. package/dist/index.d.ts +8 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +40 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/queue.d.ts +17 -0
  29. package/dist/queue.d.ts.map +1 -0
  30. package/dist/queue.js +103 -0
  31. package/dist/queue.js.map +1 -0
  32. package/dist/storage.d.ts +7 -0
  33. package/dist/storage.d.ts.map +1 -0
  34. package/dist/storage.js +585 -0
  35. package/dist/storage.js.map +1 -0
  36. package/dist/streamer.d.ts +5 -0
  37. package/dist/streamer.d.ts.map +1 -0
  38. package/dist/streamer.js +157 -0
  39. package/dist/streamer.js.map +1 -0
  40. package/dist/util.d.ts +6 -0
  41. package/dist/util.d.ts.map +1 -0
  42. package/dist/util.js +20 -0
  43. package/dist/util.js.map +1 -0
  44. package/dist/zod.d.ts +3 -0
  45. package/dist/zod.d.ts.map +1 -0
  46. package/dist/zod.js +10 -0
  47. package/dist/zod.js.map +1 -0
  48. package/package.json +32 -17
  49. package/src/drizzle/migrations/0000_cultured_the_anarchist.sql +84 -0
  50. package/src/drizzle/migrations/0001_update_error_schema.sql +7 -0
  51. package/src/drizzle/migrations/meta/0000_snapshot.json +499 -0
  52. package/src/drizzle/migrations/meta/_journal.json +13 -0
@@ -0,0 +1,585 @@
1
+ import { WorkflowAPIError } from '@workflow/errors';
2
+ import { EventSchema, HookSchema, StepSchema, WorkflowRunSchema, } from '@workflow/world';
3
+ import { and, desc, eq, gt, lt, sql } from 'drizzle-orm';
4
+ import { monotonicFactory } from 'ulid';
5
+ import { Schema } from './drizzle/index.js';
6
+ import { compact } from './util.js';
7
+ /**
8
+ * Serialize a StructuredError object into a JSON string
9
+ */
10
+ function serializeRunError(data) {
11
+ if (!data.error) {
12
+ return data;
13
+ }
14
+ const { error, ...rest } = data;
15
+ return {
16
+ ...rest,
17
+ error: JSON.stringify({
18
+ message: error.message,
19
+ stack: error.stack,
20
+ code: error.code,
21
+ }),
22
+ };
23
+ }
24
+ /**
25
+ * Deserialize error JSON string (or legacy flat fields) into a StructuredError object
26
+ * Handles backwards compatibility:
27
+ * - If error is a JSON string with {message, stack, code} → parse into StructuredError
28
+ * - If error is a plain string → treat as error message
29
+ * - If errorStack/errorCode exist (legacy) → combine into StructuredError
30
+ */
31
+ function deserializeRunError(run) {
32
+ const { error, errorStack, errorCode, ...rest } = run;
33
+ if (!error && !errorStack && !errorCode) {
34
+ return run;
35
+ }
36
+ // Try to parse as structured error JSON
37
+ if (error) {
38
+ try {
39
+ const parsed = JSON.parse(error);
40
+ if (typeof parsed === 'object' && parsed.message !== undefined) {
41
+ return {
42
+ ...rest,
43
+ error: {
44
+ message: parsed.message,
45
+ stack: parsed.stack,
46
+ code: parsed.code,
47
+ },
48
+ };
49
+ }
50
+ }
51
+ catch {
52
+ // Not JSON, treat as plain string
53
+ }
54
+ }
55
+ // Backwards compatibility: handle legacy separate fields or plain string error
56
+ return {
57
+ ...rest,
58
+ error: {
59
+ message: error || '',
60
+ stack: errorStack,
61
+ code: errorCode,
62
+ },
63
+ };
64
+ }
65
+ /**
66
+ * Serialize a StructuredError object into a JSON string for steps
67
+ */
68
+ function serializeStepError(data) {
69
+ if (!data.error) {
70
+ return data;
71
+ }
72
+ const { error, ...rest } = data;
73
+ return {
74
+ ...rest,
75
+ error: JSON.stringify({
76
+ message: error.message,
77
+ stack: error.stack,
78
+ code: error.code,
79
+ }),
80
+ };
81
+ }
82
+ /**
83
+ * Deserialize error JSON string (or legacy flat fields) into a StructuredError object for steps
84
+ */
85
+ function deserializeStepError(step) {
86
+ const { error, ...rest } = step;
87
+ if (!error) {
88
+ return step;
89
+ }
90
+ // Try to parse as structured error JSON
91
+ if (error) {
92
+ try {
93
+ const parsed = JSON.parse(error);
94
+ if (typeof parsed === 'object' && parsed.message !== undefined) {
95
+ return {
96
+ ...rest,
97
+ error: {
98
+ message: parsed.message,
99
+ stack: parsed.stack,
100
+ code: parsed.code,
101
+ },
102
+ };
103
+ }
104
+ }
105
+ catch {
106
+ // Not JSON, treat as plain string
107
+ }
108
+ }
109
+ // Backwards compatibility: handle legacy separate fields or plain string error
110
+ return {
111
+ ...rest,
112
+ error: {
113
+ message: error || '',
114
+ },
115
+ };
116
+ }
117
+ export function createRunsStorage(drizzle) {
118
+ const ulid = monotonicFactory();
119
+ const { runs } = Schema;
120
+ const get = drizzle
121
+ .select()
122
+ .from(runs)
123
+ .where(eq(runs.runId, sql.placeholder('id')))
124
+ .limit(1)
125
+ .prepare('workflow_runs_get');
126
+ return {
127
+ async get(id, params) {
128
+ const [value] = await get.execute({ id });
129
+ if (!value) {
130
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
131
+ }
132
+ const deserialized = deserializeRunError(compact(value));
133
+ const parsed = WorkflowRunSchema.parse(deserialized);
134
+ const resolveData = params?.resolveData ?? 'all';
135
+ return filterRunData(parsed, resolveData);
136
+ },
137
+ async cancel(id, params) {
138
+ // TODO: we might want to guard this for only specific statuses
139
+ const [value] = await drizzle
140
+ .update(Schema.runs)
141
+ .set({ status: 'cancelled', completedAt: sql `now()` })
142
+ .where(eq(runs.runId, id))
143
+ .returning();
144
+ if (!value) {
145
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
146
+ }
147
+ // Clean up all hooks for this run when cancelling
148
+ await drizzle.delete(Schema.hooks).where(eq(Schema.hooks.runId, id));
149
+ const deserialized = deserializeRunError(compact(value));
150
+ const parsed = WorkflowRunSchema.parse(deserialized);
151
+ const resolveData = params?.resolveData ?? 'all';
152
+ return filterRunData(parsed, resolveData);
153
+ },
154
+ async pause(id, params) {
155
+ // TODO: we might want to guard this for only specific statuses
156
+ const [value] = await drizzle
157
+ .update(Schema.runs)
158
+ .set({ status: 'paused' })
159
+ .where(eq(runs.runId, id))
160
+ .returning();
161
+ if (!value) {
162
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
163
+ }
164
+ const deserialized = deserializeRunError(compact(value));
165
+ const parsed = WorkflowRunSchema.parse(deserialized);
166
+ const resolveData = params?.resolveData ?? 'all';
167
+ return filterRunData(parsed, resolveData);
168
+ },
169
+ async resume(id, params) {
170
+ // Fetch current run to check if startedAt is already set
171
+ const [currentRun] = await drizzle
172
+ .select()
173
+ .from(runs)
174
+ .where(eq(runs.runId, id))
175
+ .limit(1);
176
+ if (!currentRun) {
177
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
178
+ }
179
+ const updates = {
180
+ status: 'running',
181
+ };
182
+ // Only set startedAt the first time the run transitions to 'running'
183
+ if (!currentRun.startedAt) {
184
+ updates.startedAt = new Date();
185
+ }
186
+ const [value] = await drizzle
187
+ .update(Schema.runs)
188
+ .set(updates)
189
+ .where(and(eq(runs.runId, id), eq(runs.status, 'paused')))
190
+ .returning();
191
+ if (!value) {
192
+ throw new WorkflowAPIError(`Paused run not found: ${id}`, {
193
+ status: 404,
194
+ });
195
+ }
196
+ const deserialized = deserializeRunError(compact(value));
197
+ const parsed = WorkflowRunSchema.parse(deserialized);
198
+ const resolveData = params?.resolveData ?? 'all';
199
+ return filterRunData(parsed, resolveData);
200
+ },
201
+ async list(params) {
202
+ const limit = params?.pagination?.limit ?? 20;
203
+ const fromCursor = params?.pagination?.cursor;
204
+ const all = await drizzle
205
+ .select()
206
+ .from(runs)
207
+ .where(and(map(fromCursor, (c) => lt(runs.runId, c)), map(params?.workflowName, (wf) => eq(runs.workflowName, wf)), map(params?.status, (wf) => eq(runs.status, wf))))
208
+ .orderBy(desc(runs.runId))
209
+ .limit(limit + 1);
210
+ const values = all.slice(0, limit);
211
+ const hasMore = all.length > limit;
212
+ const resolveData = params?.resolveData ?? 'all';
213
+ return {
214
+ data: values.map((v) => {
215
+ const deserialized = deserializeRunError(compact(v));
216
+ const parsed = WorkflowRunSchema.parse(deserialized);
217
+ return filterRunData(parsed, resolveData);
218
+ }),
219
+ hasMore,
220
+ cursor: values.at(-1)?.runId ?? null,
221
+ };
222
+ },
223
+ async create(data) {
224
+ const runId = `wrun_${ulid()}`;
225
+ const [value] = await drizzle
226
+ .insert(runs)
227
+ .values({
228
+ runId,
229
+ input: data.input,
230
+ executionContext: data.executionContext,
231
+ deploymentId: data.deploymentId,
232
+ status: 'pending',
233
+ workflowName: data.workflowName,
234
+ })
235
+ .onConflictDoNothing()
236
+ .returning();
237
+ if (!value) {
238
+ throw new WorkflowAPIError(`Run ${runId} already exists`, {
239
+ status: 409,
240
+ });
241
+ }
242
+ return deserializeRunError(compact(value));
243
+ },
244
+ async update(id, data) {
245
+ // Fetch current run to check if startedAt is already set
246
+ const [currentRun] = await drizzle
247
+ .select()
248
+ .from(runs)
249
+ .where(eq(runs.runId, id))
250
+ .limit(1);
251
+ if (!currentRun) {
252
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
253
+ }
254
+ // Serialize the error field if present
255
+ const serialized = serializeRunError(data);
256
+ const updates = {
257
+ ...serialized,
258
+ output: data.output,
259
+ };
260
+ // Only set startedAt the first time transitioning to 'running'
261
+ if (data.status === 'running' && !currentRun.startedAt) {
262
+ updates.startedAt = new Date();
263
+ }
264
+ const isBecomingTerminal = data.status === 'completed' ||
265
+ data.status === 'failed' ||
266
+ data.status === 'cancelled';
267
+ if (isBecomingTerminal) {
268
+ updates.completedAt = new Date();
269
+ }
270
+ const [value] = await drizzle
271
+ .update(runs)
272
+ .set(updates)
273
+ .where(eq(runs.runId, id))
274
+ .returning();
275
+ if (!value) {
276
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
277
+ }
278
+ // If transitioning to a terminal status, clean up all hooks for this run
279
+ if (isBecomingTerminal) {
280
+ await drizzle.delete(Schema.hooks).where(eq(Schema.hooks.runId, id));
281
+ }
282
+ return deserializeRunError(compact(value));
283
+ },
284
+ };
285
+ }
286
+ function map(obj, fn) {
287
+ return obj ? fn(obj) : undefined;
288
+ }
289
+ export function createEventsStorage(drizzle) {
290
+ const ulid = monotonicFactory();
291
+ const { events } = Schema;
292
+ return {
293
+ async create(runId, data, params) {
294
+ const eventId = `wevt_${ulid()}`;
295
+ const [value] = await drizzle
296
+ .insert(events)
297
+ .values({
298
+ runId,
299
+ eventId,
300
+ correlationId: data.correlationId,
301
+ eventType: data.eventType,
302
+ eventData: 'eventData' in data ? data.eventData : undefined,
303
+ })
304
+ .returning({ createdAt: events.createdAt });
305
+ if (!value) {
306
+ throw new WorkflowAPIError(`Event ${eventId} could not be created`, {
307
+ status: 409,
308
+ });
309
+ }
310
+ const result = { ...data, ...value, runId, eventId };
311
+ const parsed = EventSchema.parse(result);
312
+ const resolveData = params?.resolveData ?? 'all';
313
+ return filterEventData(parsed, resolveData);
314
+ },
315
+ async list(params) {
316
+ const limit = params?.pagination?.limit ?? 100;
317
+ const sortOrder = params.pagination?.sortOrder || 'asc';
318
+ const order = sortOrder === 'desc'
319
+ ? { by: desc(events.eventId), compare: lt }
320
+ : { by: events.eventId, compare: gt };
321
+ const all = await drizzle
322
+ .select()
323
+ .from(events)
324
+ .where(and(eq(events.runId, params.runId), map(params.pagination?.cursor, (c) => order.compare(events.eventId, c))))
325
+ .orderBy(order.by)
326
+ .limit(limit + 1);
327
+ const values = all.slice(0, limit);
328
+ const resolveData = params?.resolveData ?? 'all';
329
+ return {
330
+ data: values.map((v) => {
331
+ const parsed = EventSchema.parse(compact(v));
332
+ return filterEventData(parsed, resolveData);
333
+ }),
334
+ cursor: values.at(-1)?.eventId ?? null,
335
+ hasMore: all.length > limit,
336
+ };
337
+ },
338
+ async listByCorrelationId(params) {
339
+ const limit = params?.pagination?.limit ?? 100;
340
+ const sortOrder = params.pagination?.sortOrder || 'asc';
341
+ const order = sortOrder === 'desc'
342
+ ? { by: desc(events.eventId), compare: lt }
343
+ : { by: events.eventId, compare: gt };
344
+ const all = await drizzle
345
+ .select()
346
+ .from(events)
347
+ .where(and(eq(events.correlationId, params.correlationId), map(params.pagination?.cursor, (c) => order.compare(events.eventId, c))))
348
+ .orderBy(order.by)
349
+ .limit(limit + 1);
350
+ const values = all.slice(0, limit);
351
+ const resolveData = params?.resolveData ?? 'all';
352
+ return {
353
+ data: values.map((v) => {
354
+ const parsed = EventSchema.parse(compact(v));
355
+ return filterEventData(parsed, resolveData);
356
+ }),
357
+ cursor: values.at(-1)?.eventId ?? null,
358
+ hasMore: all.length > limit,
359
+ };
360
+ },
361
+ };
362
+ }
363
+ export function createHooksStorage(drizzle) {
364
+ const { hooks } = Schema;
365
+ const getByToken = drizzle
366
+ .select()
367
+ .from(hooks)
368
+ .where(eq(hooks.token, sql.placeholder('token')))
369
+ .limit(1)
370
+ .prepare('workflow_hooks_get_by_token');
371
+ return {
372
+ async get(hookId, params) {
373
+ const [value] = await drizzle
374
+ .select()
375
+ .from(hooks)
376
+ .where(eq(hooks.hookId, hookId))
377
+ .limit(1);
378
+ const parsed = HookSchema.parse(compact(value));
379
+ const resolveData = params?.resolveData ?? 'all';
380
+ return filterHookData(parsed, resolveData);
381
+ },
382
+ async create(runId, data, params) {
383
+ const [value] = await drizzle
384
+ .insert(hooks)
385
+ .values({
386
+ runId,
387
+ hookId: data.hookId,
388
+ token: data.token,
389
+ ownerId: '', // TODO: get from context
390
+ projectId: '', // TODO: get from context
391
+ environment: '', // TODO: get from context
392
+ })
393
+ .onConflictDoNothing()
394
+ .returning();
395
+ if (!value) {
396
+ throw new WorkflowAPIError(`Hook ${data.hookId} already exists`, {
397
+ status: 409,
398
+ });
399
+ }
400
+ const parsed = HookSchema.parse(compact(value));
401
+ const resolveData = params?.resolveData ?? 'all';
402
+ return filterHookData(parsed, resolveData);
403
+ },
404
+ async getByToken(token, params) {
405
+ const [value] = await getByToken.execute({ token });
406
+ if (!value) {
407
+ throw new WorkflowAPIError(`Hook not found for token: ${token}`, {
408
+ status: 404,
409
+ });
410
+ }
411
+ const parsed = HookSchema.parse(compact(value));
412
+ const resolveData = params?.resolveData ?? 'all';
413
+ return filterHookData(parsed, resolveData);
414
+ },
415
+ async list(params) {
416
+ const limit = params?.pagination?.limit ?? 100;
417
+ const fromCursor = params?.pagination?.cursor;
418
+ const all = await drizzle
419
+ .select()
420
+ .from(hooks)
421
+ .where(and(map(params.runId, (id) => eq(hooks.runId, id)), map(fromCursor, (c) => lt(hooks.hookId, c))))
422
+ .orderBy(desc(hooks.hookId))
423
+ .limit(limit + 1);
424
+ const values = all.slice(0, limit);
425
+ const hasMore = all.length > limit;
426
+ const resolveData = params?.resolveData ?? 'all';
427
+ return {
428
+ data: values.map((v) => {
429
+ const parsed = HookSchema.parse(compact(v));
430
+ return filterHookData(parsed, resolveData);
431
+ }),
432
+ cursor: values.at(-1)?.hookId ?? null,
433
+ hasMore,
434
+ };
435
+ },
436
+ async dispose(hookId, params) {
437
+ const [value] = await drizzle
438
+ .delete(hooks)
439
+ .where(eq(hooks.hookId, hookId))
440
+ .returning();
441
+ if (!value) {
442
+ throw new WorkflowAPIError(`Hook not found: ${hookId}`, {
443
+ status: 404,
444
+ });
445
+ }
446
+ const parsed = HookSchema.parse(compact(value));
447
+ const resolveData = params?.resolveData ?? 'all';
448
+ return filterHookData(parsed, resolveData);
449
+ },
450
+ };
451
+ }
452
+ export function createStepsStorage(drizzle) {
453
+ const { steps } = Schema;
454
+ return {
455
+ async create(runId, data) {
456
+ const [value] = await drizzle
457
+ .insert(steps)
458
+ .values({
459
+ runId,
460
+ stepId: data.stepId,
461
+ stepName: data.stepName,
462
+ input: data.input,
463
+ status: 'pending',
464
+ attempt: 1,
465
+ })
466
+ .onConflictDoNothing()
467
+ .returning();
468
+ if (!value) {
469
+ throw new WorkflowAPIError(`Step ${data.stepId} already exists`, {
470
+ status: 409,
471
+ });
472
+ }
473
+ return deserializeStepError(compact(value));
474
+ },
475
+ async get(runId, stepId, params) {
476
+ // If runId is not provided, query only by stepId
477
+ const whereClause = runId
478
+ ? and(eq(steps.stepId, stepId), eq(steps.runId, runId))
479
+ : eq(steps.stepId, stepId);
480
+ const [value] = await drizzle
481
+ .select()
482
+ .from(steps)
483
+ .where(whereClause)
484
+ .limit(1);
485
+ if (!value) {
486
+ throw new WorkflowAPIError(`Step not found: ${stepId}`, {
487
+ status: 404,
488
+ });
489
+ }
490
+ const deserialized = deserializeStepError(compact(value));
491
+ const parsed = StepSchema.parse(deserialized);
492
+ const resolveData = params?.resolveData ?? 'all';
493
+ return filterStepData(parsed, resolveData);
494
+ },
495
+ async update(runId, stepId, data) {
496
+ // Fetch current step to check if startedAt is already set
497
+ const [currentStep] = await drizzle
498
+ .select()
499
+ .from(steps)
500
+ .where(and(eq(steps.stepId, stepId), eq(steps.runId, runId)))
501
+ .limit(1);
502
+ if (!currentStep) {
503
+ throw new WorkflowAPIError(`Step not found: ${stepId}`, {
504
+ status: 404,
505
+ });
506
+ }
507
+ // Serialize the error field if present
508
+ const serialized = serializeStepError(data);
509
+ const updates = {
510
+ ...serialized,
511
+ output: data.output,
512
+ };
513
+ const now = new Date();
514
+ // Only set startedAt the first time the step transitions to 'running'
515
+ if (data.status === 'running' && !currentStep.startedAt) {
516
+ updates.startedAt = now;
517
+ }
518
+ if (data.status === 'completed' || data.status === 'failed') {
519
+ updates.completedAt = now;
520
+ }
521
+ const [value] = await drizzle
522
+ .update(steps)
523
+ .set(updates)
524
+ .where(and(eq(steps.stepId, stepId), eq(steps.runId, runId)))
525
+ .returning();
526
+ if (!value) {
527
+ throw new WorkflowAPIError(`Step not found: ${stepId}`, {
528
+ status: 404,
529
+ });
530
+ }
531
+ return deserializeStepError(compact(value));
532
+ },
533
+ async list(params) {
534
+ const limit = params?.pagination?.limit ?? 20;
535
+ const fromCursor = params?.pagination?.cursor;
536
+ const all = await drizzle
537
+ .select()
538
+ .from(steps)
539
+ .where(and(eq(steps.runId, params.runId), map(fromCursor, (c) => lt(steps.stepId, c))))
540
+ .orderBy(desc(steps.stepId))
541
+ .limit(limit + 1);
542
+ const values = all.slice(0, limit);
543
+ const hasMore = all.length > limit;
544
+ const resolveData = params?.resolveData ?? 'all';
545
+ return {
546
+ data: values.map((v) => {
547
+ const deserialized = deserializeStepError(compact(v));
548
+ const parsed = StepSchema.parse(deserialized);
549
+ return filterStepData(parsed, resolveData);
550
+ }),
551
+ hasMore,
552
+ cursor: values.at(-1)?.stepId ?? null,
553
+ };
554
+ },
555
+ };
556
+ }
557
+ function filterStepData(step, resolveData) {
558
+ if (resolveData === 'none') {
559
+ const { input: _, output: __, ...rest } = step;
560
+ return { input: [], output: undefined, ...rest };
561
+ }
562
+ return step;
563
+ }
564
+ function filterRunData(run, resolveData) {
565
+ if (resolveData === 'none') {
566
+ const { input: _, output: __, ...rest } = run;
567
+ return { input: [], output: undefined, ...rest };
568
+ }
569
+ return run;
570
+ }
571
+ function filterHookData(hook, resolveData) {
572
+ if (resolveData === 'none' && 'metadata' in hook) {
573
+ const { metadata: _, ...rest } = hook;
574
+ return { metadata: undefined, ...rest };
575
+ }
576
+ return hook;
577
+ }
578
+ function filterEventData(event, resolveData) {
579
+ if (resolveData === 'none' && 'eventData' in event) {
580
+ const { eventData: _, ...rest } = event;
581
+ return rest;
582
+ }
583
+ return event;
584
+ }
585
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Streamer } from '@workflow/world';
2
+ import type { Sql } from 'postgres';
3
+ import { type Drizzle } from './drizzle/index.js';
4
+ export declare function createStreamer(postgres: Sql, drizzle: Drizzle): Streamer;
5
+ //# sourceMappingURL=streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,oBAAoB,CAAC;AAkC1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CA6JxE"}