@livestore/common 0.0.0-snapshot-2b8a9de3ec1a701aca891ebc2c98eb328274ae9e → 0.0.0-snapshot-2c861249e50661661613204300b1fc0d902c2e46

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 (287) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +83 -221
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/__tests__/fixture.js +33 -11
  5. package/dist/__tests__/fixture.js.map +1 -1
  6. package/dist/adapter-types.d.ts +36 -22
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +20 -8
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/debug-info.d.ts.map +1 -1
  11. package/dist/debug-info.js +1 -0
  12. package/dist/debug-info.js.map +1 -1
  13. package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
  14. package/dist/devtools/devtools-messages-common.d.ts +13 -6
  15. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  16. package/dist/devtools/devtools-messages-common.js +6 -0
  17. package/dist/devtools/devtools-messages-common.js.map +1 -1
  18. package/dist/devtools/devtools-messages-leader.d.ts +46 -46
  19. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  20. package/dist/devtools/devtools-messages-leader.js +12 -13
  21. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  22. package/dist/index.d.ts +2 -5
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -5
  25. package/dist/index.js.map +1 -1
  26. package/dist/leader-thread/LeaderSyncProcessor.d.ts +34 -12
  27. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  28. package/dist/leader-thread/LeaderSyncProcessor.js +284 -226
  29. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  30. package/dist/leader-thread/apply-event.d.ts +16 -0
  31. package/dist/leader-thread/apply-event.d.ts.map +1 -0
  32. package/dist/leader-thread/apply-event.js +122 -0
  33. package/dist/leader-thread/apply-event.js.map +1 -0
  34. package/dist/leader-thread/eventlog.d.ts +27 -0
  35. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  36. package/dist/leader-thread/eventlog.js +123 -0
  37. package/dist/leader-thread/eventlog.js.map +1 -0
  38. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  39. package/dist/leader-thread/leader-worker-devtools.js +22 -23
  40. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  41. package/dist/leader-thread/make-leader-thread-layer.d.ts +16 -4
  42. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  43. package/dist/leader-thread/make-leader-thread-layer.js +36 -41
  44. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  45. package/dist/leader-thread/mod.d.ts +1 -1
  46. package/dist/leader-thread/mod.d.ts.map +1 -1
  47. package/dist/leader-thread/mod.js +1 -1
  48. package/dist/leader-thread/mod.js.map +1 -1
  49. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  50. package/dist/leader-thread/recreate-db.js +7 -7
  51. package/dist/leader-thread/recreate-db.js.map +1 -1
  52. package/dist/leader-thread/types.d.ts +40 -25
  53. package/dist/leader-thread/types.d.ts.map +1 -1
  54. package/dist/leader-thread/types.js.map +1 -1
  55. package/dist/materializer-helper.d.ts +23 -0
  56. package/dist/materializer-helper.d.ts.map +1 -0
  57. package/dist/materializer-helper.js +70 -0
  58. package/dist/materializer-helper.js.map +1 -0
  59. package/dist/query-builder/api.d.ts +55 -50
  60. package/dist/query-builder/api.d.ts.map +1 -1
  61. package/dist/query-builder/api.js +3 -5
  62. package/dist/query-builder/api.js.map +1 -1
  63. package/dist/query-builder/astToSql.d.ts.map +1 -1
  64. package/dist/query-builder/astToSql.js +59 -37
  65. package/dist/query-builder/astToSql.js.map +1 -1
  66. package/dist/query-builder/impl.d.ts +2 -3
  67. package/dist/query-builder/impl.d.ts.map +1 -1
  68. package/dist/query-builder/impl.js +47 -43
  69. package/dist/query-builder/impl.js.map +1 -1
  70. package/dist/query-builder/impl.test.d.ts +86 -1
  71. package/dist/query-builder/impl.test.d.ts.map +1 -1
  72. package/dist/query-builder/impl.test.js +223 -36
  73. package/dist/query-builder/impl.test.js.map +1 -1
  74. package/dist/rehydrate-from-eventlog.d.ts +15 -0
  75. package/dist/rehydrate-from-eventlog.d.ts.map +1 -0
  76. package/dist/{rehydrate-from-mutationlog.js → rehydrate-from-eventlog.js} +27 -28
  77. package/dist/rehydrate-from-eventlog.js.map +1 -0
  78. package/dist/schema/EventDef.d.ts +136 -0
  79. package/dist/schema/EventDef.d.ts.map +1 -0
  80. package/dist/schema/EventDef.js +58 -0
  81. package/dist/schema/EventDef.js.map +1 -0
  82. package/dist/schema/EventId.d.ts +10 -1
  83. package/dist/schema/EventId.d.ts.map +1 -1
  84. package/dist/schema/EventId.js +24 -3
  85. package/dist/schema/EventId.js.map +1 -1
  86. package/dist/schema/LiveStoreEvent.d.ts +255 -0
  87. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  88. package/dist/schema/LiveStoreEvent.js +118 -0
  89. package/dist/schema/LiveStoreEvent.js.map +1 -0
  90. package/dist/schema/client-document-def.d.ts +223 -0
  91. package/dist/schema/client-document-def.d.ts.map +1 -0
  92. package/dist/schema/client-document-def.js +164 -0
  93. package/dist/schema/client-document-def.js.map +1 -0
  94. package/dist/schema/client-document-def.test.d.ts +2 -0
  95. package/dist/schema/client-document-def.test.d.ts.map +1 -0
  96. package/dist/schema/client-document-def.test.js +161 -0
  97. package/dist/schema/client-document-def.test.js.map +1 -0
  98. package/dist/schema/db-schema/dsl/mod.d.ts.map +1 -1
  99. package/dist/schema/events.d.ts +2 -0
  100. package/dist/schema/events.d.ts.map +1 -0
  101. package/dist/schema/events.js +2 -0
  102. package/dist/schema/events.js.map +1 -0
  103. package/dist/schema/mod.d.ts +4 -3
  104. package/dist/schema/mod.d.ts.map +1 -1
  105. package/dist/schema/mod.js +4 -3
  106. package/dist/schema/mod.js.map +1 -1
  107. package/dist/schema/schema.d.ts +26 -22
  108. package/dist/schema/schema.d.ts.map +1 -1
  109. package/dist/schema/schema.js +45 -43
  110. package/dist/schema/schema.js.map +1 -1
  111. package/dist/schema/sqlite-state.d.ts +12 -0
  112. package/dist/schema/sqlite-state.d.ts.map +1 -0
  113. package/dist/schema/sqlite-state.js +36 -0
  114. package/dist/schema/sqlite-state.js.map +1 -0
  115. package/dist/schema/system-tables.d.ts +121 -85
  116. package/dist/schema/system-tables.d.ts.map +1 -1
  117. package/dist/schema/system-tables.js +68 -43
  118. package/dist/schema/system-tables.js.map +1 -1
  119. package/dist/schema/table-def.d.ts +26 -96
  120. package/dist/schema/table-def.d.ts.map +1 -1
  121. package/dist/schema/table-def.js +14 -64
  122. package/dist/schema/table-def.js.map +1 -1
  123. package/dist/schema/view.d.ts +3 -0
  124. package/dist/schema/view.d.ts.map +1 -0
  125. package/dist/schema/view.js +3 -0
  126. package/dist/schema/view.js.map +1 -0
  127. package/dist/schema-management/common.d.ts +4 -4
  128. package/dist/schema-management/common.d.ts.map +1 -1
  129. package/dist/schema-management/migrations.d.ts.map +1 -1
  130. package/dist/schema-management/migrations.js +6 -6
  131. package/dist/schema-management/migrations.js.map +1 -1
  132. package/dist/schema-management/validate-mutation-defs.d.ts +3 -3
  133. package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
  134. package/dist/schema-management/validate-mutation-defs.js +17 -17
  135. package/dist/schema-management/validate-mutation-defs.js.map +1 -1
  136. package/dist/sync/ClientSessionSyncProcessor.d.ts +16 -8
  137. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  138. package/dist/sync/ClientSessionSyncProcessor.js +50 -43
  139. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  140. package/dist/sync/next/facts.d.ts +19 -19
  141. package/dist/sync/next/facts.d.ts.map +1 -1
  142. package/dist/sync/next/facts.js +2 -2
  143. package/dist/sync/next/facts.js.map +1 -1
  144. package/dist/sync/next/history-dag-common.d.ts +3 -3
  145. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  146. package/dist/sync/next/history-dag-common.js +1 -1
  147. package/dist/sync/next/history-dag-common.js.map +1 -1
  148. package/dist/sync/next/history-dag.js +1 -1
  149. package/dist/sync/next/history-dag.js.map +1 -1
  150. package/dist/sync/next/rebase-events.d.ts +7 -7
  151. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  152. package/dist/sync/next/rebase-events.js +5 -5
  153. package/dist/sync/next/rebase-events.js.map +1 -1
  154. package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
  155. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  156. package/dist/sync/next/test/compact-events.test.js +71 -71
  157. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  158. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +25 -25
  159. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  160. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +60 -25
  161. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  162. package/dist/sync/next/test/mod.d.ts +1 -1
  163. package/dist/sync/next/test/mod.d.ts.map +1 -1
  164. package/dist/sync/next/test/mod.js +1 -1
  165. package/dist/sync/next/test/mod.js.map +1 -1
  166. package/dist/sync/sync.d.ts +8 -7
  167. package/dist/sync/sync.d.ts.map +1 -1
  168. package/dist/sync/sync.js.map +1 -1
  169. package/dist/sync/syncstate.d.ts +69 -93
  170. package/dist/sync/syncstate.d.ts.map +1 -1
  171. package/dist/sync/syncstate.js +143 -146
  172. package/dist/sync/syncstate.js.map +1 -1
  173. package/dist/sync/syncstate.test.js +208 -289
  174. package/dist/sync/syncstate.test.js.map +1 -1
  175. package/dist/sync/validate-push-payload.d.ts +2 -2
  176. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  177. package/dist/sync/validate-push-payload.js.map +1 -1
  178. package/dist/version.d.ts +1 -1
  179. package/dist/version.js +1 -1
  180. package/package.json +2 -2
  181. package/src/__tests__/fixture.ts +36 -15
  182. package/src/adapter-types.ts +34 -23
  183. package/src/debug-info.ts +1 -0
  184. package/src/devtools/devtools-messages-common.ts +9 -0
  185. package/src/devtools/devtools-messages-leader.ts +14 -15
  186. package/src/index.ts +2 -5
  187. package/src/leader-thread/LeaderSyncProcessor.ts +485 -389
  188. package/src/leader-thread/apply-event.ts +197 -0
  189. package/src/leader-thread/eventlog.ts +199 -0
  190. package/src/leader-thread/leader-worker-devtools.ts +23 -25
  191. package/src/leader-thread/make-leader-thread-layer.ts +68 -61
  192. package/src/leader-thread/mod.ts +1 -1
  193. package/src/leader-thread/recreate-db.ts +7 -8
  194. package/src/leader-thread/types.ts +39 -29
  195. package/src/materializer-helper.ts +110 -0
  196. package/src/query-builder/api.ts +76 -102
  197. package/src/query-builder/astToSql.ts +68 -39
  198. package/src/query-builder/impl.test.ts +239 -42
  199. package/src/query-builder/impl.ts +66 -54
  200. package/src/{rehydrate-from-mutationlog.ts → rehydrate-from-eventlog.ts} +37 -40
  201. package/src/schema/EventDef.ts +216 -0
  202. package/src/schema/EventId.ts +30 -4
  203. package/src/schema/LiveStoreEvent.ts +239 -0
  204. package/src/schema/client-document-def.test.ts +188 -0
  205. package/src/schema/client-document-def.ts +436 -0
  206. package/src/schema/db-schema/dsl/mod.ts +0 -1
  207. package/src/schema/events.ts +1 -0
  208. package/src/schema/mod.ts +4 -3
  209. package/src/schema/schema.ts +78 -68
  210. package/src/schema/sqlite-state.ts +62 -0
  211. package/src/schema/system-tables.ts +54 -46
  212. package/src/schema/table-def.ts +51 -209
  213. package/src/schema/view.ts +2 -0
  214. package/src/schema-management/common.ts +4 -4
  215. package/src/schema-management/migrations.ts +8 -9
  216. package/src/schema-management/validate-mutation-defs.ts +22 -24
  217. package/src/sync/ClientSessionSyncProcessor.ts +66 -53
  218. package/src/sync/next/facts.ts +31 -32
  219. package/src/sync/next/history-dag-common.ts +4 -4
  220. package/src/sync/next/history-dag.ts +1 -1
  221. package/src/sync/next/rebase-events.ts +13 -13
  222. package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
  223. package/src/sync/next/test/compact-events.test.ts +73 -73
  224. package/src/sync/next/test/event-fixtures.ts +219 -0
  225. package/src/sync/next/test/mod.ts +1 -1
  226. package/src/sync/sync.ts +9 -12
  227. package/src/sync/syncstate.test.ts +236 -323
  228. package/src/sync/syncstate.ts +218 -203
  229. package/src/sync/validate-push-payload.ts +2 -2
  230. package/src/version.ts +1 -1
  231. package/tsconfig.json +1 -0
  232. package/dist/derived-mutations.d.ts +0 -109
  233. package/dist/derived-mutations.d.ts.map +0 -1
  234. package/dist/derived-mutations.js +0 -54
  235. package/dist/derived-mutations.js.map +0 -1
  236. package/dist/derived-mutations.test.d.ts +0 -2
  237. package/dist/derived-mutations.test.d.ts.map +0 -1
  238. package/dist/derived-mutations.test.js +0 -93
  239. package/dist/derived-mutations.test.js.map +0 -1
  240. package/dist/init-singleton-tables.d.ts +0 -4
  241. package/dist/init-singleton-tables.d.ts.map +0 -1
  242. package/dist/init-singleton-tables.js +0 -16
  243. package/dist/init-singleton-tables.js.map +0 -1
  244. package/dist/leader-thread/apply-mutation.d.ts +0 -11
  245. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  246. package/dist/leader-thread/apply-mutation.js +0 -115
  247. package/dist/leader-thread/apply-mutation.js.map +0 -1
  248. package/dist/leader-thread/mutationlog.d.ts +0 -11
  249. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  250. package/dist/leader-thread/mutationlog.js +0 -31
  251. package/dist/leader-thread/mutationlog.js.map +0 -1
  252. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  253. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  254. package/dist/leader-thread/pull-queue-set.js +0 -48
  255. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  256. package/dist/mutation.d.ts +0 -20
  257. package/dist/mutation.d.ts.map +0 -1
  258. package/dist/mutation.js +0 -68
  259. package/dist/mutation.js.map +0 -1
  260. package/dist/query-info.d.ts +0 -41
  261. package/dist/query-info.d.ts.map +0 -1
  262. package/dist/query-info.js +0 -7
  263. package/dist/query-info.js.map +0 -1
  264. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  265. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  266. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  267. package/dist/schema/MutationEvent.d.ts +0 -202
  268. package/dist/schema/MutationEvent.d.ts.map +0 -1
  269. package/dist/schema/MutationEvent.js +0 -105
  270. package/dist/schema/MutationEvent.js.map +0 -1
  271. package/dist/schema/mutations.d.ts +0 -115
  272. package/dist/schema/mutations.d.ts.map +0 -1
  273. package/dist/schema/mutations.js +0 -42
  274. package/dist/schema/mutations.js.map +0 -1
  275. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  276. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  277. package/src/derived-mutations.test.ts +0 -101
  278. package/src/derived-mutations.ts +0 -170
  279. package/src/init-singleton-tables.ts +0 -24
  280. package/src/leader-thread/apply-mutation.ts +0 -187
  281. package/src/leader-thread/mutationlog.ts +0 -49
  282. package/src/leader-thread/pull-queue-set.ts +0 -67
  283. package/src/mutation.ts +0 -108
  284. package/src/query-info.ts +0 -83
  285. package/src/schema/MutationEvent.ts +0 -224
  286. package/src/schema/mutations.ts +0 -193
  287. package/src/sync/next/test/mutation-fixtures.ts +0 -228
