@livestore/common 0.4.0-dev.11 → 0.4.0-dev.13

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 (56) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
  3. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  4. package/dist/devtools/devtools-messages-leader.d.ts +24 -24
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/leader-thread/eventlog.js +2 -1
  10. package/dist/leader-thread/eventlog.js.map +1 -1
  11. package/dist/schema/mod.d.ts +1 -1
  12. package/dist/schema/mod.d.ts.map +1 -1
  13. package/dist/schema/mod.js +1 -1
  14. package/dist/schema/mod.js.map +1 -1
  15. package/dist/schema/schema.js +1 -1
  16. package/dist/schema/schema.js.map +1 -1
  17. package/dist/schema/state/sqlite/column-def.js +9 -0
  18. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  19. package/dist/schema/state/sqlite/column-def.test.js +10 -0
  20. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  21. package/dist/schema/state/sqlite/mod.js +1 -1
  22. package/dist/schema/state/sqlite/mod.js.map +1 -1
  23. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +547 -0
  24. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
  25. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
  26. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
  27. package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
  28. package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
  29. package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
  30. package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
  31. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +456 -0
  32. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
  33. package/dist/schema/state/sqlite/system-tables/state-tables.js +55 -0
  34. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
  35. package/dist/schema-management/migrations.d.ts +30 -0
  36. package/dist/schema-management/migrations.d.ts.map +1 -1
  37. package/dist/schema-management/migrations.js +31 -1
  38. package/dist/schema-management/migrations.js.map +1 -1
  39. package/dist/version.d.ts +15 -5
  40. package/dist/version.d.ts.map +1 -1
  41. package/dist/version.js +15 -5
  42. package/dist/version.js.map +1 -1
  43. package/package.json +4 -4
  44. package/src/index.ts +1 -1
  45. package/src/leader-thread/eventlog.ts +2 -2
  46. package/src/schema/mod.ts +1 -1
  47. package/src/schema/schema.ts +1 -1
  48. package/src/schema/state/sqlite/column-def.test.ts +13 -0
  49. package/src/schema/state/sqlite/column-def.ts +16 -0
  50. package/src/schema/state/sqlite/mod.ts +1 -1
  51. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
  52. package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
  53. package/src/schema/state/sqlite/system-tables/state-tables.ts +69 -0
  54. package/src/schema-management/migrations.ts +33 -2
  55. package/src/version.ts +15 -5
  56. package/src/schema/state/sqlite/system-tables.ts +0 -106
