@kudos-protocol/storage-sqlite 0.0.1 → 0.0.4

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/CHANGELOG.md ADDED
@@ -0,0 +1,24 @@
1
+ # @kudos-protocol/storage-sqlite
2
+
3
+ ## 0.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - @kudos-protocol/ports@0.0.4
8
+ - @kudos-protocol/pool-core@0.0.4
9
+
10
+ ## 0.0.3
11
+
12
+ ### Patch Changes
13
+
14
+ - @kudos-protocol/ports@0.0.3
15
+ - @kudos-protocol/pool-core@0.0.3
16
+
17
+ ## 0.0.2
18
+
19
+ ### Patch Changes
20
+
21
+ - ea52340: initial pool server build
22
+ - Updated dependencies [ea52340]
23
+ - @kudos-protocol/pool-core@0.0.2
24
+ - @kudos-protocol/ports@0.0.2
package/package.json CHANGED
@@ -1,9 +1,15 @@
1
1
  {
2
2
  "name": "@kudos-protocol/storage-sqlite",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/LoremLabs/kudos.git",
8
+ "directory": "packages/storage-sqlite"
9
+ },
5
10
  "publishConfig": {
6
- "access": "public"
11
+ "access": "public",
12
+ "provenance": true
7
13
  },
8
14
  "exports": {
9
15
  ".": {
@@ -11,11 +17,18 @@
11
17
  "types": "./dist/index.d.ts"
12
18
  }
13
19
  },
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "test": "vitest run",
23
+ "typecheck": "tsc --noEmit",
24
+ "db:generate": "drizzle-kit generate",
25
+ "db:push": "drizzle-kit push"
26
+ },
14
27
  "dependencies": {
28
+ "@kudos-protocol/pool-core": "workspace:*",
29
+ "@kudos-protocol/ports": "workspace:*",
15
30
  "better-sqlite3": "^11",
16
- "drizzle-orm": "^0.39",
17
- "@kudos-protocol/pool-core": "0.0.1",
18
- "@kudos-protocol/ports": "0.0.1"
31
+ "drizzle-orm": "^0.39"
19
32
  },
20
33
  "devDependencies": {
21
34
  "@types/better-sqlite3": "^7",
@@ -23,12 +36,5 @@
23
36
  "drizzle-kit": "^0.30",
24
37
  "typescript": "^5.8",
25
38
  "vitest": "^2.1"
26
- },
27
- "scripts": {
28
- "build": "tsc",
29
- "test": "vitest run",
30
- "typecheck": "tsc --noEmit",
31
- "db:generate": "drizzle-kit generate",
32
- "db:push": "drizzle-kit push"
33
39
  }
