@arki/journal 0.0.0-stage → 0.1.0

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 (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +541 -2
  3. package/dist/api.d.ts +336 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +2 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/command.d.ts +27 -0
  8. package/dist/command.d.ts.map +1 -0
  9. package/dist/command.js +157 -0
  10. package/dist/command.js.map +1 -0
  11. package/dist/debug.d.ts +7 -0
  12. package/dist/debug.d.ts.map +1 -0
  13. package/dist/debug.js +8 -0
  14. package/dist/debug.js.map +1 -0
  15. package/dist/dot.d.ts +102 -0
  16. package/dist/dot.d.ts.map +1 -0
  17. package/dist/dot.js +159 -0
  18. package/dist/dot.js.map +1 -0
  19. package/dist/entity.d.ts +56 -0
  20. package/dist/entity.d.ts.map +1 -0
  21. package/dist/entity.js +174 -0
  22. package/dist/entity.js.map +1 -0
  23. package/dist/errors.d.ts +47 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +112 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/event.d.ts +9 -0
  28. package/dist/event.d.ts.map +1 -0
  29. package/dist/event.js +19 -0
  30. package/dist/event.js.map +1 -0
  31. package/dist/fold.d.ts +29 -0
  32. package/dist/fold.d.ts.map +1 -0
  33. package/dist/fold.js +49 -0
  34. package/dist/fold.js.map +1 -0
  35. package/dist/handlers.d.ts +26 -0
  36. package/dist/handlers.d.ts.map +1 -0
  37. package/dist/handlers.js +130 -0
  38. package/dist/handlers.js.map +1 -0
  39. package/dist/history.d.ts +49 -0
  40. package/dist/history.d.ts.map +1 -0
  41. package/dist/history.js +259 -0
  42. package/dist/history.js.map +1 -0
  43. package/dist/hooks.d.ts +14 -0
  44. package/dist/hooks.d.ts.map +1 -0
  45. package/dist/hooks.js +67 -0
  46. package/dist/hooks.js.map +1 -0
  47. package/dist/id.d.ts +18 -0
  48. package/dist/id.d.ts.map +1 -0
  49. package/dist/id.js +41 -0
  50. package/dist/id.js.map +1 -0
  51. package/dist/index.d.ts +12 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +5 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/journal.d.ts +51 -0
  56. package/dist/journal.d.ts.map +1 -0
  57. package/dist/journal.js +181 -0
  58. package/dist/journal.js.map +1 -0
  59. package/dist/listen.d.ts +37 -0
  60. package/dist/listen.d.ts.map +1 -0
  61. package/dist/listen.js +90 -0
  62. package/dist/listen.js.map +1 -0
  63. package/dist/orpc.d.ts +21 -0
  64. package/dist/orpc.d.ts.map +1 -0
  65. package/dist/orpc.js +57 -0
  66. package/dist/orpc.js.map +1 -0
  67. package/dist/pg.d.ts +537 -0
  68. package/dist/pg.d.ts.map +1 -0
  69. package/dist/pg.js +80 -0
  70. package/dist/pg.js.map +1 -0
  71. package/dist/storage.d.ts +52 -0
  72. package/dist/storage.d.ts.map +1 -0
  73. package/dist/storage.js +221 -0
  74. package/dist/storage.js.map +1 -0
  75. package/dist/testing.d.ts +19 -0
  76. package/dist/testing.d.ts.map +1 -0
  77. package/dist/testing.js +23 -0
  78. package/dist/testing.js.map +1 -0
  79. package/dist/transaction-guard.d.ts +2 -0
  80. package/dist/transaction-guard.d.ts.map +1 -0
  81. package/dist/transaction-guard.js +39 -0
  82. package/dist/transaction-guard.js.map +1 -0
  83. package/dist/types.d.ts +414 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +2 -0
  86. package/dist/types.js.map +1 -0
  87. package/dist/worker.d.ts +109 -0
  88. package/dist/worker.d.ts.map +1 -0
  89. package/dist/worker.js +459 -0
  90. package/dist/worker.js.map +1 -0
  91. package/dist/write.d.ts +39 -0
  92. package/dist/write.d.ts.map +1 -0
  93. package/dist/write.js +287 -0
  94. package/dist/write.js.map +1 -0
  95. package/docs/agent-guide.md +324 -0
  96. package/llms.txt +40 -0
  97. package/package.json +99 -4
  98. package/src/api.ts +465 -0
  99. package/src/command.ts +242 -0
  100. package/src/debug.ts +8 -0
  101. package/src/dot.ts +296 -0
  102. package/src/entity.ts +377 -0
  103. package/src/errors.ts +134 -0
  104. package/src/event.ts +26 -0
  105. package/src/fold.ts +97 -0
  106. package/src/handlers.ts +262 -0
  107. package/src/history.ts +390 -0
  108. package/src/hooks.ts +85 -0
  109. package/src/id.ts +54 -0
  110. package/src/index.ts +76 -0
  111. package/src/journal.ts +256 -0
  112. package/src/listen.ts +109 -0
  113. package/src/orpc.ts +59 -0
  114. package/src/pg.ts +107 -0
  115. package/src/storage.ts +277 -0
  116. package/src/test-support.ts +82 -0
  117. package/src/testing.ts +23 -0
  118. package/src/transaction-guard.ts +41 -0
  119. package/src/types.ts +439 -0
  120. package/src/worker.ts +610 -0
  121. package/src/write.ts +434 -0
package/dist/pg.d.ts ADDED
@@ -0,0 +1,537 @@
1
+ import type { PgSchema } from 'drizzle-orm/pg-core';
2
+ /**
3
+ * The two journal tables. Call this once in the app's schema module so
4
+ * `drizzle-kit generate` creates them. The library never creates tables at
5
+ * runtime.
6
+ */
7
+ export declare function journalTables(schema?: PgSchema): {
8
+ events: import("drizzle-orm/pg-core").PgTableWithColumns<{
9
+ name: "journal_events";
10
+ schema: string | undefined;
11
+ columns: {
12
+ seq: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgBigSerial53Builder>, {
13
+ name: string;
14
+ tableName: "journal_events";
15
+ dataType: "number int53";
16
+ data: number;
17
+ driverParam: number;
18
+ notNull: true;
19
+ hasDefault: true;
20
+ isPrimaryKey: false;
21
+ isAutoincrement: false;
22
+ hasRuntimeDefault: false;
23
+ enumValues: undefined;
24
+ identity: undefined;
25
+ generated: undefined;
26
+ }>;
27
+ id: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
28
+ name: string;
29
+ tableName: "journal_events";
30
+ dataType: "string";
31
+ data: string;
32
+ driverParam: string;
33
+ notNull: true;
34
+ hasDefault: false;
35
+ isPrimaryKey: false;
36
+ isAutoincrement: false;
37
+ hasRuntimeDefault: false;
38
+ enumValues: undefined;
39
+ identity: undefined;
40
+ generated: undefined;
41
+ }>;
42
+ kind: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
43
+ name: string;
44
+ tableName: "journal_events";
45
+ dataType: "string";
46
+ data: string;
47
+ driverParam: string;
48
+ notNull: true;
49
+ hasDefault: false;
50
+ isPrimaryKey: false;
51
+ isAutoincrement: false;
52
+ hasRuntimeDefault: false;
53
+ enumValues: undefined;
54
+ identity: undefined;
55
+ generated: undefined;
56
+ }>;
57
+ entityId: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
58
+ name: string;
59
+ tableName: "journal_events";
60
+ dataType: "string";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: undefined;
69
+ identity: undefined;
70
+ generated: undefined;
71
+ }>;
72
+ version: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>, {
73
+ name: string;
74
+ tableName: "journal_events";
75
+ dataType: "number int32";
76
+ data: number;
77
+ driverParam: string | number;
78
+ notNull: true;
79
+ hasDefault: false;
80
+ isPrimaryKey: false;
81
+ isAutoincrement: false;
82
+ hasRuntimeDefault: false;
83
+ enumValues: undefined;
84
+ identity: undefined;
85
+ generated: undefined;
86
+ }>;
87
+ type: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
88
+ name: string;
89
+ tableName: "journal_events";
90
+ dataType: "string";
91
+ data: string;
92
+ driverParam: string;
93
+ notNull: true;
94
+ hasDefault: false;
95
+ isPrimaryKey: false;
96
+ isAutoincrement: false;
97
+ hasRuntimeDefault: false;
98
+ enumValues: undefined;
99
+ identity: undefined;
100
+ generated: undefined;
101
+ }>;
102
+ data: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgJsonbBuilder>, {
103
+ name: string;
104
+ tableName: "journal_events";
105
+ dataType: "object json";
106
+ data: unknown;
107
+ driverParam: unknown;
108
+ notNull: true;
109
+ hasDefault: false;
110
+ isPrimaryKey: false;
111
+ isAutoincrement: false;
112
+ hasRuntimeDefault: false;
113
+ enumValues: undefined;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }>;
117
+ meta: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgJsonbBuilder>, {
118
+ name: string;
119
+ tableName: "journal_events";
120
+ dataType: "object json";
121
+ data: unknown;
122
+ driverParam: unknown;
123
+ notNull: true;
124
+ hasDefault: false;
125
+ isPrimaryKey: false;
126
+ isAutoincrement: false;
127
+ hasRuntimeDefault: false;
128
+ enumValues: undefined;
129
+ identity: undefined;
130
+ generated: undefined;
131
+ }>;
132
+ recordedAt: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTimestampBuilder>>, {
133
+ name: string;
134
+ tableName: "journal_events";
135
+ dataType: "object date";
136
+ data: Date;
137
+ driverParam: string;
138
+ notNull: true;
139
+ hasDefault: true;
140
+ isPrimaryKey: false;
141
+ isAutoincrement: false;
142
+ hasRuntimeDefault: false;
143
+ enumValues: undefined;
144
+ identity: undefined;
145
+ generated: undefined;
146
+ }>;
147
+ commandId: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
148
+ name: string;
149
+ tableName: "journal_events";
150
+ dataType: "string";
151
+ data: string;
152
+ driverParam: string;
153
+ notNull: false;
154
+ hasDefault: false;
155
+ isPrimaryKey: false;
156
+ isAutoincrement: false;
157
+ hasRuntimeDefault: false;
158
+ enumValues: undefined;
159
+ identity: undefined;
160
+ generated: undefined;
161
+ }>;
162
+ causeSeq: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").PgBigInt53Builder, {
163
+ name: string;
164
+ tableName: "journal_events";
165
+ dataType: "number int53";
166
+ data: number;
167
+ driverParam: string | number;
168
+ notNull: false;
169
+ hasDefault: false;
170
+ isPrimaryKey: false;
171
+ isAutoincrement: false;
172
+ hasRuntimeDefault: false;
173
+ enumValues: undefined;
174
+ identity: undefined;
175
+ generated: undefined;
176
+ }>;
177
+ correlationId: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
178
+ name: string;
179
+ tableName: "journal_events";
180
+ dataType: "string";
181
+ data: string;
182
+ driverParam: string;
183
+ notNull: false;
184
+ hasDefault: false;
185
+ isPrimaryKey: false;
186
+ isAutoincrement: false;
187
+ hasRuntimeDefault: false;
188
+ enumValues: undefined;
189
+ identity: undefined;
190
+ generated: undefined;
191
+ }>;
192
+ erasedAt: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").PgTimestampBuilder, {
193
+ name: string;
194
+ tableName: "journal_events";
195
+ dataType: "object date";
196
+ data: Date;
197
+ driverParam: string;
198
+ notNull: false;
199
+ hasDefault: false;
200
+ isPrimaryKey: false;
201
+ isAutoincrement: false;
202
+ hasRuntimeDefault: false;
203
+ enumValues: undefined;
204
+ identity: undefined;
205
+ generated: undefined;
206
+ }>;
207
+ schemaVersion: import("drizzle-orm/pg-core").PgBuildColumn<"journal_events", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
208
+ name: string;
209
+ tableName: "journal_events";
210
+ dataType: "number int32";
211
+ data: number;
212
+ driverParam: string | number;
213
+ notNull: true;
214
+ hasDefault: true;
215
+ isPrimaryKey: false;
216
+ isAutoincrement: false;
217
+ hasRuntimeDefault: false;
218
+ enumValues: undefined;
219
+ identity: undefined;
220
+ generated: undefined;
221
+ }>;
222
+ };
223
+ dialect: 'pg';
224
+ }>;
225
+ jobs: import("drizzle-orm/pg-core").PgTableWithColumns<{
226
+ name: "journal_jobs";
227
+ schema: string | undefined;
228
+ columns: {
229
+ id: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
230
+ name: string;
231
+ tableName: "journal_jobs";
232
+ dataType: "string";
233
+ data: string;
234
+ driverParam: string;
235
+ notNull: true;
236
+ hasDefault: false;
237
+ isPrimaryKey: false;
238
+ isAutoincrement: false;
239
+ hasRuntimeDefault: false;
240
+ enumValues: undefined;
241
+ identity: undefined;
242
+ generated: undefined;
243
+ }>;
244
+ eventSeq: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt53Builder>, {
245
+ name: string;
246
+ tableName: "journal_jobs";
247
+ dataType: "number int53";
248
+ data: number;
249
+ driverParam: string | number;
250
+ notNull: true;
251
+ hasDefault: false;
252
+ isPrimaryKey: false;
253
+ isAutoincrement: false;
254
+ hasRuntimeDefault: false;
255
+ enumValues: undefined;
256
+ identity: undefined;
257
+ generated: undefined;
258
+ }>;
259
+ effect: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
260
+ name: string;
261
+ tableName: "journal_jobs";
262
+ dataType: "string";
263
+ data: string;
264
+ driverParam: string;
265
+ notNull: true;
266
+ hasDefault: false;
267
+ isPrimaryKey: false;
268
+ isAutoincrement: false;
269
+ hasRuntimeDefault: false;
270
+ enumValues: undefined;
271
+ identity: undefined;
272
+ generated: undefined;
273
+ }>;
274
+ priority: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
275
+ name: string;
276
+ tableName: "journal_jobs";
277
+ dataType: "number int32";
278
+ data: number;
279
+ driverParam: string | number;
280
+ notNull: true;
281
+ hasDefault: true;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: undefined;
286
+ identity: undefined;
287
+ generated: undefined;
288
+ }>;
289
+ attempts: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
290
+ name: string;
291
+ tableName: "journal_jobs";
292
+ dataType: "number int32";
293
+ data: number;
294
+ driverParam: string | number;
295
+ notNull: true;
296
+ hasDefault: true;
297
+ isPrimaryKey: false;
298
+ isAutoincrement: false;
299
+ hasRuntimeDefault: false;
300
+ enumValues: undefined;
301
+ identity: undefined;
302
+ generated: undefined;
303
+ }>;
304
+ availableAt: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTimestampBuilder>>, {
305
+ name: string;
306
+ tableName: "journal_jobs";
307
+ dataType: "object date";
308
+ data: Date;
309
+ driverParam: string;
310
+ notNull: true;
311
+ hasDefault: true;
312
+ isPrimaryKey: false;
313
+ isAutoincrement: false;
314
+ hasRuntimeDefault: false;
315
+ enumValues: undefined;
316
+ identity: undefined;
317
+ generated: undefined;
318
+ }>;
319
+ leaseUntil: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").PgTimestampBuilder, {
320
+ name: string;
321
+ tableName: "journal_jobs";
322
+ dataType: "object date";
323
+ data: Date;
324
+ driverParam: string;
325
+ notNull: false;
326
+ hasDefault: false;
327
+ isPrimaryKey: false;
328
+ isAutoincrement: false;
329
+ hasRuntimeDefault: false;
330
+ enumValues: undefined;
331
+ identity: undefined;
332
+ generated: undefined;
333
+ }>;
334
+ leaseToken: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>, {
335
+ name: string;
336
+ tableName: "journal_jobs";
337
+ dataType: "string";
338
+ data: string;
339
+ driverParam: string;
340
+ notNull: false;
341
+ hasDefault: false;
342
+ isPrimaryKey: false;
343
+ isAutoincrement: false;
344
+ hasRuntimeDefault: false;
345
+ enumValues: undefined;
346
+ identity: undefined;
347
+ generated: undefined;
348
+ }>;
349
+ lastError: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>, {
350
+ name: string;
351
+ tableName: "journal_jobs";
352
+ dataType: "string";
353
+ data: string;
354
+ driverParam: string;
355
+ notNull: false;
356
+ hasDefault: false;
357
+ isPrimaryKey: false;
358
+ isAutoincrement: false;
359
+ hasRuntimeDefault: false;
360
+ enumValues: undefined;
361
+ identity: undefined;
362
+ generated: undefined;
363
+ }>;
364
+ deadAt: import("drizzle-orm/pg-core").PgBuildColumn<"journal_jobs", import("drizzle-orm/pg-core").PgTimestampBuilder, {
365
+ name: string;
366
+ tableName: "journal_jobs";
367
+ dataType: "object date";
368
+ data: Date;
369
+ driverParam: string;
370
+ notNull: false;
371
+ hasDefault: false;
372
+ isPrimaryKey: false;
373
+ isAutoincrement: false;
374
+ hasRuntimeDefault: false;
375
+ enumValues: undefined;
376
+ identity: undefined;
377
+ generated: undefined;
378
+ }>;
379
+ };
380
+ dialect: 'pg';
381
+ }>;
382
+ receipts: import("drizzle-orm/pg-core").PgTableWithColumns<{
383
+ name: "journal_receipts";
384
+ schema: string | undefined;
385
+ columns: {
386
+ key: import("drizzle-orm/pg-core").PgBuildColumn<"journal_receipts", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
387
+ name: string;
388
+ tableName: "journal_receipts";
389
+ dataType: "string";
390
+ data: string;
391
+ driverParam: string;
392
+ notNull: true;
393
+ hasDefault: false;
394
+ isPrimaryKey: false;
395
+ isAutoincrement: false;
396
+ hasRuntimeDefault: false;
397
+ enumValues: undefined;
398
+ identity: undefined;
399
+ generated: undefined;
400
+ }>;
401
+ command: import("drizzle-orm/pg-core").PgBuildColumn<"journal_receipts", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
402
+ name: string;
403
+ tableName: "journal_receipts";
404
+ dataType: "string";
405
+ data: string;
406
+ driverParam: string;
407
+ notNull: true;
408
+ hasDefault: false;
409
+ isPrimaryKey: false;
410
+ isAutoincrement: false;
411
+ hasRuntimeDefault: false;
412
+ enumValues: undefined;
413
+ identity: undefined;
414
+ generated: undefined;
415
+ }>;
416
+ input: import("drizzle-orm/pg-core").PgBuildColumn<"journal_receipts", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgJsonbBuilder>, {
417
+ name: string;
418
+ tableName: "journal_receipts";
419
+ dataType: "object json";
420
+ data: unknown;
421
+ driverParam: unknown;
422
+ notNull: true;
423
+ hasDefault: false;
424
+ isPrimaryKey: false;
425
+ isAutoincrement: false;
426
+ hasRuntimeDefault: false;
427
+ enumValues: undefined;
428
+ identity: undefined;
429
+ generated: undefined;
430
+ }>;
431
+ result: import("drizzle-orm/pg-core").PgBuildColumn<"journal_receipts", import("drizzle-orm/pg-core").Set$Type<import("drizzle-orm/pg-core").PgJsonbBuilder, {
432
+ readonly value?: unknown;
433
+ }>, {
434
+ name: string;
435
+ tableName: "journal_receipts";
436
+ dataType: "object json";
437
+ data: {
438
+ readonly value?: unknown;
439
+ };
440
+ driverParam: unknown;
441
+ notNull: false;
442
+ hasDefault: false;
443
+ isPrimaryKey: false;
444
+ isAutoincrement: false;
445
+ hasRuntimeDefault: false;
446
+ enumValues: undefined;
447
+ identity: undefined;
448
+ generated: undefined;
449
+ }>;
450
+ commandId: import("drizzle-orm/pg-core").PgBuildColumn<"journal_receipts", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
451
+ name: string;
452
+ tableName: "journal_receipts";
453
+ dataType: "string";
454
+ data: string;
455
+ driverParam: string;
456
+ notNull: true;
457
+ hasDefault: false;
458
+ isPrimaryKey: false;
459
+ isAutoincrement: false;
460
+ hasRuntimeDefault: false;
461
+ enumValues: undefined;
462
+ identity: undefined;
463
+ generated: undefined;
464
+ }>;
465
+ recordedAt: import("drizzle-orm/pg-core").PgBuildColumn<"journal_receipts", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTimestampBuilder>>, {
466
+ name: string;
467
+ tableName: "journal_receipts";
468
+ dataType: "object date";
469
+ data: Date;
470
+ driverParam: string;
471
+ notNull: true;
472
+ hasDefault: true;
473
+ isPrimaryKey: false;
474
+ isAutoincrement: false;
475
+ hasRuntimeDefault: false;
476
+ enumValues: undefined;
477
+ identity: undefined;
478
+ generated: undefined;
479
+ }>;
480
+ };
481
+ dialect: 'pg';
482
+ }>;
483
+ cursors: import("drizzle-orm/pg-core").PgTableWithColumns<{
484
+ name: "journal_cursors";
485
+ schema: string | undefined;
486
+ columns: {
487
+ name: import("drizzle-orm/pg-core").PgBuildColumn<"journal_cursors", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
488
+ name: string;
489
+ tableName: "journal_cursors";
490
+ dataType: "string";
491
+ data: string;
492
+ driverParam: string;
493
+ notNull: true;
494
+ hasDefault: false;
495
+ isPrimaryKey: false;
496
+ isAutoincrement: false;
497
+ hasRuntimeDefault: false;
498
+ enumValues: undefined;
499
+ identity: undefined;
500
+ generated: undefined;
501
+ }>;
502
+ seq: import("drizzle-orm/pg-core").PgBuildColumn<"journal_cursors", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt53Builder>>, {
503
+ name: string;
504
+ tableName: "journal_cursors";
505
+ dataType: "number int53";
506
+ data: number;
507
+ driverParam: string | number;
508
+ notNull: true;
509
+ hasDefault: true;
510
+ isPrimaryKey: false;
511
+ isAutoincrement: false;
512
+ hasRuntimeDefault: false;
513
+ enumValues: undefined;
514
+ identity: undefined;
515
+ generated: undefined;
516
+ }>;
517
+ updatedAt: import("drizzle-orm/pg-core").PgBuildColumn<"journal_cursors", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTimestampBuilder>>, {
518
+ name: string;
519
+ tableName: "journal_cursors";
520
+ dataType: "object date";
521
+ data: Date;
522
+ driverParam: string;
523
+ notNull: true;
524
+ hasDefault: true;
525
+ isPrimaryKey: false;
526
+ isAutoincrement: false;
527
+ hasRuntimeDefault: false;
528
+ enumValues: undefined;
529
+ identity: undefined;
530
+ generated: undefined;
531
+ }>;
532
+ };
533
+ dialect: 'pg';
534
+ }>;
535
+ };
536
+ export type JournalTables = ReturnType<typeof journalTables>;
537
+ //# sourceMappingURL=pg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../src/pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,qBAAqB,CAAC;AAe/D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsEM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3D;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}
package/dist/pg.js ADDED
@@ -0,0 +1,80 @@
1
+ import { sql } from 'drizzle-orm';
2
+ import { bigint, bigserial, index, integer, jsonb, pgTable, text, timestamp, unique, varchar, } from 'drizzle-orm/pg-core';
3
+ /**
4
+ * The two journal tables. Call this once in the app's schema module so
5
+ * `drizzle-kit generate` creates them. The library never creates tables at
6
+ * runtime.
7
+ */
8
+ export function journalTables(schema) {
9
+ const table = schema === undefined ? pgTable : schema.table;
10
+ const events = table('journal_events', {
11
+ /** Global order. `rerun` walks the log by this. */
12
+ seq: bigserial('seq', { mode: 'number' }).primaryKey(),
13
+ /** `evt_xxx`. */
14
+ id: varchar('id').notNull().unique(),
15
+ kind: varchar('kind', { length: 64 }).notNull(),
16
+ entityId: varchar('entity_id', { length: 256 }).notNull(),
17
+ /** 1, 2, 3 per entity. */
18
+ version: integer('version').notNull(),
19
+ type: varchar('type', { length: 128 }).notNull(),
20
+ data: jsonb('data').notNull(),
21
+ meta: jsonb('meta').notNull(),
22
+ recordedAt: timestamp('recorded_at', { withTimezone: true, mode: 'date' }).notNull().defaultNow(),
23
+ // Stamped by the library, never by the app. Null on rows written before these columns existed.
24
+ /** The `cmd_` id of the command run that wrote this event. Null for a bare `journal.write`. */
25
+ commandId: varchar('command_id'),
26
+ /** Inside an effect's `ctx.run`: the seq of the event the job was for. Else null. */
27
+ causeSeq: bigint('cause_seq', { mode: 'number' }),
28
+ /** Shared by every event of one chain: inherited from the cause event or the parent run, else new per root run. */
29
+ correlationId: varchar('correlation_id'),
30
+ /** Set by `forget` when `data` was rewritten to the event's erased form. */
31
+ erasedAt: timestamp('erased_at', { withTimezone: true, mode: 'date' }),
32
+ /** The event's schema version when `data` was written. Older rows are upcast on read. */
33
+ schemaVersion: integer('schema_version').notNull().default(1),
34
+ }, t => [
35
+ unique('journal_events_kind_entity_id_version_unique').on(t.kind, t.entityId, t.version),
36
+ index('journal_events_correlation_id_idx').on(t.correlationId),
37
+ ]);
38
+ const jobs = table('journal_jobs', {
39
+ /** `job_xxx`. Pass it on as an idempotency key. */
40
+ id: varchar('id').primaryKey(),
41
+ eventSeq: bigint('event_seq', { mode: 'number' })
42
+ .notNull()
43
+ .references(() => events.seq),
44
+ effect: varchar('effect', { length: 128 }).notNull(),
45
+ /** Higher runs first among due jobs. From the effect's schedule. */
46
+ priority: integer('priority').notNull().default(0),
47
+ attempts: integer('attempts').notNull().default(0),
48
+ availableAt: timestamp('available_at', { withTimezone: true, mode: 'date' }).notNull().defaultNow(),
49
+ leaseUntil: timestamp('lease_until', { withTimezone: true, mode: 'date' }),
50
+ leaseToken: varchar('lease_token'),
51
+ lastError: text('last_error'),
52
+ /** Set when attempts run out. A human clears it or deletes the row. */
53
+ deadAt: timestamp('dead_at', { withTimezone: true, mode: 'date' }),
54
+ }, t => [
55
+ unique('journal_jobs_event_seq_effect_unique').on(t.eventSeq, t.effect),
56
+ index('journal_jobs_due_idx')
57
+ .on(t.priority.desc(), t.availableAt)
58
+ .where(sql `${t.deadAt} is null`),
59
+ ]);
60
+ const receipts = table('journal_receipts', {
61
+ /** The app's idempotency key. Scope it to the caller when it comes from outside (tenant, actor, source). */
62
+ key: varchar('key', { length: 256 }).primaryKey(),
63
+ command: varchar('command', { length: 128 }).notNull(),
64
+ /** The parsed input, after a JSON round trip. A repeat with another input is a conflict. */
65
+ input: jsonb('input').notNull(),
66
+ /** `{ value }` once the run finished; `{}` for a command that returned nothing; null while it runs. */
67
+ result: jsonb('result').$type(),
68
+ commandId: varchar('command_id').notNull(),
69
+ recordedAt: timestamp('recorded_at', { withTimezone: true, mode: 'date' }).notNull().defaultNow(),
70
+ });
71
+ const cursors = table('journal_cursors', {
72
+ /** The async projection's name. */
73
+ name: varchar('name', { length: 128 }).primaryKey(),
74
+ /** Global scan progress: every event with a seq at or below this was looked at, matching or not. */
75
+ seq: bigint('seq', { mode: 'number' }).notNull().default(0),
76
+ updatedAt: timestamp('updated_at', { withTimezone: true, mode: 'date' }).notNull().defaultNow(),
77
+ });
78
+ return { events, jobs, receipts, cursors };
79
+ }
80
+ //# sourceMappingURL=pg.js.map
package/dist/pg.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg.js","sourceRoot":"","sources":["../src/pg.ts"],"names":[],"mappings":"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"}