package/tsconfig.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "extends": "../../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
+ "lib": ["ES2023"], // Needed for `Array.toSorted`
4
5
  "outDir": "./dist",
5
6
  "rootDir": "./src",
6
7
  "resolveJsonModule": true,
@@ -1,109 +0,0 @@
1
- import type { GetValForKey } from '@livestore/utils';
2
- import type { SqliteDsl } from './schema/db-schema/mod.js';
3
- import type * as MutationEvent from './schema/MutationEvent.js';
4
- import type * as DbSchema from './schema/table-def.js';
5
- export declare const makeDerivedMutationDefsForTable: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
6
- deriveMutations: {
7
- enabled: true;
8
- };
9
- }>>(table: TTableDef) => {
10
- insert: import("./schema/mutations.js").MutationDef<`_Derived_Create_${string}`, {
11
- readonly [x: string]: any;
12
- } & {
13
- readonly [x: string]: any;
14
- }, {
15
- readonly [x: string]: any;
16
- } & {
17
- readonly [x: string]: any;
18
- }>;
19
- update: import("./schema/mutations.js").MutationDef<`_Derived_Update_${string}`, {
20
- readonly values: {
21
- [x: string]: any;
22
- };
23
- readonly where: {
24
- [x: string]: any;
25
- };
26
- }, {
27
- readonly values: {
28
- [x: string]: any;
29
- };
30
- readonly where: {
31
- [x: string]: any;
32
- };
33
- }>;
34
- delete: import("./schema/mutations.js").MutationDef<`_Derived_Delete_${string}`, {
35
- readonly where: {
36
- [x: string]: any;
37
- };
38
- }, {
39
- readonly where: {
40
- [x: string]: any;
41
- };
42
- }>;
43
- };
44
- export declare const deriveCreateMutationDef: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
45
- deriveMutations: {
46
- enabled: true;
47
- };
48
- }>>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Create_${string}`, {
49
- readonly [x: string]: any;
50
- } & {
51
- readonly [x: string]: any;
52
- }, {
53
- readonly [x: string]: any;
54
- } & {
55
- readonly [x: string]: any;
56
- }>;
57
- export declare const deriveUpdateMutationDef: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
58
- deriveMutations: {
59
- enabled: true;
60
- };
61
- }>>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Update_${string}`, {
62
- readonly values: {
63
- [x: string]: any;
64
- };
65
- readonly where: {
66
- [x: string]: any;
67
- };
68
- }, {
69
- readonly values: {
70
- [x: string]: any;
71
- };
72
- readonly where: {
73
- [x: string]: any;
74
- };
75
- }>;
76
- export declare const deriveDeleteMutationDef: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
77
- deriveMutations: {
78
- enabled: true;
79
- };
80
- }>>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Delete_${string}`, {
81
- readonly where: {
82
- [x: string]: any;
83
- };
84
- }, {
85
- readonly where: {
86
- [x: string]: any;
87
- };
88
- }>;
89
- /**
90
- * Convenience helper functions on top of the derived mutation definitions.
91
- */
92
- export type DerivedMutationHelperFns<TColumns extends SqliteDsl.ConstraintColumns, TOptions extends DbSchema.TableOptions> = {
93
- insert: DerivedMutationHelperFns.InsertMutationFn<TColumns, TOptions>;
94
- update: DerivedMutationHelperFns.UpdateMutationFn<TColumns, TOptions>;
95
- delete: DerivedMutationHelperFns.DeleteMutationFn<TColumns, TOptions>;
96
- };
97
- export declare namespace DerivedMutationHelperFns {
98
- export type InsertMutationFn<TColumns extends SqliteDsl.ConstraintColumns, TOptions extends DbSchema.TableOptions> = SqliteDsl.AnyIfConstained<TColumns, UseShortcut<TOptions> extends true ? (values?: GetValForKey<SqliteDsl.FromColumns.InsertRowDecoded<TColumns>, 'value'>) => MutationEvent.PartialAnyDecoded : (values: SqliteDsl.FromColumns.InsertRowDecoded<TColumns>) => MutationEvent.PartialAnyDecoded>;
99
- export type UpdateMutationFn<TColumns extends SqliteDsl.ConstraintColumns, TOptions extends DbSchema.TableOptions> = SqliteDsl.AnyIfConstained<TColumns, UseShortcut<TOptions> extends true ? (values: Partial<GetValForKey<SqliteDsl.FromColumns.RowDecoded<TColumns>, 'value'>>) => MutationEvent.PartialAnyDecoded : (args: {
100
- where: Partial<SqliteDsl.FromColumns.RowDecoded<TColumns>>;
101
- values: Partial<SqliteDsl.FromColumns.RowDecoded<TColumns>>;
102
- }) => MutationEvent.PartialAnyDecoded>;
103
- export type DeleteMutationFn<TColumns extends SqliteDsl.ConstraintColumns, _TOptions extends DbSchema.TableOptions> = (args: {
104
- where: Partial<SqliteDsl.FromColumns.RowDecoded<TColumns>>;
105
- }) => MutationEvent.PartialAnyDecoded;
106
- type UseShortcut<TOptions extends DbSchema.TableOptions> = TOptions['isSingleColumn'] extends true ? TOptions['isSingleton'] extends true ? true : false : false;
107
- export {};
108
- }
109
- //# sourceMappingURL=derived-mutations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.d.ts","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import { ReadonlyRecord, Schema } from '@livestore/utils/effect';
2
- import { defineMutation } from './schema/mutations.js';
3
- import { getDefaultValuesDecoded } from './schema/schema-helpers.js';
4
- import { deleteRows, insertRow, updateRows } from './sql-queries/sql-queries.js';
5
- export const makeDerivedMutationDefsForTable = (table) => ({
6
- insert: deriveCreateMutationDef(table),
7
- update: deriveUpdateMutationDef(table),
8
- delete: deriveDeleteMutationDef(table),
9
- });
10
- export const deriveCreateMutationDef = (table) => {
11
- const tableName = table.sqliteDef.name;
12
- const [optionalFields, requiredColumns] = ReadonlyRecord.partition(table.sqliteDef.columns, (col) => col.nullable === false && col.default._tag === 'None');
13
- const insertSchema = Schema.Struct(ReadonlyRecord.map(requiredColumns, (col) => col.schema))
14
- .pipe(Schema.extend(Schema.partial(Schema.Struct(ReadonlyRecord.map(optionalFields, (col) => col.schema)))))
15
- .annotations({ title: `${tableName}:Insert` });
16
- return defineMutation(`_Derived_Create_${tableName}`, insertSchema, ({ id, ...explicitDefaultValues }) => {
17
- const defaultValues = getDefaultValuesDecoded(table, explicitDefaultValues);
18
- const [sql, bindValues] = insertRow({
19
- tableName: table.sqliteDef.name,
20
- columns: table.sqliteDef.columns,
21
- values: { ...defaultValues, id },
22
- });
23
- return { sql, bindValues, writeTables: new Set([tableName]) };
24
- }, { clientOnly: table.options.deriveMutations.clientOnly });
25
- };
26
- export const deriveUpdateMutationDef = (table) => {
27
- const tableName = table.sqliteDef.name;
28
- return defineMutation(`_Derived_Update_${tableName}`, Schema.Struct({
29
- where: Schema.partial(table.schema),
30
- values: Schema.partial(table.schema),
31
- }).annotations({ title: `${tableName}:Update` }), ({ where, values }) => {
32
- const [sql, bindValues] = updateRows({
33
- tableName: table.sqliteDef.name,
34
- columns: table.sqliteDef.columns,
35
- where,
36
- updateValues: values,
37
- });
38
- return { sql, bindValues, writeTables: new Set([tableName]) };
39
- }, { clientOnly: table.options.deriveMutations.clientOnly });
40
- };
41
- export const deriveDeleteMutationDef = (table) => {
42
- const tableName = table.sqliteDef.name;
43
- return defineMutation(`_Derived_Delete_${tableName}`, Schema.Struct({
44
- where: Schema.partial(table.schema),
45
- }), ({ where }) => {
46
- const [sql, bindValues] = deleteRows({
47
- tableName: table.sqliteDef.name,
48
- columns: table.sqliteDef.columns,
49
- where,
50
- });
51
- return { sql, bindValues, writeTables: new Set([tableName]) };
52
- }, { clientOnly: table.options.deriveMutations.clientOnly });
53
- };
54
- //# sourceMappingURL=derived-mutations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.js","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=derived-mutations.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.test.d.ts","sourceRoot":"","sources":["../src/derived-mutations.test.ts"],"names":[],"mappings":""}
@@ -1,93 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
- import { appConfig, todos } from './__tests__/fixture.js';
3
- describe('derived mutations', () => {
4
- test('todos', () => {
5
- expect(patchId(todos.insert({ id: 't1', completed: true, text: 'Task 1' }))).toMatchInlineSnapshot(`
6
- {
7
- "args": {
8
- "completed": true,
9
- "id": "t1",
10
- "text": "Task 1",
11
- },
12
- "id": "00000000-0000-0000-0000-000000000000",
13
- "mutation": "_Derived_Create_todos",
14
- }
15
- `);
16
- expect(patchId(todos.update({ where: { id: 't1' }, values: { text: 'Task 1 - fixed' } }))).toMatchInlineSnapshot(`
17
- {
18
- "args": {
19
- "values": {
20
- "text": "Task 1 - fixed",
21
- },
22
- "where": {
23
- "id": "t1",
24
- },
25
- },
26
- "id": "00000000-0000-0000-0000-000000000000",
27
- "mutation": "_Derived_Update_todos",
28
- }
29
- `);
30
- expect(patchId(todos.delete({ where: { id: 't1' } }))).toMatchInlineSnapshot(`
31
- {
32
- "args": {
33
- "where": {
34
- "id": "t1",
35
- },
36
- },
37
- "id": "00000000-0000-0000-0000-000000000000",
38
- "mutation": "_Derived_Delete_todos",
39
- }
40
- `);
41
- });
42
- test('app_config', () => {
43
- expect(patchId(appConfig.insert())).toMatchInlineSnapshot(`
44
- {
45
- "args": {
46
- "id": "singleton",
47
- "value": {
48
- "value": undefined,
49
- },
50
- },
51
- "id": "00000000-0000-0000-0000-000000000000",
52
- "mutation": "_Derived_Create_app_config",
53
- }
54
- `);
55
- expect(patchId(appConfig.insert({ fontSize: 12, theme: 'dark' }))).toMatchInlineSnapshot(`
56
- {
57
- "args": {
58
- "id": "singleton",
59
- "value": {
60
- "value": {
61
- "fontSize": 12,
62
- "theme": "dark",
63
- },
64
- },
65
- },
66
- "id": "00000000-0000-0000-0000-000000000000",
67
- "mutation": "_Derived_Create_app_config",
68
- }
69
- `);
70
- expect(patchId(appConfig.update({ fontSize: 13 }))).toMatchInlineSnapshot(`
71
- {
72
- "args": {
73
- "values": {
74
- "value": {
75
- "fontSize": 13,
76
- },
77
- },
78
- "where": {
79
- "id": "singleton",
80
- },
81
- },
82
- "id": "00000000-0000-0000-0000-000000000000",
83
- "mutation": "_Derived_Update_app_config",
84
- }
85
- `);
86
- });
87
- });
88
- const patchId = (muationEvent) => {
89
- // TODO use new id paradigm
90
- const id = `00000000-0000-0000-0000-000000000000`;
91
- return { ...muationEvent, id };
92
- };
93
- //# sourceMappingURL=derived-mutations.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.test.js","sourceRoot":"","sources":["../src/derived-mutations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAGzD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;KAUlG,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;KAahH,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;KAU5E,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAWzD,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;KAcxF,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;KAezE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,CAAC,YAA6C,EAAE,EAAE;IAChE,2BAA2B;IAC3B,MAAM,EAAE,GAAG,sCAAsC,CAAA;IACjD,OAAO,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,CAAA;AAChC,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { SqliteDb } from './adapter-types.js';
2
- import type { LiveStoreSchema } from './schema/mod.js';
3
- export declare const initializeSingletonTables: (schema: LiveStoreSchema, db: SqliteDb) => void;
4
- //# sourceMappingURL=init-singleton-tables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-singleton-tables.d.ts","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,eAAO,MAAM,yBAAyB,GAAI,QAAQ,eAAe,EAAE,IAAI,QAAQ,SAkB9E,CAAA"}
@@ -1,16 +0,0 @@
1
- import { getDefaultValuesEncoded } from './schema/schema-helpers.js';
2
- import { prepareBindValues, sql } from './util.js';
3
- export const initializeSingletonTables = (schema, db) => {
4
- for (const [, tableDef] of schema.tables) {
5
- if (tableDef.options.isSingleton) {
6
- const defaultValues = getDefaultValuesEncoded(tableDef, undefined);
7
- const defaultColumnNames = [...Object.keys(defaultValues), 'id'];
8
- const columnValues = defaultColumnNames.map((name) => `$${name}`).join(', ');
9
- const tableName = tableDef.sqliteDef.name;
10
- const insertQuery = sql `insert into ${tableName} (${defaultColumnNames.join(', ')}) select ${columnValues} where not exists(select 1 from ${tableName} where id = 'singleton')`;
11
- const bindValues = prepareBindValues({ ...defaultValues, id: 'singleton' }, insertQuery);
12
- db.execute(insertQuery, bindValues);
13
- }
14
- }
15
- };
16
- //# sourceMappingURL=init-singleton-tables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-singleton-tables.js","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAuB,EAAE,EAAY,EAAE,EAAE;IACjF,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAElE,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;YAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE5E,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAA;YACzC,MAAM,WAAW,GAAG,GAAG,CAAA,eAAe,SAAS,KAAK,kBAAkB,CAAC,IAAI,CACzE,IAAI,CACL,YAAY,YAAY,mCAAmC,SAAS,0BAA0B,CAAA;YAE/F,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;YAExF,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- import type { Scope } from '@livestore/utils/effect';
2
- import { Effect } from '@livestore/utils/effect';
3
- import type { SqliteError, UnexpectedError } from '../index.js';
4
- import { type MutationEvent } from '../schema/mod.js';
5
- import { LeaderThreadCtx } from './types.js';
6
- export type ApplyMutation = (mutationEventEncoded: MutationEvent.AnyEncoded, options?: {
7
- /** Needed for rehydrateFromMutationLog */
8
- skipMutationLog?: boolean;
9
- }) => Effect.Effect<void, SqliteError | UnexpectedError>;
10
- export declare const makeApplyMutation: Effect.Effect<ApplyMutation, never, Scope.Scope | LeaderThreadCtx>;
11
- //# sourceMappingURL=apply-mutation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-mutation.d.ts","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAEhE,OAAO,KAAK,EAAgC,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7F,OAAO,EAKL,KAAK,aAAa,EAInB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,MAAM,aAAa,GAAG,CAC1B,oBAAoB,EAAE,aAAa,CAAC,UAAU,EAC9C,OAAO,CAAC,EAAE;IACR,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,KACE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAAC,CAAA;AAEvD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,eAAe,CAyFhG,CAAA"}
@@ -1,115 +0,0 @@
1
- import { LS_DEV, memoizeByRef, shouldNeverHappen } from '@livestore/utils';
2
- import { Effect, Option, Schema } from '@livestore/utils/effect';
3
- import { getExecArgsFromMutation } from '../mutation.js';
4
- import { EventId, getMutationDef, MUTATION_LOG_META_TABLE, mutationLogMetaTable, SESSION_CHANGESET_META_TABLE, sessionChangesetMetaTable, } from '../schema/mod.js';
5
- import { insertRow } from '../sql-queries/index.js';
6
- import { execSql, execSqlPrepared } from './connection.js';
7
- import { LeaderThreadCtx } from './types.js';
8
- export const makeApplyMutation = Effect.gen(function* () {
9
- const leaderThreadCtx = yield* LeaderThreadCtx;
10
- const shouldExcludeMutationFromLog = makeShouldExcludeMutationFromLog(leaderThreadCtx.schema);
11
- const mutationDefSchemaHashMap = new Map(
12
- // TODO Running `Schema.hash` can be a bottleneck for larger schemas. There is an opportunity to run this
13
- // at build time and lookup the pre-computed hash at runtime.
14
- // Also see https://github.com/Effect-TS/effect/issues/2719
15
- [...leaderThreadCtx.schema.mutations.map.entries()].map(([k, v]) => [k, Schema.hash(v.schema)]));
16
- return (mutationEventEncoded, options) => Effect.gen(function* () {
17
- const { schema, dbReadModel: db, dbMutationLog } = leaderThreadCtx;
18
- const skipMutationLog = options?.skipMutationLog ?? false;
19
- const mutationName = mutationEventEncoded.mutation;
20
- const mutationDef = getMutationDef(schema, mutationName);
21
- const execArgsArr = getExecArgsFromMutation({
22
- mutationDef,
23
- mutationEvent: { decoded: undefined, encoded: mutationEventEncoded },
24
- });
25
- // NOTE we might want to bring this back if we want to debug no-op mutations
26
- // const makeExecuteOptions = (statementSql: string, bindValues: any) => ({
27
- // onRowsChanged: (rowsChanged: number) => {
28
- // if (rowsChanged === 0) {
29
- // console.warn(`Mutation "${mutationDef.name}" did not affect any rows:`, statementSql, bindValues)
30
- // }
31
- // },
32
- // })
33
- // console.group('[@livestore/common:leader-thread:applyMutation]', { mutationName })
34
- const session = db.session();
35
- for (const { statementSql, bindValues } of execArgsArr) {
36
- // console.debug(mutationName, statementSql, bindValues)
37
- // TODO use cached prepared statements instead of exec
38
- yield* execSqlPrepared(db, statementSql, bindValues);
39
- }
40
- const changeset = session.changeset();
41
- session.finish();
42
- // TODO use prepared statements
43
- yield* execSql(db, ...insertRow({
44
- tableName: SESSION_CHANGESET_META_TABLE,
45
- columns: sessionChangesetMetaTable.sqliteDef.columns,
46
- values: {
47
- idGlobal: mutationEventEncoded.id.global,
48
- idClient: mutationEventEncoded.id.client,
49
- // NOTE the changeset will be empty (i.e. null) for no-op mutations
50
- changeset: changeset ?? null,
51
- debug: execArgsArr,
52
- },
53
- }));
54
- // console.groupEnd()
55
- // write to mutation_log
56
- const excludeFromMutationLog = shouldExcludeMutationFromLog(mutationName, mutationEventEncoded);
57
- if (skipMutationLog === false && excludeFromMutationLog === false) {
58
- yield* insertIntoMutationLog(mutationEventEncoded, dbMutationLog, mutationDefSchemaHashMap, mutationEventEncoded.clientId, mutationEventEncoded.sessionId);
59
- }
60
- else {
61
- // console.debug('[@livestore/common:leader-thread] skipping mutation log write', mutation, statementSql, bindValues)
62
- }
63
- }).pipe(Effect.withSpan(`@livestore/common:leader-thread:applyMutation`, {
64
- attributes: {
65
- mutationName: mutationEventEncoded.mutation,
66
- mutationId: mutationEventEncoded.id,
67
- 'span.label': `(${mutationEventEncoded.id.global},${mutationEventEncoded.id.client}) ${mutationEventEncoded.mutation}`,
68
- },
69
- }));
70
- });
71
- const insertIntoMutationLog = (mutationEventEncoded, dbMutationLog, mutationDefSchemaHashMap, clientId, sessionId) => Effect.gen(function* () {
72
- const mutationName = mutationEventEncoded.mutation;
73
- const mutationDefSchemaHash = mutationDefSchemaHashMap.get(mutationName) ?? shouldNeverHappen(`Unknown mutation: ${mutationName}`);
74
- if (LS_DEV && mutationEventEncoded.parentId.global !== EventId.ROOT.global) {
75
- const parentMutationExists = dbMutationLog.select(`SELECT COUNT(*) as count FROM ${MUTATION_LOG_META_TABLE} WHERE idGlobal = ? AND idClient = ?`, [mutationEventEncoded.parentId.global, mutationEventEncoded.parentId.client])[0].count === 1;
76
- if (parentMutationExists === false) {
77
- shouldNeverHappen(`Parent mutation ${mutationEventEncoded.parentId.global},${mutationEventEncoded.parentId.client} does not exist`);
78
- }
79
- }
80
- // TODO use prepared statements
81
- yield* execSql(dbMutationLog, ...insertRow({
82
- tableName: MUTATION_LOG_META_TABLE,
83
- columns: mutationLogMetaTable.sqliteDef.columns,
84
- values: {
85
- idGlobal: mutationEventEncoded.id.global,
86
- idClient: mutationEventEncoded.id.client,
87
- parentIdGlobal: mutationEventEncoded.parentId.global,
88
- parentIdClient: mutationEventEncoded.parentId.client,
89
- mutation: mutationEventEncoded.mutation,
90
- argsJson: mutationEventEncoded.args ?? {},
91
- clientId,
92
- sessionId,
93
- schemaHash: mutationDefSchemaHash,
94
- syncMetadataJson: Option.none(),
95
- },
96
- }));
97
- });
98
- // TODO let's consider removing this "should exclude" mechanism in favour of log compaction etc
99
- const makeShouldExcludeMutationFromLog = memoizeByRef((schema) => {
100
- const migrationOptions = schema.migrationOptions;
101
- const mutationLogExclude = migrationOptions.strategy === 'from-mutation-log'
102
- ? (migrationOptions.excludeMutations ?? new Set(['livestore.RawSql']))
103
- : new Set(['livestore.RawSql']);
104
- return (mutationName, mutationEventEncoded) => {
105
- if (mutationLogExclude.has(mutationName))
106
- return true;
107
- const mutationDef = getMutationDef(schema, mutationName);
108
- const execArgsArr = getExecArgsFromMutation({
109
- mutationDef,
110
- mutationEvent: { decoded: undefined, encoded: mutationEventEncoded },
111
- });
112
- return execArgsArr.some((_) => _.statementSql.includes('__livestore'));
113
- };
114
- });
115
- //# sourceMappingURL=apply-mutation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-mutation.js","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Effect } from '@livestore/utils/effect';
2
- import type { SqliteDb } from '../adapter-types.js';
3
- import * as EventId from '../schema/EventId.js';
4
- import type * as MutationEvent from '../schema/MutationEvent.js';
5
- import { LeaderThreadCtx } from './types.js';
6
- /** Exclusive of the "since event" */
7
- export declare const getMutationEventsSince: (since: EventId.EventId) => Effect.Effect<ReadonlyArray<MutationEvent.AnyEncoded>, never, LeaderThreadCtx>;
8
- export declare const getClientHeadFromDb: (dbMutationLog: SqliteDb) => EventId.EventId;
9
- export declare const getBackendHeadFromDb: (dbMutationLog: SqliteDb) => EventId.GlobalEventId;
10
- export declare const updateBackendHead: (dbMutationLog: SqliteDb, head: EventId.EventId) => void;
11
- //# sourceMappingURL=mutationlog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutationlog.d.ts","sourceRoot":"","sources":["../../src/leader-thread/mutationlog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,qCAAqC;AACrC,eAAO,MAAM,sBAAsB,GACjC,OAAO,OAAO,CAAC,OAAO,KACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,CAoB5E,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,eAAe,QAAQ,KAAG,OAAO,CAAC,OAMrE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,eAAe,QAAQ,KAAG,OAAO,CAAC,aAElD,CAAA;AAGrB,eAAO,MAAM,iBAAiB,GAAI,eAAe,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,SACG,CAAA"}
@@ -1,31 +0,0 @@
1
- import { Effect, Schema } from '@livestore/utils/effect';
2
- import * as EventId from '../schema/EventId.js';
3
- import { MUTATION_LOG_META_TABLE, mutationLogMetaTable, SYNC_STATUS_TABLE } from '../schema/system-tables.js';
4
- import { prepareBindValues, sql } from '../util.js';
5
- import { LeaderThreadCtx } from './types.js';
6
- /** Exclusive of the "since event" */
7
- export const getMutationEventsSince = (since) => Effect.gen(function* () {
8
- const { dbMutationLog } = yield* LeaderThreadCtx;
9
- const query = mutationLogMetaTable.query.where('idGlobal', '>=', since.global).asSql();
10
- const pendingMutationEventsRaw = dbMutationLog.select(query.query, prepareBindValues(query.bindValues, query.query));
11
- const pendingMutationEvents = Schema.decodeUnknownSync(mutationLogMetaTable.schema.pipe(Schema.Array))(pendingMutationEventsRaw);
12
- return pendingMutationEvents
13
- .map((_) => ({
14
- mutation: _.mutation,
15
- args: _.argsJson,
16
- id: { global: _.idGlobal, client: _.idClient },
17
- parentId: { global: _.parentIdGlobal, client: _.parentIdClient },
18
- clientId: _.clientId,
19
- sessionId: _.sessionId,
20
- }))
21
- .filter((_) => EventId.compare(_.id, since) > 0);
22
- });
23
- export const getClientHeadFromDb = (dbMutationLog) => {
24
- const res = dbMutationLog.select(sql `select idGlobal, idClient from ${MUTATION_LOG_META_TABLE} order by idGlobal DESC, idClient DESC limit 1`)[0];
25
- return res ? { global: res.idGlobal, client: res.idClient } : EventId.ROOT;
26
- };
27
- export const getBackendHeadFromDb = (dbMutationLog) => dbMutationLog.select(sql `select head from ${SYNC_STATUS_TABLE}`)[0]?.head ??
28
- EventId.ROOT.global;
29
- // TODO use prepared statements
30
- export const updateBackendHead = (dbMutationLog, head) => dbMutationLog.execute(sql `UPDATE ${SYNC_STATUS_TABLE} SET head = ${head.global}`);
31
- //# sourceMappingURL=mutationlog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutationlog.js","sourceRoot":"","sources":["../../src/leader-thread/mutationlog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC7G,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,qCAAqC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAsB,EAC0D,EAAE,CAClF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAEhD,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;IACtF,MAAM,wBAAwB,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACpH,MAAM,qBAAqB,GAAG,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACpG,wBAAwB,CACzB,CAAA;IAED,OAAO,qBAAqB;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,QAAQ;QAChB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC9C,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE;QAChE,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,aAAuB,EAAmB,EAAE;IAC9E,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAC9B,GAAG,CAAA,kCAAkC,uBAAuB,gDAAgD,CAC7G,CAAC,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,aAAuB,EAAyB,EAAE,CACrF,aAAa,CAAC,MAAM,CAAkC,GAAG,CAAA,oBAAoB,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;IAC1G,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;AAErB,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAuB,EAAE,IAAqB,EAAE,EAAE,CAClF,aAAa,CAAC,OAAO,CAAC,GAAG,CAAA,UAAU,iBAAiB,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA"}
@@ -1,7 +0,0 @@
1
- import { Effect, Queue } from '@livestore/utils/effect';
2
- import { LeaderThreadCtx, type PullQueueItem } from './types.js';
3
- export declare const makePullQueueSet: Effect.Effect<{
4
- makeQueue: (since: import("../schema/EventId.js").EventId) => Effect.Effect<Queue.Queue<PullQueueItem>, import("../adapter-types.js").UnexpectedError, import("effect/Scope").Scope | LeaderThreadCtx>;
5
- offer: (item: PullQueueItem) => Effect.Effect<void, import("../adapter-types.js").UnexpectedError, LeaderThreadCtx>;
6
- }, never, import("effect/Scope").Scope>;
7
- //# sourceMappingURL=pull-queue-set.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull-queue-set.d.ts","sourceRoot":"","sources":["../../src/leader-thread/pull-queue-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAIvD,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAqB,MAAM,YAAY,CAAA;AAEnF,eAAO,MAAM,gBAAgB;kEA6D+8F,OAAQ,MAAM,CAAC,MAAM,KAAK;oCAAkG,OAAQ,MAAM;uCADpnG,CAAA"}
@@ -1,48 +0,0 @@
1
- import { Effect, Queue } from '@livestore/utils/effect';
2
- import * as MutationEvent from '../schema/MutationEvent.js';
3
- import { getMutationEventsSince } from './mutationlog.js';
4
- import { LeaderThreadCtx } from './types.js';
5
- export const makePullQueueSet = Effect.gen(function* () {
6
- const set = new Set();
7
- yield* Effect.addFinalizer(() => Effect.gen(function* () {
8
- for (const queue of set) {
9
- yield* Queue.shutdown(queue);
10
- }
11
- set.clear();
12
- }));
13
- const makeQueue = (since) => Effect.gen(function* () {
14
- const queue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
15
- yield* Effect.addFinalizer(() => Effect.sync(() => set.delete(queue)));
16
- const mutationEvents = yield* getMutationEventsSince(since);
17
- if (mutationEvents.length > 0) {
18
- const newEvents = mutationEvents.map((mutationEvent) => new MutationEvent.EncodedWithMeta(mutationEvent));
19
- yield* queue.offer({ payload: { _tag: 'upstream-advance', newEvents }, remaining: 0 });
20
- }
21
- set.add(queue);
22
- return queue;
23
- });
24
- const offer = (item) => Effect.gen(function* () {
25
- // Short-circuit if the payload is an empty upstream advance
26
- if (item.payload._tag === 'upstream-advance' &&
27
- item.payload.newEvents.length === 0 &&
28
- item.payload.trimRollbackUntil === undefined) {
29
- return;
30
- }
31
- const { clientId } = yield* LeaderThreadCtx;
32
- if (clientId === 'client-b') {
33
- // console.log(
34
- // 'offer',
35
- // item.payload._tag,
36
- // item.payload.newEvents.map((_) => _.toJSON()),
37
- // )
38
- }
39
- for (const queue of set) {
40
- yield* Queue.offer(queue, item);
41
- }
42
- });
43
- return {
44
- makeQueue,
45
- offer,
46
- };
47
- });
48
- //# sourceMappingURL=pull-queue-set.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull-queue-set.js","sourceRoot":"","sources":["../../src/leader-thread/pull-queue-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAyC,MAAM,YAAY,CAAA;AAEnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAA;IAEjD,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAA;IACb,CAAC,CAAC,CACH,CAAA;IAED,MAAM,SAAS,GAA8B,CAAC,KAAK,EAAE,EAAE,CACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEjG,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEtE,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAE3D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAA;YACzG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QACxF,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEd,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEJ,MAAM,KAAK,GAA0B,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,4DAA4D;QAC5D,IACE,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB;YACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAC5C,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAC3C,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,eAAe;YACf,aAAa;YACb,uBAAuB;YACvB,mDAAmD;YACnD,IAAI;QACN,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,SAAS;QACT,KAAK;KACN,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,20 +0,0 @@
1
- import type * as MutationEvent from './schema/MutationEvent.js';
2
- import type { MutationDef } from './schema/mutations.js';
3
- import type { PreparedBindValues } from './util.js';
4
- export declare const getExecArgsFromMutation: ({ mutationDef, mutationEvent, }: {
5
- mutationDef: MutationDef.Any;
6
- /** Both encoded and decoded mutation events are supported to reduce the number of times we need to decode/encode */
7
- mutationEvent: {
8
- decoded: MutationEvent.AnyDecoded | MutationEvent.PartialAnyDecoded;
9
- encoded: undefined;
10
- } | {
11
- decoded: undefined;
12
- encoded: MutationEvent.AnyEncoded | MutationEvent.PartialAnyEncoded;
13
- };
14
- }) => ReadonlyArray<{
15
- statementSql: string;
16
- bindValues: PreparedBindValues;
17
- writeTables: ReadonlySet<string> | undefined;
18
- }>;
19
- export declare const replaceSessionIdSymbol: (bindValues: Record<string, unknown> | ReadonlyArray<unknown>, sessionId: string) => void;
20
- //# sourceMappingURL=mutation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,aAAa,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,uBAAuB,CAAA;AAE/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,eAAO,MAAM,uBAAuB,GAAI,iCAGrC;IACD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAA;IAC5B,oHAAoH;IACpH,aAAa,EACT;QACE,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC,iBAAiB,CAAA;QACnE,OAAO,EAAE,SAAS,CAAA;KACnB,GACD;QACE,OAAO,EAAE,SAAS,CAAA;QAClB,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC,iBAAiB,CAAA;KACpE,CAAA;CACN,KAAG,aAAa,CAAC;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C,CAgDA,CAAA;AAID,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAC5D,WAAW,MAAM,SAGlB,CAAA"}