34
- }
40
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Lorem Industries, Inc.
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export { SqliteStorage } from "./sqlite-storage.js";
2
- export type { SqliteStorageOptions } from "./sqlite-storage.js";
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- export { SqliteStorage } from "./sqlite-storage.js";
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/schema.d.ts DELETED
@@ -1,686 +0,0 @@
1
- export declare const events: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
- name: "events";
3
- schema: undefined;
4
- columns: {
5
- poolId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
- name: "pool_id";
7
- tableName: "events";
8
- dataType: "string";
9
- columnType: "SQLiteText";
10
- data: string;
11
- driverParam: string;
12
- notNull: true;
13
- hasDefault: false;
14
- isPrimaryKey: false;
15
- isAutoincrement: false;
16
- hasRuntimeDefault: false;
17
- enumValues: [string, ...string[]];
18
- baseColumn: never;
19
- identity: undefined;
20
- generated: undefined;
21
- }, {}, {
22
- length: number | undefined;
23
- }>;
24
- eventId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
- name: "event_id";
26
- tableName: "events";
27
- dataType: "string";
28
- columnType: "SQLiteText";
29
- data: string;
30
- driverParam: string;
31
- notNull: true;
32
- hasDefault: false;
33
- isPrimaryKey: false;
34
- isAutoincrement: false;
35
- hasRuntimeDefault: false;
36
- enumValues: [string, ...string[]];
37
- baseColumn: never;
38
- identity: undefined;
39
- generated: undefined;
40
- }, {}, {
41
- length: number | undefined;
42
- }>;
43
- recipient: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
- name: "recipient";
45
- tableName: "events";
46
- dataType: "string";
47
- columnType: "SQLiteText";
48
- data: string;
49
- driverParam: string;
50
- notNull: true;
51
- hasDefault: false;
52
- isPrimaryKey: false;
53
- isAutoincrement: false;
54
- hasRuntimeDefault: false;
55
- enumValues: [string, ...string[]];
56
- baseColumn: never;
57
- identity: undefined;
58
- generated: undefined;
59
- }, {}, {
60
- length: number | undefined;
61
- }>;
62
- sender: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
- name: "sender";
64
- tableName: "events";
65
- dataType: "string";
66
- columnType: "SQLiteText";
67
- data: string;
68
- driverParam: string;
69
- notNull: true;
70
- hasDefault: false;
71
- isPrimaryKey: false;
72
- isAutoincrement: false;
73
- hasRuntimeDefault: false;
74
- enumValues: [string, ...string[]];
75
- baseColumn: never;
76
- identity: undefined;
77
- generated: undefined;
78
- }, {}, {
79
- length: number | undefined;
80
- }>;
81
- ts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
- name: "ts";
83
- tableName: "events";
84
- dataType: "string";
85
- columnType: "SQLiteText";
86
- data: string;
87
- driverParam: string;
88
- notNull: true;
89
- hasDefault: false;
90
- isPrimaryKey: false;
91
- isAutoincrement: false;
92
- hasRuntimeDefault: false;
93
- enumValues: [string, ...string[]];
94
- baseColumn: never;
95
- identity: undefined;
96
- generated: undefined;
97
- }, {}, {
98
- length: number | undefined;
99
- }>;
100
- scopeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
- name: "scope_id";
102
- tableName: "events";
103
- dataType: "string";
104
- columnType: "SQLiteText";
105
- data: string;
106
- driverParam: string;
107
- notNull: false;
108
- hasDefault: false;
109
- isPrimaryKey: false;
110
- isAutoincrement: false;
111
- hasRuntimeDefault: false;
112
- enumValues: [string, ...string[]];
113
- baseColumn: never;
114
- identity: undefined;
115
- generated: undefined;
116
- }, {}, {
117
- length: number | undefined;
118
- }>;
119
- kudos: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
- name: "kudos";
121
- tableName: "events";
122
- dataType: "number";
123
- columnType: "SQLiteInteger";
124
- data: number;
125
- driverParam: number;
126
- notNull: true;
127
- hasDefault: true;
128
- isPrimaryKey: false;
129
- isAutoincrement: false;
130
- hasRuntimeDefault: false;
131
- enumValues: undefined;
132
- baseColumn: never;
133
- identity: undefined;
134
- generated: undefined;
135
- }, {}, {}>;
136
- emoji: import("drizzle-orm/sqlite-core").SQLiteColumn<{
137
- name: "emoji";
138
- tableName: "events";
139
- dataType: "string";
140
- columnType: "SQLiteText";
141
- data: string;
142
- driverParam: string;
143
- notNull: false;
144
- hasDefault: false;
145
- isPrimaryKey: false;
146
- isAutoincrement: false;
147
- hasRuntimeDefault: false;
148
- enumValues: [string, ...string[]];
149
- baseColumn: never;
150
- identity: undefined;
151
- generated: undefined;
152
- }, {}, {
153
- length: number | undefined;
154
- }>;
155
- title: import("drizzle-orm/sqlite-core").SQLiteColumn<{
156
- name: "title";
157
- tableName: "events";
158
- dataType: "string";
159
- columnType: "SQLiteText";
160
- data: string;
161
- driverParam: string;
162
- notNull: false;
163
- hasDefault: false;
164
- isPrimaryKey: false;
165
- isAutoincrement: false;
166
- hasRuntimeDefault: false;
167
- enumValues: [string, ...string[]];
168
- baseColumn: never;
169
- identity: undefined;
170
- generated: undefined;
171
- }, {}, {
172
- length: number | undefined;
173
- }>;
174
- visibility: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
- name: "visibility";
176
- tableName: "events";
177
- dataType: "string";
178
- columnType: "SQLiteText";
179
- data: string;
180
- driverParam: string;
181
- notNull: true;
182
- hasDefault: true;
183
- isPrimaryKey: false;
184
- isAutoincrement: false;
185
- hasRuntimeDefault: false;
186
- enumValues: [string, ...string[]];
187
- baseColumn: never;
188
- identity: undefined;
189
- generated: undefined;
190
- }, {}, {
191
- length: number | undefined;
192
- }>;
193
- meta: import("drizzle-orm/sqlite-core").SQLiteColumn<{
194
- name: "meta";
195
- tableName: "events";
196
- dataType: "string";
197
- columnType: "SQLiteText";
198
- data: string;
199
- driverParam: string;
200
- notNull: false;
201
- hasDefault: false;
202
- isPrimaryKey: false;
203
- isAutoincrement: false;
204
- hasRuntimeDefault: false;
205
- enumValues: [string, ...string[]];
206
- baseColumn: never;
207
- identity: undefined;
208
- generated: undefined;
209
- }, {}, {
210
- length: number | undefined;
211
- }>;
212
- insertedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
213
- name: "inserted_at";
214
- tableName: "events";
215
- dataType: "string";
216
- columnType: "SQLiteText";
217
- data: string;
218
- driverParam: string;
219
- notNull: true;
220
- hasDefault: true;
221
- isPrimaryKey: false;
222
- isAutoincrement: false;
223
- hasRuntimeDefault: false;
224
- enumValues: [string, ...string[]];
225
- baseColumn: never;
226
- identity: undefined;
227
- generated: undefined;
228
- }, {}, {
229
- length: number | undefined;
230
- }>;
231
- };
232
- dialect: "sqlite";
233
- }>;
234
- export declare const poolScopeLatest: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
235
- name: "pool_scope_latest";
236
- schema: undefined;
237
- columns: {
238
- poolId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
239
- name: "pool_id";
240
- tableName: "pool_scope_latest";
241
- dataType: "string";
242
- columnType: "SQLiteText";
243
- data: string;
244
- driverParam: string;
245
- notNull: true;
246
- hasDefault: false;
247
- isPrimaryKey: false;
248
- isAutoincrement: false;
249
- hasRuntimeDefault: false;
250
- enumValues: [string, ...string[]];
251
- baseColumn: never;
252
- identity: undefined;
253
- generated: undefined;
254
- }, {}, {
255
- length: number | undefined;
256
- }>;
257
- recipient: import("drizzle-orm/sqlite-core").SQLiteColumn<{
258
- name: "recipient";
259
- tableName: "pool_scope_latest";
260
- dataType: "string";
261
- columnType: "SQLiteText";
262
- data: string;
263
- driverParam: string;
264
- notNull: true;
265
- hasDefault: false;
266
- isPrimaryKey: false;
267
- isAutoincrement: false;
268
- hasRuntimeDefault: false;
269
- enumValues: [string, ...string[]];
270
- baseColumn: never;
271
- identity: undefined;
272
- generated: undefined;
273
- }, {}, {
274
- length: number | undefined;
275
- }>;
276
- scopeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
277
- name: "scope_id";
278
- tableName: "pool_scope_latest";
279
- dataType: "string";
280
- columnType: "SQLiteText";
281
- data: string;
282
- driverParam: string;
283
- notNull: true;
284
- hasDefault: false;
285
- isPrimaryKey: false;
286
- isAutoincrement: false;
287
- hasRuntimeDefault: false;
288
- enumValues: [string, ...string[]];
289
- baseColumn: never;
290
- identity: undefined;
291
- generated: undefined;
292
- }, {}, {
293
- length: number | undefined;
294
- }>;
295
- eventId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
296
- name: "event_id";
297
- tableName: "pool_scope_latest";
298
- dataType: "string";
299
- columnType: "SQLiteText";
300
- data: string;
301
- driverParam: string;
302
- notNull: true;
303
- hasDefault: false;
304
- isPrimaryKey: false;
305
- isAutoincrement: false;
306
- hasRuntimeDefault: false;
307
- enumValues: [string, ...string[]];
308
- baseColumn: never;
309
- identity: undefined;
310
- generated: undefined;
311
- }, {}, {
312
- length: number | undefined;
313
- }>;
314
- kudos: import("drizzle-orm/sqlite-core").SQLiteColumn<{
315
- name: "kudos";
316
- tableName: "pool_scope_latest";
317
- dataType: "number";
318
- columnType: "SQLiteInteger";
319
- data: number;
320
- driverParam: number;
321
- notNull: true;
322
- hasDefault: false;
323
- isPrimaryKey: false;
324
- isAutoincrement: false;
325
- hasRuntimeDefault: false;
326
- enumValues: undefined;
327
- baseColumn: never;
328
- identity: undefined;
329
- generated: undefined;
330
- }, {}, {}>;
331
- ts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
332
- name: "ts";
333
- tableName: "pool_scope_latest";
334
- dataType: "string";
335
- columnType: "SQLiteText";
336
- data: string;
337
- driverParam: string;
338
- notNull: true;
339
- hasDefault: false;
340
- isPrimaryKey: false;
341
- isAutoincrement: false;
342
- hasRuntimeDefault: false;
343
- enumValues: [string, ...string[]];
344
- baseColumn: never;
345
- identity: undefined;
346
- generated: undefined;
347
- }, {}, {
348
- length: number | undefined;
349
- }>;
350
- };
351
- dialect: "sqlite";
352
- }>;
353
- export declare const poolRecipientTotals: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
354
- name: "pool_recipient_totals";
355
- schema: undefined;
356
- columns: {
357
- poolId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
358
- name: "pool_id";
359
- tableName: "pool_recipient_totals";
360
- dataType: "string";
361
- columnType: "SQLiteText";
362
- data: string;
363
- driverParam: string;
364
- notNull: true;
365
- hasDefault: false;
366
- isPrimaryKey: false;
367
- isAutoincrement: false;
368
- hasRuntimeDefault: false;
369
- enumValues: [string, ...string[]];
370
- baseColumn: never;
371
- identity: undefined;
372
- generated: undefined;
373
- }, {}, {
374
- length: number | undefined;
375
- }>;
376
- recipient: import("drizzle-orm/sqlite-core").SQLiteColumn<{
377
- name: "recipient";
378
- tableName: "pool_recipient_totals";
379
- dataType: "string";
380
- columnType: "SQLiteText";
381
- data: string;
382
- driverParam: string;
383
- notNull: true;
384
- hasDefault: false;
385
- isPrimaryKey: false;
386
- isAutoincrement: false;
387
- hasRuntimeDefault: false;
388
- enumValues: [string, ...string[]];
389
- baseColumn: never;
390
- identity: undefined;
391
- generated: undefined;
392
- }, {}, {
393
- length: number | undefined;
394
- }>;
395
- kudos: import("drizzle-orm/sqlite-core").SQLiteColumn<{
396
- name: "kudos";
397
- tableName: "pool_recipient_totals";
398
- dataType: "number";
399
- columnType: "SQLiteInteger";
400
- data: number;
401
- driverParam: number;
402
- notNull: true;
403
- hasDefault: true;
404
- isPrimaryKey: false;
405
- isAutoincrement: false;
406
- hasRuntimeDefault: false;
407
- enumValues: undefined;
408
- baseColumn: never;
409
- identity: undefined;
410
- generated: undefined;
411
- }, {}, {}>;
412
- emojis: import("drizzle-orm/sqlite-core").SQLiteColumn<{
413
- name: "emojis";
414
- tableName: "pool_recipient_totals";
415
- dataType: "string";
416
- columnType: "SQLiteText";
417
- data: string;
418
- driverParam: string;
419
- notNull: true;
420
- hasDefault: true;
421
- isPrimaryKey: false;
422
- isAutoincrement: false;
423
- hasRuntimeDefault: false;
424
- enumValues: [string, ...string[]];
425
- baseColumn: never;
426
- identity: undefined;
427
- generated: undefined;
428
- }, {}, {
429
- length: number | undefined;
430
- }>;
431
- };
432
- dialect: "sqlite";
433
- }>;
434
- export declare const poolTotals: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
435
- name: "pool_totals";
436
- schema: undefined;
437
- columns: {
438
- poolId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
439
- name: "pool_id";
440
- tableName: "pool_totals";
441
- dataType: "string";
442
- columnType: "SQLiteText";
443
- data: string;
444
- driverParam: string;
445
- notNull: true;
446
- hasDefault: false;
447
- isPrimaryKey: true;
448
- isAutoincrement: false;
449
- hasRuntimeDefault: false;
450
- enumValues: [string, ...string[]];
451
- baseColumn: never;
452
- identity: undefined;
453
- generated: undefined;
454
- }, {}, {
455
- length: number | undefined;
456
- }>;
457
- kudos: import("drizzle-orm/sqlite-core").SQLiteColumn<{
458
- name: "kudos";
459
- tableName: "pool_totals";
460
- dataType: "number";
461
- columnType: "SQLiteInteger";
462
- data: number;
463
- driverParam: number;
464
- notNull: true;
465
- hasDefault: true;
466
- isPrimaryKey: false;
467
- isAutoincrement: false;
468
- hasRuntimeDefault: false;
469
- enumValues: undefined;
470
- baseColumn: never;
471
- identity: undefined;
472
- generated: undefined;
473
- }, {}, {}>;
474
- };
475
- dialect: "sqlite";
476
- }>;
477
- export declare const outbox: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
478
- name: "outbox";
479
- schema: undefined;
480
- columns: {
481
- id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
482
- name: "id";
483
- tableName: "outbox";
484
- dataType: "number";
485
- columnType: "SQLiteInteger";
486
- data: number;
487
- driverParam: number;
488
- notNull: true;
489
- hasDefault: true;
490
- isPrimaryKey: true;
491
- isAutoincrement: false;
492
- hasRuntimeDefault: false;
493
- enumValues: undefined;
494
- baseColumn: never;
495
- identity: undefined;
496
- generated: undefined;
497
- }, {}, {}>;
498
- poolId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
499
- name: "pool_id";
500
- tableName: "outbox";
501
- dataType: "string";
502
- columnType: "SQLiteText";
503
- data: string;
504
- driverParam: string;
505
- notNull: true;
506
- hasDefault: false;
507
- isPrimaryKey: false;
508
- isAutoincrement: false;
509
- hasRuntimeDefault: false;
510
- enumValues: [string, ...string[]];
511
- baseColumn: never;
512
- identity: undefined;
513
- generated: undefined;
514
- }, {}, {
515
- length: number | undefined;
516
- }>;
517
- eventId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
518
- name: "event_id";
519
- tableName: "outbox";
520
- dataType: "string";
521
- columnType: "SQLiteText";
522
- data: string;
523
- driverParam: string;
524
- notNull: true;
525
- hasDefault: false;
526
- isPrimaryKey: false;
527
- isAutoincrement: false;
528
- hasRuntimeDefault: false;
529
- enumValues: [string, ...string[]];
530
- baseColumn: never;
531
- identity: undefined;
532
- generated: undefined;
533
- }, {}, {
534
- length: number | undefined;
535
- }>;
536
- payload: import("drizzle-orm/sqlite-core").SQLiteColumn<{
537
- name: "payload";
538
- tableName: "outbox";
539
- dataType: "string";
540
- columnType: "SQLiteText";
541
- data: string;
542
- driverParam: string;
543
- notNull: true;
544
- hasDefault: false;
545
- isPrimaryKey: false;
546
- isAutoincrement: false;
547
- hasRuntimeDefault: false;
548
- enumValues: [string, ...string[]];
549
- baseColumn: never;
550
- identity: undefined;
551
- generated: undefined;
552
- }, {}, {
553
- length: number | undefined;
554
- }>;
555
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
556
- name: "created_at";
557
- tableName: "outbox";
558
- dataType: "string";
559
- columnType: "SQLiteText";
560
- data: string;
561
- driverParam: string;
562
- notNull: true;
563
- hasDefault: true;
564
- isPrimaryKey: false;
565
- isAutoincrement: false;
566
- hasRuntimeDefault: false;
567
- enumValues: [string, ...string[]];
568
- baseColumn: never;
569
- identity: undefined;
570
- generated: undefined;
571
- }, {}, {
572
- length: number | undefined;
573
- }>;
574
- delivered: import("drizzle-orm/sqlite-core").SQLiteColumn<{
575
- name: "delivered";
576
- tableName: "outbox";
577
- dataType: "number";
578
- columnType: "SQLiteInteger";
579
- data: number;
580
- driverParam: number;
581
- notNull: true;
582
- hasDefault: true;
583
- isPrimaryKey: false;
584
- isAutoincrement: false;
585
- hasRuntimeDefault: false;
586
- enumValues: undefined;
587
- baseColumn: never;
588
- identity: undefined;
589
- generated: undefined;
590
- }, {}, {}>;
591
- deliveredAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
592
- name: "delivered_at";
593
- tableName: "outbox";
594
- dataType: "string";
595
- columnType: "SQLiteText";
596
- data: string;
597
- driverParam: string;
598
- notNull: false;
599
- hasDefault: false;
600
- isPrimaryKey: false;
601
- isAutoincrement: false;
602
- hasRuntimeDefault: false;
603
- enumValues: [string, ...string[]];
604
- baseColumn: never;
605
- identity: undefined;
606
- generated: undefined;
607
- }, {}, {
608
- length: number | undefined;
609
- }>;
610
- attempts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
611
- name: "attempts";
612
- tableName: "outbox";
613
- dataType: "number";
614
- columnType: "SQLiteInteger";
615
- data: number;
616
- driverParam: number;
617
- notNull: true;
618
- hasDefault: true;
619
- isPrimaryKey: false;
620
- isAutoincrement: false;
621
- hasRuntimeDefault: false;
622
- enumValues: undefined;
623
- baseColumn: never;
624
- identity: undefined;
625
- generated: undefined;
626
- }, {}, {}>;
627
- lastError: import("drizzle-orm/sqlite-core").SQLiteColumn<{
628
- name: "last_error";
629
- tableName: "outbox";
630
- dataType: "string";
631
- columnType: "SQLiteText";
632
- data: string;
633
- driverParam: string;
634
- notNull: false;
635
- hasDefault: false;
636
- isPrimaryKey: false;
637
- isAutoincrement: false;
638
- hasRuntimeDefault: false;
639
- enumValues: [string, ...string[]];
640
- baseColumn: never;
641
- identity: undefined;
642
- generated: undefined;
643
- }, {}, {
644
- length: number | undefined;
645
- }>;
646
- leasedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
647
- name: "leased_at";
648
- tableName: "outbox";
649
- dataType: "string";
650
- columnType: "SQLiteText";
651
- data: string;
652
- driverParam: string;
653
- notNull: false;
654
- hasDefault: false;
655
- isPrimaryKey: false;
656
- isAutoincrement: false;
657
- hasRuntimeDefault: false;
658
- enumValues: [string, ...string[]];
659
- baseColumn: never;
660
- identity: undefined;
661
- generated: undefined;
662
- }, {}, {
663
- length: number | undefined;
664
- }>;
665
- leaseId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
666
- name: "lease_id";
667
- tableName: "outbox";
668
- dataType: "string";
669
- columnType: "SQLiteText";
670
- data: string;
671
- driverParam: string;
672
- notNull: false;
673
- hasDefault: false;
674
- isPrimaryKey: false;
675
- isAutoincrement: false;
676
- hasRuntimeDefault: false;
677
- enumValues: [string, ...string[]];
678
- baseColumn: never;
679
- identity: undefined;
680
- generated: undefined;
681
- }, {}, {
682
- length: number | undefined;
683
- }>;
684
- };
685
- dialect: "sqlite";
686
- }>;
package/dist/schema.js DELETED
@@ -1,62 +0,0 @@
1
- import { sqliteTable, text, integer, index, primaryKey } from "drizzle-orm/sqlite-core";
2
- import { sql } from "drizzle-orm";
3
- export const events = sqliteTable("events", {
4
- poolId: text("pool_id").notNull(),
5
- eventId: text("event_id").notNull(),
6
- recipient: text("recipient").notNull(),
7
- sender: text("sender").notNull(),
8
- ts: text("ts").notNull(),
9
- scopeId: text("scope_id"),
10
- kudos: integer("kudos").notNull().default(1),
11
- emoji: text("emoji"),
12
- title: text("title"),
13
- visibility: text("visibility").notNull().default("PRIVATE"),
14
- meta: text("meta"),
15
- insertedAt: text("inserted_at")
16
- .notNull()
17
- .default(sql `(datetime('now'))`),
18
- }, (table) => [
19
- primaryKey({ columns: [table.poolId, table.eventId] }),
20
- index("idx_events_pool_ts_id").on(table.poolId, table.ts, table.eventId),
21
- ]);
22
- export const poolScopeLatest = sqliteTable("pool_scope_latest", {
23
- poolId: text("pool_id").notNull(),
24
- recipient: text("recipient").notNull(),
25
- scopeId: text("scope_id").notNull(),
26
- eventId: text("event_id").notNull(),
27
- kudos: integer("kudos").notNull(),
28
- ts: text("ts").notNull(),
29
- }, (table) => [
30
- primaryKey({ columns: [table.poolId, table.recipient, table.scopeId] }),
31
- ]);
32
- export const poolRecipientTotals = sqliteTable("pool_recipient_totals", {
33
- poolId: text("pool_id").notNull(),
34
- recipient: text("recipient").notNull(),
35
- kudos: integer("kudos").notNull().default(0),
36
- emojis: text("emojis").notNull().default("[]"),
37
- }, (table) => [
38
- primaryKey({ columns: [table.poolId, table.recipient] }),
39
- index("idx_recipient_totals_by_kudos").on(table.poolId, table.kudos),
40
- ]);
41
- export const poolTotals = sqliteTable("pool_totals", {
42
- poolId: text("pool_id").primaryKey(),
43
- kudos: integer("kudos").notNull().default(0),
44
- });
45
- export const outbox = sqliteTable("outbox", {
46
- id: integer("id").primaryKey({ autoIncrement: true }),
47
- poolId: text("pool_id").notNull(),
48
- eventId: text("event_id").notNull(),
49
- payload: text("payload").notNull(),
50
- createdAt: text("created_at")
51
- .notNull()
52
- .default(sql `(datetime('now'))`),
53
- delivered: integer("delivered").notNull().default(0),
54
- deliveredAt: text("delivered_at"),
55
- attempts: integer("attempts").notNull().default(0),
56
- lastError: text("last_error"),
57
- leasedAt: text("leased_at"),
58
- leaseId: text("lease_id"),
59
- }, (table) => [
60
- index("idx_outbox_pending").on(table.delivered, table.createdAt),
61
- ]);
62
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type { Event } from "@kudos-protocol/pool-core";
2
- import type { StoragePort, AppendResult, ReadEventsOptions, ReadEventsResult, ReadSummaryResult, OutboxPort, OutboxRow } from "@kudos-protocol/ports";
3
- export interface SqliteStorageOptions {
4
- path: string;
5
- migrationsPath?: string;
6
- outbox?: boolean;
7
- }
8
- export declare class SqliteStorage implements StoragePort, OutboxPort {
9
- private sqlite;
10
- private db;
11
- private outboxEnabled;
12
- constructor(options: SqliteStorageOptions);
13
- close(): void;
14
- ping(): Promise<void>;
15
- appendEvents(poolId: string, events: Event[]): Promise<AppendResult>;
16
- private updateProjections;
17
- readEvents(options: ReadEventsOptions): Promise<ReadEventsResult>;
18
- readSummary(poolId: string, limit: number): Promise<ReadSummaryResult>;
19
- leasePending(limit: number, maxAttempts: number, leaseId: string, leaseTtlSeconds: number): Promise<OutboxRow[]>;
20
- markDelivered(ids: number[], leaseId: string): Promise<void>;
21
- markFailed(ids: number[], error: string, leaseId: string): Promise<void>;
22
- }
@@ -1,312 +0,0 @@
1
- import Database from "better-sqlite3";
2
- import { drizzle } from "drizzle-orm/better-sqlite3";
3
- import { migrate } from "drizzle-orm/better-sqlite3/migrator";
4
- import { eq, and, desc, ne, gte, lt, or, sql, inArray } from "drizzle-orm";
5
- import { fileURLToPath } from "node:url";
6
- import path from "node:path";
7
- import * as schema from "./schema.js";
8
- export class SqliteStorage {
9
- sqlite;
10
- db;
11
- outboxEnabled;
12
- constructor(options) {
13
- this.sqlite = new Database(options.path);
14
- this.sqlite.pragma("journal_mode = WAL");
15
- this.db = drizzle(this.sqlite, { schema });
16
- this.outboxEnabled = options.outbox ?? false;
17
- const migrationsFolder = options.migrationsPath ??
18
- path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "drizzle");
19
- migrate(this.db, { migrationsFolder });
20
- }
21
- close() {
22
- this.sqlite.close();
23
- }
24
- async ping() {
25
- this.db.select({ poolId: schema.poolTotals.poolId }).from(schema.poolTotals).limit(1).all();
26
- }
27
- async appendEvents(poolId, events) {
28
- return this.db.transaction((tx) => {
29
- let inserted = 0;
30
- let skipped = 0;
31
- const accepted = [];
32
- for (const event of events) {
33
- const result = tx
34
- .insert(schema.events)
35
- .values({
36
- poolId,
37
- eventId: event.id,
38
- recipient: event.recipient,
39
- sender: event.sender,
40
- ts: event.ts,
41
- scopeId: event.scopeId,
42
- kudos: event.kudos,
43
- emoji: event.emoji,
44
- title: event.title,
45
- visibility: event.visibility,
46
- meta: event.meta,
47
- })
48
- .onConflictDoNothing({
49
- target: [schema.events.poolId, schema.events.eventId],
50
- })
51
- .run();
52
- if (result.changes === 0) {
53
- skipped++;
54
- accepted.push(event);
55
- }
56
- else {
57
- inserted++;
58
- accepted.push(event);
59
- this.updateProjections(tx, poolId, event);
60
- if (this.outboxEnabled) {
61
- tx.insert(schema.outbox)
62
- .values({
63
- poolId,
64
- eventId: event.id,
65
- payload: JSON.stringify(event),
66
- })
67
- .run();
68
- }
69
- }
70
- }
71
- return { inserted, skipped, events: accepted };
72
- });
73
- }
74
- updateProjections(tx, poolId, event) {
75
- let delta;
76
- if (event.scopeId === null) {
77
- // Branch A: no scopeId — always additive
78
- delta = event.kudos;
79
- }
80
- else {
81
- // Branch B: scopeId present — latest-wins
82
- const current = tx
83
- .select()
84
- .from(schema.poolScopeLatest)
85
- .where(and(eq(schema.poolScopeLatest.poolId, poolId), eq(schema.poolScopeLatest.recipient, event.recipient), eq(schema.poolScopeLatest.scopeId, event.scopeId)))
86
- .get();
87
- if (!current) {
88
- // B1: no existing row — insert, delta = event.kudos
89
- delta = event.kudos;
90
- tx.insert(schema.poolScopeLatest)
91
- .values({
92
- poolId,
93
- recipient: event.recipient,
94
- scopeId: event.scopeId,
95
- eventId: event.id,
96
- kudos: event.kudos,
97
- ts: event.ts,
98
- })
99
- .run();
100
- }
101
- else {
102
- // Deterministic tie-break: newer ts wins, or lexicographic eventId
103
- const isNewer = event.ts > current.ts ||
104
- (event.ts === current.ts && event.id > current.eventId);
105
- if (isNewer) {
106
- // B2: new event is newer — update scope_latest, delta = new - old
107
- delta = event.kudos - current.kudos;
108
- tx.update(schema.poolScopeLatest)
109
- .set({
110
- eventId: event.id,
111
- kudos: event.kudos,
112
- ts: event.ts,
113
- })
114
- .where(and(eq(schema.poolScopeLatest.poolId, poolId), eq(schema.poolScopeLatest.recipient, event.recipient), eq(schema.poolScopeLatest.scopeId, event.scopeId)))
115
- .run();
116
- }
117
- else {
118
- // B3: old event still newest — no change
119
- delta = 0;
120
- }
121
- }
122
- }
123
- // Apply delta to projection tables
124
- if (delta !== 0) {
125
- // Upsert poolRecipientTotals
126
- tx.insert(schema.poolRecipientTotals)
127
- .values({
128
- poolId,
129
- recipient: event.recipient,
130
- kudos: delta,
131
- emojis: "[]",
132
- })
133
- .onConflictDoUpdate({
134
- target: [
135
- schema.poolRecipientTotals.poolId,
136
- schema.poolRecipientTotals.recipient,
137
- ],
138
- set: {
139
- kudos: sql `${schema.poolRecipientTotals.kudos} + ${delta}`,
140
- },
141
- })
142
- .run();
143
- // Upsert poolTotals
144
- tx.insert(schema.poolTotals)
145
- .values({
146
- poolId,
147
- kudos: delta,
148
- })
149
- .onConflictDoUpdate({
150
- target: schema.poolTotals.poolId,
151
- set: {
152
- kudos: sql `${schema.poolTotals.kudos} + ${delta}`,
153
- },
154
- })
155
- .run();
156
- }
157
- // Update emojis if present
158
- if (event.emoji !== null) {
159
- // Ensure the recipient totals row exists
160
- tx.insert(schema.poolRecipientTotals)
161
- .values({
162
- poolId,
163
- recipient: event.recipient,
164
- kudos: 0,
165
- emojis: "[]",
166
- })
167
- .onConflictDoNothing({
168
- target: [
169
- schema.poolRecipientTotals.poolId,
170
- schema.poolRecipientTotals.recipient,
171
- ],
172
- })
173
- .run();
174
- const row = tx
175
- .select({ emojis: schema.poolRecipientTotals.emojis })
176
- .from(schema.poolRecipientTotals)
177
- .where(and(eq(schema.poolRecipientTotals.poolId, poolId), eq(schema.poolRecipientTotals.recipient, event.recipient)))
178
- .get();
179
- const emojis = JSON.parse(row?.emojis ?? "[]");
180
- if (!emojis.includes(event.emoji)) {
181
- emojis.push(event.emoji);
182
- tx.update(schema.poolRecipientTotals)
183
- .set({ emojis: JSON.stringify(emojis) })
184
- .where(and(eq(schema.poolRecipientTotals.poolId, poolId), eq(schema.poolRecipientTotals.recipient, event.recipient)))
185
- .run();
186
- }
187
- }
188
- }
189
- async readEvents(options) {
190
- const conditions = [eq(schema.events.poolId, options.poolId)];
191
- if (!options.includeTombstones) {
192
- conditions.push(ne(schema.events.kudos, 0));
193
- }
194
- if (options.since) {
195
- conditions.push(gte(schema.events.ts, options.since));
196
- }
197
- if (options.until) {
198
- conditions.push(lt(schema.events.ts, options.until));
199
- }
200
- if (options.cursor) {
201
- conditions.push(or(lt(schema.events.ts, options.cursor.ts), and(eq(schema.events.ts, options.cursor.ts), lt(schema.events.eventId, options.cursor.id))));
202
- }
203
- const rows = this.db
204
- .select()
205
- .from(schema.events)
206
- .where(and(...conditions))
207
- .orderBy(desc(schema.events.ts), desc(schema.events.eventId))
208
- .limit(options.limit + 1)
209
- .all();
210
- const hasMore = rows.length > options.limit;
211
- const page = hasMore ? rows.slice(0, options.limit) : rows;
212
- const mappedEvents = page.map(rowToEvent);
213
- let nextCursor = null;
214
- if (hasMore && mappedEvents.length > 0) {
215
- const last = mappedEvents[mappedEvents.length - 1];
216
- nextCursor = { ts: last.ts, id: last.id };
217
- }
218
- return { events: mappedEvents, nextCursor, hasMore };
219
- }
220
- async readSummary(poolId, limit) {
221
- const totalsRow = this.db
222
- .select({ kudos: schema.poolTotals.kudos })
223
- .from(schema.poolTotals)
224
- .where(eq(schema.poolTotals.poolId, poolId))
225
- .get();
226
- const totalKudos = totalsRow?.kudos ?? 0;
227
- const rows = this.db
228
- .select()
229
- .from(schema.poolRecipientTotals)
230
- .where(eq(schema.poolRecipientTotals.poolId, poolId))
231
- .orderBy(desc(schema.poolRecipientTotals.kudos))
232
- .limit(limit)
233
- .all();
234
- const summary = rows.map((row) => ({
235
- recipient: row.recipient,
236
- kudos: row.kudos,
237
- emojis: JSON.parse(row.emojis),
238
- percent: 0,
239
- }));
240
- return { totalKudos, summary };
241
- }
242
- // ─── OutboxPort Implementation ──────────────────────────────────────────
243
- async leasePending(limit, maxAttempts, leaseId, leaseTtlSeconds) {
244
- return this.db.transaction((tx) => {
245
- const rows = tx
246
- .select({
247
- id: schema.outbox.id,
248
- poolId: schema.outbox.poolId,
249
- eventId: schema.outbox.eventId,
250
- payload: schema.outbox.payload,
251
- createdAt: schema.outbox.createdAt,
252
- attempts: schema.outbox.attempts,
253
- lastError: schema.outbox.lastError,
254
- })
255
- .from(schema.outbox)
256
- .where(and(eq(schema.outbox.delivered, 0), lt(schema.outbox.attempts, maxAttempts), or(sql `${schema.outbox.leasedAt} IS NULL`, sql `${schema.outbox.leasedAt} <= datetime('now', '-${sql.raw(String(leaseTtlSeconds))} seconds')`)))
257
- .orderBy(schema.outbox.createdAt)
258
- .limit(limit)
259
- .all();
260
- if (rows.length === 0)
261
- return [];
262
- const ids = rows.map((r) => r.id);
263
- tx.update(schema.outbox)
264
- .set({
265
- leaseId,
266
- leasedAt: sql `datetime('now')`,
267
- })
268
- .where(inArray(schema.outbox.id, ids))
269
- .run();
270
- return rows;
271
- });
272
- }
273
- async markDelivered(ids, leaseId) {
274
- if (ids.length === 0)
275
- return;
276
- this.db
277
- .update(schema.outbox)
278
- .set({
279
- delivered: 1,
280
- deliveredAt: sql `datetime('now')`,
281
- })
282
- .where(and(inArray(schema.outbox.id, ids), eq(schema.outbox.leaseId, leaseId)))
283
- .run();
284
- }
285
- async markFailed(ids, error, leaseId) {
286
- if (ids.length === 0)
287
- return;
288
- this.db
289
- .update(schema.outbox)
290
- .set({
291
- attempts: sql `${schema.outbox.attempts} + 1`,
292
- lastError: error,
293
- })
294
- .where(and(inArray(schema.outbox.id, ids), eq(schema.outbox.leaseId, leaseId)))
295
- .run();
296
- }
297
- }
298
- function rowToEvent(row) {
299
- return {
300
- id: row.eventId,
301
- recipient: row.recipient,
302
- sender: row.sender,
303
- ts: row.ts,
304
- scopeId: row.scopeId ?? null,
305
- kudos: row.kudos,
306
- emoji: row.emoji ?? null,
307
- title: row.title ?? null,
308
- visibility: row.visibility,
309
- meta: row.meta ?? null,
310
- };
311
- }
312
- //# sourceMappingURL=sqlite-storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-storage.js","sourceRoot":"","sources":["../src/sqlite-storage.ts"],"names":[],"mappings":"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"}