@@ -0,0 +1,547 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ /**
3
+ * EVENTLOG DATABASE SYSTEM TABLES
4
+ *
5
+ * ⚠️ CRITICAL: NEVER modify eventlog schemas without bumping `liveStoreStorageFormatVersion`!
6
+ * Eventlog is the source of truth - schema changes cause permanent data loss.
7
+ *
8
+ * TODO: Implement proper eventlog versioning system to prevent accidental data loss
9
+ */
10
+ export declare const EVENTLOG_META_TABLE = "eventlog";
11
+ /**
12
+ * Main client-side event log storing all events (global and local/rebased).
13
+ */
14
+ export declare const eventlogMetaTable: import("../table-def.ts").TableDef<import("../table-def.ts").SqliteTableDefForInput<"eventlog", {
15
+ readonly seqNumGlobal: {
16
+ columnType: "integer";
17
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
18
+ default: import("effect/Option").None<never>;
19
+ nullable: false;
20
+ primaryKey: true;
21
+ autoIncrement: false;
22
+ };
23
+ readonly seqNumClient: {
24
+ columnType: "integer";
25
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
26
+ default: import("effect/Option").None<never>;
27
+ nullable: false;
28
+ primaryKey: true;
29
+ autoIncrement: false;
30
+ };
31
+ readonly seqNumRebaseGeneration: {
32
+ columnType: "integer";
33
+ schema: Schema.Schema<number, number, never>;
34
+ default: import("effect/Option").None<never>;
35
+ nullable: false;
36
+ primaryKey: true;
37
+ autoIncrement: false;
38
+ };
39
+ readonly parentSeqNumGlobal: {
40
+ columnType: "integer";
41
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
42
+ default: import("effect/Option").None<never>;
43
+ nullable: false;
44
+ primaryKey: false;
45
+ autoIncrement: false;
46
+ };
47
+ readonly parentSeqNumClient: {
48
+ columnType: "integer";
49
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
50
+ default: import("effect/Option").None<never>;
51
+ nullable: false;
52
+ primaryKey: false;
53
+ autoIncrement: false;
54
+ };
55
+ readonly parentSeqNumRebaseGeneration: {
56
+ columnType: "integer";
57
+ schema: Schema.Schema<number, number, never>;
58
+ default: import("effect/Option").None<never>;
59
+ nullable: false;
60
+ primaryKey: false;
61
+ autoIncrement: false;
62
+ };
63
+ /** Event definition name */
64
+ readonly name: {
65
+ columnType: "text";
66
+ schema: Schema.Schema<string, string, never>;
67
+ default: import("effect/Option").None<never>;
68
+ nullable: false;
69
+ primaryKey: false;
70
+ autoIncrement: false;
71
+ };
72
+ readonly argsJson: {
73
+ columnType: "text";
74
+ schema: Schema.Schema<any, string, never>;
75
+ default: import("effect/Option").None<never>;
76
+ nullable: false;
77
+ primaryKey: false;
78
+ autoIncrement: false;
79
+ };
80
+ readonly clientId: {
81
+ columnType: "text";
82
+ schema: Schema.Schema<string, string, never>;
83
+ default: import("effect/Option").None<never>;
84
+ nullable: false;
85
+ primaryKey: false;
86
+ autoIncrement: false;
87
+ };
88
+ readonly sessionId: {
89
+ columnType: "text";
90
+ schema: Schema.Schema<string, string, never>;
91
+ default: import("effect/Option").None<never>;
92
+ nullable: false;
93
+ primaryKey: false;
94
+ autoIncrement: false;
95
+ };
96
+ readonly schemaHash: {
97
+ columnType: "integer";
98
+ schema: Schema.Schema<number, number, never>;
99
+ default: import("effect/Option").None<never>;
100
+ nullable: false;
101
+ primaryKey: false;
102
+ autoIncrement: false;
103
+ };
104
+ readonly syncMetadataJson: {
105
+ columnType: "text";
106
+ schema: Schema.Schema<import("effect/Option").Option<Schema.JsonValue>, string, never>;
107
+ default: import("effect/Option").None<never>;
108
+ nullable: false;
109
+ primaryKey: false;
110
+ autoIncrement: false;
111
+ };
112
+ }>, import("../table-def.ts").WithDefaults<{
113
+ readonly seqNumGlobal: {
114
+ columnType: "integer";
115
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
116
+ default: import("effect/Option").None<never>;
117
+ nullable: false;
118
+ primaryKey: true;
119
+ autoIncrement: false;
120
+ };
121
+ readonly seqNumClient: {
122
+ columnType: "integer";
123
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
124
+ default: import("effect/Option").None<never>;
125
+ nullable: false;
126
+ primaryKey: true;
127
+ autoIncrement: false;
128
+ };
129
+ readonly seqNumRebaseGeneration: {
130
+ columnType: "integer";
131
+ schema: Schema.Schema<number, number, never>;
132
+ default: import("effect/Option").None<never>;
133
+ nullable: false;
134
+ primaryKey: true;
135
+ autoIncrement: false;
136
+ };
137
+ readonly parentSeqNumGlobal: {
138
+ columnType: "integer";
139
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
140
+ default: import("effect/Option").None<never>;
141
+ nullable: false;
142
+ primaryKey: false;
143
+ autoIncrement: false;
144
+ };
145
+ readonly parentSeqNumClient: {
146
+ columnType: "integer";
147
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
148
+ default: import("effect/Option").None<never>;
149
+ nullable: false;
150
+ primaryKey: false;
151
+ autoIncrement: false;
152
+ };
153
+ readonly parentSeqNumRebaseGeneration: {
154
+ columnType: "integer";
155
+ schema: Schema.Schema<number, number, never>;
156
+ default: import("effect/Option").None<never>;
157
+ nullable: false;
158
+ primaryKey: false;
159
+ autoIncrement: false;
160
+ };
161
+ /** Event definition name */
162
+ readonly name: {
163
+ columnType: "text";
164
+ schema: Schema.Schema<string, string, never>;
165
+ default: import("effect/Option").None<never>;
166
+ nullable: false;
167
+ primaryKey: false;
168
+ autoIncrement: false;
169
+ };
170
+ readonly argsJson: {
171
+ columnType: "text";
172
+ schema: Schema.Schema<any, string, never>;
173
+ default: import("effect/Option").None<never>;
174
+ nullable: false;
175
+ primaryKey: false;
176
+ autoIncrement: false;
177
+ };
178
+ readonly clientId: {
179
+ columnType: "text";
180
+ schema: Schema.Schema<string, string, never>;
181
+ default: import("effect/Option").None<never>;
182
+ nullable: false;
183
+ primaryKey: false;
184
+ autoIncrement: false;
185
+ };
186
+ readonly sessionId: {
187
+ columnType: "text";
188
+ schema: Schema.Schema<string, string, never>;
189
+ default: import("effect/Option").None<never>;
190
+ nullable: false;
191
+ primaryKey: false;
192
+ autoIncrement: false;
193
+ };
194
+ readonly schemaHash: {
195
+ columnType: "integer";
196
+ schema: Schema.Schema<number, number, never>;
197
+ default: import("effect/Option").None<never>;
198
+ nullable: false;
199
+ primaryKey: false;
200
+ autoIncrement: false;
201
+ };
202
+ readonly syncMetadataJson: {
203
+ columnType: "text";
204
+ schema: Schema.Schema<import("effect/Option").Option<Schema.JsonValue>, string, never>;
205
+ default: import("effect/Option").None<never>;
206
+ nullable: false;
207
+ primaryKey: false;
208
+ autoIncrement: false;
209
+ };
210
+ }>, Schema.Schema<{
211
+ readonly seqNumGlobal: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
212
+ readonly seqNumClient: number & import("effect/Brand").Brand<"ClientEventSequenceNumber">;
213
+ readonly seqNumRebaseGeneration: number;
214
+ readonly parentSeqNumGlobal: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
215
+ readonly parentSeqNumClient: number & import("effect/Brand").Brand<"ClientEventSequenceNumber">;
216
+ readonly parentSeqNumRebaseGeneration: number;
217
+ readonly name: string;
218
+ readonly argsJson: any;
219
+ readonly clientId: string;
220
+ readonly sessionId: string;
221
+ readonly schemaHash: number;
222
+ readonly syncMetadataJson: import("effect/Option").Option<Schema.JsonValue>;
223
+ }, {
224
+ readonly seqNumGlobal: number;
225
+ readonly seqNumClient: number;
226
+ readonly seqNumRebaseGeneration: number;
227
+ readonly parentSeqNumGlobal: number;
228
+ readonly parentSeqNumClient: number;
229
+ readonly parentSeqNumRebaseGeneration: number;
230
+ readonly name: string;
231
+ readonly argsJson: string;
232
+ readonly clientId: string;
233
+ readonly sessionId: string;
234
+ readonly schemaHash: number;
235
+ readonly syncMetadataJson: string;
236
+ }, never>>;
237
+ export type EventlogMetaRow = typeof eventlogMetaTable.Type;
238
+ export declare const SYNC_STATUS_TABLE = "__livestore_sync_status";
239
+ /**
240
+ * Tracks sync status including the remote head position and backend identity.
241
+ */
242
+ export declare const syncStatusTable: import("../table-def.ts").TableDef<import("../table-def.ts").SqliteTableDefForInput<"__livestore_sync_status", {
243
+ readonly head: {
244
+ columnType: "integer";
245
+ schema: Schema.Schema<number, number, never>;
246
+ default: import("effect/Option").None<never>;
247
+ nullable: false;
248
+ primaryKey: true;
249
+ autoIncrement: false;
250
+ };
251
+ readonly backendId: {
252
+ columnType: "text";
253
+ schema: Schema.Schema<string | null, string | null, never>;
254
+ default: import("effect/Option").None<never>;
255
+ nullable: true;
256
+ primaryKey: false;
257
+ autoIncrement: false;
258
+ };
259
+ }>, import("../table-def.ts").WithDefaults<{
260
+ readonly head: {
261
+ columnType: "integer";
262
+ schema: Schema.Schema<number, number, never>;
263
+ default: import("effect/Option").None<never>;
264
+ nullable: false;
265
+ primaryKey: true;
266
+ autoIncrement: false;
267
+ };
268
+ readonly backendId: {
269
+ columnType: "text";
270
+ schema: Schema.Schema<string | null, string | null, never>;
271
+ default: import("effect/Option").None<never>;
272
+ nullable: true;
273
+ primaryKey: false;
274
+ autoIncrement: false;
275
+ };
276
+ }>, Schema.Schema<{
277
+ readonly head: number;
278
+ readonly backendId: string | null;
279
+ }, {
280
+ readonly head: number;
281
+ readonly backendId: string | null;
282
+ }, never>>;
283
+ export type SyncStatusRow = typeof syncStatusTable.Type;
284
+ export declare const eventlogSystemTables: readonly [import("../table-def.ts").TableDef<import("../table-def.ts").SqliteTableDefForInput<"eventlog", {
285
+ readonly seqNumGlobal: {
286
+ columnType: "integer";
287
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
288
+ default: import("effect/Option").None<never>;
289
+ nullable: false;
290
+ primaryKey: true;
291
+ autoIncrement: false;
292
+ };
293
+ readonly seqNumClient: {
294
+ columnType: "integer";
295
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
296
+ default: import("effect/Option").None<never>;
297
+ nullable: false;
298
+ primaryKey: true;
299
+ autoIncrement: false;
300
+ };
301
+ readonly seqNumRebaseGeneration: {
302
+ columnType: "integer";
303
+ schema: Schema.Schema<number, number, never>;
304
+ default: import("effect/Option").None<never>;
305
+ nullable: false;
306
+ primaryKey: true;
307
+ autoIncrement: false;
308
+ };
309
+ readonly parentSeqNumGlobal: {
310
+ columnType: "integer";
311
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
312
+ default: import("effect/Option").None<never>;
313
+ nullable: false;
314
+ primaryKey: false;
315
+ autoIncrement: false;
316
+ };
317
+ readonly parentSeqNumClient: {
318
+ columnType: "integer";
319
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
320
+ default: import("effect/Option").None<never>;
321
+ nullable: false;
322
+ primaryKey: false;
323
+ autoIncrement: false;
324
+ };
325
+ readonly parentSeqNumRebaseGeneration: {
326
+ columnType: "integer";
327
+ schema: Schema.Schema<number, number, never>;
328
+ default: import("effect/Option").None<never>;
329
+ nullable: false;
330
+ primaryKey: false;
331
+ autoIncrement: false;
332
+ };
333
+ /** Event definition name */
334
+ readonly name: {
335
+ columnType: "text";
336
+ schema: Schema.Schema<string, string, never>;
337
+ default: import("effect/Option").None<never>;
338
+ nullable: false;
339
+ primaryKey: false;
340
+ autoIncrement: false;
341
+ };
342
+ readonly argsJson: {
343
+ columnType: "text";
344
+ schema: Schema.Schema<any, string, never>;
345
+ default: import("effect/Option").None<never>;
346
+ nullable: false;
347
+ primaryKey: false;
348
+ autoIncrement: false;
349
+ };
350
+ readonly clientId: {
351
+ columnType: "text";
352
+ schema: Schema.Schema<string, string, never>;
353
+ default: import("effect/Option").None<never>;
354
+ nullable: false;
355
+ primaryKey: false;
356
+ autoIncrement: false;
357
+ };
358
+ readonly sessionId: {
359
+ columnType: "text";
360
+ schema: Schema.Schema<string, string, never>;
361
+ default: import("effect/Option").None<never>;
362
+ nullable: false;
363
+ primaryKey: false;
364
+ autoIncrement: false;
365
+ };
366
+ readonly schemaHash: {
367
+ columnType: "integer";
368
+ schema: Schema.Schema<number, number, never>;
369
+ default: import("effect/Option").None<never>;
370
+ nullable: false;
371
+ primaryKey: false;
372
+ autoIncrement: false;
373
+ };
374
+ readonly syncMetadataJson: {
375
+ columnType: "text";
376
+ schema: Schema.Schema<import("effect/Option").Option<Schema.JsonValue>, string, never>;
377
+ default: import("effect/Option").None<never>;
378
+ nullable: false;
379
+ primaryKey: false;
380
+ autoIncrement: false;
381
+ };
382
+ }>, import("../table-def.ts").WithDefaults<{
383
+ readonly seqNumGlobal: {
384
+ columnType: "integer";
385
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
386
+ default: import("effect/Option").None<never>;
387
+ nullable: false;
388
+ primaryKey: true;
389
+ autoIncrement: false;
390
+ };
391
+ readonly seqNumClient: {
392
+ columnType: "integer";
393
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
394
+ default: import("effect/Option").None<never>;
395
+ nullable: false;
396
+ primaryKey: true;
397
+ autoIncrement: false;
398
+ };
399
+ readonly seqNumRebaseGeneration: {
400
+ columnType: "integer";
401
+ schema: Schema.Schema<number, number, never>;
402
+ default: import("effect/Option").None<never>;
403
+ nullable: false;
404
+ primaryKey: true;
405
+ autoIncrement: false;
406
+ };
407
+ readonly parentSeqNumGlobal: {
408
+ columnType: "integer";
409
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
410
+ default: import("effect/Option").None<never>;
411
+ nullable: false;
412
+ primaryKey: false;
413
+ autoIncrement: false;
414
+ };
415
+ readonly parentSeqNumClient: {
416
+ columnType: "integer";
417
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
418
+ default: import("effect/Option").None<never>;
419
+ nullable: false;
420
+ primaryKey: false;
421
+ autoIncrement: false;
422
+ };
423
+ readonly parentSeqNumRebaseGeneration: {
424
+ columnType: "integer";
425
+ schema: Schema.Schema<number, number, never>;
426
+ default: import("effect/Option").None<never>;
427
+ nullable: false;
428
+ primaryKey: false;
429
+ autoIncrement: false;
430
+ };
431
+ /** Event definition name */
432
+ readonly name: {
433
+ columnType: "text";
434
+ schema: Schema.Schema<string, string, never>;
435
+ default: import("effect/Option").None<never>;
436
+ nullable: false;
437
+ primaryKey: false;
438
+ autoIncrement: false;
439
+ };
440
+ readonly argsJson: {
441
+ columnType: "text";
442
+ schema: Schema.Schema<any, string, never>;
443
+ default: import("effect/Option").None<never>;
444
+ nullable: false;
445
+ primaryKey: false;
446
+ autoIncrement: false;
447
+ };
448
+ readonly clientId: {
449
+ columnType: "text";
450
+ schema: Schema.Schema<string, string, never>;
451
+ default: import("effect/Option").None<never>;
452
+ nullable: false;
453
+ primaryKey: false;
454
+ autoIncrement: false;
455
+ };
456
+ readonly sessionId: {
457
+ columnType: "text";
458
+ schema: Schema.Schema<string, string, never>;
459
+ default: import("effect/Option").None<never>;
460
+ nullable: false;
461
+ primaryKey: false;
462
+ autoIncrement: false;
463
+ };
464
+ readonly schemaHash: {
465
+ columnType: "integer";
466
+ schema: Schema.Schema<number, number, never>;
467
+ default: import("effect/Option").None<never>;
468
+ nullable: false;
469
+ primaryKey: false;
470
+ autoIncrement: false;
471
+ };
472
+ readonly syncMetadataJson: {
473
+ columnType: "text";
474
+ schema: Schema.Schema<import("effect/Option").Option<Schema.JsonValue>, string, never>;
475
+ default: import("effect/Option").None<never>;
476
+ nullable: false;
477
+ primaryKey: false;
478
+ autoIncrement: false;
479
+ };
480
+ }>, Schema.Schema<{
481
+ readonly seqNumGlobal: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
482
+ readonly seqNumClient: number & import("effect/Brand").Brand<"ClientEventSequenceNumber">;
483
+ readonly seqNumRebaseGeneration: number;
484
+ readonly parentSeqNumGlobal: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
485
+ readonly parentSeqNumClient: number & import("effect/Brand").Brand<"ClientEventSequenceNumber">;
486
+ readonly parentSeqNumRebaseGeneration: number;
487
+ readonly name: string;
488
+ readonly argsJson: any;
489
+ readonly clientId: string;
490
+ readonly sessionId: string;
491
+ readonly schemaHash: number;
492
+ readonly syncMetadataJson: import("effect/Option").Option<Schema.JsonValue>;
493
+ }, {
494
+ readonly seqNumGlobal: number;
495
+ readonly seqNumClient: number;
496
+ readonly seqNumRebaseGeneration: number;
497
+ readonly parentSeqNumGlobal: number;
498
+ readonly parentSeqNumClient: number;
499
+ readonly parentSeqNumRebaseGeneration: number;
500
+ readonly name: string;
501
+ readonly argsJson: string;
502
+ readonly clientId: string;
503
+ readonly sessionId: string;
504
+ readonly schemaHash: number;
505
+ readonly syncMetadataJson: string;
506
+ }, never>>, import("../table-def.ts").TableDef<import("../table-def.ts").SqliteTableDefForInput<"__livestore_sync_status", {
507
+ readonly head: {
508
+ columnType: "integer";
509
+ schema: Schema.Schema<number, number, never>;
510
+ default: import("effect/Option").None<never>;
511
+ nullable: false;
512
+ primaryKey: true;
513
+ autoIncrement: false;
514
+ };
515
+ readonly backendId: {
516
+ columnType: "text";
517
+ schema: Schema.Schema<string | null, string | null, never>;
518
+ default: import("effect/Option").None<never>;
519
+ nullable: true;
520
+ primaryKey: false;
521
+ autoIncrement: false;
522
+ };
523
+ }>, import("../table-def.ts").WithDefaults<{
524
+ readonly head: {
525
+ columnType: "integer";
526
+ schema: Schema.Schema<number, number, never>;
527
+ default: import("effect/Option").None<never>;
528
+ nullable: false;
529
+ primaryKey: true;
530
+ autoIncrement: false;
531
+ };
532
+ readonly backendId: {
533
+ columnType: "text";
534
+ schema: Schema.Schema<string | null, string | null, never>;
535
+ default: import("effect/Option").None<never>;
536
+ nullable: true;
537
+ primaryKey: false;
538
+ autoIncrement: false;
539
+ };
540
+ }>, Schema.Schema<{
541
+ readonly head: number;
542
+ readonly backendId: string | null;
543
+ }, {
544
+ readonly head: number;
545
+ readonly backendId: string | null;
546
+ }, never>>];
547
+ //# sourceMappingURL=eventlog-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventlog-tables.d.ts","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/system-tables/eventlog-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAMhD;;;;;;;GAOG;AAEH,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAU1B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAY9B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,iBAAiB,4BAA4B,CAAA;AAE1D;;GAEG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAO1B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAjC7B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiCiD,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ import * as EventSequenceNumber from "../../../EventSequenceNumber.js";
3
+ import { SqliteDsl } from "../db-schema/mod.js";
4
+ import { table } from "../table-def.js";
5
+ /**
6
+ * EVENTLOG DATABASE SYSTEM TABLES
7
+ *
8
+ * ⚠️ CRITICAL: NEVER modify eventlog schemas without bumping `liveStoreStorageFormatVersion`!
9
+ * Eventlog is the source of truth - schema changes cause permanent data loss.
10
+ *
11
+ * TODO: Implement proper eventlog versioning system to prevent accidental data loss
12
+ */
13
+ export const EVENTLOG_META_TABLE = 'eventlog';
14
+ /**
15
+ * Main client-side event log storing all events (global and local/rebased).
16
+ */
17
+ export const eventlogMetaTable = table({
18
+ name: EVENTLOG_META_TABLE,
19
+ columns: {
20
+ // TODO Adjust modeling so a global event never needs a client id component
21
+ seqNumGlobal: SqliteDsl.integer({ primaryKey: true, schema: EventSequenceNumber.GlobalEventSequenceNumber }),
22
+ seqNumClient: SqliteDsl.integer({ primaryKey: true, schema: EventSequenceNumber.ClientEventSequenceNumber }),
23
+ seqNumRebaseGeneration: SqliteDsl.integer({ primaryKey: true }),
24
+ parentSeqNumGlobal: SqliteDsl.integer({ schema: EventSequenceNumber.GlobalEventSequenceNumber }),
25
+ parentSeqNumClient: SqliteDsl.integer({ schema: EventSequenceNumber.ClientEventSequenceNumber }),
26
+ parentSeqNumRebaseGeneration: SqliteDsl.integer({}),
27
+ /** Event definition name */
28
+ name: SqliteDsl.text({}),
29
+ argsJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Any) }),
30
+ clientId: SqliteDsl.text({}),
31
+ sessionId: SqliteDsl.text({}),
32
+ schemaHash: SqliteDsl.integer({}),
33
+ syncMetadataJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Option(Schema.JsonValue)) }),
34
+ },
35
+ indexes: [
36
+ { columns: ['seqNumGlobal'], name: 'idx_eventlog_seqNumGlobal' },
37
+ { columns: ['seqNumGlobal', 'seqNumClient', 'seqNumRebaseGeneration'], name: 'idx_eventlog_seqNum' },
38
+ ],
39
+ });
40
+ export const SYNC_STATUS_TABLE = '__livestore_sync_status';
41
+ /**
42
+ * Tracks sync status including the remote head position and backend identity.
43
+ */
44
+ // TODO support sync backend identity (to detect if sync backend changes)
45
+ export const syncStatusTable = table({
46
+ name: SYNC_STATUS_TABLE,
47
+ columns: {
48
+ head: SqliteDsl.integer({ primaryKey: true }),
49
+ // Null means the sync backend is not yet connected and we haven't yet seen a backend ID
50
+ backendId: SqliteDsl.text({ nullable: true }),
51
+ },
52
+ });
53
+ export const eventlogSystemTables = [eventlogMetaTable, syncStatusTable];
54
+ //# sourceMappingURL=eventlog-tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventlog-tables.js","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/system-tables/eventlog-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,mBAAmB,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;IACrC,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE;QACP,2EAA2E;QAC3E,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;QAC5G,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;QAC5G,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC/D,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;QAChG,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;QAChG,4BAA4B,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,4BAA4B;QAC5B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;KAChG;IACD,OAAO,EAAE;QACP,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;QAChE,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,wBAAwB,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE;KACrG;CACF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAA;AAE1D;;GAEG;AACH,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;IACnC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE;QACP,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7C,wFAAwF;QACxF,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC9C;CACF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAU,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './eventlog-tables.ts';
2
+ export * from './state-tables.ts';
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/system-tables/mod.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./eventlog-tables.js";
2
+ export * from "./state-tables.js";
3
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/system-tables/mod.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA"}