@lix-js/sdk 0.5.0 → 0.6.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2195) hide show
  1. package/dist/builtin-schemas.d.ts +1 -0
  2. package/dist/builtin-schemas.js +1 -0
  3. package/dist/engine-wasm/index.d.ts +83 -0
  4. package/dist/engine-wasm/index.js +272 -0
  5. package/dist/engine-wasm/wasm/lix_engine.d.ts +43 -0
  6. package/dist/engine-wasm/wasm/lix_engine.js +762 -0
  7. package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
  8. package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +20 -0
  9. package/dist/generated/builtin-schemas.d.ts +512 -0
  10. package/dist/generated/builtin-schemas.js +744 -0
  11. package/dist/index.d.ts +5 -28
  12. package/dist/index.js +3 -28
  13. package/dist/open-lix.d.ts +83 -0
  14. package/dist/open-lix.js +104 -0
  15. package/dist/sqlite/index.d.ts +12 -0
  16. package/dist/sqlite/index.js +226 -0
  17. package/dist/types.d.ts +1 -0
  18. package/dist/types.js +1 -0
  19. package/package.json +49 -67
  20. package/LICENSE +0 -21
  21. package/README.md +0 -318
  22. package/dist/account/create-account.d.ts +0 -20
  23. package/dist/account/create-account.d.ts.map +0 -1
  24. package/dist/account/create-account.js +0 -42
  25. package/dist/account/create-account.js.map +0 -1
  26. package/dist/account/create-account.test.d.ts +0 -2
  27. package/dist/account/create-account.test.d.ts.map +0 -1
  28. package/dist/account/create-account.test.js +0 -48
  29. package/dist/account/create-account.test.js.map +0 -1
  30. package/dist/account/index.d.ts +0 -4
  31. package/dist/account/index.d.ts.map +0 -1
  32. package/dist/account/index.js +0 -4
  33. package/dist/account/index.js.map +0 -1
  34. package/dist/account/schema-definition.d.ts +0 -53
  35. package/dist/account/schema-definition.d.ts.map +0 -1
  36. package/dist/account/schema-definition.js +0 -50
  37. package/dist/account/schema-definition.js.map +0 -1
  38. package/dist/account/schema.test.d.ts +0 -2
  39. package/dist/account/schema.test.d.ts.map +0 -1
  40. package/dist/account/schema.test.js +0 -337
  41. package/dist/account/schema.test.js.map +0 -1
  42. package/dist/account/switch-account.d.ts +0 -26
  43. package/dist/account/switch-account.d.ts.map +0 -1
  44. package/dist/account/switch-account.js +0 -40
  45. package/dist/account/switch-account.js.map +0 -1
  46. package/dist/account/switch-account.test.d.ts +0 -2
  47. package/dist/account/switch-account.test.d.ts.map +0 -1
  48. package/dist/account/switch-account.test.js +0 -59
  49. package/dist/account/switch-account.test.js.map +0 -1
  50. package/dist/change/index.d.ts +0 -2
  51. package/dist/change/index.d.ts.map +0 -1
  52. package/dist/change/index.js +0 -2
  53. package/dist/change/index.js.map +0 -1
  54. package/dist/change/schema-definition.d.ts +0 -82
  55. package/dist/change/schema-definition.d.ts.map +0 -1
  56. package/dist/change/schema-definition.js +0 -36
  57. package/dist/change/schema-definition.js.map +0 -1
  58. package/dist/change/schema.bench.d.ts +0 -2
  59. package/dist/change/schema.bench.d.ts.map +0 -1
  60. package/dist/change/schema.bench.js +0 -334
  61. package/dist/change/schema.bench.js.map +0 -1
  62. package/dist/change/schema.d.ts +0 -15
  63. package/dist/change/schema.d.ts.map +0 -1
  64. package/dist/change/schema.js +0 -91
  65. package/dist/change/schema.js.map +0 -1
  66. package/dist/change/schema.test.d.ts +0 -2
  67. package/dist/change/schema.test.d.ts.map +0 -1
  68. package/dist/change/schema.test.js +0 -344
  69. package/dist/change/schema.test.js.map +0 -1
  70. package/dist/change-author/index.d.ts +0 -2
  71. package/dist/change-author/index.d.ts.map +0 -1
  72. package/dist/change-author/index.js +0 -2
  73. package/dist/change-author/index.js.map +0 -1
  74. package/dist/change-author/schema-definition.d.ts +0 -37
  75. package/dist/change-author/schema-definition.d.ts.map +0 -1
  76. package/dist/change-author/schema-definition.js +0 -35
  77. package/dist/change-author/schema-definition.js.map +0 -1
  78. package/dist/change-author/schema.test.d.ts +0 -2
  79. package/dist/change-author/schema.test.d.ts.map +0 -1
  80. package/dist/change-author/schema.test.js +0 -425
  81. package/dist/change-author/schema.test.js.map +0 -1
  82. package/dist/change-conflict/create-change-conflict.d.ts +0 -15
  83. package/dist/change-conflict/create-change-conflict.d.ts.map +0 -1
  84. package/dist/change-conflict/create-change-conflict.js +0 -85
  85. package/dist/change-conflict/create-change-conflict.js.map +0 -1
  86. package/dist/change-conflict/create-change-conflict.test.d.ts +0 -2
  87. package/dist/change-conflict/create-change-conflict.test.d.ts.map +0 -1
  88. package/dist/change-conflict/create-change-conflict.test.js +0 -147
  89. package/dist/change-conflict/create-change-conflict.test.js.map +0 -1
  90. package/dist/change-conflict/detect-change-conflicts.d.ts +0 -23
  91. package/dist/change-conflict/detect-change-conflicts.d.ts.map +0 -1
  92. package/dist/change-conflict/detect-change-conflicts.js +0 -52
  93. package/dist/change-conflict/detect-change-conflicts.js.map +0 -1
  94. package/dist/change-conflict/detect-change-conflicts.test.d.ts +0 -2
  95. package/dist/change-conflict/detect-change-conflicts.test.d.ts.map +0 -1
  96. package/dist/change-conflict/detect-change-conflicts.test.js +0 -186
  97. package/dist/change-conflict/detect-change-conflicts.test.js.map +0 -1
  98. package/dist/change-conflict/detect-diverging-entity-conflict.d.ts +0 -32
  99. package/dist/change-conflict/detect-diverging-entity-conflict.d.ts.map +0 -1
  100. package/dist/change-conflict/detect-diverging-entity-conflict.js +0 -68
  101. package/dist/change-conflict/detect-diverging-entity-conflict.js.map +0 -1
  102. package/dist/change-conflict/detect-diverging-entity-conflict.test.d.ts +0 -2
  103. package/dist/change-conflict/detect-diverging-entity-conflict.test.d.ts.map +0 -1
  104. package/dist/change-conflict/detect-diverging-entity-conflict.test.js +0 -203
  105. package/dist/change-conflict/detect-diverging-entity-conflict.test.js.map +0 -1
  106. package/dist/change-conflict/garbage-collect-change-conflicts.d.ts +0 -14
  107. package/dist/change-conflict/garbage-collect-change-conflicts.d.ts.map +0 -1
  108. package/dist/change-conflict/garbage-collect-change-conflicts.js +0 -69
  109. package/dist/change-conflict/garbage-collect-change-conflicts.js.map +0 -1
  110. package/dist/change-conflict/garbage-collect-change-conflicts.test.d.ts +0 -2
  111. package/dist/change-conflict/garbage-collect-change-conflicts.test.d.ts.map +0 -1
  112. package/dist/change-conflict/garbage-collect-change-conflicts.test.js +0 -182
  113. package/dist/change-conflict/garbage-collect-change-conflicts.test.js.map +0 -1
  114. package/dist/change-conflict/index.d.ts +0 -4
  115. package/dist/change-conflict/index.d.ts.map +0 -1
  116. package/dist/change-conflict/index.js +0 -4
  117. package/dist/change-conflict/index.js.map +0 -1
  118. package/dist/change-conflict/resolve-conflict-by-selecting.d.ts +0 -12
  119. package/dist/change-conflict/resolve-conflict-by-selecting.d.ts.map +0 -1
  120. package/dist/change-conflict/resolve-conflict-by-selecting.js +0 -48
  121. package/dist/change-conflict/resolve-conflict-by-selecting.js.map +0 -1
  122. package/dist/change-conflict/resolve-conflict-by-selecting.test.d.ts +0 -2
  123. package/dist/change-conflict/resolve-conflict-by-selecting.test.d.ts.map +0 -1
  124. package/dist/change-conflict/resolve-conflict-by-selecting.test.js +0 -104
  125. package/dist/change-conflict/resolve-conflict-by-selecting.test.js.map +0 -1
  126. package/dist/change-conflict/update-change-conflicts.d.ts +0 -2
  127. package/dist/change-conflict/update-change-conflicts.d.ts.map +0 -1
  128. package/dist/change-conflict/update-change-conflicts.js +0 -72
  129. package/dist/change-conflict/update-change-conflicts.js.map +0 -1
  130. package/dist/change-proposal/accept-change-proposal.d.ts +0 -7
  131. package/dist/change-proposal/accept-change-proposal.d.ts.map +0 -1
  132. package/dist/change-proposal/accept-change-proposal.js +0 -36
  133. package/dist/change-proposal/accept-change-proposal.js.map +0 -1
  134. package/dist/change-proposal/accept-change-proposal.test.d.ts +0 -2
  135. package/dist/change-proposal/accept-change-proposal.test.d.ts.map +0 -1
  136. package/dist/change-proposal/accept-change-proposal.test.js +0 -55
  137. package/dist/change-proposal/accept-change-proposal.test.js.map +0 -1
  138. package/dist/change-proposal/create-change-proposal.d.ts +0 -18
  139. package/dist/change-proposal/create-change-proposal.d.ts.map +0 -1
  140. package/dist/change-proposal/create-change-proposal.js +0 -37
  141. package/dist/change-proposal/create-change-proposal.js.map +0 -1
  142. package/dist/change-proposal/create-change-proposal.test.d.ts +0 -2
  143. package/dist/change-proposal/create-change-proposal.test.d.ts.map +0 -1
  144. package/dist/change-proposal/create-change-proposal.test.js +0 -70
  145. package/dist/change-proposal/create-change-proposal.test.js.map +0 -1
  146. package/dist/change-proposal/index.d.ts +0 -5
  147. package/dist/change-proposal/index.d.ts.map +0 -1
  148. package/dist/change-proposal/index.js +0 -5
  149. package/dist/change-proposal/index.js.map +0 -1
  150. package/dist/change-proposal/reject-change-proposal.d.ts +0 -7
  151. package/dist/change-proposal/reject-change-proposal.d.ts.map +0 -1
  152. package/dist/change-proposal/reject-change-proposal.js +0 -15
  153. package/dist/change-proposal/reject-change-proposal.js.map +0 -1
  154. package/dist/change-proposal/reject-change-proposal.test.d.ts +0 -2
  155. package/dist/change-proposal/reject-change-proposal.test.d.ts.map +0 -1
  156. package/dist/change-proposal/reject-change-proposal.test.js +0 -28
  157. package/dist/change-proposal/reject-change-proposal.test.js.map +0 -1
  158. package/dist/change-proposal/schema-definition.d.ts +0 -45
  159. package/dist/change-proposal/schema-definition.d.ts.map +0 -1
  160. package/dist/change-proposal/schema-definition.js +0 -34
  161. package/dist/change-proposal/schema-definition.js.map +0 -1
  162. package/dist/change-proposal/schema.test.d.ts +0 -2
  163. package/dist/change-proposal/schema.test.d.ts.map +0 -1
  164. package/dist/change-proposal/schema.test.js +0 -103
  165. package/dist/change-proposal/schema.test.js.map +0 -1
  166. package/dist/change-set/apply-change-set.d.ts +0 -10
  167. package/dist/change-set/apply-change-set.d.ts.map +0 -1
  168. package/dist/change-set/apply-change-set.js +0 -127
  169. package/dist/change-set/apply-change-set.js.map +0 -1
  170. package/dist/change-set/apply-change-set.test.d.ts +0 -2
  171. package/dist/change-set/apply-change-set.test.d.ts.map +0 -1
  172. package/dist/change-set/apply-change-set.test.js +0 -394
  173. package/dist/change-set/apply-change-set.test.js.map +0 -1
  174. package/dist/change-set/create-change-set.d.ts +0 -25
  175. package/dist/change-set/create-change-set.d.ts.map +0 -1
  176. package/dist/change-set/create-change-set.js +0 -73
  177. package/dist/change-set/create-change-set.js.map +0 -1
  178. package/dist/change-set/create-change-set.test.d.ts +0 -2
  179. package/dist/change-set/create-change-set.test.d.ts.map +0 -1
  180. package/dist/change-set/create-change-set.test.js +0 -100
  181. package/dist/change-set/create-change-set.test.js.map +0 -1
  182. package/dist/change-set/index.d.ts +0 -4
  183. package/dist/change-set/index.d.ts.map +0 -1
  184. package/dist/change-set/index.js +0 -4
  185. package/dist/change-set/index.js.map +0 -1
  186. package/dist/change-set/schema-definition.d.ts +0 -73
  187. package/dist/change-set/schema-definition.d.ts.map +0 -1
  188. package/dist/change-set/schema-definition.js +0 -72
  189. package/dist/change-set/schema-definition.js.map +0 -1
  190. package/dist/change-set/schema.test.d.ts +0 -2
  191. package/dist/change-set/schema.test.d.ts.map +0 -1
  192. package/dist/change-set/schema.test.js +0 -432
  193. package/dist/change-set/schema.test.js.map +0 -1
  194. package/dist/commit/index.d.ts +0 -2
  195. package/dist/commit/index.d.ts.map +0 -1
  196. package/dist/commit/index.js +0 -2
  197. package/dist/commit/index.js.map +0 -1
  198. package/dist/commit/schema-definition.d.ts +0 -97
  199. package/dist/commit/schema-definition.d.ts.map +0 -1
  200. package/dist/commit/schema-definition.js +0 -89
  201. package/dist/commit/schema-definition.js.map +0 -1
  202. package/dist/commit/schema.test.d.ts +0 -2
  203. package/dist/commit/schema.test.d.ts.map +0 -1
  204. package/dist/commit/schema.test.js +0 -295
  205. package/dist/commit/schema.test.js.map +0 -1
  206. package/dist/conversation/create-conversation-message.d.ts +0 -11
  207. package/dist/conversation/create-conversation-message.d.ts.map +0 -1
  208. package/dist/conversation/create-conversation-message.js +0 -59
  209. package/dist/conversation/create-conversation-message.js.map +0 -1
  210. package/dist/conversation/create-conversation-message.test.d.ts +0 -2
  211. package/dist/conversation/create-conversation-message.test.d.ts.map +0 -1
  212. package/dist/conversation/create-conversation-message.test.js +0 -98
  213. package/dist/conversation/create-conversation-message.test.js.map +0 -1
  214. package/dist/conversation/create-conversation.d.ts +0 -39
  215. package/dist/conversation/create-conversation.d.ts.map +0 -1
  216. package/dist/conversation/create-conversation.js +0 -80
  217. package/dist/conversation/create-conversation.js.map +0 -1
  218. package/dist/conversation/create-conversation.test.d.ts +0 -2
  219. package/dist/conversation/create-conversation.test.d.ts.map +0 -1
  220. package/dist/conversation/create-conversation.test.js +0 -157
  221. package/dist/conversation/create-conversation.test.js.map +0 -1
  222. package/dist/conversation/index.d.ts +0 -4
  223. package/dist/conversation/index.d.ts.map +0 -1
  224. package/dist/conversation/index.js +0 -4
  225. package/dist/conversation/index.js.map +0 -1
  226. package/dist/conversation/schema-definition.d.ts +0 -64
  227. package/dist/conversation/schema-definition.d.ts.map +0 -1
  228. package/dist/conversation/schema-definition.js +0 -59
  229. package/dist/conversation/schema-definition.js.map +0 -1
  230. package/dist/database/graph-traversal-mode.d.ts +0 -72
  231. package/dist/database/graph-traversal-mode.d.ts.map +0 -1
  232. package/dist/database/graph-traversal-mode.js +0 -2
  233. package/dist/database/graph-traversal-mode.js.map +0 -1
  234. package/dist/database/index.d.ts +0 -4
  235. package/dist/database/index.d.ts.map +0 -1
  236. package/dist/database/index.js +0 -4
  237. package/dist/database/index.js.map +0 -1
  238. package/dist/database/init-db.d.ts +0 -35
  239. package/dist/database/init-db.d.ts.map +0 -1
  240. package/dist/database/init-db.js +0 -127
  241. package/dist/database/init-db.js.map +0 -1
  242. package/dist/database/kysely/index.d.ts +0 -2
  243. package/dist/database/kysely/index.d.ts.map +0 -1
  244. package/dist/database/kysely/index.js +0 -2
  245. package/dist/database/kysely/index.js.map +0 -1
  246. package/dist/database/kysely/json-column-config.d.ts +0 -6
  247. package/dist/database/kysely/json-column-config.d.ts.map +0 -1
  248. package/dist/database/kysely/json-column-config.js +0 -55
  249. package/dist/database/kysely/json-column-config.js.map +0 -1
  250. package/dist/database/kysely/plugins/json-column-plugin.d.ts +0 -7
  251. package/dist/database/kysely/plugins/json-column-plugin.d.ts.map +0 -1
  252. package/dist/database/kysely/plugins/json-column-plugin.js +0 -216
  253. package/dist/database/kysely/plugins/json-column-plugin.js.map +0 -1
  254. package/dist/database/kysely/plugins/json-column-plugin.test.d.ts +0 -2
  255. package/dist/database/kysely/plugins/json-column-plugin.test.d.ts.map +0 -1
  256. package/dist/database/kysely/plugins/json-column-plugin.test.js +0 -441
  257. package/dist/database/kysely/plugins/json-column-plugin.test.js.map +0 -1
  258. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.d.ts +0 -15
  259. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.d.ts.map +0 -1
  260. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.js +0 -31
  261. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.js.map +0 -1
  262. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.d.ts +0 -2
  263. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.d.ts.map +0 -1
  264. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.js +0 -51
  265. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.js.map +0 -1
  266. package/dist/database/kysely/plugins.d.ts +0 -3
  267. package/dist/database/kysely/plugins.d.ts.map +0 -1
  268. package/dist/database/kysely/plugins.js +0 -15
  269. package/dist/database/kysely/plugins.js.map +0 -1
  270. package/dist/database/nano-id.d.ts +0 -24
  271. package/dist/database/nano-id.d.ts.map +0 -1
  272. package/dist/database/nano-id.js +0 -84
  273. package/dist/database/nano-id.js.map +0 -1
  274. package/dist/database/nano-id.test.d.ts +0 -2
  275. package/dist/database/nano-id.test.d.ts.map +0 -1
  276. package/dist/database/nano-id.test.js +0 -38
  277. package/dist/database/nano-id.test.js.map +0 -1
  278. package/dist/database/schema-view-map.d.ts +0 -3
  279. package/dist/database/schema-view-map.d.ts.map +0 -1
  280. package/dist/database/schema-view-map.js +0 -35
  281. package/dist/database/schema-view-map.js.map +0 -1
  282. package/dist/database/schema.d.ts +0 -89
  283. package/dist/database/schema.d.ts.map +0 -1
  284. package/dist/database/schema.js +0 -21
  285. package/dist/database/schema.js.map +0 -1
  286. package/dist/database/sqlite/content-from-database.d.ts +0 -10
  287. package/dist/database/sqlite/content-from-database.d.ts.map +0 -1
  288. package/dist/database/sqlite/content-from-database.js +0 -11
  289. package/dist/database/sqlite/content-from-database.js.map +0 -1
  290. package/dist/database/sqlite/create-in-memory-database.d.ts +0 -23
  291. package/dist/database/sqlite/create-in-memory-database.d.ts.map +0 -1
  292. package/dist/database/sqlite/create-in-memory-database.js +0 -44
  293. package/dist/database/sqlite/create-in-memory-database.js.map +0 -1
  294. package/dist/database/sqlite/environment-dialect.d.ts +0 -21
  295. package/dist/database/sqlite/environment-dialect.d.ts.map +0 -1
  296. package/dist/database/sqlite/environment-dialect.js +0 -198
  297. package/dist/database/sqlite/environment-dialect.js.map +0 -1
  298. package/dist/database/sqlite/environment-dialect.test.d.ts +0 -2
  299. package/dist/database/sqlite/environment-dialect.test.d.ts.map +0 -1
  300. package/dist/database/sqlite/environment-dialect.test.js +0 -66
  301. package/dist/database/sqlite/environment-dialect.test.js.map +0 -1
  302. package/dist/database/sqlite/import-database.d.ts +0 -18
  303. package/dist/database/sqlite/import-database.d.ts.map +0 -1
  304. package/dist/database/sqlite/import-database.js +0 -24
  305. package/dist/database/sqlite/import-database.js.map +0 -1
  306. package/dist/database/sqlite/index.d.ts +0 -8
  307. package/dist/database/sqlite/index.d.ts.map +0 -1
  308. package/dist/database/sqlite/index.js +0 -7
  309. package/dist/database/sqlite/index.js.map +0 -1
  310. package/dist/database/sqlite/kysely-driver/connection-mutex.d.ts +0 -6
  311. package/dist/database/sqlite/kysely-driver/connection-mutex.d.ts.map +0 -1
  312. package/dist/database/sqlite/kysely-driver/connection-mutex.js +0 -19
  313. package/dist/database/sqlite/kysely-driver/connection-mutex.js.map +0 -1
  314. package/dist/database/sqlite/kysely-driver/index.d.ts +0 -5
  315. package/dist/database/sqlite/kysely-driver/index.d.ts.map +0 -1
  316. package/dist/database/sqlite/kysely-driver/index.js +0 -4
  317. package/dist/database/sqlite/kysely-driver/index.js.map +0 -1
  318. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.d.ts +0 -9
  319. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.d.ts.map +0 -1
  320. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.js +0 -43
  321. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.js.map +0 -1
  322. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.d.ts +0 -19
  323. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.d.ts.map +0 -1
  324. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.js +0 -2
  325. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.js.map +0 -1
  326. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.d.ts +0 -14
  327. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.d.ts.map +0 -1
  328. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.js +0 -45
  329. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.js.map +0 -1
  330. package/dist/database/sqlite/lix-dialect.d.ts +0 -23
  331. package/dist/database/sqlite/lix-dialect.d.ts.map +0 -1
  332. package/dist/database/sqlite/lix-dialect.js +0 -24
  333. package/dist/database/sqlite/lix-dialect.js.map +0 -1
  334. package/dist/database/sqlite/load-database-in-memory.d.ts +0 -13
  335. package/dist/database/sqlite/load-database-in-memory.d.ts.map +0 -1
  336. package/dist/database/sqlite/load-database-in-memory.js +0 -23
  337. package/dist/database/sqlite/load-database-in-memory.js.map +0 -1
  338. package/dist/database/sqlite/sqlite-wasm-binary.d.ts +0 -2
  339. package/dist/database/sqlite/sqlite-wasm-binary.js +0 -42835
  340. package/dist/dependency/kysely/helpers/sqlite.d.ts +0 -5
  341. package/dist/dependency/kysely/helpers/sqlite.d.ts.map +0 -1
  342. package/dist/dependency/kysely/helpers/sqlite.js +0 -5
  343. package/dist/dependency/kysely/helpers/sqlite.js.map +0 -1
  344. package/dist/dependency/kysely/index.d.ts +0 -9
  345. package/dist/dependency/kysely/index.d.ts.map +0 -1
  346. package/dist/dependency/kysely/index.js +0 -9
  347. package/dist/dependency/kysely/index.js.map +0 -1
  348. package/dist/dependency/zettel-ast/index.d.ts +0 -11
  349. package/dist/dependency/zettel-ast/index.d.ts.map +0 -1
  350. package/dist/dependency/zettel-ast/index.js +0 -11
  351. package/dist/dependency/zettel-ast/index.js.map +0 -1
  352. package/dist/diff/index.d.ts +0 -3
  353. package/dist/diff/index.d.ts.map +0 -1
  354. package/dist/diff/index.js +0 -3
  355. package/dist/diff/index.js.map +0 -1
  356. package/dist/diff/select-commit-diff.bench.d.ts +0 -2
  357. package/dist/diff/select-commit-diff.bench.d.ts.map +0 -1
  358. package/dist/diff/select-commit-diff.bench.js +0 -136
  359. package/dist/diff/select-commit-diff.bench.js.map +0 -1
  360. package/dist/diff/select-commit-diff.d.ts +0 -56
  361. package/dist/diff/select-commit-diff.d.ts.map +0 -1
  362. package/dist/diff/select-commit-diff.js +0 -212
  363. package/dist/diff/select-commit-diff.js.map +0 -1
  364. package/dist/diff/select-commit-diff.test.d.ts +0 -2
  365. package/dist/diff/select-commit-diff.test.d.ts.map +0 -1
  366. package/dist/diff/select-commit-diff.test.js +0 -52
  367. package/dist/diff/select-commit-diff.test.js.map +0 -1
  368. package/dist/diff/select-working-diff.bench.d.ts +0 -2
  369. package/dist/diff/select-working-diff.bench.d.ts.map +0 -1
  370. package/dist/diff/select-working-diff.bench.js +0 -82
  371. package/dist/diff/select-working-diff.bench.js.map +0 -1
  372. package/dist/diff/select-working-diff.d.ts +0 -105
  373. package/dist/diff/select-working-diff.d.ts.map +0 -1
  374. package/dist/diff/select-working-diff.js +0 -95
  375. package/dist/diff/select-working-diff.js.map +0 -1
  376. package/dist/diff/select-working-diff.test.d.ts +0 -2
  377. package/dist/diff/select-working-diff.test.d.ts.map +0 -1
  378. package/dist/diff/select-working-diff.test.js +0 -231
  379. package/dist/diff/select-working-diff.test.js.map +0 -1
  380. package/dist/engine/boot.d.ts +0 -90
  381. package/dist/engine/boot.d.ts.map +0 -1
  382. package/dist/engine/boot.js +0 -149
  383. package/dist/engine/boot.js.map +0 -1
  384. package/dist/engine/boot.test.d.ts +0 -2
  385. package/dist/engine/boot.test.d.ts.map +0 -1
  386. package/dist/engine/boot.test.js +0 -75
  387. package/dist/engine/boot.test.js.map +0 -1
  388. package/dist/engine/cel-environment/cel-environment.d.ts +0 -17
  389. package/dist/engine/cel-environment/cel-environment.d.ts.map +0 -1
  390. package/dist/engine/cel-environment/cel-environment.js +0 -54
  391. package/dist/engine/cel-environment/cel-environment.js.map +0 -1
  392. package/dist/engine/cel-environment/cel-environment.test.d.ts +0 -2
  393. package/dist/engine/cel-environment/cel-environment.test.d.ts.map +0 -1
  394. package/dist/engine/cel-environment/cel-environment.test.js +0 -19
  395. package/dist/engine/cel-environment/cel-environment.test.js.map +0 -1
  396. package/dist/engine/deterministic-mode/is-deterministic-mode.d.ts +0 -36
  397. package/dist/engine/deterministic-mode/is-deterministic-mode.d.ts.map +0 -1
  398. package/dist/engine/deterministic-mode/is-deterministic-mode.js +0 -80
  399. package/dist/engine/deterministic-mode/is-deterministic-mode.js.map +0 -1
  400. package/dist/engine/deterministic-mode/is-deterministic-mode.test.d.ts +0 -2
  401. package/dist/engine/deterministic-mode/is-deterministic-mode.test.d.ts.map +0 -1
  402. package/dist/engine/deterministic-mode/is-deterministic-mode.test.js +0 -95
  403. package/dist/engine/deterministic-mode/is-deterministic-mode.test.js.map +0 -1
  404. package/dist/engine/deterministic-mode/options.d.ts +0 -48
  405. package/dist/engine/deterministic-mode/options.d.ts.map +0 -1
  406. package/dist/engine/deterministic-mode/options.js +0 -47
  407. package/dist/engine/deterministic-mode/options.js.map +0 -1
  408. package/dist/engine/deterministic-mode/options.test.d.ts +0 -2
  409. package/dist/engine/deterministic-mode/options.test.d.ts.map +0 -1
  410. package/dist/engine/deterministic-mode/options.test.js +0 -111
  411. package/dist/engine/deterministic-mode/options.test.js.map +0 -1
  412. package/dist/engine/entity-views/build-json-object-entries.d.ts +0 -12
  413. package/dist/engine/entity-views/build-json-object-entries.d.ts.map +0 -1
  414. package/dist/engine/entity-views/build-json-object-entries.js +0 -37
  415. package/dist/engine/entity-views/build-json-object-entries.js.map +0 -1
  416. package/dist/engine/entity-views/build-json-object-entries.test.d.ts +0 -2
  417. package/dist/engine/entity-views/build-json-object-entries.test.d.ts.map +0 -1
  418. package/dist/engine/entity-views/build-json-object-entries.test.js +0 -35
  419. package/dist/engine/entity-views/build-json-object-entries.test.js.map +0 -1
  420. package/dist/engine/entity-views/entity-state-by-version.d.ts +0 -238
  421. package/dist/engine/entity-views/entity-state-by-version.d.ts.map +0 -1
  422. package/dist/engine/entity-views/entity-state-by-version.js +0 -2
  423. package/dist/engine/entity-views/entity-state-by-version.js.map +0 -1
  424. package/dist/engine/entity-views/entity-state-history.d.ts +0 -189
  425. package/dist/engine/entity-views/entity-state-history.d.ts.map +0 -1
  426. package/dist/engine/entity-views/entity-state-history.js +0 -2
  427. package/dist/engine/entity-views/entity-state-history.js.map +0 -1
  428. package/dist/engine/entity-views/entity-state.d.ts +0 -218
  429. package/dist/engine/entity-views/entity-state.d.ts.map +0 -1
  430. package/dist/engine/entity-views/entity-state.js +0 -2
  431. package/dist/engine/entity-views/entity-state.js.map +0 -1
  432. package/dist/engine/entity-views/entity-view-builder.d.ts +0 -34
  433. package/dist/engine/entity-views/entity-view-builder.d.ts.map +0 -1
  434. package/dist/engine/entity-views/entity-view-builder.js +0 -4
  435. package/dist/engine/entity-views/entity-view-builder.js.map +0 -1
  436. package/dist/engine/entity-views/index.d.ts +0 -2
  437. package/dist/engine/entity-views/index.d.ts.map +0 -1
  438. package/dist/engine/entity-views/index.js +0 -2
  439. package/dist/engine/entity-views/index.js.map +0 -1
  440. package/dist/engine/entity-views/types.d.ts +0 -309
  441. package/dist/engine/entity-views/types.d.ts.map +0 -1
  442. package/dist/engine/entity-views/types.js +0 -2
  443. package/dist/engine/entity-views/types.js.map +0 -1
  444. package/dist/engine/entity-views/types.test.d.ts +0 -2
  445. package/dist/engine/entity-views/types.test.d.ts.map +0 -1
  446. package/dist/engine/entity-views/types.test.js +0 -62
  447. package/dist/engine/entity-views/types.test.js.map +0 -1
  448. package/dist/engine/execute-sync.d.ts +0 -5
  449. package/dist/engine/execute-sync.d.ts.map +0 -1
  450. package/dist/engine/execute-sync.js +0 -38
  451. package/dist/engine/execute-sync.js.map +0 -1
  452. package/dist/engine/execute-sync.test.d.ts +0 -2
  453. package/dist/engine/execute-sync.test.d.ts.map +0 -1
  454. package/dist/engine/execute-sync.test.js +0 -64
  455. package/dist/engine/execute-sync.test.js.map +0 -1
  456. package/dist/engine/explain-query.d.ts +0 -15
  457. package/dist/engine/explain-query.d.ts.map +0 -1
  458. package/dist/engine/explain-query.js +0 -66
  459. package/dist/engine/explain-query.js.map +0 -1
  460. package/dist/engine/explain-query.test.d.ts +0 -2
  461. package/dist/engine/explain-query.test.d.ts.map +0 -1
  462. package/dist/engine/explain-query.test.js +0 -17
  463. package/dist/engine/explain-query.test.js.map +0 -1
  464. package/dist/engine/functions/function-registry.d.ts +0 -20
  465. package/dist/engine/functions/function-registry.d.ts.map +0 -1
  466. package/dist/engine/functions/function-registry.js +0 -25
  467. package/dist/engine/functions/function-registry.js.map +0 -1
  468. package/dist/engine/functions/generate-human-id.d.ts +0 -43
  469. package/dist/engine/functions/generate-human-id.d.ts.map +0 -1
  470. package/dist/engine/functions/generate-human-id.js +0 -335
  471. package/dist/engine/functions/generate-human-id.js.map +0 -1
  472. package/dist/engine/functions/generate-human-id.test.d.ts +0 -2
  473. package/dist/engine/functions/generate-human-id.test.d.ts.map +0 -1
  474. package/dist/engine/functions/generate-human-id.test.js +0 -156
  475. package/dist/engine/functions/generate-human-id.test.js.map +0 -1
  476. package/dist/engine/functions/index.d.ts +0 -7
  477. package/dist/engine/functions/index.d.ts.map +0 -1
  478. package/dist/engine/functions/index.js +0 -7
  479. package/dist/engine/functions/index.js.map +0 -1
  480. package/dist/engine/functions/nano-id.bench.d.ts +0 -2
  481. package/dist/engine/functions/nano-id.bench.d.ts.map +0 -1
  482. package/dist/engine/functions/nano-id.bench.js +0 -48
  483. package/dist/engine/functions/nano-id.bench.js.map +0 -1
  484. package/dist/engine/functions/nano-id.d.ts +0 -69
  485. package/dist/engine/functions/nano-id.d.ts.map +0 -1
  486. package/dist/engine/functions/nano-id.js +0 -170
  487. package/dist/engine/functions/nano-id.js.map +0 -1
  488. package/dist/engine/functions/nano-id.test.d.ts +0 -2
  489. package/dist/engine/functions/nano-id.test.d.ts.map +0 -1
  490. package/dist/engine/functions/nano-id.test.js +0 -163
  491. package/dist/engine/functions/nano-id.test.js.map +0 -1
  492. package/dist/engine/functions/random.d.ts +0 -57
  493. package/dist/engine/functions/random.d.ts.map +0 -1
  494. package/dist/engine/functions/random.js +0 -214
  495. package/dist/engine/functions/random.js.map +0 -1
  496. package/dist/engine/functions/random.test.d.ts +0 -2
  497. package/dist/engine/functions/random.test.d.ts.map +0 -1
  498. package/dist/engine/functions/random.test.js +0 -244
  499. package/dist/engine/functions/random.test.js.map +0 -1
  500. package/dist/engine/functions/register-builtins.d.ts +0 -9
  501. package/dist/engine/functions/register-builtins.d.ts.map +0 -1
  502. package/dist/engine/functions/register-builtins.js +0 -110
  503. package/dist/engine/functions/register-builtins.js.map +0 -1
  504. package/dist/engine/functions/sequence.d.ts +0 -77
  505. package/dist/engine/functions/sequence.d.ts.map +0 -1
  506. package/dist/engine/functions/sequence.js +0 -136
  507. package/dist/engine/functions/sequence.js.map +0 -1
  508. package/dist/engine/functions/sequence.test.d.ts +0 -2
  509. package/dist/engine/functions/sequence.test.d.ts.map +0 -1
  510. package/dist/engine/functions/sequence.test.js +0 -77
  511. package/dist/engine/functions/sequence.test.js.map +0 -1
  512. package/dist/engine/functions/timestamp.d.ts +0 -44
  513. package/dist/engine/functions/timestamp.d.ts.map +0 -1
  514. package/dist/engine/functions/timestamp.js +0 -70
  515. package/dist/engine/functions/timestamp.js.map +0 -1
  516. package/dist/engine/functions/timestamp.test.d.ts +0 -2
  517. package/dist/engine/functions/timestamp.test.d.ts.map +0 -1
  518. package/dist/engine/functions/timestamp.test.js +0 -147
  519. package/dist/engine/functions/timestamp.test.js.map +0 -1
  520. package/dist/engine/functions/uuid-v7.d.ts +0 -50
  521. package/dist/engine/functions/uuid-v7.d.ts.map +0 -1
  522. package/dist/engine/functions/uuid-v7.js +0 -75
  523. package/dist/engine/functions/uuid-v7.js.map +0 -1
  524. package/dist/engine/functions/uuid-v7.test.d.ts +0 -2
  525. package/dist/engine/functions/uuid-v7.test.d.ts.map +0 -1
  526. package/dist/engine/functions/uuid-v7.test.js +0 -114
  527. package/dist/engine/functions/uuid-v7.test.js.map +0 -1
  528. package/dist/engine/index.d.ts +0 -2
  529. package/dist/engine/index.d.ts.map +0 -1
  530. package/dist/engine/index.js +0 -2
  531. package/dist/engine/index.js.map +0 -1
  532. package/dist/engine/internal-query-builder.d.ts +0 -26
  533. package/dist/engine/internal-query-builder.d.ts.map +0 -1
  534. package/dist/engine/internal-query-builder.js +0 -34
  535. package/dist/engine/internal-query-builder.js.map +0 -1
  536. package/dist/engine/preprocessor/create-preprocessor.d.ts +0 -18
  537. package/dist/engine/preprocessor/create-preprocessor.d.ts.map +0 -1
  538. package/dist/engine/preprocessor/create-preprocessor.js +0 -217
  539. package/dist/engine/preprocessor/create-preprocessor.js.map +0 -1
  540. package/dist/engine/preprocessor/create-preprocessor.test.d.ts +0 -2
  541. package/dist/engine/preprocessor/create-preprocessor.test.d.ts.map +0 -1
  542. package/dist/engine/preprocessor/create-preprocessor.test.js +0 -216
  543. package/dist/engine/preprocessor/create-preprocessor.test.js.map +0 -1
  544. package/dist/engine/preprocessor/entity-views/delete.d.ts +0 -3
  545. package/dist/engine/preprocessor/entity-views/delete.d.ts.map +0 -1
  546. package/dist/engine/preprocessor/entity-views/delete.js +0 -235
  547. package/dist/engine/preprocessor/entity-views/delete.js.map +0 -1
  548. package/dist/engine/preprocessor/entity-views/delete.test.d.ts +0 -2
  549. package/dist/engine/preprocessor/entity-views/delete.test.d.ts.map +0 -1
  550. package/dist/engine/preprocessor/entity-views/delete.test.js +0 -700
  551. package/dist/engine/preprocessor/entity-views/delete.test.js.map +0 -1
  552. package/dist/engine/preprocessor/entity-views/insert.d.ts +0 -3
  553. package/dist/engine/preprocessor/entity-views/insert.d.ts.map +0 -1
  554. package/dist/engine/preprocessor/entity-views/insert.js +0 -675
  555. package/dist/engine/preprocessor/entity-views/insert.js.map +0 -1
  556. package/dist/engine/preprocessor/entity-views/insert.test.d.ts +0 -2
  557. package/dist/engine/preprocessor/entity-views/insert.test.d.ts.map +0 -1
  558. package/dist/engine/preprocessor/entity-views/insert.test.js +0 -1014
  559. package/dist/engine/preprocessor/entity-views/insert.test.js.map +0 -1
  560. package/dist/engine/preprocessor/entity-views/select.bench.d.ts +0 -2
  561. package/dist/engine/preprocessor/entity-views/select.bench.d.ts.map +0 -1
  562. package/dist/engine/preprocessor/entity-views/select.bench.js +0 -145
  563. package/dist/engine/preprocessor/entity-views/select.bench.js.map +0 -1
  564. package/dist/engine/preprocessor/entity-views/select.d.ts +0 -6
  565. package/dist/engine/preprocessor/entity-views/select.d.ts.map +0 -1
  566. package/dist/engine/preprocessor/entity-views/select.js +0 -1306
  567. package/dist/engine/preprocessor/entity-views/select.js.map +0 -1
  568. package/dist/engine/preprocessor/entity-views/select.test.d.ts +0 -2
  569. package/dist/engine/preprocessor/entity-views/select.test.d.ts.map +0 -1
  570. package/dist/engine/preprocessor/entity-views/select.test.js +0 -320
  571. package/dist/engine/preprocessor/entity-views/select.test.js.map +0 -1
  572. package/dist/engine/preprocessor/entity-views/shared.d.ts +0 -165
  573. package/dist/engine/preprocessor/entity-views/shared.d.ts.map +0 -1
  574. package/dist/engine/preprocessor/entity-views/shared.js +0 -1080
  575. package/dist/engine/preprocessor/entity-views/shared.js.map +0 -1
  576. package/dist/engine/preprocessor/entity-views/update.d.ts +0 -3
  577. package/dist/engine/preprocessor/entity-views/update.d.ts.map +0 -1
  578. package/dist/engine/preprocessor/entity-views/update.js +0 -527
  579. package/dist/engine/preprocessor/entity-views/update.js.map +0 -1
  580. package/dist/engine/preprocessor/entity-views/update.test.d.ts +0 -2
  581. package/dist/engine/preprocessor/entity-views/update.test.d.ts.map +0 -1
  582. package/dist/engine/preprocessor/entity-views/update.test.js +0 -356
  583. package/dist/engine/preprocessor/entity-views/update.test.js.map +0 -1
  584. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.d.ts +0 -38
  585. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.d.ts.map +0 -1
  586. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.js +0 -296
  587. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.js.map +0 -1
  588. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.d.ts +0 -2
  589. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.d.ts.map +0 -1
  590. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.js +0 -80
  591. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.js.map +0 -1
  592. package/dist/engine/preprocessor/sql-parser/ast-helpers.d.ts +0 -110
  593. package/dist/engine/preprocessor/sql-parser/ast-helpers.d.ts.map +0 -1
  594. package/dist/engine/preprocessor/sql-parser/ast-helpers.js +0 -196
  595. package/dist/engine/preprocessor/sql-parser/ast-helpers.js.map +0 -1
  596. package/dist/engine/preprocessor/sql-parser/column-usage.d.ts +0 -14
  597. package/dist/engine/preprocessor/sql-parser/column-usage.d.ts.map +0 -1
  598. package/dist/engine/preprocessor/sql-parser/column-usage.js +0 -300
  599. package/dist/engine/preprocessor/sql-parser/column-usage.js.map +0 -1
  600. package/dist/engine/preprocessor/sql-parser/compile.d.ts +0 -30
  601. package/dist/engine/preprocessor/sql-parser/compile.d.ts.map +0 -1
  602. package/dist/engine/preprocessor/sql-parser/compile.js +0 -719
  603. package/dist/engine/preprocessor/sql-parser/compile.js.map +0 -1
  604. package/dist/engine/preprocessor/sql-parser/compile.test.d.ts +0 -2
  605. package/dist/engine/preprocessor/sql-parser/compile.test.d.ts.map +0 -1
  606. package/dist/engine/preprocessor/sql-parser/compile.test.js +0 -100
  607. package/dist/engine/preprocessor/sql-parser/compile.test.js.map +0 -1
  608. package/dist/engine/preprocessor/sql-parser/cst.d.ts +0 -49
  609. package/dist/engine/preprocessor/sql-parser/cst.d.ts.map +0 -1
  610. package/dist/engine/preprocessor/sql-parser/cst.js +0 -768
  611. package/dist/engine/preprocessor/sql-parser/cst.js.map +0 -1
  612. package/dist/engine/preprocessor/sql-parser/lexer.d.ts +0 -93
  613. package/dist/engine/preprocessor/sql-parser/lexer.d.ts.map +0 -1
  614. package/dist/engine/preprocessor/sql-parser/lexer.js +0 -517
  615. package/dist/engine/preprocessor/sql-parser/lexer.js.map +0 -1
  616. package/dist/engine/preprocessor/sql-parser/nodes.d.ts +0 -268
  617. package/dist/engine/preprocessor/sql-parser/nodes.d.ts.map +0 -1
  618. package/dist/engine/preprocessor/sql-parser/nodes.js +0 -20
  619. package/dist/engine/preprocessor/sql-parser/nodes.js.map +0 -1
  620. package/dist/engine/preprocessor/sql-parser/parse.d.ts +0 -15
  621. package/dist/engine/preprocessor/sql-parser/parse.d.ts.map +0 -1
  622. package/dist/engine/preprocessor/sql-parser/parse.js +0 -1503
  623. package/dist/engine/preprocessor/sql-parser/parse.js.map +0 -1
  624. package/dist/engine/preprocessor/sql-parser/parse.test.d.ts +0 -2
  625. package/dist/engine/preprocessor/sql-parser/parse.test.d.ts.map +0 -1
  626. package/dist/engine/preprocessor/sql-parser/parse.test.js +0 -1483
  627. package/dist/engine/preprocessor/sql-parser/parse.test.js.map +0 -1
  628. package/dist/engine/preprocessor/sql-parser/visitor.d.ts +0 -80
  629. package/dist/engine/preprocessor/sql-parser/visitor.d.ts.map +0 -1
  630. package/dist/engine/preprocessor/sql-parser/visitor.js +0 -875
  631. package/dist/engine/preprocessor/sql-parser/visitor.js.map +0 -1
  632. package/dist/engine/preprocessor/sql-parser/visitor.test.d.ts +0 -2
  633. package/dist/engine/preprocessor/sql-parser/visitor.test.d.ts.map +0 -1
  634. package/dist/engine/preprocessor/sql-parser/visitor.test.js +0 -142
  635. package/dist/engine/preprocessor/sql-parser/visitor.test.js.map +0 -1
  636. package/dist/engine/preprocessor/steps/cache-populator.d.ts +0 -12
  637. package/dist/engine/preprocessor/steps/cache-populator.d.ts.map +0 -1
  638. package/dist/engine/preprocessor/steps/cache-populator.js +0 -603
  639. package/dist/engine/preprocessor/steps/cache-populator.js.map +0 -1
  640. package/dist/engine/preprocessor/steps/cache-populator.test.d.ts +0 -2
  641. package/dist/engine/preprocessor/steps/cache-populator.test.d.ts.map +0 -1
  642. package/dist/engine/preprocessor/steps/cache-populator.test.js +0 -95
  643. package/dist/engine/preprocessor/steps/cache-populator.test.js.map +0 -1
  644. package/dist/engine/preprocessor/steps/expand-sql-views.d.ts +0 -13
  645. package/dist/engine/preprocessor/steps/expand-sql-views.d.ts.map +0 -1
  646. package/dist/engine/preprocessor/steps/expand-sql-views.js +0 -894
  647. package/dist/engine/preprocessor/steps/expand-sql-views.js.map +0 -1
  648. package/dist/engine/preprocessor/steps/expand-sql-views.test.d.ts +0 -2
  649. package/dist/engine/preprocessor/steps/expand-sql-views.test.d.ts.map +0 -1
  650. package/dist/engine/preprocessor/steps/expand-sql-views.test.js +0 -1177
  651. package/dist/engine/preprocessor/steps/expand-sql-views.test.js.map +0 -1
  652. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.d.ts +0 -7
  653. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.d.ts.map +0 -1
  654. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.js +0 -190
  655. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.js.map +0 -1
  656. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.d.ts +0 -2
  657. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.d.ts.map +0 -1
  658. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.js +0 -74
  659. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.js.map +0 -1
  660. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.d.ts +0 -2
  661. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.d.ts.map +0 -1
  662. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.js +0 -64
  663. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.js.map +0 -1
  664. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.d.ts +0 -16
  665. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.d.ts.map +0 -1
  666. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.js +0 -2305
  667. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.js.map +0 -1
  668. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.d.ts +0 -2
  669. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.d.ts.map +0 -1
  670. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.js +0 -975
  671. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.js.map +0 -1
  672. package/dist/engine/preprocessor/types.d.ts +0 -93
  673. package/dist/engine/preprocessor/types.d.ts.map +0 -1
  674. package/dist/engine/preprocessor/types.js +0 -2
  675. package/dist/engine/preprocessor/types.js.map +0 -1
  676. package/dist/engine/sql-parser/tokenizer.d.ts +0 -60
  677. package/dist/engine/sql-parser/tokenizer.d.ts.map +0 -1
  678. package/dist/engine/sql-parser/tokenizer.js +0 -188
  679. package/dist/engine/sql-parser/tokenizer.js.map +0 -1
  680. package/dist/engine/sql-parser/tokenizer.test.d.ts +0 -2
  681. package/dist/engine/sql-parser/tokenizer.test.d.ts.map +0 -1
  682. package/dist/engine/sql-parser/tokenizer.test.js +0 -252
  683. package/dist/engine/sql-parser/tokenizer.test.js.map +0 -1
  684. package/dist/engine/with-runtime-cache.d.ts +0 -27
  685. package/dist/engine/with-runtime-cache.d.ts.map +0 -1
  686. package/dist/engine/with-runtime-cache.js +0 -140
  687. package/dist/engine/with-runtime-cache.js.map +0 -1
  688. package/dist/engine/with-runtime-cache.test.d.ts +0 -2
  689. package/dist/engine/with-runtime-cache.test.d.ts.map +0 -1
  690. package/dist/engine/with-runtime-cache.test.js +0 -129
  691. package/dist/engine/with-runtime-cache.test.js.map +0 -1
  692. package/dist/entity/conversation/attach-conversation.d.ts +0 -49
  693. package/dist/entity/conversation/attach-conversation.d.ts.map +0 -1
  694. package/dist/entity/conversation/attach-conversation.js +0 -74
  695. package/dist/entity/conversation/attach-conversation.js.map +0 -1
  696. package/dist/entity/conversation/attach-conversation.test.d.ts +0 -2
  697. package/dist/entity/conversation/attach-conversation.test.d.ts.map +0 -1
  698. package/dist/entity/conversation/attach-conversation.test.js +0 -220
  699. package/dist/entity/conversation/attach-conversation.test.js.map +0 -1
  700. package/dist/entity/conversation/schema-definition.d.ts +0 -43
  701. package/dist/entity/conversation/schema-definition.d.ts.map +0 -1
  702. package/dist/entity/conversation/schema-definition.js +0 -44
  703. package/dist/entity/conversation/schema-definition.js.map +0 -1
  704. package/dist/entity/conversation/schema.test.d.ts +0 -2
  705. package/dist/entity/conversation/schema.test.d.ts.map +0 -1
  706. package/dist/entity/conversation/schema.test.js +0 -91
  707. package/dist/entity/conversation/schema.test.js.map +0 -1
  708. package/dist/entity/eb-entity.d.ts +0 -76
  709. package/dist/entity/eb-entity.d.ts.map +0 -1
  710. package/dist/entity/eb-entity.js +0 -156
  711. package/dist/entity/eb-entity.js.map +0 -1
  712. package/dist/entity/eb-entity.test.d.ts +0 -2
  713. package/dist/entity/eb-entity.test.d.ts.map +0 -1
  714. package/dist/entity/eb-entity.test.js +0 -650
  715. package/dist/entity/eb-entity.test.js.map +0 -1
  716. package/dist/entity/index.d.ts +0 -7
  717. package/dist/entity/index.d.ts.map +0 -1
  718. package/dist/entity/index.js +0 -4
  719. package/dist/entity/index.js.map +0 -1
  720. package/dist/entity/label/attach-label.d.ts +0 -79
  721. package/dist/entity/label/attach-label.d.ts.map +0 -1
  722. package/dist/entity/label/attach-label.js +0 -144
  723. package/dist/entity/label/attach-label.js.map +0 -1
  724. package/dist/entity/label/attach-label.test.d.ts +0 -2
  725. package/dist/entity/label/attach-label.test.d.ts.map +0 -1
  726. package/dist/entity/label/attach-label.test.js +0 -295
  727. package/dist/entity/label/attach-label.test.js.map +0 -1
  728. package/dist/entity/label/schema-definition.d.ts +0 -43
  729. package/dist/entity/label/schema-definition.d.ts.map +0 -1
  730. package/dist/entity/label/schema-definition.js +0 -39
  731. package/dist/entity/label/schema-definition.js.map +0 -1
  732. package/dist/entity/label/schema.test.d.ts +0 -2
  733. package/dist/entity/label/schema.test.d.ts.map +0 -1
  734. package/dist/entity/label/schema.test.js +0 -829
  735. package/dist/entity/label/schema.test.js.map +0 -1
  736. package/dist/entity/types.d.ts +0 -11
  737. package/dist/entity/types.d.ts.map +0 -1
  738. package/dist/entity/types.js +0 -2
  739. package/dist/entity/types.js.map +0 -1
  740. package/dist/environment/api.d.ts +0 -38
  741. package/dist/environment/api.d.ts.map +0 -1
  742. package/dist/environment/api.js +0 -2
  743. package/dist/environment/api.js.map +0 -1
  744. package/dist/environment/api.test.d.ts +0 -2
  745. package/dist/environment/api.test.d.ts.map +0 -1
  746. package/dist/environment/api.test.js +0 -76
  747. package/dist/environment/api.test.js.map +0 -1
  748. package/dist/environment/in-memory.d.ts +0 -22
  749. package/dist/environment/in-memory.d.ts.map +0 -1
  750. package/dist/environment/in-memory.js +0 -55
  751. package/dist/environment/in-memory.js.map +0 -1
  752. package/dist/environment/in-memory.test.d.ts +0 -2
  753. package/dist/environment/in-memory.test.d.ts.map +0 -1
  754. package/dist/environment/in-memory.test.js +0 -69
  755. package/dist/environment/in-memory.test.js.map +0 -1
  756. package/dist/environment/index.d.ts +0 -4
  757. package/dist/environment/index.d.ts.map +0 -1
  758. package/dist/environment/index.js +0 -3
  759. package/dist/environment/index.js.map +0 -1
  760. package/dist/environment/kysely/kysely-driver.test.d.ts +0 -2
  761. package/dist/environment/kysely/kysely-driver.test.d.ts.map +0 -1
  762. package/dist/environment/kysely/kysely-driver.test.js +0 -26
  763. package/dist/environment/kysely/kysely-driver.test.js.map +0 -1
  764. package/dist/environment/load-from-string.d.ts +0 -3
  765. package/dist/environment/load-from-string.d.ts.map +0 -1
  766. package/dist/environment/load-from-string.js +0 -64
  767. package/dist/environment/load-from-string.js.map +0 -1
  768. package/dist/environment/load-from-string.test.d.ts +0 -2
  769. package/dist/environment/load-from-string.test.d.ts.map +0 -1
  770. package/dist/environment/load-from-string.test.js +0 -16
  771. package/dist/environment/load-from-string.test.js.map +0 -1
  772. package/dist/environment/opfs-sah.browser.test.d.ts +0 -2
  773. package/dist/environment/opfs-sah.browser.test.d.ts.map +0 -1
  774. package/dist/environment/opfs-sah.browser.test.js +0 -309
  775. package/dist/environment/opfs-sah.browser.test.js.map +0 -1
  776. package/dist/environment/opfs-sah.d.ts +0 -63
  777. package/dist/environment/opfs-sah.d.ts.map +0 -1
  778. package/dist/environment/opfs-sah.js +0 -240
  779. package/dist/environment/opfs-sah.js.map +0 -1
  780. package/dist/environment/opfs-sah.worker.d.ts +0 -2
  781. package/dist/environment/opfs-sah.worker.d.ts.map +0 -1
  782. package/dist/environment/opfs-sah.worker.js +0 -212
  783. package/dist/environment/opfs-sah.worker.js.map +0 -1
  784. package/dist/environment/test-actors/echo.actor.d.ts +0 -2
  785. package/dist/environment/test-actors/echo.actor.d.ts.map +0 -1
  786. package/dist/environment/test-actors/echo.actor.js +0 -7
  787. package/dist/environment/test-actors/echo.actor.js.map +0 -1
  788. package/dist/filesystem/directory/ensure-directories.d.ts +0 -48
  789. package/dist/filesystem/directory/ensure-directories.d.ts.map +0 -1
  790. package/dist/filesystem/directory/ensure-directories.js +0 -223
  791. package/dist/filesystem/directory/ensure-directories.js.map +0 -1
  792. package/dist/filesystem/directory/schema-definition.d.ts +0 -36
  793. package/dist/filesystem/directory/schema-definition.d.ts.map +0 -1
  794. package/dist/filesystem/directory/schema-definition.js +0 -35
  795. package/dist/filesystem/directory/schema-definition.js.map +0 -1
  796. package/dist/filesystem/directory/schema.d.ts +0 -11
  797. package/dist/filesystem/directory/schema.d.ts.map +0 -1
  798. package/dist/filesystem/directory/schema.js +0 -494
  799. package/dist/filesystem/directory/schema.js.map +0 -1
  800. package/dist/filesystem/directory/schema.test.d.ts +0 -2
  801. package/dist/filesystem/directory/schema.test.d.ts.map +0 -1
  802. package/dist/filesystem/directory/schema.test.js +0 -93
  803. package/dist/filesystem/directory/schema.test.js.map +0 -1
  804. package/dist/filesystem/file/cache/clear-file-data-cache.d.ts +0 -17
  805. package/dist/filesystem/file/cache/clear-file-data-cache.d.ts.map +0 -1
  806. package/dist/filesystem/file/cache/clear-file-data-cache.js +0 -54
  807. package/dist/filesystem/file/cache/clear-file-data-cache.js.map +0 -1
  808. package/dist/filesystem/file/cache/lixcol-schema.d.ts +0 -27
  809. package/dist/filesystem/file/cache/lixcol-schema.d.ts.map +0 -1
  810. package/dist/filesystem/file/cache/lixcol-schema.js +0 -31
  811. package/dist/filesystem/file/cache/lixcol-schema.js.map +0 -1
  812. package/dist/filesystem/file/cache/path-cache-schema.d.ts +0 -25
  813. package/dist/filesystem/file/cache/path-cache-schema.d.ts.map +0 -1
  814. package/dist/filesystem/file/cache/path-cache-schema.js +0 -30
  815. package/dist/filesystem/file/cache/path-cache-schema.js.map +0 -1
  816. package/dist/filesystem/file/cache/schema.d.ts +0 -21
  817. package/dist/filesystem/file/cache/schema.d.ts.map +0 -1
  818. package/dist/filesystem/file/cache/schema.js +0 -24
  819. package/dist/filesystem/file/cache/schema.js.map +0 -1
  820. package/dist/filesystem/file/cache/schema.test.d.ts +0 -2
  821. package/dist/filesystem/file/cache/schema.test.d.ts.map +0 -1
  822. package/dist/filesystem/file/cache/schema.test.js +0 -264
  823. package/dist/filesystem/file/cache/schema.test.js.map +0 -1
  824. package/dist/filesystem/file/cache/update-file-data-cache.d.ts +0 -20
  825. package/dist/filesystem/file/cache/update-file-data-cache.d.ts.map +0 -1
  826. package/dist/filesystem/file/cache/update-file-data-cache.js +0 -25
  827. package/dist/filesystem/file/cache/update-file-data-cache.js.map +0 -1
  828. package/dist/filesystem/file/cache/update-file-lixcol-cache.d.ts +0 -21
  829. package/dist/filesystem/file/cache/update-file-lixcol-cache.d.ts.map +0 -1
  830. package/dist/filesystem/file/cache/update-file-lixcol-cache.js +0 -78
  831. package/dist/filesystem/file/cache/update-file-lixcol-cache.js.map +0 -1
  832. package/dist/filesystem/file/cache/update-file-path-cache.d.ts +0 -25
  833. package/dist/filesystem/file/cache/update-file-path-cache.d.ts.map +0 -1
  834. package/dist/filesystem/file/cache/update-file-path-cache.js +0 -38
  835. package/dist/filesystem/file/cache/update-file-path-cache.js.map +0 -1
  836. package/dist/filesystem/file/descriptor-utils.d.ts +0 -70
  837. package/dist/filesystem/file/descriptor-utils.d.ts.map +0 -1
  838. package/dist/filesystem/file/descriptor-utils.js +0 -218
  839. package/dist/filesystem/file/descriptor-utils.js.map +0 -1
  840. package/dist/filesystem/file/file-handlers.d.ts +0 -22
  841. package/dist/filesystem/file/file-handlers.d.ts.map +0 -1
  842. package/dist/filesystem/file/file-handlers.js +0 -540
  843. package/dist/filesystem/file/file-handlers.js.map +0 -1
  844. package/dist/filesystem/file/file-handlers.test.d.ts +0 -2
  845. package/dist/filesystem/file/file-handlers.test.d.ts.map +0 -1
  846. package/dist/filesystem/file/file-handlers.test.js +0 -344
  847. package/dist/filesystem/file/file-handlers.test.js.map +0 -1
  848. package/dist/filesystem/file/materialize-file-data-at-commit.d.ts +0 -9
  849. package/dist/filesystem/file/materialize-file-data-at-commit.d.ts.map +0 -1
  850. package/dist/filesystem/file/materialize-file-data-at-commit.js +0 -156
  851. package/dist/filesystem/file/materialize-file-data-at-commit.js.map +0 -1
  852. package/dist/filesystem/file/materialize-file-data.d.ts +0 -8
  853. package/dist/filesystem/file/materialize-file-data.d.ts.map +0 -1
  854. package/dist/filesystem/file/materialize-file-data.js +0 -111
  855. package/dist/filesystem/file/materialize-file-data.js.map +0 -1
  856. package/dist/filesystem/file/materialize-file-data.test.d.ts +0 -2
  857. package/dist/filesystem/file/materialize-file-data.test.d.ts.map +0 -1
  858. package/dist/filesystem/file/materialize-file-data.test.js +0 -104
  859. package/dist/filesystem/file/materialize-file-data.test.js.map +0 -1
  860. package/dist/filesystem/file/schema-definition.d.ts +0 -46
  861. package/dist/filesystem/file/schema-definition.d.ts.map +0 -1
  862. package/dist/filesystem/file/schema-definition.js +0 -39
  863. package/dist/filesystem/file/schema-definition.js.map +0 -1
  864. package/dist/filesystem/file/schema.d.ts +0 -47
  865. package/dist/filesystem/file/schema.d.ts.map +0 -1
  866. package/dist/filesystem/file/schema.js +0 -610
  867. package/dist/filesystem/file/schema.js.map +0 -1
  868. package/dist/filesystem/file/schema.test.d.ts +0 -2
  869. package/dist/filesystem/file/schema.test.d.ts.map +0 -1
  870. package/dist/filesystem/file/schema.test.js +0 -1885
  871. package/dist/filesystem/file/schema.test.js.map +0 -1
  872. package/dist/filesystem/file/select-file-data.d.ts +0 -21
  873. package/dist/filesystem/file/select-file-data.d.ts.map +0 -1
  874. package/dist/filesystem/file/select-file-data.js +0 -48
  875. package/dist/filesystem/file/select-file-data.js.map +0 -1
  876. package/dist/filesystem/file/select-file-lixcol.d.ts +0 -27
  877. package/dist/filesystem/file/select-file-lixcol.d.ts.map +0 -1
  878. package/dist/filesystem/file/select-file-lixcol.js +0 -120
  879. package/dist/filesystem/file/select-file-lixcol.js.map +0 -1
  880. package/dist/filesystem/file/store-detected-change-schema.d.ts +0 -8
  881. package/dist/filesystem/file/store-detected-change-schema.d.ts.map +0 -1
  882. package/dist/filesystem/file/store-detected-change-schema.js +0 -38
  883. package/dist/filesystem/file/store-detected-change-schema.js.map +0 -1
  884. package/dist/filesystem/file/store-detected-change-schema.test.d.ts +0 -2
  885. package/dist/filesystem/file/store-detected-change-schema.test.d.ts.map +0 -1
  886. package/dist/filesystem/file/store-detected-change-schema.test.js +0 -222
  887. package/dist/filesystem/file/store-detected-change-schema.test.js.map +0 -1
  888. package/dist/filesystem/file/unknown-file-fallback-plugin.d.ts +0 -23
  889. package/dist/filesystem/file/unknown-file-fallback-plugin.d.ts.map +0 -1
  890. package/dist/filesystem/file/unknown-file-fallback-plugin.js +0 -74
  891. package/dist/filesystem/file/unknown-file-fallback-plugin.js.map +0 -1
  892. package/dist/filesystem/file/unknown-file-fallback-plugin.test.d.ts +0 -2
  893. package/dist/filesystem/file/unknown-file-fallback-plugin.test.d.ts.map +0 -1
  894. package/dist/filesystem/file/unknown-file-fallback-plugin.test.js +0 -319
  895. package/dist/filesystem/file/unknown-file-fallback-plugin.test.js.map +0 -1
  896. package/dist/filesystem/fs.bench.d.ts +0 -2
  897. package/dist/filesystem/fs.bench.d.ts.map +0 -1
  898. package/dist/filesystem/fs.bench.js +0 -534
  899. package/dist/filesystem/fs.bench.js.map +0 -1
  900. package/dist/filesystem/index.d.ts +0 -5
  901. package/dist/filesystem/index.d.ts.map +0 -1
  902. package/dist/filesystem/index.js +0 -4
  903. package/dist/filesystem/index.js.map +0 -1
  904. package/dist/filesystem/path.d.ts +0 -37
  905. package/dist/filesystem/path.d.ts.map +0 -1
  906. package/dist/filesystem/path.js +0 -94
  907. package/dist/filesystem/path.js.map +0 -1
  908. package/dist/filesystem/path.test.d.ts +0 -2
  909. package/dist/filesystem/path.test.d.ts.map +0 -1
  910. package/dist/filesystem/path.test.js +0 -102
  911. package/dist/filesystem/path.test.js.map +0 -1
  912. package/dist/filesystem/schema.d.ts +0 -11
  913. package/dist/filesystem/schema.d.ts.map +0 -1
  914. package/dist/filesystem/schema.js +0 -13
  915. package/dist/filesystem/schema.js.map +0 -1
  916. package/dist/filesystem/schema.test.d.ts +0 -2
  917. package/dist/filesystem/schema.test.d.ts.map +0 -1
  918. package/dist/filesystem/schema.test.js +0 -502
  919. package/dist/filesystem/schema.test.js.map +0 -1
  920. package/dist/filesystem/util/glob.d.ts +0 -18
  921. package/dist/filesystem/util/glob.d.ts.map +0 -1
  922. package/dist/filesystem/util/glob.js +0 -26
  923. package/dist/filesystem/util/glob.js.map +0 -1
  924. package/dist/hooks/create-hooks.d.ts +0 -105
  925. package/dist/hooks/create-hooks.d.ts.map +0 -1
  926. package/dist/hooks/create-hooks.js +0 -40
  927. package/dist/hooks/create-hooks.js.map +0 -1
  928. package/dist/hooks/create-hooks.test.d.ts +0 -2
  929. package/dist/hooks/create-hooks.test.d.ts.map +0 -1
  930. package/dist/hooks/create-hooks.test.js +0 -195
  931. package/dist/hooks/create-hooks.test.js.map +0 -1
  932. package/dist/hooks/index.d.ts +0 -2
  933. package/dist/hooks/index.d.ts.map +0 -1
  934. package/dist/hooks/index.js +0 -2
  935. package/dist/hooks/index.js.map +0 -1
  936. package/dist/index.d.ts.map +0 -1
  937. package/dist/index.js.map +0 -1
  938. package/dist/key-value/index.d.ts +0 -2
  939. package/dist/key-value/index.d.ts.map +0 -1
  940. package/dist/key-value/index.js +0 -2
  941. package/dist/key-value/index.js.map +0 -1
  942. package/dist/key-value/schema-definition.d.ts +0 -74
  943. package/dist/key-value/schema-definition.d.ts.map +0 -1
  944. package/dist/key-value/schema-definition.js +0 -19
  945. package/dist/key-value/schema-definition.js.map +0 -1
  946. package/dist/key-value/schema.test.d.ts +0 -2
  947. package/dist/key-value/schema.test.d.ts.map +0 -1
  948. package/dist/key-value/schema.test.js +0 -338
  949. package/dist/key-value/schema.test.js.map +0 -1
  950. package/dist/label/create-label.d.ts +0 -20
  951. package/dist/label/create-label.d.ts.map +0 -1
  952. package/dist/label/create-label.js +0 -48
  953. package/dist/label/create-label.js.map +0 -1
  954. package/dist/label/create-label.test.d.ts +0 -2
  955. package/dist/label/create-label.test.d.ts.map +0 -1
  956. package/dist/label/create-label.test.js +0 -191
  957. package/dist/label/create-label.test.js.map +0 -1
  958. package/dist/label/index.d.ts +0 -3
  959. package/dist/label/index.d.ts.map +0 -1
  960. package/dist/label/index.js +0 -3
  961. package/dist/label/index.js.map +0 -1
  962. package/dist/label/schema-definition.d.ts +0 -24
  963. package/dist/label/schema-definition.d.ts.map +0 -1
  964. package/dist/label/schema-definition.js +0 -21
  965. package/dist/label/schema-definition.js.map +0 -1
  966. package/dist/label/schema.test.d.ts +0 -2
  967. package/dist/label/schema.test.d.ts.map +0 -1
  968. package/dist/label/schema.test.js +0 -76
  969. package/dist/label/schema.test.js.map +0 -1
  970. package/dist/lix/index.d.ts +0 -3
  971. package/dist/lix/index.d.ts.map +0 -1
  972. package/dist/lix/index.js +0 -3
  973. package/dist/lix/index.js.map +0 -1
  974. package/dist/lix/new-lix.d.ts +0 -83
  975. package/dist/lix/new-lix.d.ts.map +0 -1
  976. package/dist/lix/new-lix.js +0 -630
  977. package/dist/lix/new-lix.js.map +0 -1
  978. package/dist/lix/new-lix.test.d.ts +0 -2
  979. package/dist/lix/new-lix.test.d.ts.map +0 -1
  980. package/dist/lix/new-lix.test.js +0 -404
  981. package/dist/lix/new-lix.test.js.map +0 -1
  982. package/dist/lix/open-lix.bench.d.ts +0 -2
  983. package/dist/lix/open-lix.bench.d.ts.map +0 -1
  984. package/dist/lix/open-lix.bench.js +0 -22
  985. package/dist/lix/open-lix.bench.js.map +0 -1
  986. package/dist/lix/open-lix.d.ts +0 -179
  987. package/dist/lix/open-lix.d.ts.map +0 -1
  988. package/dist/lix/open-lix.js +0 -176
  989. package/dist/lix/open-lix.js.map +0 -1
  990. package/dist/lix/open-lix.test.d.ts +0 -2
  991. package/dist/lix/open-lix.test.d.ts.map +0 -1
  992. package/dist/lix/open-lix.test.js +0 -438
  993. package/dist/lix/open-lix.test.js.map +0 -1
  994. package/dist/log/create-lix-own-log.d.ts +0 -73
  995. package/dist/log/create-lix-own-log.d.ts.map +0 -1
  996. package/dist/log/create-lix-own-log.js +0 -91
  997. package/dist/log/create-lix-own-log.js.map +0 -1
  998. package/dist/log/create-lix-own-log.test.d.ts +0 -2
  999. package/dist/log/create-lix-own-log.test.d.ts.map +0 -1
  1000. package/dist/log/create-lix-own-log.test.js +0 -113
  1001. package/dist/log/create-lix-own-log.test.js.map +0 -1
  1002. package/dist/log/create-log.d.ts +0 -42
  1003. package/dist/log/create-log.d.ts.map +0 -1
  1004. package/dist/log/create-log.js +0 -52
  1005. package/dist/log/create-log.js.map +0 -1
  1006. package/dist/log/index.d.ts +0 -3
  1007. package/dist/log/index.d.ts.map +0 -1
  1008. package/dist/log/index.js +0 -3
  1009. package/dist/log/index.js.map +0 -1
  1010. package/dist/log/schema-definition.d.ts +0 -36
  1011. package/dist/log/schema-definition.d.ts.map +0 -1
  1012. package/dist/log/schema-definition.js +0 -39
  1013. package/dist/log/schema-definition.js.map +0 -1
  1014. package/dist/log/schema.test.d.ts +0 -2
  1015. package/dist/log/schema.test.d.ts.map +0 -1
  1016. package/dist/log/schema.test.js +0 -152
  1017. package/dist/log/schema.test.js.map +0 -1
  1018. package/dist/observe/create-observe.d.ts +0 -17
  1019. package/dist/observe/create-observe.d.ts.map +0 -1
  1020. package/dist/observe/create-observe.js +0 -244
  1021. package/dist/observe/create-observe.js.map +0 -1
  1022. package/dist/observe/create-observe.test.d.ts +0 -2
  1023. package/dist/observe/create-observe.test.d.ts.map +0 -1
  1024. package/dist/observe/create-observe.test.js +0 -1028
  1025. package/dist/observe/create-observe.test.js.map +0 -1
  1026. package/dist/observe/determine-schema-keys.d.ts +0 -14
  1027. package/dist/observe/determine-schema-keys.d.ts.map +0 -1
  1028. package/dist/observe/determine-schema-keys.js +0 -387
  1029. package/dist/observe/determine-schema-keys.js.map +0 -1
  1030. package/dist/observe/determine-schema-keys.test.d.ts +0 -2
  1031. package/dist/observe/determine-schema-keys.test.d.ts.map +0 -1
  1032. package/dist/observe/determine-schema-keys.test.js +0 -308
  1033. package/dist/observe/determine-schema-keys.test.js.map +0 -1
  1034. package/dist/observe/index.d.ts +0 -2
  1035. package/dist/observe/index.d.ts.map +0 -1
  1036. package/dist/observe/index.js +0 -2
  1037. package/dist/observe/index.js.map +0 -1
  1038. package/dist/observe/lix-observable.d.ts +0 -31
  1039. package/dist/observe/lix-observable.d.ts.map +0 -1
  1040. package/dist/observe/lix-observable.js +0 -65
  1041. package/dist/observe/lix-observable.js.map +0 -1
  1042. package/dist/observe/lix-observable.test.d.ts +0 -2
  1043. package/dist/observe/lix-observable.test.d.ts.map +0 -1
  1044. package/dist/observe/lix-observable.test.js +0 -187
  1045. package/dist/observe/lix-observable.test.js.map +0 -1
  1046. package/dist/plugin/index.d.ts +0 -4
  1047. package/dist/plugin/index.d.ts.map +0 -1
  1048. package/dist/plugin/index.js +0 -3
  1049. package/dist/plugin/index.js.map +0 -1
  1050. package/dist/plugin/lix-plugin.d.ts +0 -133
  1051. package/dist/plugin/lix-plugin.d.ts.map +0 -1
  1052. package/dist/plugin/lix-plugin.js +0 -2
  1053. package/dist/plugin/lix-plugin.js.map +0 -1
  1054. package/dist/plugin/lix-plugin.test-d.d.ts +0 -2
  1055. package/dist/plugin/lix-plugin.test-d.d.ts.map +0 -1
  1056. package/dist/plugin/lix-plugin.test-d.js +0 -47
  1057. package/dist/plugin/lix-plugin.test-d.js.map +0 -1
  1058. package/dist/plugin/lix-plugin.test.d.ts +0 -2
  1059. package/dist/plugin/lix-plugin.test.d.ts.map +0 -1
  1060. package/dist/plugin/lix-plugin.test.js +0 -49
  1061. package/dist/plugin/lix-plugin.test.js.map +0 -1
  1062. package/dist/plugin/mock-json-plugin.d.ts +0 -17
  1063. package/dist/plugin/mock-json-plugin.d.ts.map +0 -1
  1064. package/dist/plugin/mock-json-plugin.flatten.d.ts +0 -3
  1065. package/dist/plugin/mock-json-plugin.flatten.d.ts.map +0 -1
  1066. package/dist/plugin/mock-json-plugin.flatten.js +0 -124
  1067. package/dist/plugin/mock-json-plugin.flatten.js.map +0 -1
  1068. package/dist/plugin/mock-json-plugin.js +0 -102
  1069. package/dist/plugin/mock-json-plugin.js.map +0 -1
  1070. package/dist/plugin/mock-json-plugin.test.d.ts +0 -2
  1071. package/dist/plugin/mock-json-plugin.test.d.ts.map +0 -1
  1072. package/dist/plugin/mock-json-plugin.test.js +0 -174
  1073. package/dist/plugin/mock-json-plugin.test.js.map +0 -1
  1074. package/dist/plugin/query-sync.d.ts +0 -85
  1075. package/dist/plugin/query-sync.d.ts.map +0 -1
  1076. package/dist/plugin/query-sync.js +0 -110
  1077. package/dist/plugin/query-sync.js.map +0 -1
  1078. package/dist/plugin/query-sync.test.d.ts +0 -2
  1079. package/dist/plugin/query-sync.test.d.ts.map +0 -1
  1080. package/dist/plugin/query-sync.test.js +0 -110
  1081. package/dist/plugin/query-sync.test.js.map +0 -1
  1082. package/dist/query-filter/commit-is-ancestor-of.d.ts +0 -51
  1083. package/dist/query-filter/commit-is-ancestor-of.d.ts.map +0 -1
  1084. package/dist/query-filter/commit-is-ancestor-of.js +0 -63
  1085. package/dist/query-filter/commit-is-ancestor-of.js.map +0 -1
  1086. package/dist/query-filter/commit-is-ancestor-of.test.d.ts +0 -2
  1087. package/dist/query-filter/commit-is-ancestor-of.test.d.ts.map +0 -1
  1088. package/dist/query-filter/commit-is-ancestor-of.test.js +0 -202
  1089. package/dist/query-filter/commit-is-ancestor-of.test.js.map +0 -1
  1090. package/dist/query-filter/commit-is-descendant-of.d.ts +0 -44
  1091. package/dist/query-filter/commit-is-descendant-of.d.ts.map +0 -1
  1092. package/dist/query-filter/commit-is-descendant-of.js +0 -56
  1093. package/dist/query-filter/commit-is-descendant-of.js.map +0 -1
  1094. package/dist/query-filter/commit-is-descendant-of.test.d.ts +0 -2
  1095. package/dist/query-filter/commit-is-descendant-of.test.d.ts.map +0 -1
  1096. package/dist/query-filter/commit-is-descendant-of.test.js +0 -218
  1097. package/dist/query-filter/commit-is-descendant-of.test.js.map +0 -1
  1098. package/dist/query-filter/index.d.ts +0 -3
  1099. package/dist/query-filter/index.d.ts.map +0 -1
  1100. package/dist/query-filter/index.js +0 -3
  1101. package/dist/query-filter/index.js.map +0 -1
  1102. package/dist/schema-definition/definition.d.ts +0 -555
  1103. package/dist/schema-definition/definition.d.ts.map +0 -1
  1104. package/dist/schema-definition/definition.js +0 -166
  1105. package/dist/schema-definition/definition.js.map +0 -1
  1106. package/dist/schema-definition/definition.test-d.d.ts +0 -2
  1107. package/dist/schema-definition/definition.test-d.d.ts.map +0 -1
  1108. package/dist/schema-definition/definition.test-d.js +0 -245
  1109. package/dist/schema-definition/definition.test-d.js.map +0 -1
  1110. package/dist/schema-definition/definition.test.d.ts +0 -2
  1111. package/dist/schema-definition/definition.test.d.ts.map +0 -1
  1112. package/dist/schema-definition/definition.test.js +0 -605
  1113. package/dist/schema-definition/definition.test.js.map +0 -1
  1114. package/dist/schema-definition/index.d.ts +0 -4
  1115. package/dist/schema-definition/index.d.ts.map +0 -1
  1116. package/dist/schema-definition/index.js +0 -4
  1117. package/dist/schema-definition/index.js.map +0 -1
  1118. package/dist/schema-definition/json-pointer.d.ts +0 -51
  1119. package/dist/schema-definition/json-pointer.d.ts.map +0 -1
  1120. package/dist/schema-definition/json-pointer.js +0 -143
  1121. package/dist/schema-definition/json-pointer.js.map +0 -1
  1122. package/dist/schema-definition/json-pointer.test.d.ts +0 -2
  1123. package/dist/schema-definition/json-pointer.test.d.ts.map +0 -1
  1124. package/dist/schema-definition/json-pointer.test.js +0 -72
  1125. package/dist/schema-definition/json-pointer.test.js.map +0 -1
  1126. package/dist/schema-definition/json-type.d.ts +0 -24
  1127. package/dist/schema-definition/json-type.d.ts.map +0 -1
  1128. package/dist/schema-definition/json-type.js +0 -42
  1129. package/dist/schema-definition/json-type.js.map +0 -1
  1130. package/dist/schema-definition/json-type.test.d.ts +0 -2
  1131. package/dist/schema-definition/json-type.test.d.ts.map +0 -1
  1132. package/dist/schema-definition/json-type.test.js +0 -21
  1133. package/dist/schema-definition/json-type.test.js.map +0 -1
  1134. package/dist/schema-definition/validate-lix-schema.d.ts +0 -65
  1135. package/dist/schema-definition/validate-lix-schema.d.ts.map +0 -1
  1136. package/dist/schema-definition/validate-lix-schema.js +0 -166
  1137. package/dist/schema-definition/validate-lix-schema.js.map +0 -1
  1138. package/dist/schema-definition/validate-lix-schema.test.d.ts +0 -2
  1139. package/dist/schema-definition/validate-lix-schema.test.d.ts.map +0 -1
  1140. package/dist/schema-definition/validate-lix-schema.test.js +0 -150
  1141. package/dist/schema-definition/validate-lix-schema.test.js.map +0 -1
  1142. package/dist/server-protocol-handler/create-server-protocol-handler.d.ts +0 -48
  1143. package/dist/server-protocol-handler/create-server-protocol-handler.d.ts.map +0 -1
  1144. package/dist/server-protocol-handler/create-server-protocol-handler.js +0 -68
  1145. package/dist/server-protocol-handler/create-server-protocol-handler.js.map +0 -1
  1146. package/dist/server-protocol-handler/environment/create-in-memory-environment.d.ts +0 -9
  1147. package/dist/server-protocol-handler/environment/create-in-memory-environment.d.ts.map +0 -1
  1148. package/dist/server-protocol-handler/environment/create-in-memory-environment.js +0 -84
  1149. package/dist/server-protocol-handler/environment/create-in-memory-environment.js.map +0 -1
  1150. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.d.ts +0 -2
  1151. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.d.ts.map +0 -1
  1152. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js +0 -102
  1153. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js.map +0 -1
  1154. package/dist/server-protocol-handler/environment/environment.d.ts +0 -50
  1155. package/dist/server-protocol-handler/environment/environment.d.ts.map +0 -1
  1156. package/dist/server-protocol-handler/environment/environment.js +0 -2
  1157. package/dist/server-protocol-handler/environment/environment.js.map +0 -1
  1158. package/dist/server-protocol-handler/index.d.ts +0 -3
  1159. package/dist/server-protocol-handler/index.d.ts.map +0 -1
  1160. package/dist/server-protocol-handler/index.js +0 -3
  1161. package/dist/server-protocol-handler/index.js.map +0 -1
  1162. package/dist/server-protocol-handler/routes/get-v1.d.ts +0 -3
  1163. package/dist/server-protocol-handler/routes/get-v1.d.ts.map +0 -1
  1164. package/dist/server-protocol-handler/routes/get-v1.js +0 -46
  1165. package/dist/server-protocol-handler/routes/get-v1.js.map +0 -1
  1166. package/dist/server-protocol-handler/routes/get-v1.test.d.ts +0 -2
  1167. package/dist/server-protocol-handler/routes/get-v1.test.d.ts.map +0 -1
  1168. package/dist/server-protocol-handler/routes/get-v1.test.js +0 -107
  1169. package/dist/server-protocol-handler/routes/get-v1.test.js.map +0 -1
  1170. package/dist/server-protocol-handler/routes/new-v1.d.ts +0 -3
  1171. package/dist/server-protocol-handler/routes/new-v1.d.ts.map +0 -1
  1172. package/dist/server-protocol-handler/routes/new-v1.js +0 -36
  1173. package/dist/server-protocol-handler/routes/new-v1.js.map +0 -1
  1174. package/dist/server-protocol-handler/routes/new-v1.test.d.ts +0 -2
  1175. package/dist/server-protocol-handler/routes/new-v1.test.d.ts.map +0 -1
  1176. package/dist/server-protocol-handler/routes/new-v1.test.js +0 -71
  1177. package/dist/server-protocol-handler/routes/new-v1.test.js.map +0 -1
  1178. package/dist/server-protocol-handler/routes/pull-v1.d.ts +0 -3
  1179. package/dist/server-protocol-handler/routes/pull-v1.d.ts.map +0 -1
  1180. package/dist/server-protocol-handler/routes/pull-v1.js +0 -41
  1181. package/dist/server-protocol-handler/routes/pull-v1.js.map +0 -1
  1182. package/dist/server-protocol-handler/routes/pull-v1.test.d.ts +0 -2
  1183. package/dist/server-protocol-handler/routes/pull-v1.test.d.ts.map +0 -1
  1184. package/dist/server-protocol-handler/routes/pull-v1.test.js +0 -161
  1185. package/dist/server-protocol-handler/routes/pull-v1.test.js.map +0 -1
  1186. package/dist/server-protocol-handler/routes/push-v1.d.ts +0 -3
  1187. package/dist/server-protocol-handler/routes/push-v1.d.ts.map +0 -1
  1188. package/dist/server-protocol-handler/routes/push-v1.js +0 -144
  1189. package/dist/server-protocol-handler/routes/push-v1.js.map +0 -1
  1190. package/dist/server-protocol-handler/routes/push-v1.test.d.ts +0 -2
  1191. package/dist/server-protocol-handler/routes/push-v1.test.d.ts.map +0 -1
  1192. package/dist/server-protocol-handler/routes/push-v1.test.js +0 -226
  1193. package/dist/server-protocol-handler/routes/push-v1.test.js.map +0 -1
  1194. package/dist/services/env-variables/index.d.ts +0 -5
  1195. package/dist/services/env-variables/index.d.ts.map +0 -1
  1196. package/dist/services/env-variables/index.js +0 -5
  1197. package/dist/services/env-variables/index.js.map +0 -1
  1198. package/dist/services/telemetry/capture.d.ts +0 -30
  1199. package/dist/services/telemetry/capture.d.ts.map +0 -1
  1200. package/dist/services/telemetry/capture.js +0 -71
  1201. package/dist/services/telemetry/capture.js.map +0 -1
  1202. package/dist/services/telemetry/capture.test.d.ts +0 -2
  1203. package/dist/services/telemetry/capture.test.d.ts.map +0 -1
  1204. package/dist/services/telemetry/capture.test.js +0 -37
  1205. package/dist/services/telemetry/capture.test.js.map +0 -1
  1206. package/dist/snapshot/schema.d.ts +0 -8
  1207. package/dist/snapshot/schema.d.ts.map +0 -1
  1208. package/dist/snapshot/schema.js +0 -24
  1209. package/dist/snapshot/schema.js.map +0 -1
  1210. package/dist/snapshot/schema.test.d.ts +0 -2
  1211. package/dist/snapshot/schema.test.d.ts.map +0 -1
  1212. package/dist/snapshot/schema.test.js +0 -202
  1213. package/dist/snapshot/schema.test.js.map +0 -1
  1214. package/dist/state/cache/builtin-schemas.d.ts +0 -3
  1215. package/dist/state/cache/builtin-schemas.d.ts.map +0 -1
  1216. package/dist/state/cache/builtin-schemas.js +0 -16
  1217. package/dist/state/cache/builtin-schemas.js.map +0 -1
  1218. package/dist/state/cache/clear-state-cache.d.ts +0 -17
  1219. package/dist/state/cache/clear-state-cache.d.ts.map +0 -1
  1220. package/dist/state/cache/clear-state-cache.js +0 -43
  1221. package/dist/state/cache/clear-state-cache.js.map +0 -1
  1222. package/dist/state/cache/clear-state-cache.test.d.ts +0 -2
  1223. package/dist/state/cache/clear-state-cache.test.d.ts.map +0 -1
  1224. package/dist/state/cache/clear-state-cache.test.js +0 -38
  1225. package/dist/state/cache/clear-state-cache.test.js.map +0 -1
  1226. package/dist/state/cache/create-schema-cache-table.d.ts +0 -37
  1227. package/dist/state/cache/create-schema-cache-table.d.ts.map +0 -1
  1228. package/dist/state/cache/create-schema-cache-table.js +0 -137
  1229. package/dist/state/cache/create-schema-cache-table.js.map +0 -1
  1230. package/dist/state/cache/create-schema-cache-table.test.d.ts +0 -2
  1231. package/dist/state/cache/create-schema-cache-table.test.d.ts.map +0 -1
  1232. package/dist/state/cache/create-schema-cache-table.test.js +0 -49
  1233. package/dist/state/cache/create-schema-cache-table.test.js.map +0 -1
  1234. package/dist/state/cache/is-stale-state-cache.d.ts +0 -27
  1235. package/dist/state/cache/is-stale-state-cache.d.ts.map +0 -1
  1236. package/dist/state/cache/is-stale-state-cache.js +0 -64
  1237. package/dist/state/cache/is-stale-state-cache.js.map +0 -1
  1238. package/dist/state/cache/is-stale-state-cache.test.d.ts +0 -2
  1239. package/dist/state/cache/is-stale-state-cache.test.d.ts.map +0 -1
  1240. package/dist/state/cache/is-stale-state-cache.test.js +0 -30
  1241. package/dist/state/cache/is-stale-state-cache.test.js.map +0 -1
  1242. package/dist/state/cache/mark-state-cache-as-stale.d.ts +0 -10
  1243. package/dist/state/cache/mark-state-cache-as-stale.d.ts.map +0 -1
  1244. package/dist/state/cache/mark-state-cache-as-stale.js +0 -50
  1245. package/dist/state/cache/mark-state-cache-as-stale.js.map +0 -1
  1246. package/dist/state/cache/populate-state-cache.d.ts +0 -19
  1247. package/dist/state/cache/populate-state-cache.d.ts.map +0 -1
  1248. package/dist/state/cache/populate-state-cache.js +0 -196
  1249. package/dist/state/cache/populate-state-cache.js.map +0 -1
  1250. package/dist/state/cache/populate-state-cache.test.d.ts +0 -2
  1251. package/dist/state/cache/populate-state-cache.test.d.ts.map +0 -1
  1252. package/dist/state/cache/populate-state-cache.test.js +0 -526
  1253. package/dist/state/cache/populate-state-cache.test.js.map +0 -1
  1254. package/dist/state/cache/schema-indexes.d.ts +0 -19
  1255. package/dist/state/cache/schema-indexes.d.ts.map +0 -1
  1256. package/dist/state/cache/schema-indexes.js +0 -137
  1257. package/dist/state/cache/schema-indexes.js.map +0 -1
  1258. package/dist/state/cache/schema-indexes.test.d.ts +0 -2
  1259. package/dist/state/cache/schema-indexes.test.d.ts.map +0 -1
  1260. package/dist/state/cache/schema-indexes.test.js +0 -124
  1261. package/dist/state/cache/schema-indexes.test.js.map +0 -1
  1262. package/dist/state/cache/schema-resolver.d.ts +0 -34
  1263. package/dist/state/cache/schema-resolver.d.ts.map +0 -1
  1264. package/dist/state/cache/schema-resolver.js +0 -49
  1265. package/dist/state/cache/schema-resolver.js.map +0 -1
  1266. package/dist/state/cache/schema.bench.d.ts +0 -2
  1267. package/dist/state/cache/schema.bench.d.ts.map +0 -1
  1268. package/dist/state/cache/schema.bench.js +0 -305
  1269. package/dist/state/cache/schema.bench.js.map +0 -1
  1270. package/dist/state/cache/schema.d.ts +0 -23
  1271. package/dist/state/cache/schema.d.ts.map +0 -1
  1272. package/dist/state/cache/schema.js +0 -41
  1273. package/dist/state/cache/schema.js.map +0 -1
  1274. package/dist/state/cache/schema.test.d.ts +0 -2
  1275. package/dist/state/cache/schema.test.d.ts.map +0 -1
  1276. package/dist/state/cache/schema.test.js +0 -126
  1277. package/dist/state/cache/schema.test.js.map +0 -1
  1278. package/dist/state/cache/select-from-state-cache.d.ts +0 -11
  1279. package/dist/state/cache/select-from-state-cache.d.ts.map +0 -1
  1280. package/dist/state/cache/select-from-state-cache.js +0 -50
  1281. package/dist/state/cache/select-from-state-cache.js.map +0 -1
  1282. package/dist/state/cache/select-from-state-cache.test.d.ts +0 -2
  1283. package/dist/state/cache/select-from-state-cache.test.d.ts.map +0 -1
  1284. package/dist/state/cache/select-from-state-cache.test.js +0 -49
  1285. package/dist/state/cache/select-from-state-cache.test.js.map +0 -1
  1286. package/dist/state/cache/update-state-cache.bench.d.ts +0 -2
  1287. package/dist/state/cache/update-state-cache.bench.d.ts.map +0 -1
  1288. package/dist/state/cache/update-state-cache.bench.js +0 -129
  1289. package/dist/state/cache/update-state-cache.bench.js.map +0 -1
  1290. package/dist/state/cache/update-state-cache.d.ts +0 -40
  1291. package/dist/state/cache/update-state-cache.d.ts.map +0 -1
  1292. package/dist/state/cache/update-state-cache.js +0 -378
  1293. package/dist/state/cache/update-state-cache.js.map +0 -1
  1294. package/dist/state/cache/update-state-cache.test.d.ts +0 -2
  1295. package/dist/state/cache/update-state-cache.test.d.ts.map +0 -1
  1296. package/dist/state/cache/update-state-cache.test.js +0 -970
  1297. package/dist/state/cache/update-state-cache.test.js.map +0 -1
  1298. package/dist/state/cache-v2/cache-columns.d.ts +0 -3
  1299. package/dist/state/cache-v2/cache-columns.d.ts.map +0 -1
  1300. package/dist/state/cache-v2/cache-columns.js +0 -20
  1301. package/dist/state/cache-v2/cache-columns.js.map +0 -1
  1302. package/dist/state/cache-v2/clear-state-cache.d.ts +0 -17
  1303. package/dist/state/cache-v2/clear-state-cache.d.ts.map +0 -1
  1304. package/dist/state/cache-v2/clear-state-cache.js +0 -42
  1305. package/dist/state/cache-v2/clear-state-cache.js.map +0 -1
  1306. package/dist/state/cache-v2/clear-state-cache.test.d.ts +0 -2
  1307. package/dist/state/cache-v2/clear-state-cache.test.d.ts.map +0 -1
  1308. package/dist/state/cache-v2/clear-state-cache.test.js +0 -87
  1309. package/dist/state/cache-v2/clear-state-cache.test.js.map +0 -1
  1310. package/dist/state/cache-v2/create-schema-cache-table.d.ts +0 -48
  1311. package/dist/state/cache-v2/create-schema-cache-table.d.ts.map +0 -1
  1312. package/dist/state/cache-v2/create-schema-cache-table.js +0 -152
  1313. package/dist/state/cache-v2/create-schema-cache-table.js.map +0 -1
  1314. package/dist/state/cache-v2/create-schema-cache-table.test.d.ts +0 -2
  1315. package/dist/state/cache-v2/create-schema-cache-table.test.d.ts.map +0 -1
  1316. package/dist/state/cache-v2/create-schema-cache-table.test.js +0 -76
  1317. package/dist/state/cache-v2/create-schema-cache-table.test.js.map +0 -1
  1318. package/dist/state/cache-v2/is-stale-state-cache.d.ts +0 -27
  1319. package/dist/state/cache-v2/is-stale-state-cache.d.ts.map +0 -1
  1320. package/dist/state/cache-v2/is-stale-state-cache.js +0 -64
  1321. package/dist/state/cache-v2/is-stale-state-cache.js.map +0 -1
  1322. package/dist/state/cache-v2/is-stale-state-cache.test.d.ts +0 -2
  1323. package/dist/state/cache-v2/is-stale-state-cache.test.d.ts.map +0 -1
  1324. package/dist/state/cache-v2/is-stale-state-cache.test.js +0 -30
  1325. package/dist/state/cache-v2/is-stale-state-cache.test.js.map +0 -1
  1326. package/dist/state/cache-v2/mark-state-cache-as-stale.d.ts +0 -22
  1327. package/dist/state/cache-v2/mark-state-cache-as-stale.d.ts.map +0 -1
  1328. package/dist/state/cache-v2/mark-state-cache-as-stale.js +0 -62
  1329. package/dist/state/cache-v2/mark-state-cache-as-stale.js.map +0 -1
  1330. package/dist/state/cache-v2/populate-state-cache.d.ts +0 -22
  1331. package/dist/state/cache-v2/populate-state-cache.d.ts.map +0 -1
  1332. package/dist/state/cache-v2/populate-state-cache.js +0 -143
  1333. package/dist/state/cache-v2/populate-state-cache.js.map +0 -1
  1334. package/dist/state/cache-v2/populate-state-cache.test.d.ts +0 -2
  1335. package/dist/state/cache-v2/populate-state-cache.test.d.ts.map +0 -1
  1336. package/dist/state/cache-v2/populate-state-cache.test.js +0 -102
  1337. package/dist/state/cache-v2/populate-state-cache.test.js.map +0 -1
  1338. package/dist/state/cache-v2/schema-metadata.d.ts +0 -20
  1339. package/dist/state/cache-v2/schema-metadata.d.ts.map +0 -1
  1340. package/dist/state/cache-v2/schema-metadata.js +0 -18
  1341. package/dist/state/cache-v2/schema-metadata.js.map +0 -1
  1342. package/dist/state/cache-v2/schema.bench.d.ts +0 -2
  1343. package/dist/state/cache-v2/schema.bench.d.ts.map +0 -1
  1344. package/dist/state/cache-v2/schema.bench.js +0 -194
  1345. package/dist/state/cache-v2/schema.bench.js.map +0 -1
  1346. package/dist/state/cache-v2/schema.d.ts +0 -30
  1347. package/dist/state/cache-v2/schema.d.ts.map +0 -1
  1348. package/dist/state/cache-v2/schema.js +0 -72
  1349. package/dist/state/cache-v2/schema.js.map +0 -1
  1350. package/dist/state/cache-v2/schema.test.d.ts +0 -2
  1351. package/dist/state/cache-v2/schema.test.d.ts.map +0 -1
  1352. package/dist/state/cache-v2/schema.test.js +0 -246
  1353. package/dist/state/cache-v2/schema.test.js.map +0 -1
  1354. package/dist/state/cache-v2/select-from-state-cache.d.ts +0 -19
  1355. package/dist/state/cache-v2/select-from-state-cache.d.ts.map +0 -1
  1356. package/dist/state/cache-v2/select-from-state-cache.js +0 -141
  1357. package/dist/state/cache-v2/select-from-state-cache.js.map +0 -1
  1358. package/dist/state/cache-v2/select-from-state-cache.test.d.ts +0 -2
  1359. package/dist/state/cache-v2/select-from-state-cache.test.d.ts.map +0 -1
  1360. package/dist/state/cache-v2/select-from-state-cache.test.js +0 -72
  1361. package/dist/state/cache-v2/select-from-state-cache.test.js.map +0 -1
  1362. package/dist/state/cache-v2/sqlite-type-mapper.d.ts +0 -6
  1363. package/dist/state/cache-v2/sqlite-type-mapper.d.ts.map +0 -1
  1364. package/dist/state/cache-v2/sqlite-type-mapper.js +0 -50
  1365. package/dist/state/cache-v2/sqlite-type-mapper.js.map +0 -1
  1366. package/dist/state/cache-v2/sqlite-type-mapper.test.d.ts +0 -2
  1367. package/dist/state/cache-v2/sqlite-type-mapper.test.d.ts.map +0 -1
  1368. package/dist/state/cache-v2/sqlite-type-mapper.test.js +0 -41
  1369. package/dist/state/cache-v2/sqlite-type-mapper.test.js.map +0 -1
  1370. package/dist/state/cache-v2/update-state-cache.bench.d.ts +0 -2
  1371. package/dist/state/cache-v2/update-state-cache.bench.d.ts.map +0 -1
  1372. package/dist/state/cache-v2/update-state-cache.bench.js +0 -165
  1373. package/dist/state/cache-v2/update-state-cache.bench.js.map +0 -1
  1374. package/dist/state/cache-v2/update-state-cache.d.ts +0 -23
  1375. package/dist/state/cache-v2/update-state-cache.d.ts.map +0 -1
  1376. package/dist/state/cache-v2/update-state-cache.js +0 -403
  1377. package/dist/state/cache-v2/update-state-cache.js.map +0 -1
  1378. package/dist/state/cache-v2/update-state-cache.test.d.ts +0 -2
  1379. package/dist/state/cache-v2/update-state-cache.test.d.ts.map +0 -1
  1380. package/dist/state/cache-v2/update-state-cache.test.js +0 -281
  1381. package/dist/state/cache-v2/update-state-cache.test.js.map +0 -1
  1382. package/dist/state/create-checkpoint.d.ts +0 -22
  1383. package/dist/state/create-checkpoint.d.ts.map +0 -1
  1384. package/dist/state/create-checkpoint.js +0 -226
  1385. package/dist/state/create-checkpoint.js.map +0 -1
  1386. package/dist/state/create-checkpoint.test.d.ts +0 -2
  1387. package/dist/state/create-checkpoint.test.d.ts.map +0 -1
  1388. package/dist/state/create-checkpoint.test.js +0 -649
  1389. package/dist/state/create-checkpoint.test.js.map +0 -1
  1390. package/dist/state/index.d.ts +0 -7
  1391. package/dist/state/index.d.ts.map +0 -1
  1392. package/dist/state/index.js +0 -5
  1393. package/dist/state/index.js.map +0 -1
  1394. package/dist/state/materialize-state.bench.d.ts +0 -2
  1395. package/dist/state/materialize-state.bench.d.ts.map +0 -1
  1396. package/dist/state/materialize-state.bench.js +0 -196
  1397. package/dist/state/materialize-state.bench.js.map +0 -1
  1398. package/dist/state/materialize-state.d.ts +0 -5
  1399. package/dist/state/materialize-state.d.ts.map +0 -1
  1400. package/dist/state/materialize-state.js +0 -561
  1401. package/dist/state/materialize-state.js.map +0 -1
  1402. package/dist/state/materialize-state.test.d.ts +0 -2
  1403. package/dist/state/materialize-state.test.d.ts.map +0 -1
  1404. package/dist/state/materialize-state.test.js +0 -2314
  1405. package/dist/state/materialize-state.test.js.map +0 -1
  1406. package/dist/state/schema.bench.d.ts +0 -2
  1407. package/dist/state/schema.bench.d.ts.map +0 -1
  1408. package/dist/state/schema.bench.js +0 -108
  1409. package/dist/state/schema.bench.js.map +0 -1
  1410. package/dist/state/schema.d.ts +0 -5
  1411. package/dist/state/schema.d.ts.map +0 -1
  1412. package/dist/state/schema.js +0 -35
  1413. package/dist/state/schema.js.map +0 -1
  1414. package/dist/state/transaction/insert-transaction-state.d.ts +0 -65
  1415. package/dist/state/transaction/insert-transaction-state.d.ts.map +0 -1
  1416. package/dist/state/transaction/insert-transaction-state.js +0 -116
  1417. package/dist/state/transaction/insert-transaction-state.js.map +0 -1
  1418. package/dist/state/transaction/insert-transaction-state.test.d.ts +0 -2
  1419. package/dist/state/transaction/insert-transaction-state.test.d.ts.map +0 -1
  1420. package/dist/state/transaction/insert-transaction-state.test.js +0 -946
  1421. package/dist/state/transaction/insert-transaction-state.test.js.map +0 -1
  1422. package/dist/state/transaction/schema.d.ts +0 -22
  1423. package/dist/state/transaction/schema.d.ts.map +0 -1
  1424. package/dist/state/transaction/schema.js +0 -25
  1425. package/dist/state/transaction/schema.js.map +0 -1
  1426. package/dist/state/transition.bench.d.ts +0 -2
  1427. package/dist/state/transition.bench.d.ts.map +0 -1
  1428. package/dist/state/transition.bench.js +0 -215
  1429. package/dist/state/transition.bench.js.map +0 -1
  1430. package/dist/state/transition.d.ts +0 -21
  1431. package/dist/state/transition.d.ts.map +0 -1
  1432. package/dist/state/transition.js +0 -336
  1433. package/dist/state/transition.js.map +0 -1
  1434. package/dist/state/transition.test.d.ts +0 -2
  1435. package/dist/state/transition.test.d.ts.map +0 -1
  1436. package/dist/state/transition.test.js +0 -226
  1437. package/dist/state/transition.test.js.map +0 -1
  1438. package/dist/state/untracked/schema.d.ts +0 -25
  1439. package/dist/state/untracked/schema.d.ts.map +0 -1
  1440. package/dist/state/untracked/schema.js +0 -45
  1441. package/dist/state/untracked/schema.js.map +0 -1
  1442. package/dist/state/untracked/schema.test.d.ts +0 -2
  1443. package/dist/state/untracked/schema.test.d.ts.map +0 -1
  1444. package/dist/state/untracked/schema.test.js +0 -275
  1445. package/dist/state/untracked/schema.test.js.map +0 -1
  1446. package/dist/state/untracked/update-untracked-state.d.ts +0 -36
  1447. package/dist/state/untracked/update-untracked-state.d.ts.map +0 -1
  1448. package/dist/state/untracked/update-untracked-state.js +0 -144
  1449. package/dist/state/untracked/update-untracked-state.js.map +0 -1
  1450. package/dist/state/untracked/update-untracked-state.test.d.ts +0 -2
  1451. package/dist/state/untracked/update-untracked-state.test.d.ts.map +0 -1
  1452. package/dist/state/untracked/update-untracked-state.test.js +0 -435
  1453. package/dist/state/untracked/update-untracked-state.test.js.map +0 -1
  1454. package/dist/state/views/state-by-version.d.ts +0 -30
  1455. package/dist/state/views/state-by-version.d.ts.map +0 -1
  1456. package/dist/state/views/state-by-version.js +0 -94
  1457. package/dist/state/views/state-by-version.js.map +0 -1
  1458. package/dist/state/views/state-with-tombstones.d.ts +0 -34
  1459. package/dist/state/views/state-with-tombstones.d.ts.map +0 -1
  1460. package/dist/state/views/state-with-tombstones.js +0 -37
  1461. package/dist/state/views/state-with-tombstones.js.map +0 -1
  1462. package/dist/state/views/state-with-tombstones.test.d.ts +0 -2
  1463. package/dist/state/views/state-with-tombstones.test.d.ts.map +0 -1
  1464. package/dist/state/views/state-with-tombstones.test.js +0 -148
  1465. package/dist/state/views/state-with-tombstones.test.js.map +0 -1
  1466. package/dist/state/views/state.bench.d.ts +0 -2
  1467. package/dist/state/views/state.bench.d.ts.map +0 -1
  1468. package/dist/state/views/state.bench.js +0 -308
  1469. package/dist/state/views/state.bench.js.map +0 -1
  1470. package/dist/state/views/state.d.ts +0 -15
  1471. package/dist/state/views/state.d.ts.map +0 -1
  1472. package/dist/state/views/state.js +0 -85
  1473. package/dist/state/views/state.js.map +0 -1
  1474. package/dist/state/views/state.test.d.ts +0 -2
  1475. package/dist/state/views/state.test.d.ts.map +0 -1
  1476. package/dist/state/views/state.test.js +0 -340
  1477. package/dist/state/views/state.test.js.map +0 -1
  1478. package/dist/state/vtable/commit.bench.d.ts +0 -2
  1479. package/dist/state/vtable/commit.bench.d.ts.map +0 -1
  1480. package/dist/state/vtable/commit.bench.js +0 -287
  1481. package/dist/state/vtable/commit.bench.js.map +0 -1
  1482. package/dist/state/vtable/commit.d.ts +0 -18
  1483. package/dist/state/vtable/commit.d.ts.map +0 -1
  1484. package/dist/state/vtable/commit.js +0 -426
  1485. package/dist/state/vtable/commit.js.map +0 -1
  1486. package/dist/state/vtable/commit.test.d.ts +0 -2
  1487. package/dist/state/vtable/commit.test.d.ts.map +0 -1
  1488. package/dist/state/vtable/commit.test.js +0 -1644
  1489. package/dist/state/vtable/commit.test.js.map +0 -1
  1490. package/dist/state/vtable/generate-commit.d.ts +0 -33
  1491. package/dist/state/vtable/generate-commit.d.ts.map +0 -1
  1492. package/dist/state/vtable/generate-commit.js +0 -277
  1493. package/dist/state/vtable/generate-commit.js.map +0 -1
  1494. package/dist/state/vtable/generate-commit.test.d.ts +0 -2
  1495. package/dist/state/vtable/generate-commit.test.d.ts.map +0 -1
  1496. package/dist/state/vtable/generate-commit.test.js +0 -377
  1497. package/dist/state/vtable/generate-commit.test.js.map +0 -1
  1498. package/dist/state/vtable/index.d.ts +0 -3
  1499. package/dist/state/vtable/index.d.ts.map +0 -1
  1500. package/dist/state/vtable/index.js +0 -3
  1501. package/dist/state/vtable/index.js.map +0 -1
  1502. package/dist/state/vtable/insert-vtable-log.d.ts +0 -18
  1503. package/dist/state/vtable/insert-vtable-log.d.ts.map +0 -1
  1504. package/dist/state/vtable/insert-vtable-log.js +0 -49
  1505. package/dist/state/vtable/insert-vtable-log.js.map +0 -1
  1506. package/dist/state/vtable/primary-key.d.ts +0 -41
  1507. package/dist/state/vtable/primary-key.d.ts.map +0 -1
  1508. package/dist/state/vtable/primary-key.js +0 -64
  1509. package/dist/state/vtable/primary-key.js.map +0 -1
  1510. package/dist/state/vtable/primary-key.test.d.ts +0 -2
  1511. package/dist/state/vtable/primary-key.test.d.ts.map +0 -1
  1512. package/dist/state/vtable/primary-key.test.js +0 -32
  1513. package/dist/state/vtable/primary-key.test.js.map +0 -1
  1514. package/dist/state/vtable/validate-state-mutation.bench.d.ts +0 -2
  1515. package/dist/state/vtable/validate-state-mutation.bench.d.ts.map +0 -1
  1516. package/dist/state/vtable/validate-state-mutation.bench.js +0 -284
  1517. package/dist/state/vtable/validate-state-mutation.bench.js.map +0 -1
  1518. package/dist/state/vtable/validate-state-mutation.d.ts +0 -21
  1519. package/dist/state/vtable/validate-state-mutation.d.ts.map +0 -1
  1520. package/dist/state/vtable/validate-state-mutation.js +0 -886
  1521. package/dist/state/vtable/validate-state-mutation.js.map +0 -1
  1522. package/dist/state/vtable/validate-state-mutation.playground.test.d.ts +0 -2
  1523. package/dist/state/vtable/validate-state-mutation.playground.test.d.ts.map +0 -1
  1524. package/dist/state/vtable/validate-state-mutation.playground.test.js +0 -389
  1525. package/dist/state/vtable/validate-state-mutation.playground.test.js.map +0 -1
  1526. package/dist/state/vtable/validate-state-mutation.test.d.ts +0 -2
  1527. package/dist/state/vtable/validate-state-mutation.test.d.ts.map +0 -1
  1528. package/dist/state/vtable/validate-state-mutation.test.js +0 -3655
  1529. package/dist/state/vtable/validate-state-mutation.test.js.map +0 -1
  1530. package/dist/state/vtable/vtable.d.ts +0 -26
  1531. package/dist/state/vtable/vtable.d.ts.map +0 -1
  1532. package/dist/state/vtable/vtable.insert.bench.d.ts +0 -2
  1533. package/dist/state/vtable/vtable.insert.bench.d.ts.map +0 -1
  1534. package/dist/state/vtable/vtable.insert.bench.js +0 -100
  1535. package/dist/state/vtable/vtable.insert.bench.js.map +0 -1
  1536. package/dist/state/vtable/vtable.js +0 -951
  1537. package/dist/state/vtable/vtable.js.map +0 -1
  1538. package/dist/state/vtable/vtable.select.bench.d.ts +0 -2
  1539. package/dist/state/vtable/vtable.select.bench.d.ts.map +0 -1
  1540. package/dist/state/vtable/vtable.select.bench.js +0 -334
  1541. package/dist/state/vtable/vtable.select.bench.js.map +0 -1
  1542. package/dist/state/vtable/vtable.test.d.ts +0 -2
  1543. package/dist/state/vtable/vtable.test.d.ts.map +0 -1
  1544. package/dist/state/vtable/vtable.test.js +0 -3516
  1545. package/dist/state/vtable/vtable.test.js.map +0 -1
  1546. package/dist/state/working-change-set/refresh-working-change-set.d.ts +0 -21
  1547. package/dist/state/working-change-set/refresh-working-change-set.d.ts.map +0 -1
  1548. package/dist/state/working-change-set/refresh-working-change-set.js +0 -185
  1549. package/dist/state/working-change-set/refresh-working-change-set.js.map +0 -1
  1550. package/dist/state/working-change-set/refresh-working-change-set.test.d.ts +0 -2
  1551. package/dist/state/working-change-set/refresh-working-change-set.test.d.ts.map +0 -1
  1552. package/dist/state/working-change-set/refresh-working-change-set.test.js +0 -89
  1553. package/dist/state/working-change-set/refresh-working-change-set.test.js.map +0 -1
  1554. package/dist/state/writer.d.ts +0 -42
  1555. package/dist/state/writer.d.ts.map +0 -1
  1556. package/dist/state/writer.js +0 -62
  1557. package/dist/state/writer.js.map +0 -1
  1558. package/dist/state-history/schema.d.ts +0 -72
  1559. package/dist/state-history/schema.d.ts.map +0 -1
  1560. package/dist/state-history/schema.js +0 -180
  1561. package/dist/state-history/schema.js.map +0 -1
  1562. package/dist/state-history/schema.test.d.ts +0 -2
  1563. package/dist/state-history/schema.test.d.ts.map +0 -1
  1564. package/dist/state-history/schema.test.js +0 -855
  1565. package/dist/state-history/schema.test.js.map +0 -1
  1566. package/dist/stored-schema/get-stored-schema.d.ts +0 -27
  1567. package/dist/stored-schema/get-stored-schema.d.ts.map +0 -1
  1568. package/dist/stored-schema/get-stored-schema.js +0 -129
  1569. package/dist/stored-schema/get-stored-schema.js.map +0 -1
  1570. package/dist/stored-schema/get-stored-schema.test.d.ts +0 -2
  1571. package/dist/stored-schema/get-stored-schema.test.d.ts.map +0 -1
  1572. package/dist/stored-schema/get-stored-schema.test.js +0 -259
  1573. package/dist/stored-schema/get-stored-schema.test.js.map +0 -1
  1574. package/dist/stored-schema/index.d.ts +0 -2
  1575. package/dist/stored-schema/index.d.ts.map +0 -1
  1576. package/dist/stored-schema/index.js +0 -2
  1577. package/dist/stored-schema/index.js.map +0 -1
  1578. package/dist/stored-schema/schema-definition.d.ts +0 -22
  1579. package/dist/stored-schema/schema-definition.d.ts.map +0 -1
  1580. package/dist/stored-schema/schema-definition.js +0 -20
  1581. package/dist/stored-schema/schema-definition.js.map +0 -1
  1582. package/dist/stored-schema/schema.test.d.ts +0 -2
  1583. package/dist/stored-schema/schema.test.d.ts.map +0 -1
  1584. package/dist/stored-schema/schema.test.js +0 -135
  1585. package/dist/stored-schema/schema.test.js.map +0 -1
  1586. package/dist/sync/get-diffing-rows.d.ts +0 -28
  1587. package/dist/sync/get-diffing-rows.d.ts.map +0 -1
  1588. package/dist/sync/get-diffing-rows.js +0 -76
  1589. package/dist/sync/get-diffing-rows.js.map +0 -1
  1590. package/dist/sync/merge-state.d.ts +0 -20
  1591. package/dist/sync/merge-state.d.ts.map +0 -1
  1592. package/dist/sync/merge-state.js +0 -238
  1593. package/dist/sync/merge-state.js.map +0 -1
  1594. package/dist/sync/pull-from-server.d.ts +0 -8
  1595. package/dist/sync/pull-from-server.d.ts.map +0 -1
  1596. package/dist/sync/pull-from-server.js +0 -113
  1597. package/dist/sync/pull-from-server.js.map +0 -1
  1598. package/dist/sync/pull-from-server.test.d.ts +0 -2
  1599. package/dist/sync/pull-from-server.test.d.ts.map +0 -1
  1600. package/dist/sync/pull-from-server.test.js +0 -344
  1601. package/dist/sync/pull-from-server.test.js.map +0 -1
  1602. package/dist/sync/push-to-server.d.ts +0 -21
  1603. package/dist/sync/push-to-server.d.ts.map +0 -1
  1604. package/dist/sync/push-to-server.js +0 -44
  1605. package/dist/sync/push-to-server.js.map +0 -1
  1606. package/dist/sync/push-to-server.test.d.ts +0 -2
  1607. package/dist/sync/push-to-server.test.d.ts.map +0 -1
  1608. package/dist/sync/push-to-server.test.js +0 -307
  1609. package/dist/sync/push-to-server.test.js.map +0 -1
  1610. package/dist/sync/sync-process.d.ts +0 -5
  1611. package/dist/sync/sync-process.d.ts.map +0 -1
  1612. package/dist/sync/sync-process.js +0 -89
  1613. package/dist/sync/sync-process.js.map +0 -1
  1614. package/dist/sync/sync-process.test.d.ts +0 -2
  1615. package/dist/sync/sync-process.test.d.ts.map +0 -1
  1616. package/dist/sync/sync-process.test.js +0 -247
  1617. package/dist/sync/sync-process.test.js.map +0 -1
  1618. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts +0 -8
  1619. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts.map +0 -1
  1620. package/dist/test-utilities/simulation-test/cache-miss-simulation.js +0 -79
  1621. package/dist/test-utilities/simulation-test/cache-miss-simulation.js.map +0 -1
  1622. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.d.ts +0 -2
  1623. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.d.ts.map +0 -1
  1624. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js +0 -150
  1625. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js.map +0 -1
  1626. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.d.ts +0 -2
  1627. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.d.ts.map +0 -1
  1628. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.js +0 -2
  1629. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.js.map +0 -1
  1630. package/dist/test-utilities/simulation-test/engine-boundary-simulation.d.ts +0 -3
  1631. package/dist/test-utilities/simulation-test/engine-boundary-simulation.d.ts.map +0 -1
  1632. package/dist/test-utilities/simulation-test/engine-boundary-simulation.js +0 -52
  1633. package/dist/test-utilities/simulation-test/engine-boundary-simulation.js.map +0 -1
  1634. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.d.ts +0 -2
  1635. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.d.ts.map +0 -1
  1636. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.js +0 -10
  1637. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.js.map +0 -1
  1638. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts +0 -10
  1639. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts.map +0 -1
  1640. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js +0 -50
  1641. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js.map +0 -1
  1642. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.d.ts +0 -2
  1643. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.d.ts.map +0 -1
  1644. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js +0 -71
  1645. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js.map +0 -1
  1646. package/dist/test-utilities/simulation-test/simulation-test.d.ts +0 -87
  1647. package/dist/test-utilities/simulation-test/simulation-test.d.ts.map +0 -1
  1648. package/dist/test-utilities/simulation-test/simulation-test.js +0 -89
  1649. package/dist/test-utilities/simulation-test/simulation-test.js.map +0 -1
  1650. package/dist/test-utilities/simulation-test/simulation-test.test.d.ts +0 -2
  1651. package/dist/test-utilities/simulation-test/simulation-test.test.d.ts.map +0 -1
  1652. package/dist/test-utilities/simulation-test/simulation-test.test.js +0 -308
  1653. package/dist/test-utilities/simulation-test/simulation-test.test.js.map +0 -1
  1654. package/dist/version/create-version-from-commit.d.ts +0 -44
  1655. package/dist/version/create-version-from-commit.d.ts.map +0 -1
  1656. package/dist/version/create-version-from-commit.js +0 -119
  1657. package/dist/version/create-version-from-commit.js.map +0 -1
  1658. package/dist/version/create-version-from-commit.test.d.ts +0 -2
  1659. package/dist/version/create-version-from-commit.test.d.ts.map +0 -1
  1660. package/dist/version/create-version-from-commit.test.js +0 -166
  1661. package/dist/version/create-version-from-commit.test.js.map +0 -1
  1662. package/dist/version/create-version.d.ts +0 -15
  1663. package/dist/version/create-version.d.ts.map +0 -1
  1664. package/dist/version/create-version.js +0 -42
  1665. package/dist/version/create-version.js.map +0 -1
  1666. package/dist/version/create-version.test.d.ts +0 -2
  1667. package/dist/version/create-version.test.d.ts.map +0 -1
  1668. package/dist/version/create-version.test.js +0 -178
  1669. package/dist/version/create-version.test.js.map +0 -1
  1670. package/dist/version/index.d.ts +0 -7
  1671. package/dist/version/index.d.ts.map +0 -1
  1672. package/dist/version/index.js +0 -7
  1673. package/dist/version/index.js.map +0 -1
  1674. package/dist/version/merge-version.d.ts +0 -8
  1675. package/dist/version/merge-version.d.ts.map +0 -1
  1676. package/dist/version/merge-version.js +0 -485
  1677. package/dist/version/merge-version.js.map +0 -1
  1678. package/dist/version/merge-version.test.d.ts +0 -2
  1679. package/dist/version/merge-version.test.d.ts.map +0 -1
  1680. package/dist/version/merge-version.test.js +0 -844
  1681. package/dist/version/merge-version.test.js.map +0 -1
  1682. package/dist/version/schema-definition.d.ts +0 -107
  1683. package/dist/version/schema-definition.d.ts.map +0 -1
  1684. package/dist/version/schema-definition.js +0 -93
  1685. package/dist/version/schema-definition.js.map +0 -1
  1686. package/dist/version/schema.d.ts +0 -6
  1687. package/dist/version/schema.d.ts.map +0 -1
  1688. package/dist/version/schema.js +0 -452
  1689. package/dist/version/schema.js.map +0 -1
  1690. package/dist/version/schema.test.d.ts +0 -2
  1691. package/dist/version/schema.test.d.ts.map +0 -1
  1692. package/dist/version/schema.test.js +0 -1071
  1693. package/dist/version/schema.test.js.map +0 -1
  1694. package/dist/version/select-active-version.d.ts +0 -7
  1695. package/dist/version/select-active-version.d.ts.map +0 -1
  1696. package/dist/version/select-active-version.js +0 -7
  1697. package/dist/version/select-active-version.js.map +0 -1
  1698. package/dist/version/select-version-diff.bench.d.ts +0 -2
  1699. package/dist/version/select-version-diff.bench.d.ts.map +0 -1
  1700. package/dist/version/select-version-diff.bench.js +0 -126
  1701. package/dist/version/select-version-diff.bench.js.map +0 -1
  1702. package/dist/version/select-version-diff.d.ts +0 -121
  1703. package/dist/version/select-version-diff.d.ts.map +0 -1
  1704. package/dist/version/select-version-diff.js +0 -179
  1705. package/dist/version/select-version-diff.js.map +0 -1
  1706. package/dist/version/select-version-diff.playground.test.d.ts +0 -2
  1707. package/dist/version/select-version-diff.playground.test.d.ts.map +0 -1
  1708. package/dist/version/select-version-diff.playground.test.js +0 -114
  1709. package/dist/version/select-version-diff.playground.test.js.map +0 -1
  1710. package/dist/version/select-version-diff.test.d.ts +0 -2
  1711. package/dist/version/select-version-diff.test.d.ts.map +0 -1
  1712. package/dist/version/select-version-diff.test.js +0 -689
  1713. package/dist/version/select-version-diff.test.js.map +0 -1
  1714. package/dist/version/switch-version.d.ts +0 -27
  1715. package/dist/version/switch-version.d.ts.map +0 -1
  1716. package/dist/version/switch-version.js +0 -35
  1717. package/dist/version/switch-version.js.map +0 -1
  1718. package/dist/version/switch-version.test.d.ts +0 -2
  1719. package/dist/version/switch-version.test.d.ts.map +0 -1
  1720. package/dist/version/switch-version.test.js +0 -27
  1721. package/dist/version/switch-version.test.js.map +0 -1
  1722. package/src/account/create-account.test.ts +0 -57
  1723. package/src/account/create-account.ts +0 -53
  1724. package/src/account/index.ts +0 -8
  1725. package/src/account/schema-definition.ts +0 -60
  1726. package/src/account/schema.test.ts +0 -409
  1727. package/src/account/switch-account.test.ts +0 -74
  1728. package/src/account/switch-account.ts +0 -48
  1729. package/src/change/index.ts +0 -4
  1730. package/src/change/schema-definition.ts +0 -84
  1731. package/src/change/schema.bench.ts +0 -411
  1732. package/src/change/schema.test.ts +0 -413
  1733. package/src/change/schema.ts +0 -108
  1734. package/src/change-author/index.ts +0 -4
  1735. package/src/change-author/schema-definition.ts +0 -43
  1736. package/src/change-author/schema.test.ts +0 -510
  1737. package/src/change-conflict/create-change-conflict.test.ts +0 -176
  1738. package/src/change-conflict/create-change-conflict.ts +0 -128
  1739. package/src/change-conflict/detect-change-conflicts.test.ts +0 -218
  1740. package/src/change-conflict/detect-change-conflicts.ts +0 -68
  1741. package/src/change-conflict/detect-diverging-entity-conflict.test.ts +0 -231
  1742. package/src/change-conflict/detect-diverging-entity-conflict.ts +0 -85
  1743. package/src/change-conflict/garbage-collect-change-conflicts.test.ts +0 -220
  1744. package/src/change-conflict/garbage-collect-change-conflicts.ts +0 -99
  1745. package/src/change-conflict/index.ts +0 -3
  1746. package/src/change-conflict/resolve-conflict-by-selecting.test.ts +0 -128
  1747. package/src/change-conflict/resolve-conflict-by-selecting.ts +0 -67
  1748. package/src/change-conflict/update-change-conflicts.ts +0 -79
  1749. package/src/change-proposal/accept-change-proposal.test.ts +0 -64
  1750. package/src/change-proposal/accept-change-proposal.ts +0 -46
  1751. package/src/change-proposal/create-change-proposal.test.ts +0 -81
  1752. package/src/change-proposal/create-change-proposal.ts +0 -46
  1753. package/src/change-proposal/index.ts +0 -7
  1754. package/src/change-proposal/reject-change-proposal.test.ts +0 -34
  1755. package/src/change-proposal/reject-change-proposal.ts +0 -22
  1756. package/src/change-proposal/schema-definition.ts +0 -42
  1757. package/src/change-proposal/schema.test.ts +0 -124
  1758. package/src/change-set/apply-change-set.test.ts +0 -473
  1759. package/src/change-set/apply-change-set.ts +0 -166
  1760. package/src/change-set/create-change-set.test.ts +0 -119
  1761. package/src/change-set/create-change-set.ts +0 -93
  1762. package/src/change-set/index.ts +0 -8
  1763. package/src/change-set/schema-definition.ts +0 -83
  1764. package/src/change-set/schema.test.ts +0 -497
  1765. package/src/commit/index.ts +0 -6
  1766. package/src/commit/schema-definition.ts +0 -103
  1767. package/src/commit/schema.test.ts +0 -353
  1768. package/src/conversation/create-conversation-message.test.ts +0 -118
  1769. package/src/conversation/create-conversation-message.ts +0 -82
  1770. package/src/conversation/create-conversation.test.ts +0 -194
  1771. package/src/conversation/create-conversation.ts +0 -110
  1772. package/src/conversation/index.ts +0 -8
  1773. package/src/conversation/schema-definition.ts +0 -74
  1774. package/src/database/graph-traversal-mode.ts +0 -75
  1775. package/src/database/index.ts +0 -3
  1776. package/src/database/init-db.ts +0 -158
  1777. package/src/database/kysely/index.ts +0 -1
  1778. package/src/database/kysely/json-column-config.ts +0 -63
  1779. package/src/database/kysely/plugins/json-column-plugin.test.ts +0 -533
  1780. package/src/database/kysely/plugins/json-column-plugin.ts +0 -286
  1781. package/src/database/kysely/plugins/view-insert-returning-error-plugin.test.ts +0 -62
  1782. package/src/database/kysely/plugins/view-insert-returning-error-plugin.ts +0 -49
  1783. package/src/database/kysely/plugins.ts +0 -16
  1784. package/src/database/nano-id.test.ts +0 -42
  1785. package/src/database/nano-id.ts +0 -100
  1786. package/src/database/schema-view-map.ts +0 -48
  1787. package/src/database/schema.ts +0 -165
  1788. package/src/database/sqlite/content-from-database.ts +0 -12
  1789. package/src/database/sqlite/create-in-memory-database.ts +0 -61
  1790. package/src/database/sqlite/environment-dialect.test.ts +0 -84
  1791. package/src/database/sqlite/environment-dialect.ts +0 -227
  1792. package/src/database/sqlite/import-database.ts +0 -43
  1793. package/src/database/sqlite/index.ts +0 -7
  1794. package/src/database/sqlite/kysely-driver/connection-mutex.ts +0 -23
  1795. package/src/database/sqlite/kysely-driver/index.ts +0 -4
  1796. package/src/database/sqlite/kysely-driver/sqlite-wasm-connection.ts +0 -58
  1797. package/src/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.ts +0 -19
  1798. package/src/database/sqlite/kysely-driver/sqlite-wasm-driver.ts +0 -59
  1799. package/src/database/sqlite/lix-dialect.ts +0 -27
  1800. package/src/database/sqlite/load-database-in-memory.ts +0 -28
  1801. package/src/database/sqlite/sqlite-wasm-binary.d.ts +0 -2
  1802. package/src/database/sqlite/sqlite-wasm-binary.js +0 -42835
  1803. package/src/dependency/kysely/helpers/sqlite.ts +0 -4
  1804. package/src/dependency/kysely/index.ts +0 -8
  1805. package/src/dependency/zettel-ast/index.ts +0 -10
  1806. package/src/diff/index.ts +0 -2
  1807. package/src/diff/select-commit-diff.bench.ts +0 -156
  1808. package/src/diff/select-commit-diff.test.ts +0 -65
  1809. package/src/diff/select-commit-diff.ts +0 -234
  1810. package/src/diff/select-working-diff.bench.ts +0 -99
  1811. package/src/diff/select-working-diff.test.ts +0 -275
  1812. package/src/diff/select-working-diff.ts +0 -233
  1813. package/src/engine/boot.test.ts +0 -88
  1814. package/src/engine/boot.ts +0 -280
  1815. package/src/engine/cel-environment/cel-environment.test.ts +0 -20
  1816. package/src/engine/cel-environment/cel-environment.ts +0 -85
  1817. package/src/engine/deterministic-mode/is-deterministic-mode.test.ts +0 -121
  1818. package/src/engine/deterministic-mode/is-deterministic-mode.ts +0 -105
  1819. package/src/engine/deterministic-mode/options.test.ts +0 -159
  1820. package/src/engine/deterministic-mode/options.ts +0 -57
  1821. package/src/engine/entity-views/README.md +0 -214
  1822. package/src/engine/entity-views/build-json-object-entries.test.ts +0 -42
  1823. package/src/engine/entity-views/build-json-object-entries.ts +0 -43
  1824. package/src/engine/entity-views/entity-state-by-version.ts +0 -263
  1825. package/src/engine/entity-views/entity-state-history.ts +0 -208
  1826. package/src/engine/entity-views/entity-state.ts +0 -239
  1827. package/src/engine/entity-views/entity-view-builder.ts +0 -58
  1828. package/src/engine/entity-views/index.ts +0 -1
  1829. package/src/engine/entity-views/types.test.ts +0 -99
  1830. package/src/engine/entity-views/types.ts +0 -330
  1831. package/src/engine/execute-sync.test.ts +0 -90
  1832. package/src/engine/execute-sync.ts +0 -47
  1833. package/src/engine/explain-query.test.ts +0 -21
  1834. package/src/engine/explain-query.ts +0 -89
  1835. package/src/engine/functions/function-registry.ts +0 -69
  1836. package/src/engine/functions/generate-human-id.test.ts +0 -199
  1837. package/src/engine/functions/generate-human-id.ts +0 -383
  1838. package/src/engine/functions/index.ts +0 -6
  1839. package/src/engine/functions/nano-id.bench.ts +0 -57
  1840. package/src/engine/functions/nano-id.test.ts +0 -200
  1841. package/src/engine/functions/nano-id.ts +0 -205
  1842. package/src/engine/functions/random.test.ts +0 -293
  1843. package/src/engine/functions/random.ts +0 -267
  1844. package/src/engine/functions/register-builtins.ts +0 -154
  1845. package/src/engine/functions/sequence.test.ts +0 -99
  1846. package/src/engine/functions/sequence.ts +0 -165
  1847. package/src/engine/functions/timestamp.test.ts +0 -172
  1848. package/src/engine/functions/timestamp.ts +0 -86
  1849. package/src/engine/functions/uuid-v7.test.ts +0 -144
  1850. package/src/engine/functions/uuid-v7.ts +0 -88
  1851. package/src/engine/index.ts +0 -1
  1852. package/src/engine/internal-query-builder.ts +0 -42
  1853. package/src/engine/preprocessor/create-preprocessor.test.ts +0 -275
  1854. package/src/engine/preprocessor/create-preprocessor.ts +0 -267
  1855. package/src/engine/preprocessor/entity-views/__bench__/entity-view-select-all-rows.explain.txt +0 -287
  1856. package/src/engine/preprocessor/entity-views/__bench__/entity-view-select-id-filter.explain.txt +0 -290
  1857. package/src/engine/preprocessor/entity-views/delete.test.ts +0 -994
  1858. package/src/engine/preprocessor/entity-views/delete.ts +0 -359
  1859. package/src/engine/preprocessor/entity-views/insert.test.ts +0 -1175
  1860. package/src/engine/preprocessor/entity-views/insert.ts +0 -903
  1861. package/src/engine/preprocessor/entity-views/select.bench.ts +0 -168
  1862. package/src/engine/preprocessor/entity-views/select.test.ts +0 -385
  1863. package/src/engine/preprocessor/entity-views/select.ts +0 -2079
  1864. package/src/engine/preprocessor/entity-views/shared.ts +0 -1560
  1865. package/src/engine/preprocessor/entity-views/update.test.ts +0 -424
  1866. package/src/engine/preprocessor/entity-views/update.ts +0 -753
  1867. package/src/engine/preprocessor/inheritance/version-inheritance-cache.test.ts +0 -128
  1868. package/src/engine/preprocessor/inheritance/version-inheritance-cache.ts +0 -385
  1869. package/src/engine/preprocessor/sql-parser/ast-helpers.ts +0 -235
  1870. package/src/engine/preprocessor/sql-parser/column-usage.ts +0 -504
  1871. package/src/engine/preprocessor/sql-parser/compile.test.ts +0 -147
  1872. package/src/engine/preprocessor/sql-parser/compile.ts +0 -898
  1873. package/src/engine/preprocessor/sql-parser/cst.ts +0 -1012
  1874. package/src/engine/preprocessor/sql-parser/lexer.ts +0 -608
  1875. package/src/engine/preprocessor/sql-parser/nodes.ts +0 -395
  1876. package/src/engine/preprocessor/sql-parser/parse.test.ts +0 -1646
  1877. package/src/engine/preprocessor/sql-parser/parse.ts +0 -1984
  1878. package/src/engine/preprocessor/sql-parser/visitor.test.ts +0 -173
  1879. package/src/engine/preprocessor/sql-parser/visitor.ts +0 -1403
  1880. package/src/engine/preprocessor/steps/cache-populator.test.ts +0 -128
  1881. package/src/engine/preprocessor/steps/cache-populator.ts +0 -797
  1882. package/src/engine/preprocessor/steps/expand-sql-views.test.ts +0 -1353
  1883. package/src/engine/preprocessor/steps/expand-sql-views.ts +0 -1167
  1884. package/src/engine/preprocessor/steps/rewrite-active-version-subquery.test.ts +0 -83
  1885. package/src/engine/preprocessor/steps/rewrite-active-version-subquery.ts +0 -251
  1886. package/src/engine/preprocessor/steps/rewrite-vtable-selects.bench.ts +0 -68
  1887. package/src/engine/preprocessor/steps/rewrite-vtable-selects.test.ts +0 -1326
  1888. package/src/engine/preprocessor/steps/rewrite-vtable-selects.ts +0 -3751
  1889. package/src/engine/preprocessor/types.ts +0 -103
  1890. package/src/engine/sql-parser/tokenizer.test.ts +0 -408
  1891. package/src/engine/sql-parser/tokenizer.ts +0 -205
  1892. package/src/engine/with-runtime-cache.test.ts +0 -173
  1893. package/src/engine/with-runtime-cache.ts +0 -206
  1894. package/src/entity/conversation/attach-conversation.test.ts +0 -251
  1895. package/src/entity/conversation/attach-conversation.ts +0 -98
  1896. package/src/entity/conversation/schema-definition.ts +0 -52
  1897. package/src/entity/conversation/schema.test.ts +0 -105
  1898. package/src/entity/eb-entity.test.ts +0 -769
  1899. package/src/entity/eb-entity.ts +0 -203
  1900. package/src/entity/index.ts +0 -9
  1901. package/src/entity/label/attach-label.test.ts +0 -356
  1902. package/src/entity/label/attach-label.ts +0 -165
  1903. package/src/entity/label/schema-definition.ts +0 -47
  1904. package/src/entity/label/schema.test.ts +0 -945
  1905. package/src/entity/types.ts +0 -13
  1906. package/src/environment/api.test.ts +0 -102
  1907. package/src/environment/api.ts +0 -39
  1908. package/src/environment/in-memory.test.ts +0 -100
  1909. package/src/environment/in-memory.ts +0 -68
  1910. package/src/environment/index.ts +0 -7
  1911. package/src/environment/kysely/kysely-driver.test.ts +0 -29
  1912. package/src/environment/load-from-string.test.ts +0 -17
  1913. package/src/environment/load-from-string.ts +0 -77
  1914. package/src/environment/opfs-sah.browser.test.ts +0 -352
  1915. package/src/environment/opfs-sah.ts +0 -279
  1916. package/src/environment/opfs-sah.worker.ts +0 -271
  1917. package/src/environment/test-actors/echo.actor.ts +0 -6
  1918. package/src/filesystem/__bench__/batch-file-reads-select-multiple-files.explain.txt +0 -523
  1919. package/src/filesystem/__bench__/file-delete-operations-delete.explain.txt +0 -90
  1920. package/src/filesystem/__bench__/file-delete-operations-insert.explain.txt +0 -11
  1921. package/src/filesystem/__bench__/file-insert-operations.explain.txt +0 -11
  1922. package/src/filesystem/__bench__/file-read-by-exact-path.explain.txt +0 -523
  1923. package/src/filesystem/__bench__/file-read-excluding-file-path-via-not-like.explain.txt +0 -458
  1924. package/src/filesystem/__bench__/file-read-with-path-based-like.explain.txt +0 -523
  1925. package/src/filesystem/__bench__/file-reads-with-varying-sizes.explain.txt +0 -523
  1926. package/src/filesystem/__bench__/file-table-full-scan.explain.txt +0 -522
  1927. package/src/filesystem/__bench__/file-update-by-path.explain.txt +0 -90
  1928. package/src/filesystem/__bench__/mixed-file-read-pattern-80-20-distribution.explain.txt +0 -523
  1929. package/src/filesystem/__bench__/repeated-file-reads-same-file-cache-hit-scenario.explain.txt +0 -523
  1930. package/src/filesystem/__bench__/sequential-file-reads-unique-files.explain.txt +0 -523
  1931. package/src/filesystem/directory/ensure-directories.ts +0 -311
  1932. package/src/filesystem/directory/schema-definition.ts +0 -44
  1933. package/src/filesystem/directory/schema.test.ts +0 -119
  1934. package/src/filesystem/directory/schema.ts +0 -577
  1935. package/src/filesystem/file/cache/clear-file-data-cache.ts +0 -56
  1936. package/src/filesystem/file/cache/lixcol-schema.ts +0 -48
  1937. package/src/filesystem/file/cache/path-cache-schema.ts +0 -45
  1938. package/src/filesystem/file/cache/schema.test.ts +0 -326
  1939. package/src/filesystem/file/cache/schema.ts +0 -36
  1940. package/src/filesystem/file/cache/update-file-data-cache.ts +0 -31
  1941. package/src/filesystem/file/cache/update-file-lixcol-cache.ts +0 -88
  1942. package/src/filesystem/file/cache/update-file-path-cache.ts +0 -47
  1943. package/src/filesystem/file/descriptor-utils.ts +0 -356
  1944. package/src/filesystem/file/file-handlers.test.ts +0 -390
  1945. package/src/filesystem/file/file-handlers.ts +0 -670
  1946. package/src/filesystem/file/materialize-file-data-at-commit.ts +0 -203
  1947. package/src/filesystem/file/materialize-file-data.test.ts +0 -123
  1948. package/src/filesystem/file/materialize-file-data.ts +0 -140
  1949. package/src/filesystem/file/schema-definition.ts +0 -49
  1950. package/src/filesystem/file/schema.test.ts +0 -2452
  1951. package/src/filesystem/file/schema.ts +0 -671
  1952. package/src/filesystem/file/select-file-data.ts +0 -59
  1953. package/src/filesystem/file/select-file-lixcol.ts +0 -144
  1954. package/src/filesystem/file/store-detected-change-schema.test.ts +0 -285
  1955. package/src/filesystem/file/store-detected-change-schema.ts +0 -62
  1956. package/src/filesystem/file/unknown-file-fallback-plugin.test.ts +0 -383
  1957. package/src/filesystem/file/unknown-file-fallback-plugin.ts +0 -96
  1958. package/src/filesystem/fs.bench.ts +0 -661
  1959. package/src/filesystem/index.ts +0 -15
  1960. package/src/filesystem/path.test.ts +0 -130
  1961. package/src/filesystem/path.ts +0 -127
  1962. package/src/filesystem/schema.test.ts +0 -656
  1963. package/src/filesystem/schema.ts +0 -14
  1964. package/src/filesystem/util/glob.ts +0 -31
  1965. package/src/hooks/create-hooks.test.ts +0 -240
  1966. package/src/hooks/create-hooks.ts +0 -155
  1967. package/src/hooks/index.ts +0 -1
  1968. package/src/index.ts +0 -27
  1969. package/src/key-value/index.ts +0 -1
  1970. package/src/key-value/schema-definition.ts +0 -78
  1971. package/src/key-value/schema.test.ts +0 -405
  1972. package/src/label/create-label.test.ts +0 -234
  1973. package/src/label/create-label.ts +0 -65
  1974. package/src/label/index.ts +0 -2
  1975. package/src/label/schema-definition.ts +0 -27
  1976. package/src/label/schema.test.ts +0 -92
  1977. package/src/lix/index.ts +0 -2
  1978. package/src/lix/new-lix.test.ts +0 -486
  1979. package/src/lix/new-lix.ts +0 -787
  1980. package/src/lix/open-lix.bench.ts +0 -23
  1981. package/src/lix/open-lix.test.ts +0 -530
  1982. package/src/lix/open-lix.ts +0 -352
  1983. package/src/log/create-lix-own-log.test.ts +0 -147
  1984. package/src/log/create-lix-own-log.ts +0 -112
  1985. package/src/log/create-log.ts +0 -63
  1986. package/src/log/index.ts +0 -2
  1987. package/src/log/schema-definition.ts +0 -45
  1988. package/src/log/schema.test.ts +0 -179
  1989. package/src/observe/create-observe.test.ts +0 -1331
  1990. package/src/observe/create-observe.ts +0 -301
  1991. package/src/observe/determine-schema-keys.test.ts +0 -430
  1992. package/src/observe/determine-schema-keys.ts +0 -424
  1993. package/src/observe/index.ts +0 -1
  1994. package/src/observe/lix-observable.test.ts +0 -247
  1995. package/src/observe/lix-observable.ts +0 -92
  1996. package/src/plugin/index.ts +0 -8
  1997. package/src/plugin/lix-plugin.test-d.ts +0 -57
  1998. package/src/plugin/lix-plugin.test.ts +0 -57
  1999. package/src/plugin/lix-plugin.ts +0 -162
  2000. package/src/plugin/mock-json-plugin.flatten.ts +0 -161
  2001. package/src/plugin/mock-json-plugin.test.ts +0 -225
  2002. package/src/plugin/mock-json-plugin.ts +0 -114
  2003. package/src/plugin/query-sync.test.ts +0 -132
  2004. package/src/plugin/query-sync.ts +0 -170
  2005. package/src/query-filter/commit-is-ancestor-of.test.ts +0 -234
  2006. package/src/query-filter/commit-is-ancestor-of.ts +0 -77
  2007. package/src/query-filter/commit-is-descendant-of.test.ts +0 -249
  2008. package/src/query-filter/commit-is-descendant-of.ts +0 -70
  2009. package/src/query-filter/index.ts +0 -2
  2010. package/src/schema-definition/definition.test-d.ts +0 -338
  2011. package/src/schema-definition/definition.test.ts +0 -677
  2012. package/src/schema-definition/definition.ts +0 -637
  2013. package/src/schema-definition/index.ts +0 -13
  2014. package/src/schema-definition/json-pointer.test.ts +0 -101
  2015. package/src/schema-definition/json-pointer.ts +0 -168
  2016. package/src/schema-definition/json-type.test.ts +0 -30
  2017. package/src/schema-definition/json-type.ts +0 -53
  2018. package/src/schema-definition/validate-lix-schema.test.ts +0 -193
  2019. package/src/schema-definition/validate-lix-schema.ts +0 -176
  2020. package/src/server-protocol-handler/create-server-protocol-handler.ts +0 -84
  2021. package/src/server-protocol-handler/environment/create-in-memory-environment.test.ts +0 -130
  2022. package/src/server-protocol-handler/environment/create-in-memory-environment.ts +0 -100
  2023. package/src/server-protocol-handler/environment/environment.ts +0 -41
  2024. package/src/server-protocol-handler/index.ts +0 -5
  2025. package/src/server-protocol-handler/routes/get-v1.test.ts +0 -146
  2026. package/src/server-protocol-handler/routes/get-v1.ts +0 -65
  2027. package/src/server-protocol-handler/routes/new-v1.test.ts +0 -102
  2028. package/src/server-protocol-handler/routes/new-v1.ts +0 -44
  2029. package/src/server-protocol-handler/routes/pull-v1.test.ts +0 -217
  2030. package/src/server-protocol-handler/routes/pull-v1.ts +0 -58
  2031. package/src/server-protocol-handler/routes/push-v1.test.ts +0 -301
  2032. package/src/server-protocol-handler/routes/push-v1.ts +0 -184
  2033. package/src/services/env-variables/create-index-file.js +0 -35
  2034. package/src/services/env-variables/index.d.ts +0 -15
  2035. package/src/services/telemetry/capture.test.ts +0 -44
  2036. package/src/services/telemetry/capture.ts +0 -99
  2037. package/src/snapshot/schema.test.ts +0 -268
  2038. package/src/snapshot/schema.ts +0 -33
  2039. package/src/state/README.md +0 -95
  2040. package/src/state/cache/builtin-schemas.ts +0 -25
  2041. package/src/state/cache/clear-state-cache.test.ts +0 -44
  2042. package/src/state/cache/clear-state-cache.ts +0 -52
  2043. package/src/state/cache/create-schema-cache-table.test.ts +0 -67
  2044. package/src/state/cache/create-schema-cache-table.ts +0 -164
  2045. package/src/state/cache/is-stale-state-cache.test.ts +0 -39
  2046. package/src/state/cache/is-stale-state-cache.ts +0 -86
  2047. package/src/state/cache/mark-state-cache-as-stale.ts +0 -66
  2048. package/src/state/cache/populate-state-cache.test.ts +0 -605
  2049. package/src/state/cache/populate-state-cache.ts +0 -227
  2050. package/src/state/cache/schema-indexes.test.ts +0 -144
  2051. package/src/state/cache/schema-indexes.ts +0 -191
  2052. package/src/state/cache/schema-resolver.ts +0 -59
  2053. package/src/state/cache/schema.bench.ts +0 -361
  2054. package/src/state/cache/schema.test.ts +0 -143
  2055. package/src/state/cache/schema.ts +0 -72
  2056. package/src/state/cache/select-from-state-cache.test.ts +0 -72
  2057. package/src/state/cache/select-from-state-cache.ts +0 -71
  2058. package/src/state/cache/update-state-cache.bench.ts +0 -158
  2059. package/src/state/cache/update-state-cache.test.ts +0 -1110
  2060. package/src/state/cache/update-state-cache.ts +0 -458
  2061. package/src/state/cache-v2/cache-columns.ts +0 -20
  2062. package/src/state/cache-v2/clear-state-cache.test.ts +0 -101
  2063. package/src/state/cache-v2/clear-state-cache.ts +0 -51
  2064. package/src/state/cache-v2/create-schema-cache-table.test.ts +0 -96
  2065. package/src/state/cache-v2/create-schema-cache-table.ts +0 -205
  2066. package/src/state/cache-v2/is-stale-state-cache.test.ts +0 -39
  2067. package/src/state/cache-v2/is-stale-state-cache.ts +0 -86
  2068. package/src/state/cache-v2/mark-state-cache-as-stale.ts +0 -78
  2069. package/src/state/cache-v2/populate-state-cache.test.ts +0 -124
  2070. package/src/state/cache-v2/populate-state-cache.ts +0 -178
  2071. package/src/state/cache-v2/schema-metadata.ts +0 -46
  2072. package/src/state/cache-v2/schema.bench.ts +0 -238
  2073. package/src/state/cache-v2/schema.test.ts +0 -330
  2074. package/src/state/cache-v2/schema.ts +0 -114
  2075. package/src/state/cache-v2/select-from-state-cache.test.ts +0 -109
  2076. package/src/state/cache-v2/select-from-state-cache.ts +0 -201
  2077. package/src/state/cache-v2/sqlite-type-mapper.test.ts +0 -56
  2078. package/src/state/cache-v2/sqlite-type-mapper.ts +0 -64
  2079. package/src/state/cache-v2/update-state-cache.bench.ts +0 -198
  2080. package/src/state/cache-v2/update-state-cache.test.ts +0 -344
  2081. package/src/state/cache-v2/update-state-cache.ts +0 -607
  2082. package/src/state/create-checkpoint.test.ts +0 -848
  2083. package/src/state/create-checkpoint.ts +0 -278
  2084. package/src/state/index.ts +0 -24
  2085. package/src/state/materialize-state.bench.ts +0 -231
  2086. package/src/state/materialize-state.test.ts +0 -2837
  2087. package/src/state/materialize-state.ts +0 -569
  2088. package/src/state/schema.bench.ts +0 -132
  2089. package/src/state/schema.ts +0 -44
  2090. package/src/state/transaction/insert-transaction-state.test.ts +0 -1119
  2091. package/src/state/transaction/insert-transaction-state.ts +0 -149
  2092. package/src/state/transaction/schema.ts +0 -49
  2093. package/src/state/transition.bench.ts +0 -271
  2094. package/src/state/transition.test.ts +0 -295
  2095. package/src/state/transition.ts +0 -413
  2096. package/src/state/untracked/schema.test.ts +0 -301
  2097. package/src/state/untracked/schema.ts +0 -62
  2098. package/src/state/untracked/update-untracked-state.test.ts +0 -484
  2099. package/src/state/untracked/update-untracked-state.ts +0 -181
  2100. package/src/state/views/__bench__/state-delete-tracked-row.explain.txt +0 -79
  2101. package/src/state/views/__bench__/state-insert-tracked-row.explain.txt +0 -20
  2102. package/src/state/views/__bench__/state-insert-untracked-row.explain.txt +0 -20
  2103. package/src/state/views/__bench__/state-select-recent-file-scan.explain.txt +0 -1133
  2104. package/src/state/views/__bench__/state-select-tracked-entity.explain.txt +0 -296
  2105. package/src/state/views/__bench__/state-select-untracked-filter.explain.txt +0 -301
  2106. package/src/state/views/__bench__/state-update-tracked-row.explain.txt +0 -80
  2107. package/src/state/views/state-by-version.ts +0 -121
  2108. package/src/state/views/state-with-tombstones.test.ts +0 -166
  2109. package/src/state/views/state-with-tombstones.ts +0 -61
  2110. package/src/state/views/state.bench.1_base.json +0 -189
  2111. package/src/state/views/state.bench.2_dml.json +0 -189
  2112. package/src/state/views/state.bench.ts +0 -382
  2113. package/src/state/views/state.test.ts +0 -417
  2114. package/src/state/views/state.ts +0 -97
  2115. package/src/state/vtable/__bench__/cache-entity-version-file-plugin.explain.txt +0 -237
  2116. package/src/state/vtable/__bench__/cache-entity-version-file.explain.txt +0 -236
  2117. package/src/state/vtable/__bench__/cache-entity-version.explain.txt +0 -235
  2118. package/src/state/vtable/__bench__/inherited-cache-entity-version-file-plugin.explain.txt +0 -363
  2119. package/src/state/vtable/__bench__/inherited-cache-entity-version-file.explain.txt +0 -362
  2120. package/src/state/vtable/__bench__/inherited-cache-entity-version.explain.txt +0 -367
  2121. package/src/state/vtable/__bench__/inherited-untracked-entity-version-file-plugin.explain.txt +0 -363
  2122. package/src/state/vtable/__bench__/inherited-untracked-entity-version-file.explain.txt +0 -362
  2123. package/src/state/vtable/__bench__/inherited-untracked-entity-version.explain.txt +0 -367
  2124. package/src/state/vtable/__bench__/transaction-entity-version-file-plugin.explain.txt +0 -237
  2125. package/src/state/vtable/__bench__/transaction-entity-version-file.explain.txt +0 -236
  2126. package/src/state/vtable/__bench__/transaction-entity-version.explain.txt +0 -235
  2127. package/src/state/vtable/__bench__/untracked-entity-version-file-plugin.explain.txt +0 -237
  2128. package/src/state/vtable/__bench__/untracked-entity-version-file.explain.txt +0 -236
  2129. package/src/state/vtable/__bench__/untracked-entity-version.explain.txt +0 -235
  2130. package/src/state/vtable/__playground__/validate-state-mutation.foreign-key.explain.txt +0 -173
  2131. package/src/state/vtable/__playground__/validate-state-mutation.primary-key.explain.txt +0 -173
  2132. package/src/state/vtable/__playground__/validate-state-mutation.unique-nested.explain.txt +0 -173
  2133. package/src/state/vtable/commit.bench.ts +0 -339
  2134. package/src/state/vtable/commit.test.ts +0 -1924
  2135. package/src/state/vtable/commit.ts +0 -508
  2136. package/src/state/vtable/generate-commit.test.ts +0 -417
  2137. package/src/state/vtable/generate-commit.ts +0 -346
  2138. package/src/state/vtable/index.ts +0 -5
  2139. package/src/state/vtable/insert-vtable-log.ts +0 -64
  2140. package/src/state/vtable/primary-key.test.ts +0 -44
  2141. package/src/state/vtable/primary-key.ts +0 -82
  2142. package/src/state/vtable/validate-state-mutation.bench.ts +0 -326
  2143. package/src/state/vtable/validate-state-mutation.playground.test.ts +0 -456
  2144. package/src/state/vtable/validate-state-mutation.test.ts +0 -4265
  2145. package/src/state/vtable/validate-state-mutation.ts +0 -1236
  2146. package/src/state/vtable/vtable.insert.bench.ts +0 -127
  2147. package/src/state/vtable/vtable.select.bench.ts +0 -439
  2148. package/src/state/vtable/vtable.test.ts +0 -4211
  2149. package/src/state/vtable/vtable.ts +0 -1223
  2150. package/src/state/working-change-set/refresh-working-change-set.test.ts +0 -116
  2151. package/src/state/working-change-set/refresh-working-change-set.ts +0 -290
  2152. package/src/state/writer.ts +0 -71
  2153. package/src/state-history/schema.test.ts +0 -1002
  2154. package/src/state-history/schema.ts +0 -288
  2155. package/src/stored-schema/get-stored-schema.test.ts +0 -352
  2156. package/src/stored-schema/get-stored-schema.ts +0 -163
  2157. package/src/stored-schema/index.ts +0 -4
  2158. package/src/stored-schema/schema-definition.ts +0 -30
  2159. package/src/stored-schema/schema.test.ts +0 -198
  2160. package/src/sync/get-diffing-rows.ts +0 -112
  2161. package/src/sync/merge-state.ts +0 -313
  2162. package/src/sync/pull-from-server.test.ts +0 -430
  2163. package/src/sync/pull-from-server.ts +0 -146
  2164. package/src/sync/push-to-server.test.ts +0 -387
  2165. package/src/sync/push-to-server.ts +0 -56
  2166. package/src/sync/sync-process.test.ts +0 -324
  2167. package/src/sync/sync-process.ts +0 -103
  2168. package/src/test-utilities/simulation-test/cache-miss-simulation.test.ts +0 -198
  2169. package/src/test-utilities/simulation-test/cache-miss-simulation.ts +0 -96
  2170. package/src/test-utilities/simulation-test/chaotic-timestamp-simulation.ts +0 -0
  2171. package/src/test-utilities/simulation-test/engine-boundary-simulation.test.ts +0 -14
  2172. package/src/test-utilities/simulation-test/engine-boundary-simulation.ts +0 -65
  2173. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.test.ts +0 -88
  2174. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.ts +0 -61
  2175. package/src/test-utilities/simulation-test/simulation-test.test.ts +0 -404
  2176. package/src/test-utilities/simulation-test/simulation-test.ts +0 -194
  2177. package/src/types/fs.d.ts +0 -11
  2178. package/src/version/create-version-from-commit.test.ts +0 -211
  2179. package/src/version/create-version-from-commit.ts +0 -141
  2180. package/src/version/create-version.test.ts +0 -215
  2181. package/src/version/create-version.ts +0 -50
  2182. package/src/version/index.ts +0 -15
  2183. package/src/version/merge-version.test.ts +0 -1051
  2184. package/src/version/merge-version.ts +0 -583
  2185. package/src/version/schema-definition.ts +0 -111
  2186. package/src/version/schema.test.ts +0 -1256
  2187. package/src/version/schema.ts +0 -475
  2188. package/src/version/select-active-version.ts +0 -18
  2189. package/src/version/select-version-diff.bench.ts +0 -145
  2190. package/src/version/select-version-diff.playground-plan.txt +0 -3837
  2191. package/src/version/select-version-diff.playground.test.ts +0 -129
  2192. package/src/version/select-version-diff.test.ts +0 -805
  2193. package/src/version/select-version-diff.ts +0 -201
  2194. package/src/version/switch-version.test.ts +0 -31
  2195. package/src/version/switch-version.ts +0 -40
@@ -1,4211 +0,0 @@
1
- import { expect, test } from "vitest";
2
- import type { LixSchemaDefinition } from "../../schema-definition/definition.js";
3
- import { Kysely, sql } from "kysely";
4
- import type { LixInternalDatabaseSchema } from "../../database/schema.js";
5
- import { createVersion } from "../../version/create-version.js";
6
- import {
7
- simulationTest,
8
- normalSimulation,
9
- } from "../../test-utilities/simulation-test/simulation-test.js";
10
- import { createVersionFromCommit } from "../../version/create-version-from-commit.js";
11
- import { openLix } from "../../lix/open-lix.js";
12
- import { withWriterKey } from "../writer.js";
13
-
14
- test("simulation test discover", () => {});
15
-
16
- simulationTest(
17
- "select, insert, update, delete entity via lix_internal_state_vtable",
18
- async ({ openSimulatedLix }) => {
19
- const mockSchema: LixSchemaDefinition = {
20
- "x-lix-key": "mock_schema",
21
- "x-lix-version": "1.0",
22
- type: "object",
23
- additionalProperties: false,
24
- properties: {
25
- value: {
26
- type: "string",
27
- },
28
- },
29
- };
30
-
31
- const lix = await openSimulatedLix({
32
- keyValues: [
33
- {
34
- key: "lix_deterministic_mode",
35
- value: { enabled: true },
36
- lixcol_version_id: "global",
37
- },
38
- ],
39
- });
40
-
41
- const internalDb = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
42
-
43
- await lix.db
44
- .insertInto("stored_schema")
45
- .values({ value: mockSchema })
46
- .execute();
47
-
48
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
49
-
50
- // Test INSERT via lix_internal_state_vtable
51
- await db
52
- .insertInto("lix_internal_state_vtable")
53
- .values({
54
- entity_id: "e0",
55
- file_id: "f0",
56
- schema_key: "mock_schema",
57
- plugin_key: "lix_sdk",
58
- schema_version: "1.0",
59
- version_id: sql`(SELECT version_id FROM active_version)`,
60
- snapshot_content: JSON.stringify({
61
- value: "hello world",
62
- }),
63
- untracked: 0,
64
- })
65
- .execute();
66
-
67
- // Test SELECT from lix_internal_state_vtable
68
- const viewAfterInsert = await db
69
- .selectFrom("lix_internal_state_vtable")
70
- .where("schema_key", "=", "mock_schema")
71
- .orderBy("entity_id")
72
- .orderBy("version_id")
73
- .select([
74
- "entity_id",
75
- "file_id",
76
- "schema_key",
77
- "plugin_key",
78
- sql`json(snapshot_content)`.as("snapshot_content"),
79
- ])
80
- .execute();
81
-
82
- expect(viewAfterInsert).toMatchObject([
83
- {
84
- entity_id: "e0",
85
- file_id: "f0",
86
- schema_key: "mock_schema",
87
- plugin_key: "lix_sdk",
88
- snapshot_content: {
89
- value: "hello world",
90
- },
91
- },
92
- ]);
93
-
94
- // Test UPDATE via lix_internal_state_vtable
95
- await db
96
- .updateTable("lix_internal_state_vtable")
97
- .set({
98
- snapshot_content: JSON.stringify({
99
- value: "hello world - updated",
100
- }),
101
- })
102
- .where("entity_id", "=", "e0")
103
- .where("schema_key", "=", "mock_schema")
104
- .where("file_id", "=", "f0")
105
- .execute();
106
-
107
- const viewAfterUpdate = await db
108
- .selectFrom("lix_internal_state_vtable")
109
- .where("schema_key", "=", "mock_schema")
110
- .orderBy("entity_id")
111
- .orderBy("version_id")
112
- .select([
113
- "entity_id",
114
- "file_id",
115
- "schema_key",
116
- "plugin_key",
117
- sql`json(snapshot_content)`.as("snapshot_content"),
118
- ])
119
- .execute();
120
-
121
- expect(viewAfterUpdate).toMatchObject([
122
- {
123
- entity_id: "e0",
124
- file_id: "f0",
125
- schema_key: "mock_schema",
126
- plugin_key: "lix_sdk",
127
- snapshot_content: {
128
- value: "hello world - updated",
129
- },
130
- },
131
- ]);
132
-
133
- // Test DELETE via lix_internal_state_vtable
134
- await db
135
- .deleteFrom("lix_internal_state_vtable")
136
- .where("entity_id", "=", "e0")
137
- .where(
138
- "version_id",
139
- "=",
140
- db.selectFrom("active_version").select("version_id")
141
- )
142
- .where("schema_key", "=", "mock_schema")
143
- .execute();
144
-
145
- const viewAfterDelete = await db
146
- .selectFrom("lix_internal_state_vtable")
147
- .where("schema_key", "=", "mock_schema")
148
- .where("snapshot_content", "is not", null)
149
- .orderBy("entity_id")
150
- .orderBy("version_id")
151
- .selectAll()
152
- .execute();
153
-
154
- expect(viewAfterDelete).toHaveLength(0);
155
- }
156
- );
157
-
158
- simulationTest(
159
- "writer_key persists on insert/update and clears on update without writer",
160
- async ({ openSimulatedLix, expectDeterministic }) => {
161
- const lix = await openSimulatedLix({
162
- keyValues: [
163
- {
164
- key: "lix_deterministic_mode",
165
- value: { enabled: true },
166
- lixcol_version_id: "global",
167
- },
168
- ],
169
- });
170
-
171
- const mockSchema: LixSchemaDefinition = {
172
- "x-lix-key": "mock_schema_writer",
173
- "x-lix-version": "1.0",
174
- type: "object",
175
- additionalProperties: false,
176
- properties: { value: { type: "string" } },
177
- };
178
- await lix.db
179
- .insertInto("stored_schema")
180
- .values({ value: mockSchema })
181
- .execute();
182
-
183
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
184
- const ME = "testapp:state#me";
185
-
186
- // Insert with writer via withWriterKey helper
187
- await withWriterKey(db, ME, (trx) =>
188
- trx
189
- .insertInto("lix_internal_state_vtable")
190
- .values({
191
- entity_id: "w1",
192
- file_id: "f1",
193
- schema_key: "mock_schema_writer",
194
- plugin_key: "test_plugin",
195
- schema_version: "1.0",
196
- version_id: sql`(SELECT version_id FROM active_version)`,
197
- snapshot_content: JSON.stringify({ value: "A" }),
198
- untracked: 0,
199
- })
200
- .execute()
201
- );
202
-
203
- const afterInsert = await db
204
- .selectFrom("lix_internal_state_vtable")
205
- .where("entity_id", "=", "w1")
206
- .orderBy("entity_id")
207
- .orderBy("version_id")
208
- .select([
209
- "entity_id",
210
- sql`writer_key`.as("writer_key"),
211
- sql`json(snapshot_content)`.as("snapshot_content"),
212
- ])
213
- .executeTakeFirstOrThrow();
214
- expectDeterministic(afterInsert.writer_key).toBe(ME);
215
- expectDeterministic(afterInsert.snapshot_content).toEqual({ value: "A" });
216
-
217
- // Update with different writer via withWriterKey helper
218
- await withWriterKey(db, `${ME}-2`, (trx) =>
219
- trx
220
- .updateTable("lix_internal_state_vtable")
221
- .set({ snapshot_content: JSON.stringify({ value: "B" }) })
222
- .where("entity_id", "=", "w1")
223
- .where("schema_key", "=", "mock_schema_writer")
224
- .where("file_id", "=", "f1")
225
- .execute()
226
- );
227
-
228
- const afterUpdateWithWriter = await db
229
- .selectFrom("lix_internal_state_vtable")
230
- .where("entity_id", "=", "w1")
231
- .orderBy("entity_id")
232
- .orderBy("version_id")
233
- .select([
234
- sql`writer_key`.as("writer_key"),
235
- sql`json(snapshot_content)`.as("snapshot_content"),
236
- ])
237
- .executeTakeFirstOrThrow();
238
- expectDeterministic(afterUpdateWithWriter.writer_key).toBe(`${ME}-2`);
239
- expectDeterministic(afterUpdateWithWriter.snapshot_content).toEqual({
240
- value: "B",
241
- });
242
-
243
- // Update WITHOUT writer_key should clear writer (delete writer row)
244
- await db
245
- .updateTable("lix_internal_state_vtable")
246
- .set({ snapshot_content: JSON.stringify({ value: "C" }) })
247
- .where("entity_id", "=", "w1")
248
- .where("schema_key", "=", "mock_schema_writer")
249
- .where("file_id", "=", "f1")
250
- .execute();
251
-
252
- const afterUpdateNoWriter = await db
253
- .selectFrom("lix_internal_state_vtable")
254
- .where("entity_id", "=", "w1")
255
- .orderBy("entity_id")
256
- .orderBy("version_id")
257
- .select([
258
- sql`writer_key`.as("writer_key"),
259
- sql`json(snapshot_content)`.as("snapshot_content"),
260
- ])
261
- .executeTakeFirstOrThrow();
262
- expectDeterministic(afterUpdateNoWriter.writer_key).toBeNull();
263
- expectDeterministic(afterUpdateNoWriter.snapshot_content).toEqual({
264
- value: "C",
265
- });
266
- }
267
- );
268
-
269
- simulationTest(
270
- "writer_key on delete: provided writer retained on tombstone; missing writer clears",
271
- async ({ openSimulatedLix, expectDeterministic }) => {
272
- const lix = await openSimulatedLix({
273
- keyValues: [
274
- {
275
- key: "lix_deterministic_mode",
276
- value: { enabled: true },
277
- lixcol_version_id: "global",
278
- },
279
- ],
280
- });
281
-
282
- const mockSchema: LixSchemaDefinition = {
283
- "x-lix-key": "mock_schema_writer_del",
284
- "x-lix-version": "1.0",
285
- type: "object",
286
- additionalProperties: false,
287
- properties: { value: { type: "string" } },
288
- };
289
- await lix.db
290
- .insertInto("stored_schema")
291
- .values({ value: mockSchema })
292
- .execute();
293
-
294
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
295
- const ME = "testapp:state#me";
296
-
297
- // Insert tracked row (no writer yet)
298
- await db
299
- .insertInto("lix_internal_state_vtable")
300
- .values({
301
- entity_id: "wd1",
302
- file_id: "fd",
303
- schema_key: "mock_schema_writer_del",
304
- plugin_key: "test_plugin",
305
- schema_version: "1.0",
306
- version_id: sql`(SELECT version_id FROM active_version)`,
307
- snapshot_content: JSON.stringify({ value: "L" }),
308
- untracked: 0,
309
- })
310
- .execute();
311
-
312
- // Delete WITH writer via withWriterKey helper
313
- await withWriterKey(db, `${ME}-del`, (trx) =>
314
- trx
315
- .deleteFrom("lix_internal_state_vtable")
316
- .where("entity_id", "=", "wd1")
317
- .where("schema_key", "=", "mock_schema_writer_del")
318
- .where("file_id", "=", "fd")
319
- .where(
320
- "version_id",
321
- "=",
322
- trx.selectFrom("active_version").select("version_id")
323
- )
324
- .execute()
325
- );
326
-
327
- const tombstoneWithWriter = await db
328
- .selectFrom("lix_internal_state_vtable")
329
- .where("entity_id", "=", "wd1")
330
- .where("schema_key", "=", "mock_schema_writer_del")
331
- .where("file_id", "=", "fd")
332
- .orderBy("entity_id")
333
- .orderBy("version_id")
334
- .select([sql`writer_key`.as("writer_key"), "snapshot_content"])
335
- .executeTakeFirstOrThrow();
336
- expectDeterministic(tombstoneWithWriter.snapshot_content).toBeNull();
337
- expectDeterministic(tombstoneWithWriter.writer_key).toBe(`${ME}-del`);
338
-
339
- // Recreate and delete WITHOUT writer -> writer row cleared
340
- await db
341
- .insertInto("lix_internal_state_vtable")
342
- .values({
343
- entity_id: "wd1",
344
- file_id: "fd",
345
- schema_key: "mock_schema_writer_del",
346
- plugin_key: "test_plugin",
347
- schema_version: "1.0",
348
- version_id: sql`(SELECT version_id FROM active_version)`,
349
- snapshot_content: JSON.stringify({ value: "X" }),
350
- untracked: 0,
351
- })
352
- .execute();
353
- await db
354
- .deleteFrom("lix_internal_state_vtable")
355
- .where("entity_id", "=", "wd1")
356
- .where("schema_key", "=", "mock_schema_writer_del")
357
- .where("file_id", "=", "fd")
358
- .where(
359
- "version_id",
360
- "=",
361
- db.selectFrom("active_version").select("version_id")
362
- )
363
- .execute();
364
-
365
- const tombstoneNoWriter = await db
366
- .selectFrom("lix_internal_state_vtable")
367
- .where("entity_id", "=", "wd1")
368
- .where("schema_key", "=", "mock_schema_writer_del")
369
- .where("file_id", "=", "fd")
370
- .orderBy("entity_id")
371
- .orderBy("version_id")
372
- .select([sql`writer_key`.as("writer_key"), "snapshot_content"])
373
- .executeTakeFirstOrThrow();
374
- expectDeterministic(tombstoneNoWriter.snapshot_content).toBeNull();
375
- expectDeterministic(tombstoneNoWriter.writer_key).toBeNull();
376
- }
377
- );
378
-
379
- simulationTest(
380
- "inheritance exposes parent writer when child has no local writer; child override replaces",
381
- async ({ openSimulatedLix, expectDeterministic }) => {
382
- const lix = await openSimulatedLix({
383
- keyValues: [
384
- {
385
- key: "lix_deterministic_mode",
386
- value: { enabled: true },
387
- lixcol_version_id: "global",
388
- },
389
- ],
390
- });
391
-
392
- const mockSchema: LixSchemaDefinition = {
393
- "x-lix-key": "mock_schema_writer_inherit",
394
- "x-lix-version": "1.0",
395
- type: "object",
396
- additionalProperties: false,
397
- properties: { value: { type: "string" } },
398
- };
399
- await lix.db
400
- .insertInto("stored_schema")
401
- .values({ value: mockSchema })
402
- .execute();
403
-
404
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
405
- const child = await createVersion({ lix, name: "child" });
406
- const P = "app:state#parent";
407
- const C = "app:state#child";
408
-
409
- // Insert in parent with writer P
410
- await withWriterKey(db, P, (trx) =>
411
- trx
412
- .insertInto("lix_internal_state_vtable")
413
- .values({
414
- entity_id: "wi1",
415
- file_id: "fi1",
416
- schema_key: "mock_schema_writer_inherit",
417
- plugin_key: "tp",
418
- schema_version: "1.0",
419
- version_id: "global",
420
- snapshot_content: JSON.stringify({ value: "parent" }),
421
- untracked: 0,
422
- })
423
- .execute()
424
- );
425
-
426
- // Child inherits content; should expose parent's writer_key
427
- const inherited = await db
428
- .selectFrom("lix_internal_state_vtable")
429
- .where("entity_id", "=", "wi1")
430
- .where("version_id", "=", child.id)
431
- .orderBy("entity_id")
432
- .orderBy("version_id")
433
- .select([
434
- sql`writer_key`.as("writer_key"),
435
- sql`json(snapshot_content)`.as("snapshot_content"),
436
- "inherited_from_version_id",
437
- ])
438
- .executeTakeFirstOrThrow();
439
- expectDeterministic(inherited.snapshot_content).toEqual({
440
- value: "parent",
441
- });
442
- expectDeterministic(inherited.inherited_from_version_id).toBe("global");
443
- expectDeterministic(inherited.writer_key).toBe(P);
444
-
445
- // Now override in child with its own writer C
446
- await withWriterKey(db, C, (trx) =>
447
- trx
448
- .insertInto("lix_internal_state_vtable")
449
- .values({
450
- entity_id: "wi1",
451
- file_id: "fi1",
452
- schema_key: "mock_schema_writer_inherit",
453
- plugin_key: "tp",
454
- schema_version: "1.0",
455
- version_id: child.id,
456
- snapshot_content: JSON.stringify({ value: "child" }),
457
- untracked: 0,
458
- })
459
- .execute()
460
- );
461
-
462
- const childNow = await db
463
- .selectFrom("lix_internal_state_vtable")
464
- .where("entity_id", "=", "wi1")
465
- .where("version_id", "=", child.id)
466
- .orderBy("entity_id")
467
- .orderBy("version_id")
468
- .select([
469
- sql`writer_key`.as("writer_key"),
470
- sql`json(snapshot_content)`.as("snapshot_content"),
471
- "inherited_from_version_id",
472
- ])
473
- .executeTakeFirstOrThrow();
474
- expectDeterministic(childNow.snapshot_content).toEqual({ value: "child" });
475
- expectDeterministic(childNow.inherited_from_version_id).toBeNull();
476
- expectDeterministic(childNow.writer_key).toBe(C);
477
- }
478
- );
479
-
480
- simulationTest(
481
- "writer_key exposed on state/state_by_version/state_with_tombstones",
482
- async ({ openSimulatedLix, expectDeterministic }) => {
483
- const lix = await openSimulatedLix({
484
- keyValues: [
485
- {
486
- key: "lix_deterministic_mode",
487
- value: { enabled: true },
488
- lixcol_version_id: "global",
489
- },
490
- ],
491
- });
492
-
493
- const mockSchema: LixSchemaDefinition = {
494
- "x-lix-key": "mock_schema_writer_views",
495
- "x-lix-version": "1.0",
496
- type: "object",
497
- additionalProperties: false,
498
- properties: { value: { type: "string" } },
499
- };
500
- await lix.db
501
- .insertInto("stored_schema")
502
- .values({ value: mockSchema })
503
- .execute();
504
-
505
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
506
- const ME = "app:state#me";
507
-
508
- // Insert with writer via withWriterKey helper
509
- await withWriterKey(db, ME, (trx) =>
510
- trx
511
- .insertInto("lix_internal_state_vtable")
512
- .values({
513
- entity_id: "vw1",
514
- file_id: "fv",
515
- schema_key: "mock_schema_writer_views",
516
- plugin_key: "tp",
517
- schema_version: "1.0",
518
- version_id: sql`(SELECT version_id FROM active_version)`,
519
- snapshot_content: JSON.stringify({ value: "X" }),
520
- untracked: 0,
521
- })
522
- .execute()
523
- );
524
-
525
- // state_by_version
526
- const sAll = await db
527
- .selectFrom("state_by_version")
528
- .where("entity_id", "=", "vw1")
529
- .select(["entity_id", sql`writer_key`.as("writer_key")])
530
- .executeTakeFirstOrThrow();
531
- expectDeterministic(sAll.writer_key).toBe(ME);
532
-
533
- // state (active)
534
- const s = await db
535
- .selectFrom("state")
536
- .where("entity_id", "=", "vw1")
537
- .select(["entity_id", sql`writer_key`.as("writer_key")])
538
- .executeTakeFirstOrThrow();
539
- expectDeterministic(s.writer_key).toBe(ME);
540
-
541
- // state_with_tombstones should expose writer_key as well
542
- const swt = await db
543
- .selectFrom("state_with_tombstones")
544
- .where("entity_id", "=", "vw1")
545
- .select(["entity_id", sql`writer_key`.as("writer_key")])
546
- .executeTakeFirstOrThrow();
547
- expectDeterministic(swt.writer_key).toBe(ME);
548
- }
549
- );
550
-
551
- simulationTest(
552
- "exposes tracked deletions as tombstones (NULL snapshot_content)",
553
- async ({ openSimulatedLix, expectDeterministic }) => {
554
- const lix = await openSimulatedLix({
555
- keyValues: [
556
- {
557
- key: "lix_deterministic_mode",
558
- value: { enabled: true },
559
- lixcol_version_id: "global",
560
- },
561
- ],
562
- });
563
-
564
- const mockSchema: LixSchemaDefinition = {
565
- "x-lix-key": "mock_schema_tombstone",
566
- "x-lix-version": "1.0",
567
- type: "object",
568
- additionalProperties: false,
569
- properties: {
570
- value: { type: "string" },
571
- },
572
- };
573
-
574
- await lix.db
575
- .insertInto("stored_schema")
576
- .values({ value: mockSchema })
577
- .execute();
578
-
579
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
580
-
581
- // Insert a tracked row via the vtable into the active version
582
- await db
583
- .insertInto("lix_internal_state_vtable")
584
- .values({
585
- entity_id: "e_tomb",
586
- file_id: "f_tomb",
587
- schema_key: "mock_schema_tombstone",
588
- plugin_key: "test_plugin",
589
- schema_version: "1.0",
590
- version_id: sql`(SELECT version_id FROM active_version)`,
591
- snapshot_content: JSON.stringify({ value: "live" }),
592
- untracked: 0,
593
- })
594
- .execute();
595
-
596
- // Delete it via the vtable in the active version (creates a tracked tombstone)
597
- await db
598
- .deleteFrom("lix_internal_state_vtable")
599
- .where("entity_id", "=", "e_tomb")
600
- .where("schema_key", "=", "mock_schema_tombstone")
601
- .where("file_id", "=", "f_tomb")
602
- .where(
603
- "version_id",
604
- "=",
605
- db.selectFrom("active_version").select("version_id")
606
- )
607
- .execute();
608
-
609
- // Default filter (snapshot_content IS NOT NULL) would hide the deletion; ensure tombstone is exposed
610
- const rows = await db
611
- .selectFrom("lix_internal_state_vtable")
612
- .where("entity_id", "=", "e_tomb")
613
- .where("schema_key", "=", "mock_schema_tombstone")
614
- .where("file_id", "=", "f_tomb")
615
- .orderBy("entity_id")
616
- .orderBy("version_id")
617
- .select([
618
- "entity_id",
619
- "schema_key",
620
- "file_id",
621
- "version_id",
622
- "change_id",
623
- "commit_id",
624
- "snapshot_content",
625
- ])
626
- .execute();
627
-
628
- expect(rows).toHaveLength(1);
629
- expect(rows[0]?.change_id).toBeTruthy();
630
- expect(rows[0]?.commit_id).toBeTruthy();
631
-
632
- const sanitizedRows = rows.map(
633
- ({ change_id: _ignoredChangeId, commit_id: _ignoredCommitId, ...rest }) =>
634
- rest
635
- );
636
-
637
- expectDeterministic(sanitizedRows).toEqual([
638
- {
639
- entity_id: "e_tomb",
640
- schema_key: "mock_schema_tombstone",
641
- file_id: "f_tomb",
642
- version_id: "boot_0000000000",
643
- snapshot_content: null,
644
- },
645
- ]);
646
- }
647
- );
648
-
649
- simulationTest(
650
- "delete ALL via vtable should delete untracked entities in active version",
651
- async ({ openSimulatedLix, expectDeterministic }) => {
652
- const lix = await openSimulatedLix({
653
- keyValues: [
654
- {
655
- key: "lix_deterministic_mode",
656
- value: { enabled: true },
657
- lixcol_version_id: "global",
658
- },
659
- ],
660
- });
661
-
662
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
663
- const mockSchema: LixSchemaDefinition = {
664
- "x-lix-key": "mock_test_schema",
665
- "x-lix-version": "1.0",
666
- type: "object",
667
- additionalProperties: false,
668
- properties: {
669
- value: { type: "string" },
670
- },
671
- };
672
- await lix.db
673
- .insertInto("stored_schema")
674
- .values({ value: mockSchema })
675
- .execute();
676
-
677
- // Create a tracked entity in active version
678
- await db
679
- .insertInto("lix_internal_state_vtable")
680
- .values({
681
- entity_id: "tracked-entity",
682
- schema_key: "mock_test_schema",
683
- file_id: "test-file",
684
- plugin_key: "test_plugin",
685
- snapshot_content: JSON.stringify({ value: "tracked" }),
686
- schema_version: "1.0",
687
- version_id: sql`(SELECT version_id FROM active_version)`,
688
- untracked: 0,
689
- })
690
- .execute();
691
-
692
- // Create an untracked entity in active version
693
- await db
694
- .insertInto("lix_internal_state_vtable")
695
- .values({
696
- entity_id: "untracked-entity",
697
- schema_key: "mock_test_schema",
698
- file_id: "test-file",
699
- plugin_key: "test_plugin",
700
- snapshot_content: JSON.stringify({ value: "untracked" }),
701
- schema_version: "1.0",
702
- version_id: sql`(SELECT version_id FROM active_version)`,
703
- untracked: 1,
704
- })
705
- .execute();
706
-
707
- // Verify both exist in vtable
708
- const beforeDelete = await db
709
- .selectFrom("lix_internal_state_vtable")
710
- .where("schema_key", "=", "mock_test_schema")
711
- .orderBy("entity_id")
712
- .orderBy("version_id")
713
- .select(["entity_id"])
714
- .execute();
715
- expectDeterministic(beforeDelete).toHaveLength(2);
716
-
717
- // Delete all entities of schema in active version
718
- await db
719
- .deleteFrom("lix_internal_state_vtable")
720
- .where("schema_key", "=", "mock_test_schema")
721
- .where(
722
- "version_id",
723
- "=",
724
- db.selectFrom("active_version").select("version_id")
725
- )
726
- .execute();
727
-
728
- // Check both were deleted in vtable
729
- const afterDelete = await db
730
- .selectFrom("lix_internal_state_vtable")
731
- .where("schema_key", "=", "mock_test_schema")
732
- .where("snapshot_content", "is not", null)
733
- .orderBy("entity_id")
734
- .orderBy("version_id")
735
- .selectAll()
736
- .execute();
737
-
738
- expectDeterministic(afterDelete).toHaveLength(0);
739
- }
740
- );
741
-
742
- simulationTest(
743
- "delete via vtable with WHERE should delete only untracked entities in active version",
744
- async ({ openSimulatedLix, expectDeterministic }) => {
745
- const lix = await openSimulatedLix({
746
- keyValues: [
747
- {
748
- key: "lix_deterministic_mode",
749
- value: { enabled: true },
750
- lixcol_version_id: "global",
751
- },
752
- ],
753
- });
754
-
755
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
756
- const mockSchema: LixSchemaDefinition = {
757
- "x-lix-key": "mock_test_schema",
758
- "x-lix-version": "1.0",
759
- type: "object",
760
- additionalProperties: false,
761
- properties: {
762
- value: { type: "string" },
763
- },
764
- };
765
- await lix.db
766
- .insertInto("stored_schema")
767
- .values({ value: mockSchema })
768
- .execute();
769
-
770
- // Create a tracked entity in active version
771
- await db
772
- .insertInto("lix_internal_state_vtable")
773
- .values({
774
- entity_id: "tracked-entity",
775
- schema_key: "mock_test_schema",
776
- file_id: "test-file",
777
- plugin_key: "test_plugin",
778
- snapshot_content: JSON.stringify({ value: "tracked" }),
779
- schema_version: "1.0",
780
- version_id: sql`(SELECT version_id FROM active_version)`,
781
- untracked: 0,
782
- })
783
- .execute();
784
-
785
- // Create an untracked entity in active version
786
- await db
787
- .insertInto("lix_internal_state_vtable")
788
- .values({
789
- entity_id: "untracked-entity",
790
- schema_key: "mock_test_schema",
791
- file_id: "test-file",
792
- plugin_key: "test_plugin",
793
- snapshot_content: JSON.stringify({ value: "untracked" }),
794
- schema_version: "1.0",
795
- version_id: sql`(SELECT version_id FROM active_version)`,
796
- untracked: 1,
797
- })
798
- .execute();
799
-
800
- // Verify both exist in the vtable
801
- const beforeDelete = await db
802
- .selectFrom("lix_internal_state_vtable")
803
- .where("schema_key", "=", "mock_test_schema")
804
- .orderBy("entity_id")
805
- .orderBy("version_id")
806
- .select(["entity_id"])
807
- .execute();
808
- expectDeterministic(beforeDelete).toHaveLength(2);
809
-
810
- // Delete the untracked entity by id in active version
811
- await db
812
- .deleteFrom("lix_internal_state_vtable")
813
- .where("entity_id", "=", "untracked-entity")
814
- .where(
815
- "version_id",
816
- "=",
817
- db.selectFrom("active_version").select("version_id")
818
- )
819
- .execute();
820
-
821
- // Should only have the tracked entity remaining
822
- const afterDelete = await db
823
- .selectFrom("lix_internal_state_vtable")
824
- .where("schema_key", "=", "mock_test_schema")
825
- .orderBy("entity_id")
826
- .orderBy("version_id")
827
- .select(["entity_id"])
828
- .execute();
829
- expectDeterministic(afterDelete).toHaveLength(1);
830
- expectDeterministic(afterDelete[0]?.entity_id).toBe("tracked-entity");
831
-
832
- // Confirm the untracked entry is gone in vtable
833
- const stateAfterDelete = await db
834
- .selectFrom("lix_internal_state_vtable")
835
- .where("entity_id", "=", "untracked-entity")
836
- .where("schema_key", "=", "mock_test_schema")
837
- .orderBy("entity_id")
838
- .orderBy("version_id")
839
- .selectAll()
840
- .execute();
841
- expectDeterministic(stateAfterDelete).toHaveLength(0);
842
- }
843
- );
844
-
845
- // see https://github.com/opral/lix-sdk/issues/359
846
- simulationTest(
847
- "commit_id in state should be from the real auto-commit, not the working commit",
848
- async ({ openSimulatedLix, expectDeterministic }) => {
849
- const lix = await openSimulatedLix({
850
- keyValues: [
851
- {
852
- key: "lix_deterministic_mode",
853
- value: { enabled: true },
854
- lixcol_version_id: "global",
855
- },
856
- ],
857
- });
858
-
859
- // Get the active version with its commit_id and working_commit_id
860
- const activeVersion = await lix.db
861
- .selectFrom("active_version")
862
- .innerJoin("version", "version.id", "active_version.version_id")
863
- .selectAll("version")
864
- .executeTakeFirstOrThrow();
865
-
866
- // Verify we have both commit_id and working_commit_id
867
- expectDeterministic(activeVersion.commit_id).toBeTruthy();
868
- expectDeterministic(activeVersion.working_commit_id).toBeTruthy();
869
- expectDeterministic(activeVersion.commit_id).not.toBe(
870
- activeVersion.working_commit_id
871
- );
872
-
873
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
874
- const testSchema: LixSchemaDefinition = {
875
- "x-lix-key": "test_schema",
876
- "x-lix-version": "1.0",
877
- type: "object",
878
- additionalProperties: false,
879
- properties: {
880
- value: { type: "string" },
881
- },
882
- };
883
- await lix.db
884
- .insertInto("stored_schema")
885
- .values({ value: testSchema })
886
- .execute();
887
-
888
- const commitsBeforeInsert = await lix.db
889
- .selectFrom("commit")
890
- .select("id")
891
- .execute();
892
-
893
- // Insert some state data via lix_internal_state_vtable
894
- await db
895
- .insertInto("lix_internal_state_vtable")
896
- .values({
897
- entity_id: "test-entity-1",
898
- schema_key: "test_schema",
899
- file_id: "test-file",
900
- plugin_key: "test-plugin",
901
- schema_version: "1.0",
902
- snapshot_content: JSON.stringify({ value: "initial value" }),
903
- version_id: sql`(SELECT version_id FROM active_version)`,
904
- untracked: 0,
905
- })
906
- .execute();
907
-
908
- const activeVersionAfterInsert = await lix.db
909
- .selectFrom("active_version")
910
- .innerJoin("version", "active_version.version_id", "version.id")
911
- .selectAll("version")
912
- .executeTakeFirstOrThrow();
913
-
914
- // expect the version to be identical
915
- expect(activeVersionAfterInsert).toBeDefined();
916
-
917
- // Query to check the commit_id via vtable
918
- const stateAfterInsert = await db
919
- .selectFrom("lix_internal_state_vtable")
920
- .where("entity_id", "=", "test-entity-1")
921
- .orderBy("entity_id")
922
- .orderBy("version_id")
923
- .select(["entity_id", "commit_id"])
924
- .executeTakeFirstOrThrow();
925
-
926
- expect(stateAfterInsert).toBeDefined();
927
-
928
- // The commit_id should NOT be the working_commit_id
929
- expect(stateAfterInsert.commit_id).not.toBe(
930
- activeVersionAfterInsert.working_commit_id
931
- );
932
-
933
- // The commit_id should be the auto-commit ID (not the working commit)
934
- expect(stateAfterInsert.commit_id).toBe(activeVersionAfterInsert.commit_id);
935
-
936
- const commitsAfterInsert = await lix.db
937
- .selectFrom("commit")
938
- .select("id")
939
- .execute();
940
-
941
- expectDeterministic(commitsAfterInsert.length).toBe(
942
- commitsBeforeInsert.length + 1
943
- );
944
-
945
- // Update the state via vtable to trigger another auto-commit
946
- await db
947
- .updateTable("lix_internal_state_vtable")
948
- .where("entity_id", "=", "test-entity-1")
949
- .set({ snapshot_content: JSON.stringify({ value: "updated value" }) })
950
- .execute();
951
-
952
- // Check again
953
- const stateAfterUpdate = await db
954
- .selectFrom("lix_internal_state_vtable")
955
- .where("entity_id", "=", "test-entity-1")
956
- .orderBy("entity_id")
957
- .orderBy("version_id")
958
- .select(["entity_id", "commit_id"])
959
- .executeTakeFirstOrThrow();
960
-
961
- const activeVersionAfterUpdate = await lix.db
962
- .selectFrom("active_version")
963
- .innerJoin("version", "active_version.version_id", "version.id")
964
- .selectAll("version")
965
- .executeTakeFirstOrThrow();
966
-
967
- // The commit_id should now be the new auto-commit ID
968
- expect(stateAfterUpdate.commit_id).toBe(activeVersionAfterUpdate.commit_id);
969
- expect(stateAfterUpdate.commit_id).not.toBe(
970
- activeVersion.working_commit_id
971
- );
972
- }
973
- );
974
-
975
- simulationTest(
976
- "metadata on committed state rows is preserved",
977
- async ({ openSimulatedLix }) => {
978
- const lix = await openSimulatedLix({
979
- keyValues: [
980
- {
981
- key: "lix_deterministic_mode",
982
- value: { enabled: true },
983
- lixcol_version_id: "global",
984
- },
985
- ],
986
- });
987
-
988
- const selectStateMetadata = async () =>
989
- await lix.db
990
- .selectFrom("state_by_version")
991
- .where("entity_id", "=", "meta-entity")
992
- .where("schema_key", "=", "lix_key_value")
993
- .select(["metadata"])
994
- .executeTakeFirstOrThrow();
995
-
996
- const selectChangeMetadata = async () =>
997
- await lix.db
998
- .selectFrom("change")
999
- .where("entity_id", "=", "meta-entity")
1000
- .where("schema_key", "=", "lix_key_value")
1001
- .orderBy("created_at", "desc")
1002
- .select(["metadata"])
1003
- .executeTakeFirstOrThrow();
1004
-
1005
- // Perform a regular insert via the public state view
1006
- await lix.db
1007
- .insertInto("state")
1008
- .values({
1009
- entity_id: "meta-entity",
1010
- schema_key: "lix_key_value",
1011
- file_id: "lix",
1012
- plugin_key: "lix_sdk",
1013
- snapshot_content: { key: "meta", value: "value" } as any,
1014
- schema_version: "1.0",
1015
- metadata: { foo: "bar" },
1016
- })
1017
- .execute();
1018
-
1019
- expect((await selectStateMetadata()).metadata).toEqual({ foo: "bar" });
1020
- expect((await selectChangeMetadata()).metadata).toEqual({ foo: "bar" });
1021
-
1022
- // Updating metadata via state should persist the new value
1023
- await lix.db
1024
- .updateTable("state")
1025
- .set({ metadata: { foo: "baz" } as any })
1026
- .where("entity_id", "=", "meta-entity")
1027
- .where("schema_key", "=", "lix_key_value")
1028
- .where("file_id", "=", "lix")
1029
- .execute();
1030
-
1031
- expect((await selectStateMetadata()).metadata).toEqual({ foo: "baz" });
1032
- expect((await selectChangeMetadata()).metadata).toEqual({ foo: "baz" });
1033
-
1034
- // Partially update metadata using SQL JSON helpers
1035
- await lix.db
1036
- .updateTable("state")
1037
- .set(({ eb }) => ({
1038
- metadata: sql<string>`json_set(${eb.ref("metadata")}, '$.bar', 'qux')`,
1039
- }))
1040
- .where("entity_id", "=", "meta-entity")
1041
- .where("schema_key", "=", "lix_key_value")
1042
- .where("file_id", "=", "lix")
1043
- .execute();
1044
-
1045
- expect((await selectStateMetadata()).metadata).toEqual({
1046
- foo: "baz",
1047
- bar: "qux",
1048
- });
1049
- expect((await selectChangeMetadata()).metadata).toEqual({
1050
- foo: "baz",
1051
- bar: "qux",
1052
- });
1053
-
1054
- // Clearing metadata via state should propagate null
1055
- await lix.db
1056
- .updateTable("state")
1057
- .set({ metadata: null })
1058
- .where("entity_id", "=", "meta-entity")
1059
- .where("schema_key", "=", "lix_key_value")
1060
- .where("file_id", "=", "lix")
1061
- .execute();
1062
-
1063
- expect((await selectStateMetadata()).metadata).toBeNull();
1064
- expect((await selectChangeMetadata()).metadata).toBeNull();
1065
- },
1066
- { simulations: [normalSimulation] }
1067
- );
1068
- simulationTest(
1069
- "untracked state in child overrides inherited untracked state",
1070
- async ({ openSimulatedLix, expectDeterministic }) => {
1071
- const lix = await openSimulatedLix({
1072
- keyValues: [
1073
- {
1074
- key: "lix_deterministic_mode",
1075
- value: { enabled: true },
1076
- lixcol_version_id: "global",
1077
- },
1078
- ],
1079
- });
1080
-
1081
- const mockSchema: LixSchemaDefinition = {
1082
- "x-lix-key": "mock_schema",
1083
- "x-lix-version": "1.0",
1084
- type: "object",
1085
- additionalProperties: false,
1086
- properties: {
1087
- value: { type: "string" },
1088
- },
1089
- };
1090
-
1091
- await lix.db
1092
- .insertInto("stored_schema")
1093
- .values({ value: mockSchema })
1094
- .execute();
1095
-
1096
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1097
- const childVersion = await createVersion({ lix, name: "child" });
1098
-
1099
- // 1. Insert untracked state in global version
1100
- await db
1101
- .insertInto("lix_internal_state_vtable")
1102
- .values({
1103
- entity_id: "untracked_override_test",
1104
- file_id: "f1",
1105
- schema_key: "mock_schema",
1106
- plugin_key: "p1",
1107
- schema_version: "1.0",
1108
- snapshot_content: JSON.stringify({ value: "global untracked" }),
1109
- version_id: "global",
1110
- untracked: 1,
1111
- })
1112
- .execute();
1113
-
1114
- // 2. Verify child inherits untracked state
1115
- const inheritedState = await db
1116
- .selectFrom("lix_internal_state_vtable")
1117
- .where("entity_id", "=", "untracked_override_test")
1118
- .where("version_id", "=", childVersion.id)
1119
- .orderBy("entity_id")
1120
- .orderBy("version_id")
1121
- .select([sql`json(snapshot_content)`.as("snapshot_content"), "untracked"])
1122
- .execute();
1123
-
1124
- expectDeterministic(inheritedState).toHaveLength(1);
1125
- expectDeterministic(inheritedState[0]?.snapshot_content).toEqual({
1126
- value: "global untracked",
1127
- });
1128
- expectDeterministic(inheritedState[0]?.untracked).toBe(1);
1129
-
1130
- // 3. Insert untracked state in child version for same entity
1131
- await db
1132
- .insertInto("lix_internal_state_vtable")
1133
- .values({
1134
- entity_id: "untracked_override_test",
1135
- file_id: "f1",
1136
- schema_key: "mock_schema",
1137
- plugin_key: "p1",
1138
- schema_version: "1.0",
1139
- snapshot_content: JSON.stringify({ value: "child untracked" }),
1140
- version_id: childVersion.id,
1141
- untracked: 1,
1142
- })
1143
- .execute();
1144
-
1145
- // 4. Verify child now sees its own untracked state
1146
- const finalState = await db
1147
- .selectFrom("lix_internal_state_vtable")
1148
- .where("entity_id", "=", "untracked_override_test")
1149
- .where("version_id", "=", childVersion.id)
1150
- .orderBy("entity_id")
1151
- .orderBy("version_id")
1152
- .select([sql`json(snapshot_content)`.as("snapshot_content"), "untracked"])
1153
- .execute();
1154
-
1155
- expectDeterministic(finalState).toHaveLength(1);
1156
- expectDeterministic(finalState[0]?.snapshot_content).toEqual({
1157
- value: "child untracked",
1158
- });
1159
- expectDeterministic(finalState[0]?.untracked).toBe(1);
1160
- }
1161
- );
1162
- simulationTest(
1163
- "tracked state in child overrides inherited untracked state",
1164
- async ({ openSimulatedLix, expectDeterministic }) => {
1165
- const lix = await openSimulatedLix({
1166
- keyValues: [
1167
- {
1168
- key: "lix_deterministic_mode",
1169
- value: { enabled: true },
1170
- lixcol_version_id: "global",
1171
- },
1172
- ],
1173
- });
1174
-
1175
- const mockSchema: LixSchemaDefinition = {
1176
- "x-lix-key": "mock_schema",
1177
- "x-lix-version": "1.0",
1178
- type: "object",
1179
- additionalProperties: false,
1180
- properties: {
1181
- value: { type: "string" },
1182
- },
1183
- };
1184
-
1185
- await lix.db
1186
- .insertInto("stored_schema")
1187
- .values({ value: mockSchema })
1188
- .execute();
1189
-
1190
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1191
- const childVersion = await createVersion({ lix, name: "child" });
1192
-
1193
- // 1. Insert untracked state in global version
1194
- await db
1195
- .insertInto("lix_internal_state_vtable")
1196
- .values({
1197
- entity_id: "override_test",
1198
- file_id: "f1",
1199
- schema_key: "mock_schema",
1200
- plugin_key: "p1",
1201
- schema_version: "1.0",
1202
- snapshot_content: JSON.stringify({ value: "global untracked" }),
1203
- version_id: "global",
1204
- untracked: 1,
1205
- })
1206
- .execute();
1207
-
1208
- // 2. Verify child inherits untracked state
1209
- const inheritedState = await db
1210
- .selectFrom("lix_internal_state_vtable")
1211
- .where("entity_id", "=", "override_test")
1212
- .where("version_id", "=", childVersion.id)
1213
- .orderBy("entity_id")
1214
- .orderBy("version_id")
1215
- .select([
1216
- sql`json(snapshot_content)`.as("snapshot_content"),
1217
- "untracked",
1218
- "inherited_from_version_id",
1219
- ])
1220
- .execute();
1221
-
1222
- expectDeterministic(inheritedState).toHaveLength(1);
1223
- expectDeterministic(inheritedState[0]?.snapshot_content).toEqual({
1224
- value: "global untracked",
1225
- });
1226
- expectDeterministic(inheritedState[0]?.untracked).toBe(1);
1227
- expectDeterministic(inheritedState[0]?.inherited_from_version_id).toBe(
1228
- "global"
1229
- );
1230
-
1231
- // 3. Insert tracked state in child version for same entity
1232
- await db
1233
- .insertInto("lix_internal_state_vtable")
1234
- .values({
1235
- entity_id: "override_test",
1236
- file_id: "f1",
1237
- schema_key: "mock_schema",
1238
- plugin_key: "p1",
1239
- schema_version: "1.0",
1240
- snapshot_content: JSON.stringify({ value: "child tracked" }),
1241
- version_id: childVersion.id,
1242
- untracked: 0,
1243
- })
1244
- .execute();
1245
-
1246
- // 4. Verify child now sees tracked state, not inherited untracked
1247
- const finalState = await db
1248
- .selectFrom("lix_internal_state_vtable")
1249
- .where("entity_id", "=", "override_test")
1250
- .where("version_id", "=", childVersion.id)
1251
- .orderBy("entity_id")
1252
- .orderBy("version_id")
1253
- .select([sql`json(snapshot_content)`.as("snapshot_content"), "untracked"])
1254
- .execute();
1255
-
1256
- expectDeterministic(finalState).toHaveLength(1);
1257
- expectDeterministic(finalState[0]?.snapshot_content).toEqual({
1258
- value: "child tracked",
1259
- });
1260
- expectDeterministic(finalState[0]?.untracked).toBe(0); // Should be tracked
1261
- }
1262
- );
1263
- simulationTest(
1264
- "untracked state has untracked change_id for both inherited and non-inherited entities",
1265
- async ({ openSimulatedLix, expectDeterministic }) => {
1266
- const lix = await openSimulatedLix({
1267
- keyValues: [
1268
- {
1269
- key: "lix_deterministic_mode",
1270
- value: { enabled: true },
1271
- lixcol_version_id: "global",
1272
- },
1273
- ],
1274
- });
1275
-
1276
- const mockSchema: LixSchemaDefinition = {
1277
- "x-lix-key": "mock_schema",
1278
- "x-lix-version": "1.0",
1279
- type: "object",
1280
- additionalProperties: false,
1281
- properties: {
1282
- value: { type: "string" },
1283
- },
1284
- };
1285
-
1286
- await lix.db
1287
- .insertInto("stored_schema")
1288
- .values({ value: mockSchema })
1289
- .execute();
1290
-
1291
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1292
- const childVersion = await createVersion({ lix, name: "child" });
1293
-
1294
- // 1. Insert untracked state in global version (will be inherited by child)
1295
- await db
1296
- .insertInto("lix_internal_state_vtable")
1297
- .values({
1298
- entity_id: "inherited-entity",
1299
- file_id: "test-file",
1300
- schema_key: "mock_schema",
1301
- plugin_key: "test_plugin",
1302
- schema_version: "1.0",
1303
- snapshot_content: JSON.stringify({ value: "global untracked" }),
1304
- version_id: "global",
1305
- untracked: 1,
1306
- })
1307
- .execute();
1308
-
1309
- // 2. Insert untracked state directly in child version (non-inherited)
1310
- await db
1311
- .insertInto("lix_internal_state_vtable")
1312
- .values({
1313
- entity_id: "non-inherited-entity",
1314
- file_id: "test-file",
1315
- schema_key: "mock_schema",
1316
- plugin_key: "test_plugin",
1317
- schema_version: "1.0",
1318
- snapshot_content: JSON.stringify({ value: "child untracked" }),
1319
- version_id: childVersion.id,
1320
- untracked: 1,
1321
- })
1322
- .execute();
1323
-
1324
- // 3. Query all untracked entities in child version
1325
- const untrackedEntities = await db
1326
- .selectFrom("lix_internal_state_vtable")
1327
- .where("version_id", "=", childVersion.id)
1328
- .where("entity_id", "in", ["inherited-entity", "non-inherited-entity"])
1329
- .where("untracked", "=", 1)
1330
- .orderBy("_pk")
1331
- .select(["entity_id", "change_id"])
1332
- .execute();
1333
-
1334
- expectDeterministic(untrackedEntities).toHaveLength(2);
1335
-
1336
- // 4. Check that both entities have untracked change_id
1337
- for (const entity of untrackedEntities) {
1338
- expectDeterministic(entity.change_id).toBe("untracked");
1339
- }
1340
-
1341
- // 5. Verify specific entities
1342
- const inheritedEntity = untrackedEntities.find(
1343
- (e) => e.entity_id === "inherited-entity"
1344
- );
1345
- const nonInheritedEntity = untrackedEntities.find(
1346
- (e) => e.entity_id === "non-inherited-entity"
1347
- );
1348
-
1349
- expectDeterministic(inheritedEntity).toBeDefined();
1350
- expectDeterministic(nonInheritedEntity).toBeDefined();
1351
-
1352
- // Both inherited and non-inherited untracked entities should have change_id = "untracked"
1353
- expectDeterministic(inheritedEntity?.change_id).toBe("untracked");
1354
- expectDeterministic(nonInheritedEntity?.change_id).toBe("untracked");
1355
- }
1356
- );
1357
- simulationTest(
1358
- "lix_internal_state_vtable inherits untracked state from parent version into child",
1359
- async ({ openSimulatedLix, expectDeterministic }) => {
1360
- const lix = await openSimulatedLix({
1361
- keyValues: [
1362
- {
1363
- key: "lix_deterministic_mode",
1364
- value: { enabled: true },
1365
- lixcol_version_id: "global",
1366
- },
1367
- ],
1368
- });
1369
-
1370
- const mockSchema: LixSchemaDefinition = {
1371
- "x-lix-key": "mock_schema",
1372
- "x-lix-version": "1.0",
1373
- type: "object",
1374
- additionalProperties: false,
1375
- properties: {
1376
- value: { type: "string" },
1377
- },
1378
- };
1379
-
1380
- await lix.db
1381
- .insertInto("stored_schema")
1382
- .values({ value: mockSchema })
1383
- .execute();
1384
-
1385
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1386
-
1387
- // Get active child version id
1388
- const activeVersion = await db
1389
- .selectFrom("active_version")
1390
- .innerJoin("version", "active_version.version_id", "version.id")
1391
- .selectAll("version")
1392
- .executeTakeFirstOrThrow();
1393
-
1394
- // Insert untracked entity into global version (parent)
1395
- await db
1396
- .insertInto("lix_internal_state_vtable")
1397
- .values({
1398
- file_id: "test-file",
1399
- schema_key: "mock_schema",
1400
- plugin_key: "test_plugin",
1401
- schema_version: "1.0",
1402
- entity_id: "test_key",
1403
- snapshot_content: JSON.stringify({ value: "test_value" }),
1404
- version_id: "global",
1405
- untracked: 1,
1406
- })
1407
- .execute();
1408
-
1409
- // Read from global (parent)
1410
- const globalState = await db
1411
- .selectFrom("lix_internal_state_vtable")
1412
- .where("entity_id", "=", "test_key")
1413
- .where("version_id", "=", "global")
1414
- .orderBy("entity_id")
1415
- .orderBy("version_id")
1416
- .select([sql`json(snapshot_content)`.as("snapshot_content")])
1417
- .executeTakeFirstOrThrow();
1418
-
1419
- expectDeterministic(globalState).toBeDefined();
1420
-
1421
- // Read from child active version (should inherit from global)
1422
- const versionState = await db
1423
- .selectFrom("lix_internal_state_vtable")
1424
- .where("entity_id", "=", "test_key")
1425
- .where("version_id", "=", activeVersion.id)
1426
- .orderBy("entity_id")
1427
- .orderBy("version_id")
1428
- .select([
1429
- sql`json(snapshot_content)`.as("snapshot_content"),
1430
- "inherited_from_version_id",
1431
- ])
1432
- .executeTakeFirstOrThrow();
1433
-
1434
- expectDeterministic(versionState).toBeDefined();
1435
- expectDeterministic(versionState.snapshot_content).toEqual(
1436
- globalState.snapshot_content
1437
- );
1438
- expectDeterministic(versionState.inherited_from_version_id).toBe("global");
1439
- }
1440
- );
1441
- simulationTest(
1442
- "untracked state overrides inherited state (untracked > inherited)",
1443
- async ({ openSimulatedLix, expectDeterministic }) => {
1444
- const lix = await openSimulatedLix({
1445
- keyValues: [
1446
- {
1447
- key: "lix_deterministic_mode",
1448
- value: { enabled: true },
1449
- lixcol_version_id: "global",
1450
- },
1451
- ],
1452
- });
1453
-
1454
- const mockSchema: LixSchemaDefinition = {
1455
- "x-lix-key": "mock_schema",
1456
- "x-lix-version": "1.0",
1457
- type: "object",
1458
- additionalProperties: false,
1459
- properties: {
1460
- value: { type: "string" },
1461
- },
1462
- };
1463
-
1464
- await lix.db
1465
- .insertInto("stored_schema")
1466
- .values({ value: mockSchema })
1467
- .execute();
1468
-
1469
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1470
-
1471
- // Step 1: Insert entity in global version (tracked)
1472
- await db
1473
- .insertInto("lix_internal_state_vtable")
1474
- .values({
1475
- entity_id: "inherited-entity",
1476
- file_id: "test-file",
1477
- schema_key: "mock_schema",
1478
- plugin_key: "test_plugin",
1479
- schema_version: "1.0",
1480
- version_id: "global",
1481
- snapshot_content: JSON.stringify({ value: "inherited value" }),
1482
- untracked: 0,
1483
- })
1484
- .execute();
1485
-
1486
- // Step 2: Create a child version that inherits from global
1487
- const childVersion = await createVersion({ lix, name: "child-version" });
1488
-
1489
- // Verify inheritance is set up correctly
1490
- expectDeterministic(childVersion.inherits_from_version_id).toBe("global");
1491
-
1492
- // Step 3: Verify child initially sees inherited entity
1493
- const inheritedState = await db
1494
- .selectFrom("lix_internal_state_vtable")
1495
- .where("entity_id", "=", "inherited-entity")
1496
- .where("version_id", "=", childVersion.id)
1497
- .orderBy("entity_id")
1498
- .orderBy("version_id")
1499
- .select([
1500
- sql`json(snapshot_content)`.as("snapshot_content"),
1501
- "inherited_from_version_id",
1502
- ])
1503
- .execute();
1504
-
1505
- expectDeterministic(inheritedState).toHaveLength(1);
1506
- expectDeterministic(inheritedState[0]?.snapshot_content).toEqual({
1507
- value: "inherited value",
1508
- });
1509
- expectDeterministic(inheritedState[0]?.inherited_from_version_id).toBe(
1510
- "global"
1511
- );
1512
-
1513
- // Step 4: Add untracked state for same entity in child version
1514
- await db
1515
- .insertInto("lix_internal_state_vtable")
1516
- .values({
1517
- entity_id: "inherited-entity",
1518
- file_id: "test-file",
1519
- schema_key: "mock_schema",
1520
- plugin_key: "test_plugin",
1521
- schema_version: "1.0",
1522
- version_id: childVersion.id,
1523
- snapshot_content: JSON.stringify({ value: "untracked override" }),
1524
- untracked: 1,
1525
- })
1526
- .execute();
1527
-
1528
- // Step 5: Query should return untracked state (higher priority than inherited)
1529
- const finalState = await db
1530
- .selectFrom("lix_internal_state_vtable")
1531
- .where("entity_id", "=", "inherited-entity")
1532
- .where("version_id", "=", childVersion.id)
1533
- .orderBy("entity_id")
1534
- .orderBy("version_id")
1535
- .select([
1536
- sql`json(snapshot_content)`.as("snapshot_content"),
1537
- "inherited_from_version_id",
1538
- "version_id",
1539
- ])
1540
- .execute();
1541
-
1542
- expect(finalState).toHaveLength(1);
1543
- const sanitizedFinalState = finalState.map(
1544
- ({ version_id: _ignoredVersionId, ...rest }) => rest
1545
- );
1546
- expectDeterministic(sanitizedFinalState).toEqual([
1547
- {
1548
- snapshot_content: { value: "untracked override" },
1549
- inherited_from_version_id: null,
1550
- },
1551
- ]);
1552
- expect(finalState[0]?.version_id).toBe(childVersion.id);
1553
-
1554
- // Step 6: Verify the inherited entity still exists in global version (unchanged)
1555
- const globalState = await db
1556
- .selectFrom("lix_internal_state_vtable")
1557
- .where("entity_id", "=", "inherited-entity")
1558
- .where("version_id", "=", "global")
1559
- .orderBy("entity_id")
1560
- .orderBy("version_id")
1561
- .select([
1562
- sql`json(snapshot_content)`.as("snapshot_content"),
1563
- "inherited_from_version_id",
1564
- ])
1565
- .execute();
1566
-
1567
- expectDeterministic(globalState).toHaveLength(1);
1568
- expectDeterministic(globalState[0]?.snapshot_content).toEqual({
1569
- value: "inherited value",
1570
- });
1571
- expectDeterministic(globalState[0]?.inherited_from_version_id).toBe(null);
1572
-
1573
- // Step 7: No changes should be created for untracked mutations
1574
- const changes = await db
1575
- .selectFrom("change")
1576
- .where("entity_id", "=", "inherited-entity")
1577
- .where("schema_key", "=", "mock_schema")
1578
- .selectAll()
1579
- .execute();
1580
-
1581
- expect(changes).toHaveLength(1);
1582
- }
1583
- );
1584
- simulationTest(
1585
- "untracked state has highest priority in UNION (untracked > tracked > inherited)",
1586
- async ({ openSimulatedLix, expectDeterministic }) => {
1587
- const lix = await openSimulatedLix({
1588
- keyValues: [
1589
- {
1590
- key: "lix_deterministic_mode",
1591
- value: { enabled: true },
1592
- lixcol_version_id: "global",
1593
- },
1594
- ],
1595
- });
1596
-
1597
- const mockSchema: LixSchemaDefinition = {
1598
- "x-lix-key": "mock_schema",
1599
- "x-lix-version": "1.0",
1600
- type: "object",
1601
- additionalProperties: false,
1602
- properties: {
1603
- value: {
1604
- type: "string",
1605
- },
1606
- },
1607
- };
1608
-
1609
- await lix.db
1610
- .insertInto("stored_schema")
1611
- .values({ value: mockSchema })
1612
- .execute();
1613
-
1614
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1615
-
1616
- // Step 1: Insert tracked state with "init"
1617
- await db
1618
- .insertInto("lix_internal_state_vtable")
1619
- .values({
1620
- entity_id: "entity0",
1621
- file_id: "test-file",
1622
- schema_key: "mock_schema",
1623
- plugin_key: "test_plugin",
1624
- schema_version: "1.0",
1625
- version_id: sql`(SELECT version_id FROM active_version)`,
1626
- snapshot_content: JSON.stringify({ value: "init" }),
1627
- untracked: 0,
1628
- })
1629
- .execute();
1630
-
1631
- // Verify tracked state exists
1632
- const afterInit = await db
1633
- .selectFrom("lix_internal_state_vtable")
1634
- .where("entity_id", "=", "entity0")
1635
- .orderBy("entity_id")
1636
- .orderBy("version_id")
1637
- .select([sql`json(snapshot_content)`.as("snapshot_content")])
1638
- .execute();
1639
-
1640
- expectDeterministic(afterInit).toHaveLength(1);
1641
- expectDeterministic(afterInit[0]?.snapshot_content).toEqual({
1642
- value: "init",
1643
- });
1644
-
1645
- // Step 2: Update to untracked state with "update" (should NOT delete tracked state)
1646
- await db
1647
- .updateTable("lix_internal_state_vtable")
1648
- .set({
1649
- snapshot_content: JSON.stringify({ value: "update" }),
1650
- untracked: 1,
1651
- })
1652
- .where("entity_id", "=", "entity0")
1653
- .where("schema_key", "=", "mock_schema")
1654
- .where("file_id", "=", "test-file")
1655
- .execute();
1656
-
1657
- // Step 3: Query should return untracked state "update" (highest priority)
1658
- const afterUntrackedUpdate = await db
1659
- .selectFrom("lix_internal_state_vtable")
1660
- .where("entity_id", "=", "entity0")
1661
- .orderBy("entity_id")
1662
- .orderBy("version_id")
1663
- .select([sql`json(snapshot_content)`.as("snapshot_content")])
1664
- .execute();
1665
-
1666
- expectDeterministic(afterUntrackedUpdate).toHaveLength(1);
1667
- expectDeterministic(afterUntrackedUpdate[0]?.snapshot_content).toEqual({
1668
- value: "update",
1669
- });
1670
-
1671
- // Step 4: Update back to tracked state with "update2" (should delete untracked state)
1672
- await db
1673
- .updateTable("lix_internal_state_vtable")
1674
- .set({
1675
- snapshot_content: JSON.stringify({ value: "update2" }),
1676
- untracked: 0,
1677
- })
1678
- .where("entity_id", "=", "entity0")
1679
- .where("schema_key", "=", "mock_schema")
1680
- .where("file_id", "=", "test-file")
1681
- .execute();
1682
-
1683
- // Step 5: Query should return tracked state "update2"
1684
- const afterTrackedUpdate = await db
1685
- .selectFrom("lix_internal_state_vtable")
1686
- .where("entity_id", "=", "entity0")
1687
- .orderBy("entity_id")
1688
- .orderBy("version_id")
1689
- .select([sql`json(snapshot_content)`.as("snapshot_content")])
1690
- .execute();
1691
-
1692
- expectDeterministic(afterTrackedUpdate).toHaveLength(1);
1693
- expectDeterministic(afterTrackedUpdate[0]?.snapshot_content).toEqual({
1694
- value: "update2",
1695
- });
1696
-
1697
- // Verify that a change was created for the final tracked mutation
1698
- const changes = await db
1699
- .selectFrom("change")
1700
- .where("entity_id", "=", "entity0")
1701
- .where("schema_key", "=", "mock_schema")
1702
- .selectAll()
1703
- .execute();
1704
-
1705
- expectDeterministic(changes.length).toBeGreaterThan(0);
1706
- }
1707
- );
1708
- simulationTest(
1709
- "deleting without filtering for the version_id deletes the entity from all versions",
1710
- async ({ openSimulatedLix, expectDeterministic }) => {
1711
- const lix = await openSimulatedLix({
1712
- keyValues: [
1713
- {
1714
- key: "lix_deterministic_mode",
1715
- value: { enabled: true },
1716
- lixcol_version_id: "global",
1717
- },
1718
- ],
1719
- });
1720
-
1721
- // Insert an entity into global version via vtable
1722
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1723
- const testSchema: LixSchemaDefinition = {
1724
- "x-lix-key": "test_schema",
1725
- "x-lix-version": "1.0",
1726
- type: "object",
1727
- additionalProperties: false,
1728
- properties: {
1729
- id: { type: "string" },
1730
- name: { type: "string" },
1731
- },
1732
- required: ["id", "name"],
1733
- };
1734
- await lix.db
1735
- .insertInto("stored_schema")
1736
- .values({ value: testSchema })
1737
- .execute();
1738
-
1739
- await db
1740
- .insertInto("lix_internal_state_vtable")
1741
- .values({
1742
- entity_id: "shared-entity",
1743
- file_id: "test-file",
1744
- schema_key: "test_schema",
1745
- plugin_key: "test_plugin",
1746
- snapshot_content: JSON.stringify({
1747
- id: "shared-entity",
1748
- name: "Global Entity",
1749
- }),
1750
- schema_version: "1.0",
1751
- version_id: "global",
1752
- untracked: 0,
1753
- })
1754
- .execute();
1755
-
1756
- // Create a child version that inherits from global
1757
- const childVersion = await createVersion({
1758
- lix,
1759
- name: "child-version",
1760
- inheritsFrom: { id: "global" },
1761
- });
1762
-
1763
- // Verify inheritance - both global and child should see the entity via vtable
1764
- const beforeDelete = await db
1765
- .selectFrom("lix_internal_state_vtable")
1766
- .where("entity_id", "=", "shared-entity")
1767
- .where("version_id", "in", ["global", childVersion.id])
1768
- .orderBy("entity_id")
1769
- .orderBy("version_id")
1770
- .select([
1771
- "entity_id",
1772
- "version_id",
1773
- "inherited_from_version_id",
1774
- sql`json(snapshot_content)`.as("snapshot_content"),
1775
- ])
1776
- .execute();
1777
-
1778
- expect(beforeDelete).toHaveLength(2);
1779
- expect(beforeDelete).toEqual(
1780
- expect.arrayContaining([
1781
- expect.objectContaining({
1782
- entity_id: "shared-entity",
1783
- version_id: "global",
1784
- inherited_from_version_id: null,
1785
- snapshot_content: { id: "shared-entity", name: "Global Entity" },
1786
- }),
1787
- expect.objectContaining({
1788
- entity_id: "shared-entity",
1789
- version_id: childVersion.id,
1790
- inherited_from_version_id: "global",
1791
- snapshot_content: {
1792
- id: "shared-entity",
1793
- name: "Global Entity",
1794
- },
1795
- }),
1796
- ])
1797
- );
1798
-
1799
- // Delete across versions by not filtering by version_id should fail
1800
- await expect(
1801
- db
1802
- .deleteFrom("lix_internal_state_vtable")
1803
- .where("entity_id", "=", "shared-entity")
1804
- .where("schema_key", "=", "test_schema")
1805
- .execute()
1806
- ).rejects.toThrow(/inherited/);
1807
-
1808
- const afterDelete = await db
1809
- .selectFrom("lix_internal_state_vtable")
1810
- .where("entity_id", "=", "shared-entity")
1811
- .where("version_id", "in", ["global", childVersion.id])
1812
- .orderBy("entity_id")
1813
- .orderBy("version_id")
1814
- .select([
1815
- "entity_id",
1816
- "version_id",
1817
- "inherited_from_version_id",
1818
- sql`json(snapshot_content)`.as("snapshot_content"),
1819
- ])
1820
- .execute();
1821
-
1822
- // Both versions should still have the entity untouched
1823
- expectDeterministic(afterDelete).toEqual(
1824
- expect.arrayContaining([
1825
- expect.objectContaining({
1826
- entity_id: "shared-entity",
1827
- version_id: "global",
1828
- inherited_from_version_id: null,
1829
- snapshot_content: { id: "shared-entity", name: "Global Entity" },
1830
- }),
1831
- expect.objectContaining({
1832
- entity_id: "shared-entity",
1833
- version_id: childVersion.id,
1834
- inherited_from_version_id: "global",
1835
- snapshot_content: {
1836
- id: "shared-entity",
1837
- name: "Global Entity",
1838
- },
1839
- }),
1840
- ])
1841
- );
1842
- }
1843
- );
1844
-
1845
- simulationTest(
1846
- "untracked state is persisted across lix openings",
1847
- async ({ openSimulatedLix, expectDeterministic }) => {
1848
- const mockSchema: LixSchemaDefinition = {
1849
- "x-lix-key": "mock_schema",
1850
- "x-lix-version": "1.0",
1851
- type: "object",
1852
- additionalProperties: false,
1853
- properties: {
1854
- value: {
1855
- type: "string",
1856
- },
1857
- },
1858
- };
1859
-
1860
- // First session - create and insert untracked state via vtable
1861
- const lix1 = await openSimulatedLix({
1862
- keyValues: [
1863
- {
1864
- key: "lix_deterministic_mode",
1865
- value: { enabled: true },
1866
- lixcol_version_id: "global",
1867
- },
1868
- ],
1869
- });
1870
-
1871
- await lix1.db
1872
- .insertInto("stored_schema")
1873
- .values({ value: mockSchema })
1874
- .execute();
1875
-
1876
- const db1 = lix1.db as unknown as Kysely<LixInternalDatabaseSchema>;
1877
-
1878
- await db1
1879
- .insertInto("lix_internal_state_vtable")
1880
- .values({
1881
- entity_id: "persistent-entity",
1882
- file_id: "test-file",
1883
- schema_key: "mock_schema",
1884
- plugin_key: "test_plugin",
1885
- schema_version: "1.0",
1886
- version_id: sql`(SELECT version_id FROM active_version)`,
1887
- snapshot_content: JSON.stringify({
1888
- value: "persistent untracked value",
1889
- }),
1890
- untracked: 1,
1891
- })
1892
- .execute();
1893
-
1894
- // Second session - verify untracked state persists
1895
- const lix2 = await openLix({ blob: await lix1.toBlob() });
1896
-
1897
- const db2 = lix2.db as unknown as Kysely<LixInternalDatabaseSchema>;
1898
- const persistedState = await db2
1899
- .selectFrom("lix_internal_state_vtable")
1900
- .where("entity_id", "=", "persistent-entity")
1901
- .orderBy("entity_id")
1902
- .orderBy("version_id")
1903
- .select([sql`json(snapshot_content)`.as("snapshot_content")])
1904
- .execute();
1905
-
1906
- expectDeterministic(persistedState).toHaveLength(1);
1907
- expectDeterministic(persistedState[0]?.snapshot_content).toEqual({
1908
- value: "persistent untracked value",
1909
- });
1910
-
1911
- await lix2.close();
1912
- }
1913
- );
1914
-
1915
- simulationTest(
1916
- "child version inherits entities from parent version",
1917
- async ({ openSimulatedLix, expectDeterministic }) => {
1918
- const lix = await openSimulatedLix({
1919
- keyValues: [
1920
- {
1921
- key: "lix_deterministic_mode",
1922
- value: { enabled: true },
1923
- lixcol_version_id: "global",
1924
- },
1925
- ],
1926
- });
1927
-
1928
- const testSchema: LixSchemaDefinition = {
1929
- "x-lix-key": "test_schema",
1930
- "x-lix-version": "1.0",
1931
- type: "object",
1932
- additionalProperties: false,
1933
- properties: {
1934
- id: { type: "string" },
1935
- name: { type: "string" },
1936
- },
1937
- required: ["id", "name"],
1938
- };
1939
- await lix.db
1940
- .insertInto("stored_schema")
1941
- .values({ value: testSchema })
1942
- .execute();
1943
-
1944
- // Insert an entity into global version
1945
- await lix.db
1946
- .insertInto("state_by_version")
1947
- .values({
1948
- entity_id: "global-entity-1",
1949
- file_id: "test-file",
1950
- schema_key: "test_schema",
1951
- plugin_key: "test_plugin",
1952
- version_id: "global",
1953
- snapshot_content: {
1954
- id: "global-entity-1",
1955
- name: "Global Entity",
1956
- },
1957
- schema_version: "1.0",
1958
- })
1959
- .execute();
1960
-
1961
- // Create a child version that inherits from global
1962
- const childVersion = await createVersion({
1963
- lix,
1964
- name: "child-version",
1965
- });
1966
-
1967
- // Verify inheritance was set up correctly
1968
- expectDeterministic(childVersion.inherits_from_version_id).toBe("global");
1969
-
1970
- // The child version should inherit the entity from global
1971
- const inheritedEntity = await lix.db
1972
- .selectFrom("state_by_version")
1973
- .where("entity_id", "=", "global-entity-1")
1974
- .where("version_id", "=", childVersion.id)
1975
- .selectAll()
1976
- .execute();
1977
-
1978
- // This should pass - the entity should be visible in the child version via inheritance
1979
- expect(inheritedEntity).toHaveLength(1);
1980
- expect(inheritedEntity[0]?.entity_id).toBe("global-entity-1");
1981
- expect(inheritedEntity[0]?.version_id).toBe(childVersion.id); // Should return child version ID
1982
- expect(inheritedEntity[0]?.inherited_from_version_id).toBe("global"); // Should track inheritance source
1983
- expect(inheritedEntity[0]?.snapshot_content).toEqual({
1984
- id: "global-entity-1",
1985
- name: "Global Entity",
1986
- });
1987
- }
1988
- );
1989
-
1990
- // Mutating inherited state comes with substantial mental overhead like:
1991
- //
1992
- // - "I deleted this entity, why does it still exist?"
1993
- // - "Where is this tombstone coming from?"
1994
- //
1995
- // To keep things simpler, lix prevents mutating inherited state.
1996
- simulationTest(
1997
- "mutating inherited state should throw",
1998
- async ({ openSimulatedLix }) => {
1999
- const lix = await openSimulatedLix({
2000
- keyValues: [
2001
- {
2002
- key: "lix_deterministic_mode",
2003
- value: { enabled: true },
2004
- lixcol_version_id: "global",
2005
- },
2006
- ],
2007
- });
2008
-
2009
- const mockSchema: LixSchemaDefinition = {
2010
- "x-lix-key": "mock_schema_inherited_delete_guard",
2011
- "x-lix-version": "1.0",
2012
- type: "object",
2013
- additionalProperties: false,
2014
- properties: {
2015
- value: { type: "string" },
2016
- },
2017
- };
2018
-
2019
- await lix.db
2020
- .insertInto("stored_schema")
2021
- .values({ value: mockSchema })
2022
- .execute();
2023
-
2024
- // Seed entity directly in global version.
2025
- await lix.db
2026
- .insertInto("state_by_version")
2027
- .values({
2028
- entity_id: "inherited-delete-test",
2029
- file_id: "test-file",
2030
- schema_key: mockSchema["x-lix-key"],
2031
- plugin_key: "test_plugin",
2032
- version_id: "global",
2033
- schema_version: mockSchema["x-lix-version"],
2034
- snapshot_content: {
2035
- value: "global seed",
2036
- },
2037
- })
2038
- .execute();
2039
-
2040
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2041
-
2042
- const activeVersion = await db
2043
- .selectFrom("active_version")
2044
- .select("version_id")
2045
- .executeTakeFirstOrThrow();
2046
-
2047
- // Guardrail: mutations from a child version shouldn’t backfill tombstones into the ancestor.
2048
- // Forbidding DELETE here keeps inheritance transparent. Local overrides or explicit clones
2049
- // remain allowed; only direct edits on the inherited shadow are blocked.
2050
- // Sanity check: row resolves as inherited in the active version.
2051
- const inheritedRow = await db
2052
- .selectFrom("lix_internal_state_vtable")
2053
- .select([
2054
- "inherited_from_version_id",
2055
- sql`json(snapshot_content)`.as("snapshot_content"),
2056
- ])
2057
- .where("entity_id", "=", "inherited-delete-test")
2058
- .where("schema_key", "=", mockSchema["x-lix-key"])
2059
- .where("version_id", "=", activeVersion.version_id)
2060
- .executeTakeFirst();
2061
-
2062
- expect(inheritedRow?.inherited_from_version_id).toBe("global");
2063
- expect(inheritedRow?.snapshot_content).toEqual({ value: "global seed" });
2064
-
2065
- await expect(
2066
- db
2067
- .updateTable("lix_internal_state_vtable")
2068
- .set({
2069
- snapshot_content: JSON.stringify({
2070
- value: "attempted inherited edit",
2071
- }),
2072
- })
2073
- .where("entity_id", "=", "inherited-delete-test")
2074
- .where("schema_key", "=", mockSchema["x-lix-key"])
2075
- .where("version_id", "=", activeVersion.version_id)
2076
- .execute()
2077
- ).rejects.toThrow(/inherited/i);
2078
-
2079
- const rowAfterUpdateAttempt = await db
2080
- .selectFrom("lix_internal_state_vtable")
2081
- .select(sql`json(snapshot_content)`.as("snapshot_content"))
2082
- .where("entity_id", "=", "inherited-delete-test")
2083
- .where("schema_key", "=", mockSchema["x-lix-key"])
2084
- .where("version_id", "=", activeVersion.version_id)
2085
- .executeTakeFirst();
2086
-
2087
- expect(rowAfterUpdateAttempt?.snapshot_content).toEqual({
2088
- value: "global seed",
2089
- });
2090
-
2091
- await expect(
2092
- db
2093
- .deleteFrom("lix_internal_state_vtable")
2094
- .where("entity_id", "=", "inherited-delete-test")
2095
- .where("schema_key", "=", mockSchema["x-lix-key"])
2096
- .where("version_id", "=", activeVersion.version_id)
2097
- .execute()
2098
- ).rejects.toThrow(/inherited/i);
2099
- }
2100
- );
2101
-
2102
- simulationTest(
2103
- "inherited_from_version_id is read-only",
2104
- async ({ openSimulatedLix, expectDeterministic }) => {
2105
- const lix = await openSimulatedLix({
2106
- keyValues: [
2107
- {
2108
- key: "lix_deterministic_mode",
2109
- value: { enabled: true },
2110
- lixcol_version_id: "global",
2111
- },
2112
- ],
2113
- });
2114
-
2115
- const mockSchema: LixSchemaDefinition = {
2116
- "x-lix-key": "mock_schema_inherited_flag",
2117
- "x-lix-version": "1.0",
2118
- type: "object",
2119
- additionalProperties: false,
2120
- properties: {
2121
- value: { type: "string" },
2122
- },
2123
- };
2124
-
2125
- await lix.db
2126
- .insertInto("stored_schema")
2127
- .values({ value: mockSchema })
2128
- .execute();
2129
-
2130
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2131
- const activeVersion = await db
2132
- .selectFrom("active_version")
2133
- .select("version_id")
2134
- .executeTakeFirstOrThrow();
2135
-
2136
- await db
2137
- .insertInto("lix_internal_state_vtable")
2138
- .values({
2139
- entity_id: "local-entity",
2140
- file_id: "test-file",
2141
- schema_key: mockSchema["x-lix-key"],
2142
- plugin_key: "test_plugin",
2143
- schema_version: mockSchema["x-lix-version"],
2144
- version_id: activeVersion.version_id,
2145
- snapshot_content: JSON.stringify({ value: "local value" }),
2146
- untracked: 0,
2147
- })
2148
- .execute();
2149
-
2150
- const before = await db
2151
- .selectFrom("lix_internal_state_vtable")
2152
- .select(["inherited_from_version_id"])
2153
- .where("entity_id", "=", "local-entity")
2154
- .where("schema_key", "=", mockSchema["x-lix-key"])
2155
- .where("version_id", "=", activeVersion.version_id)
2156
- .executeTakeFirstOrThrow();
2157
-
2158
- expectDeterministic(before.inherited_from_version_id).toBeNull();
2159
-
2160
- await expect(
2161
- db
2162
- .updateTable("lix_internal_state_vtable")
2163
- .set({ inherited_from_version_id: "global" })
2164
- .where("entity_id", "=", "local-entity")
2165
- .where("schema_key", "=", mockSchema["x-lix-key"])
2166
- .where("version_id", "=", activeVersion.version_id)
2167
- .execute()
2168
- ).rejects.toThrow(/inherited_from_version_id/i);
2169
-
2170
- const after = await db
2171
- .selectFrom("lix_internal_state_vtable")
2172
- .select(["inherited_from_version_id"])
2173
- .where("entity_id", "=", "local-entity")
2174
- .where("schema_key", "=", mockSchema["x-lix-key"])
2175
- .where("version_id", "=", activeVersion.version_id)
2176
- .executeTakeFirstOrThrow();
2177
-
2178
- expectDeterministic(after.inherited_from_version_id).toBeNull();
2179
- }
2180
- );
2181
-
2182
- simulationTest(
2183
- "delete operations are validated for foreign key constraints",
2184
- async ({ openSimulatedLix, expectDeterministic }) => {
2185
- const lix = await openSimulatedLix({
2186
- keyValues: [
2187
- {
2188
- key: "lix_deterministic_mode",
2189
- value: { enabled: true },
2190
- lixcol_version_id: "global",
2191
- },
2192
- ],
2193
- });
2194
-
2195
- // Define parent schema (referenced entity)
2196
- const parentSchema: LixSchemaDefinition = {
2197
- "x-lix-key": "parent_entity",
2198
- "x-lix-version": "1.0",
2199
- "x-lix-primary-key": ["/id"],
2200
- type: "object",
2201
- properties: {
2202
- id: { type: "string" },
2203
- name: { type: "string" },
2204
- },
2205
- required: ["id", "name"],
2206
- additionalProperties: false,
2207
- };
2208
-
2209
- // Define child schema with foreign key to parent
2210
- const childSchema: LixSchemaDefinition = {
2211
- "x-lix-key": "child_entity",
2212
- "x-lix-version": "1.0",
2213
- "x-lix-primary-key": ["/id"],
2214
- "x-lix-foreign-keys": [
2215
- {
2216
- properties: ["/parent_id"],
2217
- references: {
2218
- schemaKey: "parent_entity",
2219
- properties: ["/id"],
2220
- },
2221
- },
2222
- ],
2223
- type: "object",
2224
- properties: {
2225
- id: { type: "string" },
2226
- parent_id: { type: "string" },
2227
- value: { type: "string" },
2228
- },
2229
- required: ["id", "parent_id", "value"],
2230
- additionalProperties: false,
2231
- };
2232
-
2233
- // Register both schemas
2234
- await lix.db
2235
- .insertInto("stored_schema")
2236
- .values([{ value: parentSchema }, { value: childSchema }])
2237
- .execute();
2238
-
2239
- // Insert parent entity
2240
- await lix.db
2241
- .insertInto("state_by_version")
2242
- .values({
2243
- entity_id: "parent-1",
2244
- schema_key: "parent_entity",
2245
- file_id: "test-file",
2246
- plugin_key: "test-plugin",
2247
- snapshot_content: {
2248
- id: "parent-1",
2249
- name: "Parent Entity",
2250
- },
2251
- schema_version: "1.0",
2252
- version_id: sql`(SELECT version_id FROM active_version)`,
2253
- })
2254
- .execute();
2255
-
2256
- // Insert child entity that references the parent
2257
- await lix.db
2258
- .insertInto("state_by_version")
2259
- .values({
2260
- entity_id: "child-1",
2261
- schema_key: "child_entity",
2262
- file_id: "test-file",
2263
- plugin_key: "test-plugin",
2264
- snapshot_content: {
2265
- id: "child-1",
2266
- parent_id: "parent-1",
2267
- value: "Child Value",
2268
- },
2269
- schema_version: "1.0",
2270
- version_id: sql`(SELECT version_id FROM active_version)`,
2271
- })
2272
- .execute();
2273
-
2274
- // Verify both entities exist
2275
- const parentBefore = await lix.db
2276
- .selectFrom("state_by_version")
2277
- .where("entity_id", "=", "parent-1")
2278
- .where("schema_key", "=", "parent_entity")
2279
- .selectAll()
2280
- .execute();
2281
-
2282
- const childBefore = await lix.db
2283
- .selectFrom("state_by_version")
2284
- .where("entity_id", "=", "child-1")
2285
- .where("schema_key", "=", "child_entity")
2286
- .selectAll()
2287
- .execute();
2288
-
2289
- expectDeterministic(parentBefore).toHaveLength(1);
2290
- expectDeterministic(childBefore).toHaveLength(1);
2291
-
2292
- // Attempting to delete the parent entity should fail due to foreign key constraint
2293
- // because there's a child entity that references it
2294
- await expect(
2295
- lix.db
2296
- .deleteFrom("state_by_version")
2297
- .where("entity_id", "=", "parent-1")
2298
- .where("schema_key", "=", "parent_entity")
2299
- .execute()
2300
- ).rejects.toThrow(/foreign key/i);
2301
-
2302
- // Verify the parent still exists after failed deletion attempt
2303
- const parentAfter = await lix.db
2304
- .selectFrom("state_by_version")
2305
- .where("entity_id", "=", "parent-1")
2306
- .where("schema_key", "=", "parent_entity")
2307
- .selectAll()
2308
- .execute();
2309
-
2310
- expectDeterministic(parentAfter).toHaveLength(1);
2311
- }
2312
- );
2313
- simulationTest(
2314
- "validates the schema on insert via lix_internal_state_vtable",
2315
- async ({ openSimulatedLix }) => {
2316
- const lix = await openSimulatedLix({
2317
- keyValues: [
2318
- {
2319
- key: "lix_deterministic_mode",
2320
- value: { enabled: true },
2321
- lixcol_version_id: "global",
2322
- },
2323
- ],
2324
- });
2325
-
2326
- const mockSchema: LixSchemaDefinition = {
2327
- "x-lix-key": "mock_schema",
2328
- "x-lix-version": "1.0",
2329
- type: "object",
2330
- additionalProperties: false,
2331
- properties: {
2332
- value: {
2333
- type: "number",
2334
- },
2335
- },
2336
- };
2337
-
2338
- await lix.db
2339
- .insertInto("stored_schema")
2340
- .values({ value: mockSchema })
2341
- .execute();
2342
-
2343
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2344
-
2345
- // Test that invalid data is rejected by lix_internal_state_vtable
2346
- await expect(
2347
- db
2348
- .insertInto("lix_internal_state_vtable")
2349
- .values({
2350
- entity_id: "e0",
2351
- file_id: "f0",
2352
- schema_key: "mock_schema",
2353
- plugin_key: "lix_sdk",
2354
- schema_version: "1.0",
2355
- snapshot_content: JSON.stringify({
2356
- value: "hello world", // Should be a number, not a string
2357
- }),
2358
- version_id: sql`(SELECT version_id FROM active_version)`,
2359
- untracked: 0,
2360
- })
2361
- .execute()
2362
- ).rejects.toThrow(/value must be number/);
2363
- }
2364
- );
2365
-
2366
- simulationTest(
2367
- "validates the schema on update via lix_internal_state_vtable",
2368
- async ({ openSimulatedLix }) => {
2369
- const lix = await openSimulatedLix({});
2370
-
2371
- const mockSchema: LixSchemaDefinition = {
2372
- "x-lix-key": "mock_schema",
2373
- "x-lix-version": "1.0",
2374
- type: "object",
2375
- additionalProperties: false,
2376
- properties: {
2377
- value: {
2378
- type: "number",
2379
- },
2380
- },
2381
- };
2382
-
2383
- await lix.db
2384
- .insertInto("stored_schema")
2385
- .values({ value: mockSchema })
2386
- .execute();
2387
-
2388
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2389
-
2390
- // Insert valid data first
2391
- await db
2392
- .insertInto("lix_internal_state_vtable")
2393
- .values({
2394
- entity_id: "e0",
2395
- file_id: "f0",
2396
- schema_key: "mock_schema",
2397
- plugin_key: "lix_sdk",
2398
- schema_version: "1.0",
2399
- snapshot_content: JSON.stringify({
2400
- value: 5,
2401
- }),
2402
- version_id: sql`(SELECT version_id FROM active_version)`,
2403
- untracked: 0,
2404
- })
2405
- .execute();
2406
-
2407
- // Test that invalid update is rejected by lix_internal_state_vtable
2408
- await expect(
2409
- db
2410
- .updateTable("lix_internal_state_vtable")
2411
- .set({
2412
- snapshot_content: JSON.stringify({
2413
- value: "hello world - updated", // Should be a number, not a string
2414
- }),
2415
- })
2416
- .where("entity_id", "=", "e0")
2417
- .where("schema_key", "=", "mock_schema")
2418
- .where("file_id", "=", "f0")
2419
- .execute()
2420
- ).rejects.toThrow(/value must be number/);
2421
-
2422
- // Verify the data wasn't changed
2423
- const viewAfterFailedUpdate = await db
2424
- .selectFrom("lix_internal_state_vtable")
2425
- .where("schema_key", "=", "mock_schema")
2426
- .orderBy("entity_id")
2427
- .orderBy("version_id")
2428
- .select([
2429
- "entity_id",
2430
- "file_id",
2431
- "schema_key",
2432
- "plugin_key",
2433
- sql`json(snapshot_content)`.as("snapshot_content"),
2434
- ])
2435
- .execute();
2436
-
2437
- expect(viewAfterFailedUpdate).toMatchObject([
2438
- {
2439
- entity_id: "e0",
2440
- file_id: "f0",
2441
- schema_key: "mock_schema",
2442
- plugin_key: "lix_sdk",
2443
- snapshot_content: {
2444
- value: 5,
2445
- },
2446
- },
2447
- ]);
2448
- }
2449
- );
2450
-
2451
- simulationTest(
2452
- "file scoped unique constraints allow duplicates across files via lix_internal_state_vtable",
2453
- async ({ openSimulatedLix, expectDeterministic }) => {
2454
- const lix = await openSimulatedLix({
2455
- keyValues: [
2456
- {
2457
- key: "lix_deterministic_mode",
2458
- value: { enabled: true },
2459
- lixcol_version_id: "global",
2460
- },
2461
- ],
2462
- });
2463
-
2464
- const constrainedSchema: LixSchemaDefinition = {
2465
- "x-lix-key": "file_scoped_unique_schema",
2466
- "x-lix-version": "1.0",
2467
- "x-lix-primary-key": ["/id"],
2468
- "x-lix-unique": [["/slug"]],
2469
- type: "object",
2470
- additionalProperties: false,
2471
- required: ["id", "slug"],
2472
- properties: {
2473
- id: { type: "string" },
2474
- slug: { type: "string" },
2475
- },
2476
- };
2477
-
2478
- await lix.db
2479
- .insertInto("stored_schema")
2480
- .values({ value: constrainedSchema })
2481
- .execute();
2482
-
2483
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2484
- const activeVersion = await db
2485
- .selectFrom("active_version")
2486
- .select("version_id")
2487
- .executeTakeFirstOrThrow();
2488
-
2489
- const insertEntity = async (args: {
2490
- entityId: string;
2491
- fileId: string;
2492
- slug: string;
2493
- }) => {
2494
- await db
2495
- .insertInto("lix_internal_state_vtable")
2496
- .values({
2497
- entity_id: args.entityId,
2498
- file_id: args.fileId,
2499
- schema_key: constrainedSchema["x-lix-key"],
2500
- plugin_key: "test_plugin",
2501
- schema_version: constrainedSchema["x-lix-version"],
2502
- version_id: activeVersion.version_id,
2503
- snapshot_content: JSON.stringify({
2504
- id: args.entityId,
2505
- slug: args.slug,
2506
- }),
2507
- untracked: 0,
2508
- })
2509
- .execute();
2510
- };
2511
-
2512
- await insertEntity({
2513
- entityId: "entity-a",
2514
- fileId: "file-a",
2515
- slug: "shared-slug",
2516
- });
2517
- await insertEntity({
2518
- entityId: "entity-b",
2519
- fileId: "file-b",
2520
- slug: "shared-slug",
2521
- });
2522
-
2523
- const insertedRows = await db
2524
- .selectFrom("lix_internal_state_vtable")
2525
- .where("schema_key", "=", constrainedSchema["x-lix-key"])
2526
- .orderBy("entity_id")
2527
- .orderBy("version_id")
2528
- .select([
2529
- "entity_id",
2530
- "file_id",
2531
- sql`json_extract(snapshot_content, '$.slug')`.as("slug"),
2532
- ])
2533
- .execute();
2534
-
2535
- expectDeterministic(insertedRows).toEqual([
2536
- { entity_id: "entity-a", file_id: "file-a", slug: "shared-slug" },
2537
- { entity_id: "entity-b", file_id: "file-b", slug: "shared-slug" },
2538
- ]);
2539
-
2540
- await expect(
2541
- insertEntity({
2542
- entityId: "entity-c",
2543
- fileId: "file-a",
2544
- slug: "shared-slug",
2545
- })
2546
- ).rejects.toThrow(/unique/i);
2547
- }
2548
- );
2549
-
2550
- simulationTest(
2551
- "delete operations remove entries from underlying data via lix_internal_state_vtable",
2552
- async ({ openSimulatedLix }) => {
2553
- const lix = await openSimulatedLix({
2554
- keyValues: [
2555
- {
2556
- key: "lix_deterministic_mode",
2557
- value: { enabled: true },
2558
- lixcol_version_id: "global",
2559
- },
2560
- ],
2561
- });
2562
-
2563
- const activeVersion = await lix.db
2564
- .selectFrom("active_version")
2565
- .innerJoin("version", "active_version.version_id", "version.id")
2566
- .selectAll("version")
2567
- .executeTakeFirstOrThrow();
2568
-
2569
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2570
- const deleteSchema: LixSchemaDefinition = {
2571
- "x-lix-key": "delete_cache_schema",
2572
- "x-lix-version": "1.0",
2573
- type: "object",
2574
- additionalProperties: false,
2575
- properties: {
2576
- to: { type: "string" },
2577
- },
2578
- required: ["to"],
2579
- };
2580
- await lix.db
2581
- .insertInto("stored_schema")
2582
- .values({ value: deleteSchema })
2583
- .execute();
2584
-
2585
- // Insert initial state via lix_internal_state_vtable
2586
- await db
2587
- .insertInto("lix_internal_state_vtable")
2588
- .values({
2589
- entity_id: "delete-cache-entity",
2590
- schema_key: "delete_cache_schema",
2591
- file_id: "delete-cache-file",
2592
- plugin_key: "delete-plugin",
2593
- snapshot_content: JSON.stringify({ to: "delete" }),
2594
- schema_version: "1.0",
2595
- version_id: sql`(SELECT version_id FROM active_version)`,
2596
- untracked: 0,
2597
- })
2598
- .execute();
2599
-
2600
- // Verify data exists
2601
- const beforeDelete = await db
2602
- .selectFrom("lix_internal_state_vtable")
2603
- .where("entity_id", "=", "delete-cache-entity")
2604
- .orderBy("entity_id")
2605
- .orderBy("version_id")
2606
- .selectAll()
2607
- .execute();
2608
- expect(beforeDelete).toHaveLength(1);
2609
-
2610
- // Delete the state via lix_internal_state_vtable
2611
- await db
2612
- .deleteFrom("lix_internal_state_vtable")
2613
- .where("entity_id", "=", "delete-cache-entity")
2614
- .where("schema_key", "=", "delete_cache_schema")
2615
- .where("file_id", "=", "delete-cache-file")
2616
- .where("version_id", "=", activeVersion.id)
2617
- .execute();
2618
-
2619
- // Data should no longer be accessible
2620
- const afterDelete = await db
2621
- .selectFrom("lix_internal_state_vtable")
2622
- .where("entity_id", "=", "delete-cache-entity")
2623
- .where("snapshot_content", "is not", null)
2624
- .orderBy("entity_id")
2625
- .orderBy("version_id")
2626
- .selectAll()
2627
- .execute();
2628
- expect(afterDelete).toHaveLength(0);
2629
- }
2630
- );
2631
-
2632
- simulationTest(
2633
- "write-through cache: insert operations populate cache immediately via lix_internal_state_vtable",
2634
- async ({ openSimulatedLix }) => {
2635
- const lix = await openSimulatedLix({
2636
- keyValues: [
2637
- {
2638
- key: "lix_deterministic_mode",
2639
- value: { enabled: true },
2640
- lixcol_version_id: "global",
2641
- },
2642
- ],
2643
- });
2644
-
2645
- const activeVersion = await lix.db
2646
- .selectFrom("active_version")
2647
- .innerJoin("version", "active_version.version_id", "version.id")
2648
- .selectAll("version")
2649
- .executeTakeFirstOrThrow();
2650
-
2651
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2652
- const writeThroughSchema: LixSchemaDefinition = {
2653
- "x-lix-key": "write_through_schema",
2654
- "x-lix-version": "1.0",
2655
- type: "object",
2656
- additionalProperties: false,
2657
- properties: {
2658
- test: { type: "string" },
2659
- },
2660
- required: ["test"],
2661
- };
2662
- await lix.db
2663
- .insertInto("stored_schema")
2664
- .values({ value: writeThroughSchema })
2665
- .execute();
2666
-
2667
- // Insert state data via lix_internal_state_vtable - should populate cache
2668
- await db
2669
- .insertInto("lix_internal_state_vtable")
2670
- .values({
2671
- entity_id: "write-through-entity",
2672
- schema_key: "write_through_schema",
2673
- file_id: "write-through-file",
2674
- plugin_key: "write-through-plugin",
2675
- snapshot_content: JSON.stringify({ test: "write-through-data" }),
2676
- schema_version: "1.0",
2677
- version_id: activeVersion.id,
2678
- untracked: 0,
2679
- })
2680
- .execute();
2681
-
2682
- // Cache should be populated immediately via write-through
2683
- const cacheEntry = await db
2684
- .selectFrom("lix_internal_state_vtable")
2685
- .where("_pk", "like", "C%")
2686
- .where("entity_id", "=", "write-through-entity")
2687
- .where("schema_key", "=", "write_through_schema")
2688
- .where("file_id", "=", "write-through-file")
2689
- .where("version_id", "=", activeVersion.id)
2690
- .selectAll()
2691
- .select(sql`json(snapshot_content)`.as("snapshot_content"))
2692
- .executeTakeFirst();
2693
-
2694
- expect(cacheEntry).toBeDefined();
2695
- expect(cacheEntry?.entity_id).toBe("write-through-entity");
2696
- expect(cacheEntry?.plugin_key).toBe("write-through-plugin");
2697
- expect(cacheEntry?.snapshot_content).toEqual({
2698
- test: "write-through-data",
2699
- });
2700
-
2701
- // Virtual table should return the same data
2702
- const stateResults = await db
2703
- .selectFrom("lix_internal_state_vtable")
2704
- .where("entity_id", "=", "write-through-entity")
2705
- .orderBy("entity_id")
2706
- .orderBy("version_id")
2707
- .select(["entity_id", sql`json(snapshot_content)`.as("snapshot_content")])
2708
- .execute();
2709
-
2710
- expect(stateResults).toHaveLength(1);
2711
- expect(stateResults[0]?.entity_id).toBe("write-through-entity");
2712
- expect(stateResults[0]?.snapshot_content).toEqual({
2713
- test: "write-through-data",
2714
- });
2715
- },
2716
- { simulations: [normalSimulation] }
2717
- );
2718
-
2719
- simulationTest(
2720
- "write-through cache: update operations update cache immediately via lix_internal_state_vtable",
2721
- async ({ openSimulatedLix }) => {
2722
- const lix = await openSimulatedLix({
2723
- keyValues: [
2724
- {
2725
- key: "lix_deterministic_mode",
2726
- value: { enabled: true },
2727
- lixcol_version_id: "global",
2728
- },
2729
- ],
2730
- });
2731
-
2732
- const activeVersion = await lix.db
2733
- .selectFrom("active_version")
2734
- .innerJoin("version", "active_version.version_id", "version.id")
2735
- .selectAll("version")
2736
- .executeTakeFirstOrThrow();
2737
-
2738
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2739
- const updateSchema: LixSchemaDefinition = {
2740
- "x-lix-key": "update_cache_schema",
2741
- "x-lix-version": "1.0",
2742
- type: "object",
2743
- additionalProperties: false,
2744
- properties: {
2745
- initial: { type: "string" },
2746
- updated: { type: "string" },
2747
- },
2748
- };
2749
- await lix.db
2750
- .insertInto("stored_schema")
2751
- .values({ value: updateSchema })
2752
- .execute();
2753
-
2754
- // Insert initial state via lix_internal_state_vtable
2755
- await db
2756
- .insertInto("lix_internal_state_vtable")
2757
- .values({
2758
- entity_id: "update-cache-entity",
2759
- schema_key: "update_cache_schema",
2760
- file_id: "update-cache-file",
2761
- plugin_key: "initial-plugin",
2762
- snapshot_content: JSON.stringify({ initial: "value" }),
2763
- schema_version: "1.0",
2764
- version_id: activeVersion.id,
2765
- untracked: 0,
2766
- })
2767
- .execute();
2768
-
2769
- // Update the state via lix_internal_state_vtable - should update cache
2770
- await db
2771
- .updateTable("lix_internal_state_vtable")
2772
- .set({
2773
- snapshot_content: JSON.stringify({ updated: "value" }),
2774
- plugin_key: "updated-plugin",
2775
- })
2776
- .where("entity_id", "=", "update-cache-entity")
2777
- .where("schema_key", "=", "update_cache_schema")
2778
- .where("file_id", "=", "update-cache-file")
2779
- .where("version_id", "=", activeVersion.id)
2780
- .execute();
2781
-
2782
- // Cache should be immediately updated
2783
- const cacheEntry = await db
2784
- .selectFrom("lix_internal_state_vtable")
2785
- .where("_pk", "like", "C%")
2786
- .where("entity_id", "=", "update-cache-entity")
2787
- .where("schema_key", "=", "update_cache_schema")
2788
- .where("file_id", "=", "update-cache-file")
2789
- .where("version_id", "=", activeVersion.id)
2790
- .selectAll()
2791
- .select(sql`json(snapshot_content)`.as("snapshot_content"))
2792
- .executeTakeFirst();
2793
-
2794
- expect(cacheEntry).toBeDefined();
2795
- expect(cacheEntry?.snapshot_content).toEqual({
2796
- updated: "value",
2797
- });
2798
- expect(cacheEntry?.plugin_key).toBe("updated-plugin");
2799
-
2800
- // Virtual table should return updated data
2801
- const stateResults = await db
2802
- .selectFrom("lix_internal_state_vtable")
2803
- .where("entity_id", "=", "update-cache-entity")
2804
- .orderBy("entity_id")
2805
- .orderBy("version_id")
2806
- .select([
2807
- sql`json(snapshot_content)`.as("snapshot_content"),
2808
- "plugin_key",
2809
- ])
2810
- .execute();
2811
-
2812
- expect(stateResults).toHaveLength(1);
2813
- expect(stateResults[0]?.snapshot_content).toEqual({ updated: "value" });
2814
- expect(stateResults[0]?.plugin_key).toBe("updated-plugin");
2815
- },
2816
- { simulations: [normalSimulation] }
2817
- );
2818
-
2819
- simulationTest(
2820
- "change.created_at and state timestamps are consistent",
2821
- async ({ openSimulatedLix }) => {
2822
- const lix = await openSimulatedLix({
2823
- keyValues: [
2824
- {
2825
- key: "lix_deterministic_mode",
2826
- value: { enabled: true },
2827
- lixcol_version_id: "global",
2828
- },
2829
- ],
2830
- });
2831
-
2832
- const mockSchema: LixSchemaDefinition = {
2833
- "x-lix-key": "mock_schema",
2834
- "x-lix-version": "1.0",
2835
- type: "object",
2836
- additionalProperties: false,
2837
- properties: {
2838
- value: {
2839
- type: "string",
2840
- },
2841
- },
2842
- };
2843
-
2844
- await lix.db
2845
- .insertInto("stored_schema")
2846
- .values({ value: mockSchema })
2847
- .execute();
2848
-
2849
- // Insert state data
2850
- await lix.db
2851
- .insertInto("state_by_version")
2852
- .values({
2853
- entity_id: "timestamp-test-entity",
2854
- schema_key: "mock_schema",
2855
- file_id: "timestamp-test-file",
2856
- plugin_key: "timestamp-test-plugin",
2857
- snapshot_content: { value: "timestamp test" },
2858
- schema_version: "1.0",
2859
- version_id: sql`(SELECT version_id FROM active_version)`,
2860
- })
2861
- .execute();
2862
-
2863
- // Get the change record
2864
- const changeRecord = await (
2865
- lix.db as unknown as Kysely<LixInternalDatabaseSchema>
2866
- )
2867
- .selectFrom("lix_internal_change")
2868
- .where("entity_id", "=", "timestamp-test-entity")
2869
- .where("schema_key", "=", "mock_schema")
2870
- .select(["created_at"])
2871
- .executeTakeFirstOrThrow();
2872
-
2873
- // Get the state cache record
2874
- const cacheRecord = await (
2875
- lix.db as unknown as Kysely<LixInternalDatabaseSchema>
2876
- )
2877
- .selectFrom("lix_internal_state_vtable")
2878
- .where("_pk", "like", "C%")
2879
- .where("entity_id", "=", "timestamp-test-entity")
2880
- .where("schema_key", "=", "mock_schema")
2881
- .select(["created_at", "updated_at"])
2882
- .executeTakeFirstOrThrow();
2883
-
2884
- // Verify all timestamps are identical
2885
- expect(changeRecord.created_at).toBe(cacheRecord.created_at);
2886
- expect(changeRecord.created_at).toBe(cacheRecord.updated_at);
2887
- },
2888
- { simulations: [normalSimulation] }
2889
- );
2890
-
2891
- simulationTest(
2892
- "lix_internal_state_vtable exposes change_id for blame and diff functionality",
2893
- async ({ openSimulatedLix }) => {
2894
- const lix = await openSimulatedLix({
2895
- keyValues: [
2896
- {
2897
- key: "lix_deterministic_mode",
2898
- value: { enabled: true },
2899
- lixcol_version_id: "global",
2900
- },
2901
- ],
2902
- });
2903
-
2904
- const mockSchema: LixSchemaDefinition = {
2905
- "x-lix-key": "mock_schema",
2906
- "x-lix-version": "1.0",
2907
- type: "object",
2908
- additionalProperties: false,
2909
- properties: {
2910
- value: {
2911
- type: "string",
2912
- },
2913
- },
2914
- };
2915
-
2916
- await lix.db
2917
- .insertInto("stored_schema")
2918
- .values({ value: mockSchema })
2919
- .execute();
2920
-
2921
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
2922
-
2923
- // Insert initial state via lix_internal_state_vtable (tracked)
2924
- await db
2925
- .insertInto("lix_internal_state_vtable")
2926
- .values({
2927
- entity_id: "change-id-test-entity",
2928
- file_id: "change-id-test-file",
2929
- schema_key: "mock_schema",
2930
- plugin_key: "change-id-test-plugin",
2931
- schema_version: "1.0",
2932
- version_id: sql`(SELECT version_id FROM active_version)`,
2933
- snapshot_content: JSON.stringify({ value: "initial value" }),
2934
- untracked: 0,
2935
- })
2936
- .execute();
2937
-
2938
- // Query lix_internal_state_vtable to verify change_id is exposed
2939
- const initialResult = await db
2940
- .selectFrom("lix_internal_state_vtable")
2941
- .where("entity_id", "=", "change-id-test-entity")
2942
- .where("schema_key", "=", "mock_schema")
2943
- .where("file_id", "=", "change-id-test-file")
2944
- .orderBy("entity_id")
2945
- .orderBy("version_id")
2946
- .select(["change_id", sql`json(snapshot_content)`.as("snapshot_content")])
2947
- .execute();
2948
-
2949
- expect(initialResult).toHaveLength(1);
2950
- expect(initialResult[0]?.change_id).toBeDefined();
2951
- expect(typeof initialResult[0]?.change_id).toBe("string");
2952
-
2953
- // Get the actual change record to verify the change_id
2954
- const changeRecord = await db
2955
- .selectFrom("change")
2956
- .where("entity_id", "=", "change-id-test-entity")
2957
- .where("schema_key", "=", "mock_schema")
2958
- .select(["change.id", "snapshot_content"])
2959
- .executeTakeFirstOrThrow();
2960
-
2961
- expect(initialResult[0]?.change_id).toBe(changeRecord.id);
2962
- expect(changeRecord.snapshot_content).toEqual({ value: "initial value" });
2963
- expect(initialResult[0]?.snapshot_content).toEqual({
2964
- value: "initial value",
2965
- });
2966
-
2967
- // Update the entity to create a new change via lix_internal_state_vtable
2968
- await db
2969
- .updateTable("lix_internal_state_vtable")
2970
- .set({
2971
- snapshot_content: JSON.stringify({ value: "updated value" }),
2972
- })
2973
- .where("entity_id", "=", "change-id-test-entity")
2974
- .where("schema_key", "=", "mock_schema")
2975
- .where("file_id", "=", "change-id-test-file")
2976
- .execute();
2977
-
2978
- // Query again to verify change_id updated after modification
2979
- const updatedResult = await db
2980
- .selectFrom("lix_internal_state_vtable")
2981
- .where("entity_id", "=", "change-id-test-entity")
2982
- .where("schema_key", "=", "mock_schema")
2983
- .where("file_id", "=", "change-id-test-file")
2984
- .orderBy("entity_id")
2985
- .orderBy("version_id")
2986
- .select(["change_id", sql`json(snapshot_content)`.as("snapshot_content")])
2987
- .execute();
2988
-
2989
- expect(updatedResult).toHaveLength(1);
2990
- expect(updatedResult[0]?.change_id).toBeDefined();
2991
- expect(updatedResult[0]?.change_id).not.toBe(initialResult[0]?.change_id);
2992
-
2993
- // Get the new change record by matching the change_id from the updated state
2994
- const newChangeRecord = await db
2995
- .selectFrom("change")
2996
- .where("change.id", "=", updatedResult[0]!.change_id)
2997
- .select(["change.id", "snapshot_content"])
2998
- .executeTakeFirstOrThrow();
2999
-
3000
- expect(updatedResult[0]?.change_id).toBe(newChangeRecord.id);
3001
- expect(newChangeRecord.snapshot_content).toEqual({
3002
- value: "updated value",
3003
- });
3004
- expect(updatedResult[0]?.snapshot_content).toEqual({
3005
- value: "updated value",
3006
- });
3007
- }
3008
- );
3009
-
3010
- simulationTest(
3011
- "exposes commit_id for history queries",
3012
- async ({ expectDeterministic, openSimulatedLix }) => {
3013
- const lix = await openSimulatedLix({
3014
- keyValues: [
3015
- {
3016
- key: "lix_deterministic_mode",
3017
- value: { enabled: true },
3018
- lixcol_version_id: "global",
3019
- },
3020
- ],
3021
- });
3022
-
3023
- const mockSchema: LixSchemaDefinition = {
3024
- "x-lix-key": "mock_schema",
3025
- "x-lix-version": "1.0",
3026
- type: "object",
3027
- additionalProperties: false,
3028
- properties: {
3029
- value: {
3030
- type: "string",
3031
- },
3032
- },
3033
- };
3034
-
3035
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3036
-
3037
- await db
3038
- .insertInto("stored_schema")
3039
- .values({ value: mockSchema })
3040
- .execute();
3041
-
3042
- // Insert initial state using Kysely to ensure virtual table is triggered
3043
- await db
3044
- .insertInto("lix_internal_state_vtable")
3045
- .values({
3046
- entity_id: "change-set-id-test-entity",
3047
- schema_key: "mock_schema",
3048
- file_id: "change-set-id-test-file",
3049
- plugin_key: "change-set-id-test-plugin",
3050
- snapshot_content: JSON.stringify({ value: "initial value" }),
3051
- schema_version: "1.0",
3052
- version_id: sql`(SELECT version_id FROM active_version)`,
3053
- untracked: 0,
3054
- })
3055
- .execute();
3056
-
3057
- const activeVersionAfterInsert = await lix.db
3058
- .selectFrom("active_version")
3059
- .innerJoin("version", "active_version.version_id", "version.id")
3060
- .selectAll("version")
3061
- .executeTakeFirstOrThrow();
3062
-
3063
- // Query state_by_version view to verify commit_id is exposed
3064
- const stateResult = await db
3065
- .selectFrom("lix_internal_state_vtable")
3066
- .where("entity_id", "=", "change-set-id-test-entity")
3067
- .where("schema_key", "=", "mock_schema")
3068
- .orderBy("entity_id")
3069
- .orderBy("version_id")
3070
- .selectAll()
3071
- .execute();
3072
-
3073
- expect(stateResult).toHaveLength(1);
3074
- expect(stateResult[0]).toHaveProperty("commit_id");
3075
- expect(stateResult[0]?.commit_id).toBe(activeVersionAfterInsert.commit_id);
3076
-
3077
- // Get the change_set_element records - there should be two:
3078
- // 1. One in the working change set
3079
- // 2. One in the version's current change set (after commit)
3080
- const changeSetElements = await lix.db
3081
- .selectFrom("change_set_element")
3082
- .where("entity_id", "=", "change-set-id-test-entity")
3083
- .where("schema_key", "=", "mock_schema")
3084
- .where("file_id", "=", "change-set-id-test-file")
3085
- .select(["change_set_id", "change_id"])
3086
- .orderBy("change_set_id")
3087
- .execute();
3088
-
3089
- expect(changeSetElements).toHaveLength(2);
3090
-
3091
- // Get the version to understand which change sets we're dealing with
3092
- const version = await lix.db
3093
- .selectFrom("version")
3094
- .where("id", "=", activeVersionAfterInsert.id)
3095
- .select(["id", "commit_id", "working_commit_id"])
3096
- .executeTakeFirstOrThrow();
3097
-
3098
- // Get the change set ID from the version's commit
3099
- const versionCommit = await lix.db
3100
- .selectFrom("commit")
3101
- .where("id", "=", version.commit_id)
3102
- .selectAll()
3103
- .executeTakeFirstOrThrow();
3104
-
3105
- // Get the change set ID from the working commit
3106
- const workingCommit = await lix.db
3107
- .selectFrom("commit")
3108
- .where("id", "=", version.working_commit_id)
3109
- .selectAll()
3110
- .executeTakeFirstOrThrow();
3111
-
3112
- // Find which change_set_element is in the version's change set (not working)
3113
- const versionChangeSetElement = changeSetElements.find(
3114
- (el) => el.change_set_id === versionCommit.change_set_id
3115
- );
3116
- const workingChangeSetElement = changeSetElements.find(
3117
- (el) => el.change_set_id === workingCommit.change_set_id
3118
- );
3119
-
3120
- expect(versionChangeSetElement).toBeDefined();
3121
- expect(workingChangeSetElement).toBeDefined();
3122
-
3123
- // The state view should show the commit_id from the version,
3124
- // not related to the working change set (which is temporary and not part of the graph)
3125
- expect(stateResult[0]?.commit_id).toBe(version.commit_id);
3126
-
3127
- // Verify that the change_id also matches for consistency
3128
- expect(stateResult[0]?.change_id).toBe(versionChangeSetElement!.change_id);
3129
- }
3130
- );
3131
-
3132
- simulationTest(
3133
- "transaction table is empty after select, insert, update, delete via lix_internal_state_vtable",
3134
- async ({ openSimulatedLix, expectDeterministic }) => {
3135
- const lix = await openSimulatedLix({
3136
- keyValues: [
3137
- {
3138
- key: "lix_deterministic_mode",
3139
- value: { enabled: true },
3140
- lixcol_version_id: "global",
3141
- },
3142
- ],
3143
- });
3144
-
3145
- // Prepare a simple schema for state mutations
3146
- const mockSchema: LixSchemaDefinition = {
3147
- "x-lix-key": "mock_schema_txn",
3148
- "x-lix-version": "1.0",
3149
- type: "object",
3150
- additionalProperties: false,
3151
- properties: {
3152
- value: { type: "string" },
3153
- },
3154
- };
3155
-
3156
- await lix.db
3157
- .insertInto("stored_schema")
3158
- .values({ value: mockSchema })
3159
- .execute();
3160
-
3161
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3162
-
3163
- // Helper to assert transaction table is empty
3164
- const expectTxnEmpty = async () => {
3165
- const rows = await db
3166
- .selectFrom("lix_internal_transaction_state")
3167
- .selectAll()
3168
- .execute();
3169
- expectDeterministic(rows.length).toBe(0);
3170
- };
3171
-
3172
- // 1) SELECT should not stage anything
3173
- await db
3174
- .selectFrom("lix_internal_state_vtable")
3175
- .where("schema_key", "=", "mock_schema_txn")
3176
- .orderBy("entity_id")
3177
- .orderBy("version_id")
3178
- .selectAll()
3179
- .execute();
3180
- await expectTxnEmpty();
3181
-
3182
- // 2) INSERT tracked via lix_internal_state_vtable
3183
- await db
3184
- .insertInto("lix_internal_state_vtable")
3185
- .values({
3186
- entity_id: "e_txn",
3187
- file_id: "f_txn",
3188
- schema_key: "mock_schema_txn",
3189
- plugin_key: "lix_sdk",
3190
- schema_version: "1.0",
3191
- version_id: sql`(SELECT version_id FROM active_version)`,
3192
- snapshot_content: JSON.stringify({ value: "v1" }),
3193
- untracked: 0, // tracked
3194
- })
3195
- .execute();
3196
- await expectTxnEmpty();
3197
-
3198
- // 3) UPDATE via lix_internal_state_vtable
3199
- await db
3200
- .updateTable("lix_internal_state_vtable")
3201
- .set({ snapshot_content: JSON.stringify({ value: "v2" }) })
3202
- .where("entity_id", "=", "e_txn")
3203
- .where("schema_key", "=", "mock_schema_txn")
3204
- .where("file_id", "=", "f_txn")
3205
- .execute();
3206
- await expectTxnEmpty();
3207
-
3208
- // 4) DELETE via lix_internal_state_vtable
3209
- await db
3210
- .deleteFrom("lix_internal_state_vtable")
3211
- .where("entity_id", "=", "e_txn")
3212
- .where("schema_key", "=", "mock_schema_txn")
3213
- .where("file_id", "=", "f_txn")
3214
- .execute();
3215
- await expectTxnEmpty();
3216
- }
3217
- );
3218
-
3219
- simulationTest(
3220
- "untracked mutations don't trigger change control via lix_internal_state_vtable",
3221
- async ({ openSimulatedLix, expectDeterministic }) => {
3222
- const lix = await openSimulatedLix({
3223
- keyValues: [
3224
- {
3225
- key: "lix_deterministic_mode",
3226
- value: { enabled: true },
3227
- lixcol_version_id: "global",
3228
- },
3229
- ],
3230
- });
3231
-
3232
- const mockSchema: LixSchemaDefinition = {
3233
- "x-lix-key": "mock_schema",
3234
- "x-lix-version": "1.0",
3235
- type: "object",
3236
- additionalProperties: false,
3237
- properties: {
3238
- value: {
3239
- type: "string",
3240
- },
3241
- },
3242
- };
3243
-
3244
- await lix.db
3245
- .insertInto("stored_schema")
3246
- .values({ value: mockSchema })
3247
- .execute();
3248
-
3249
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3250
-
3251
- // Count changes before any untracked mutations
3252
- const changesInitial = await db.selectFrom("change").selectAll().execute();
3253
-
3254
- // 1. INSERT untracked state via lix_internal_state_vtable
3255
- await db
3256
- .insertInto("lix_internal_state_vtable")
3257
- .values({
3258
- entity_id: "untracked-entity",
3259
- file_id: "test-file",
3260
- schema_key: "mock_schema",
3261
- plugin_key: "test_plugin",
3262
- schema_version: "1.0",
3263
- version_id: sql`(SELECT version_id FROM active_version)`,
3264
- snapshot_content: JSON.stringify({
3265
- value: "untracked value",
3266
- }),
3267
- untracked: 1, // untracked
3268
- })
3269
- .execute();
3270
-
3271
- // Count changes after untracked insert
3272
- const changesAfterInsert = await db
3273
- .selectFrom("change")
3274
- .selectAll()
3275
- .execute();
3276
-
3277
- // Number of changes should be identical (no change control for untracked)
3278
- expectDeterministic(changesAfterInsert.length).toBe(changesInitial.length);
3279
-
3280
- // Verify the untracked entity exists in vtable
3281
- const untrackedState = await db
3282
- .selectFrom("lix_internal_state_vtable")
3283
- .where("entity_id", "=", "untracked-entity")
3284
- .orderBy("entity_id")
3285
- .orderBy("version_id")
3286
- .select([
3287
- "entity_id",
3288
- sql`json(snapshot_content)`.as("snapshot_content"),
3289
- "untracked",
3290
- ])
3291
- .execute();
3292
-
3293
- expectDeterministic(untrackedState).toHaveLength(1);
3294
- expectDeterministic(untrackedState[0]?.snapshot_content).toEqual({
3295
- value: "untracked value",
3296
- });
3297
- expectDeterministic(untrackedState[0]?.untracked).toBe(1);
3298
-
3299
- // 2. UPDATE untracked state via lix_internal_state_vtable
3300
- await db
3301
- .updateTable("lix_internal_state_vtable")
3302
- .where("entity_id", "=", "untracked-entity")
3303
- .set({
3304
- snapshot_content: JSON.stringify({
3305
- value: "untracked value updated",
3306
- }),
3307
- })
3308
- .execute();
3309
-
3310
- // Count changes after untracked update
3311
- const changesAfterUpdate = await db
3312
- .selectFrom("change")
3313
- .selectAll()
3314
- .execute();
3315
-
3316
- // Still no new changes
3317
- expectDeterministic(changesAfterUpdate.length).toBe(changesInitial.length);
3318
-
3319
- // 3. DELETE untracked state via lix_internal_state_vtable
3320
- await db
3321
- .deleteFrom("lix_internal_state_vtable")
3322
- .where("entity_id", "=", "untracked-entity")
3323
- .execute();
3324
-
3325
- // Count changes after untracked delete
3326
- const changesAfterDelete = await db
3327
- .selectFrom("change")
3328
- .selectAll()
3329
- .execute();
3330
-
3331
- // Still no new changes
3332
- expectDeterministic(changesAfterDelete.length).toBe(changesInitial.length);
3333
- }
3334
- );
3335
-
3336
- simulationTest(
3337
- "tracked update to previously untracked entity deletes untracked state via lix_internal_state_vtable",
3338
- async ({ openSimulatedLix, expectDeterministic }) => {
3339
- const lix = await openSimulatedLix({
3340
- keyValues: [
3341
- {
3342
- key: "lix_deterministic_mode",
3343
- value: { enabled: true },
3344
- lixcol_version_id: "global",
3345
- },
3346
- ],
3347
- });
3348
-
3349
- const mockSchema: LixSchemaDefinition = {
3350
- "x-lix-key": "mock_schema",
3351
- "x-lix-version": "1.0",
3352
- type: "object",
3353
- additionalProperties: false,
3354
- properties: {
3355
- value: {
3356
- type: "string",
3357
- },
3358
- },
3359
- };
3360
-
3361
- await lix.db
3362
- .insertInto("stored_schema")
3363
- .values({ value: mockSchema })
3364
- .execute();
3365
-
3366
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3367
-
3368
- // Insert untracked state via lix_internal_state_vtable
3369
- await db
3370
- .insertInto("lix_internal_state_vtable")
3371
- .values({
3372
- entity_id: "override-entity",
3373
- file_id: "test-file",
3374
- schema_key: "mock_schema",
3375
- plugin_key: "test_plugin",
3376
- schema_version: "1.0",
3377
- version_id: sql`(SELECT version_id FROM active_version)`,
3378
- snapshot_content: JSON.stringify({
3379
- value: "untracked value",
3380
- }),
3381
- untracked: 1,
3382
- })
3383
- .execute();
3384
-
3385
- // Verify untracked state exists
3386
- const untrackedState = await db
3387
- .selectFrom("lix_internal_state_vtable")
3388
- .where("entity_id", "=", "override-entity")
3389
- .orderBy("entity_id")
3390
- .orderBy("version_id")
3391
- .select([sql`json(snapshot_content)`.as("snapshot_content"), "untracked"])
3392
- .execute();
3393
-
3394
- expectDeterministic(untrackedState).toHaveLength(1);
3395
- expectDeterministic(untrackedState[0]?.snapshot_content).toEqual({
3396
- value: "untracked value",
3397
- });
3398
-
3399
- // Now update the entity as tracked (should delete from untracked table)
3400
- await db
3401
- .updateTable("lix_internal_state_vtable")
3402
- .set({
3403
- snapshot_content: JSON.stringify({
3404
- value: "tracked value",
3405
- }),
3406
- untracked: 0,
3407
- })
3408
- .where("entity_id", "=", "override-entity")
3409
- .where("schema_key", "=", "mock_schema")
3410
- .execute();
3411
-
3412
- // Verify tracked state has overridden untracked state
3413
- const finalState = await db
3414
- .selectFrom("lix_internal_state_vtable")
3415
- .where("entity_id", "=", "override-entity")
3416
- .orderBy("entity_id")
3417
- .orderBy("version_id")
3418
- .select([sql`json(snapshot_content)`.as("snapshot_content"), "untracked"])
3419
- .execute();
3420
-
3421
- expectDeterministic(finalState).toHaveLength(1);
3422
- expectDeterministic(finalState[0]?.snapshot_content).toEqual({
3423
- value: "tracked value",
3424
- });
3425
-
3426
- // Verify a change was created for the tracked mutation
3427
- const changes = await db
3428
- .selectFrom("change")
3429
- .where("entity_id", "=", "override-entity")
3430
- .where("schema_key", "=", "mock_schema")
3431
- .selectAll()
3432
- .execute();
3433
-
3434
- expectDeterministic(changes.length).toBeGreaterThan(0);
3435
- }
3436
- );
3437
-
3438
- simulationTest(
3439
- "created_at and updated_at timestamps are computed correctly via lix_internal_state_vtable",
3440
- async ({ openSimulatedLix }) => {
3441
- const lix = await openSimulatedLix({
3442
- keyValues: [
3443
- {
3444
- key: "lix_deterministic_mode",
3445
- value: { enabled: true },
3446
- lixcol_version_id: "global",
3447
- },
3448
- ],
3449
- });
3450
-
3451
- const mockSchema: LixSchemaDefinition = {
3452
- "x-lix-key": "mock_schema",
3453
- "x-lix-version": "1.0",
3454
- type: "object",
3455
- additionalProperties: false,
3456
- properties: {
3457
- value: {
3458
- type: "string",
3459
- },
3460
- },
3461
- };
3462
-
3463
- await lix.db
3464
- .insertInto("stored_schema")
3465
- .values({ value: mockSchema })
3466
- .execute();
3467
-
3468
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3469
-
3470
- // Insert initial entity via lix_internal_state_vtable
3471
- await db
3472
- .insertInto("lix_internal_state_vtable")
3473
- .values({
3474
- entity_id: "e0",
3475
- file_id: "f0",
3476
- schema_key: "mock_schema",
3477
- plugin_key: "lix_sdk",
3478
- schema_version: "1.0",
3479
- version_id: sql`(SELECT version_id FROM active_version)`,
3480
- snapshot_content: JSON.stringify({
3481
- value: "initial value",
3482
- }),
3483
- untracked: 0,
3484
- })
3485
- .execute();
3486
-
3487
- const stateAfterInsert = await db
3488
- .selectFrom("lix_internal_state_vtable")
3489
- .where("entity_id", "=", "e0")
3490
- .orderBy("entity_id")
3491
- .orderBy("version_id")
3492
- .selectAll()
3493
- .execute();
3494
-
3495
- expect(stateAfterInsert).toHaveLength(1);
3496
- expect(stateAfterInsert[0]?.created_at).toBeDefined();
3497
- expect(stateAfterInsert[0]?.updated_at).toBeDefined();
3498
- expect(stateAfterInsert[0]?.created_at).toBe(
3499
- stateAfterInsert[0]?.updated_at
3500
- );
3501
-
3502
- // Update the entity via lix_internal_state_vtable
3503
- await db
3504
- .updateTable("lix_internal_state_vtable")
3505
- .set({
3506
- snapshot_content: JSON.stringify({
3507
- value: "updated value",
3508
- }),
3509
- })
3510
- .where("entity_id", "=", "e0")
3511
- .where("schema_key", "=", "mock_schema")
3512
- .execute();
3513
-
3514
- const stateAfterUpdate = await db
3515
- .selectFrom("lix_internal_state_vtable")
3516
- .where("entity_id", "=", "e0")
3517
- .orderBy("entity_id")
3518
- .orderBy("version_id")
3519
- .selectAll()
3520
- .execute();
3521
-
3522
- expect(stateAfterUpdate).toHaveLength(1);
3523
- expect(stateAfterUpdate[0]?.created_at).toBeDefined();
3524
- expect(stateAfterUpdate[0]?.updated_at).toBeDefined();
3525
-
3526
- // created_at should remain the same
3527
- expect(stateAfterUpdate[0]?.created_at).toBe(
3528
- stateAfterInsert[0]?.created_at
3529
- );
3530
-
3531
- // updated_at should be different (newer)
3532
- expect(stateAfterUpdate[0]?.updated_at).not.toBe(
3533
- stateAfterInsert[0]?.updated_at
3534
- );
3535
- }
3536
- );
3537
-
3538
- simulationTest(
3539
- "untracked insert then delete within same transaction leaves no residue via lix_internal_state_vtable",
3540
- async ({ openSimulatedLix }) => {
3541
- const lix = await openSimulatedLix({
3542
- keyValues: [
3543
- {
3544
- key: "lix_deterministic_mode",
3545
- value: { enabled: true },
3546
- lixcol_version_id: "global",
3547
- },
3548
- ],
3549
- });
3550
-
3551
- const mockSchema: LixSchemaDefinition = {
3552
- "x-lix-key": "key_value",
3553
- "x-lix-version": "1.0",
3554
- type: "object",
3555
- additionalProperties: false,
3556
- properties: {
3557
- key: { type: "string" },
3558
- value: { type: ["boolean", "null"] },
3559
- },
3560
- };
3561
-
3562
- await lix.db
3563
- .insertInto("stored_schema")
3564
- .values({ value: mockSchema })
3565
- .execute();
3566
-
3567
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3568
-
3569
- const active = await lix.db
3570
- .selectFrom("active_version")
3571
- .selectAll()
3572
- .executeTakeFirstOrThrow();
3573
-
3574
- await db.transaction().execute(async (trx) => {
3575
- await trx
3576
- .insertInto("lix_internal_state_vtable")
3577
- .values({
3578
- entity_id: "tx_skip_flag_untracked",
3579
- file_id: "system",
3580
- schema_key: "key_value",
3581
- plugin_key: "lix_sdk",
3582
- schema_version: "1.0",
3583
- version_id: (active as any).version_id ?? (active as any).id,
3584
- snapshot_content: JSON.stringify({
3585
- key: "tx_skip_flag_untracked",
3586
- value: true,
3587
- }),
3588
- untracked: 1, // SQLite uses INTEGER for boolean
3589
- })
3590
- .execute();
3591
-
3592
- await trx
3593
- .deleteFrom("lix_internal_state_vtable")
3594
- .where("entity_id", "=", "tx_skip_flag_untracked")
3595
- .where(
3596
- "version_id",
3597
- "=",
3598
- (active as any).version_id ?? (active as any).id
3599
- )
3600
- .execute();
3601
- });
3602
-
3603
- const remaining = await db
3604
- .selectFrom("lix_internal_state_vtable")
3605
- .where("entity_id", "=", "tx_skip_flag_untracked")
3606
- .where(
3607
- "version_id",
3608
- "=",
3609
- (active as any).version_id ?? (active as any).id
3610
- )
3611
- .where("snapshot_content", "is not", null)
3612
- .orderBy("entity_id")
3613
- .orderBy("version_id")
3614
- .selectAll()
3615
- .execute();
3616
-
3617
- expect(remaining).toHaveLength(0);
3618
- }
3619
- );
3620
-
3621
- simulationTest(
3622
- "state is separated by version",
3623
- async ({ openSimulatedLix }) => {
3624
- const lix = await openSimulatedLix({
3625
- keyValues: [
3626
- {
3627
- key: "lix_deterministic_mode",
3628
- value: { enabled: true },
3629
- lixcol_version_id: "global",
3630
- },
3631
- ],
3632
- });
3633
-
3634
- await createVersion({ lix, id: "version_a" });
3635
- await createVersion({ lix, id: "version_b" });
3636
-
3637
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3638
- const mockSchema: LixSchemaDefinition = {
3639
- "x-lix-key": "mock_schema",
3640
- "x-lix-version": "1.0",
3641
- type: "object",
3642
- additionalProperties: false,
3643
- properties: {
3644
- value: { type: "string" },
3645
- },
3646
- };
3647
- await lix.db
3648
- .insertInto("stored_schema")
3649
- .values({ value: mockSchema })
3650
- .execute();
3651
-
3652
- await db
3653
- .insertInto("lix_internal_state_vtable")
3654
- .values([
3655
- {
3656
- entity_id: "e0",
3657
- file_id: "f0",
3658
- schema_key: "mock_schema",
3659
- plugin_key: "mock_plugin",
3660
- schema_version: "1.0",
3661
- snapshot_content: JSON.stringify({
3662
- value: "hello world from version a",
3663
- }),
3664
- version_id: "version_a",
3665
- untracked: 0,
3666
- },
3667
- {
3668
- entity_id: "e0",
3669
- file_id: "f0",
3670
- schema_key: "mock_schema",
3671
- plugin_key: "mock_plugin",
3672
- schema_version: "1.0",
3673
- snapshot_content: JSON.stringify({
3674
- value: "hello world from version b",
3675
- }),
3676
- version_id: "version_b",
3677
- untracked: 0,
3678
- },
3679
- ])
3680
- .execute();
3681
-
3682
- const stateAfterInserts = await db
3683
- .selectFrom("lix_internal_state_vtable")
3684
- .where("schema_key", "=", "mock_schema")
3685
- .where("entity_id", "=", "e0")
3686
- .where("snapshot_content", "is not", null)
3687
- .orderBy("entity_id")
3688
- .orderBy("version_id")
3689
- .selectAll()
3690
- .execute();
3691
-
3692
- expect(stateAfterInserts).toHaveLength(2);
3693
-
3694
- // The vtable returns snapshot_content as string (JSON), we need to parse it
3695
- const content0 = stateAfterInserts[0]!.snapshot_content;
3696
- const content1 = stateAfterInserts[1]!.snapshot_content;
3697
-
3698
- expect(content0).toEqual({
3699
- value: "hello world from version a",
3700
- });
3701
- expect(content1).toEqual({
3702
- value: "hello world from version b",
3703
- });
3704
-
3705
- // Verify timestamps are present
3706
- expect(stateAfterInserts[0]?.created_at).toBeDefined();
3707
- expect(stateAfterInserts[0]?.updated_at).toBeDefined();
3708
- expect(stateAfterInserts[1]?.created_at).toBeDefined();
3709
- expect(stateAfterInserts[1]?.updated_at).toBeDefined();
3710
-
3711
- await db
3712
- .updateTable("lix_internal_state_vtable")
3713
- .set({
3714
- snapshot_content: JSON.stringify({
3715
- value: "hello world from version b UPDATED",
3716
- }),
3717
- })
3718
- .where("entity_id", "=", "e0")
3719
- .where("schema_key", "=", "mock_schema")
3720
- .where("version_id", "=", "version_b")
3721
- .execute();
3722
-
3723
- const stateAfterUpdate = await db
3724
- .selectFrom("lix_internal_state_vtable")
3725
- .where("schema_key", "=", "mock_schema")
3726
- .where("entity_id", "=", "e0")
3727
- .where("snapshot_content", "is not", null)
3728
- .orderBy("entity_id")
3729
- .orderBy("version_id")
3730
- .selectAll()
3731
- .execute();
3732
-
3733
- expect(stateAfterUpdate).toHaveLength(2);
3734
-
3735
- const updateContent0 = stateAfterUpdate[0]!.snapshot_content;
3736
- const updateContent1 = stateAfterUpdate[1]!.snapshot_content;
3737
-
3738
- expect(updateContent0).toEqual({
3739
- value: "hello world from version a",
3740
- });
3741
- expect(updateContent1).toEqual({
3742
- value: "hello world from version b UPDATED",
3743
- });
3744
-
3745
- await db
3746
- .deleteFrom("lix_internal_state_vtable")
3747
- .where("entity_id", "=", "e0")
3748
- .where("version_id", "=", "version_b")
3749
- .execute();
3750
-
3751
- const stateAfterDelete = await db
3752
- .selectFrom("lix_internal_state_vtable")
3753
- .where("schema_key", "=", "mock_schema")
3754
- .where("entity_id", "=", "e0")
3755
- .where("snapshot_content", "is not", null)
3756
- .orderBy("entity_id")
3757
- .orderBy("version_id")
3758
- .selectAll()
3759
- .execute();
3760
-
3761
- expect(stateAfterDelete).toHaveLength(1);
3762
- expect(stateAfterDelete[0]?.version_id).toBe("version_a");
3763
-
3764
- const deleteContent = stateAfterDelete[0]!.snapshot_content;
3765
-
3766
- expect(deleteContent).toEqual({
3767
- value: "hello world from version a",
3768
- });
3769
- }
3770
- );
3771
-
3772
- simulationTest(
3773
- "created_at and updated_at are version specific via lix_internal_state_vtable",
3774
- async ({ openSimulatedLix }) => {
3775
- const lix = await openSimulatedLix({
3776
- keyValues: [
3777
- {
3778
- key: "lix_deterministic_mode",
3779
- value: { enabled: true },
3780
- lixcol_version_id: "global",
3781
- },
3782
- ],
3783
- });
3784
-
3785
- await createVersion({ lix, id: "version_a" });
3786
- await createVersion({ lix, id: "version_b" });
3787
-
3788
- const mockSchema: LixSchemaDefinition = {
3789
- "x-lix-key": "mock_schema",
3790
- "x-lix-version": "1.0",
3791
- additionalProperties: false,
3792
- type: "object",
3793
- properties: {
3794
- value: {
3795
- type: "string",
3796
- },
3797
- },
3798
- };
3799
-
3800
- await lix.db
3801
- .insertInto("stored_schema")
3802
- .values({ value: mockSchema })
3803
- .execute();
3804
-
3805
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3806
-
3807
- // Insert entity in version A
3808
- await db
3809
- .insertInto("lix_internal_state_vtable")
3810
- .values({
3811
- entity_id: "e0",
3812
- file_id: "f0",
3813
- schema_key: "mock_schema",
3814
- plugin_key: "lix_sdk",
3815
- schema_version: "1.0",
3816
- version_id: "version_a",
3817
- snapshot_content: JSON.stringify({
3818
- value: "value in version a",
3819
- }),
3820
- untracked: 0,
3821
- })
3822
- .execute();
3823
-
3824
- // Insert same entity in version B
3825
- await db
3826
- .insertInto("lix_internal_state_vtable")
3827
- .values({
3828
- entity_id: "e0",
3829
- file_id: "f0",
3830
- schema_key: "mock_schema",
3831
- plugin_key: "lix_sdk",
3832
- schema_version: "1.0",
3833
- version_id: "version_b",
3834
- snapshot_content: JSON.stringify({
3835
- value: "value in version b",
3836
- }),
3837
- untracked: 0,
3838
- })
3839
- .execute();
3840
-
3841
- const stateVersionA = await db
3842
- .selectFrom("lix_internal_state_vtable")
3843
- .where("entity_id", "=", "e0")
3844
- .where("version_id", "=", "version_a")
3845
- .orderBy("entity_id")
3846
- .orderBy("version_id")
3847
- .selectAll()
3848
- .execute();
3849
-
3850
- const stateVersionB = await db
3851
- .selectFrom("lix_internal_state_vtable")
3852
- .where("entity_id", "=", "e0")
3853
- .where("version_id", "=", "version_b")
3854
- .orderBy("entity_id")
3855
- .orderBy("version_id")
3856
- .selectAll()
3857
- .execute();
3858
-
3859
- expect(stateVersionA).toHaveLength(1);
3860
- expect(stateVersionB).toHaveLength(1);
3861
-
3862
- // Both should have timestamps
3863
- expect(stateVersionA[0]?.created_at).toBeDefined();
3864
- expect(stateVersionA[0]?.updated_at).toBeDefined();
3865
- expect(stateVersionB[0]?.created_at).toBeDefined();
3866
- expect(stateVersionB[0]?.updated_at).toBeDefined();
3867
-
3868
- // the same entity has been inserted but with different changes
3869
- expect(stateVersionA[0]?.created_at).not.toBe(stateVersionB[0]?.created_at);
3870
-
3871
- await db
3872
- .updateTable("lix_internal_state_vtable")
3873
- .set({
3874
- snapshot_content: JSON.stringify({
3875
- value: "updated value in version b",
3876
- }),
3877
- })
3878
- .where("entity_id", "=", "e0")
3879
- .where("version_id", "=", "version_b")
3880
- .execute();
3881
-
3882
- const updatedStateVersionA = await db
3883
- .selectFrom("lix_internal_state_vtable")
3884
- .where("entity_id", "=", "e0")
3885
- .where("version_id", "=", "version_a")
3886
- .orderBy("entity_id")
3887
- .orderBy("version_id")
3888
- .selectAll()
3889
- .execute();
3890
-
3891
- const updatedStateVersionB = await db
3892
- .selectFrom("lix_internal_state_vtable")
3893
- .where("entity_id", "=", "e0")
3894
- .where("version_id", "=", "version_b")
3895
- .orderBy("entity_id")
3896
- .orderBy("version_id")
3897
- .selectAll()
3898
- .execute();
3899
-
3900
- // Version A should remain unchanged
3901
- expect(updatedStateVersionA[0]?.updated_at).toBe(
3902
- stateVersionA[0]?.updated_at
3903
- );
3904
-
3905
- // Version B should have updated timestamp
3906
- expect(updatedStateVersionB[0]?.updated_at).not.toBe(
3907
- stateVersionB[0]?.updated_at
3908
- );
3909
- }
3910
- );
3911
-
3912
- simulationTest(
3913
- "state appears in both versions when they share the same commit via lix_internal_state_vtable",
3914
- async ({ openSimulatedLix }) => {
3915
- const lix = await openSimulatedLix({
3916
- keyValues: [
3917
- {
3918
- key: "lix_deterministic_mode",
3919
- value: { enabled: true },
3920
- lixcol_version_id: "global",
3921
- },
3922
- ],
3923
- });
3924
-
3925
- const versionA = await createVersion({ lix, id: "version_a" });
3926
-
3927
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
3928
- const mockSchema: LixSchemaDefinition = {
3929
- "x-lix-key": "mock_schema",
3930
- "x-lix-version": "1.0",
3931
- type: "object",
3932
- additionalProperties: false,
3933
- properties: {
3934
- value: { type: "string" },
3935
- },
3936
- };
3937
- await lix.db
3938
- .insertInto("stored_schema")
3939
- .values({ value: mockSchema })
3940
- .execute();
3941
-
3942
- // Insert state into version A
3943
- await db
3944
- .insertInto("lix_internal_state_vtable")
3945
- .values({
3946
- entity_id: "e0",
3947
- file_id: "f0",
3948
- schema_key: "mock_schema",
3949
- plugin_key: "mock_plugin",
3950
- schema_version: "1.0",
3951
- snapshot_content: JSON.stringify({
3952
- value: "shared state",
3953
- }),
3954
- version_id: "version_a",
3955
- untracked: 0,
3956
- })
3957
- .execute();
3958
-
3959
- const versionAAfterInsert = await lix.db
3960
- .selectFrom("version")
3961
- .where("id", "=", versionA.id)
3962
- .selectAll()
3963
- .executeTakeFirstOrThrow();
3964
-
3965
- const versionB = await createVersionFromCommit({
3966
- lix,
3967
- id: "version_b",
3968
- commit: { id: versionAAfterInsert.commit_id },
3969
- });
3970
-
3971
- expect(versionB.commit_id).toBe(versionAAfterInsert.commit_id);
3972
-
3973
- const stateInBothVersions = await db
3974
- .selectFrom("lix_internal_state_vtable")
3975
- .where("schema_key", "=", "mock_schema")
3976
- .where("entity_id", "=", "e0")
3977
- .orderBy("entity_id")
3978
- .orderBy("version_id")
3979
- .selectAll()
3980
- .execute();
3981
-
3982
- // Both versions should see the same state
3983
- expect(stateInBothVersions).toHaveLength(2);
3984
- expect(stateInBothVersions[0]?.entity_id).toBe("e0");
3985
- expect(stateInBothVersions[1]?.entity_id).toBe("e0");
3986
-
3987
- const sharedContent0 = stateInBothVersions[0]!.snapshot_content;
3988
- const sharedContent1 = stateInBothVersions[1]!.snapshot_content;
3989
-
3990
- expect(sharedContent0).toEqual({ value: "shared state" });
3991
- expect(sharedContent1).toEqual({ value: "shared state" });
3992
- expect(stateInBothVersions[0]?.version_id).toBe("version_a");
3993
- expect(stateInBothVersions[1]?.version_id).toBe("version_b");
3994
- expect(stateInBothVersions[0]?.commit_id).toBe(
3995
- versionAAfterInsert.commit_id
3996
- );
3997
- expect(stateInBothVersions[1]?.commit_id).toBe(
3998
- versionAAfterInsert.commit_id
3999
- );
4000
- }
4001
- );
4002
-
4003
- simulationTest(
4004
- "state diverges when versions have common ancestor but different changes via lix_internal_state_vtable",
4005
- async ({ openSimulatedLix }) => {
4006
- const lix = await openSimulatedLix({
4007
- keyValues: [
4008
- {
4009
- key: "lix_deterministic_mode",
4010
- value: { enabled: true },
4011
- lixcol_version_id: "global",
4012
- },
4013
- ],
4014
- });
4015
-
4016
- // Create base version and add initial state
4017
- const baseVersion = await createVersion({ lix, id: "base_version" });
4018
-
4019
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
4020
-
4021
- const mockSchema: LixSchemaDefinition = {
4022
- "x-lix-key": "mock_schema",
4023
- "x-lix-version": "1.0",
4024
- type: "object",
4025
- additionalProperties: false,
4026
- properties: {
4027
- value: { type: "string" },
4028
- },
4029
- };
4030
-
4031
- await lix.db
4032
- .insertInto("stored_schema")
4033
- .values({ value: mockSchema })
4034
- .execute();
4035
-
4036
- await db
4037
- .insertInto("lix_internal_state_vtable")
4038
- .values({
4039
- entity_id: "e0",
4040
- file_id: "f0",
4041
- schema_key: "mock_schema",
4042
- plugin_key: "mock_plugin",
4043
- schema_version: "1.0",
4044
- snapshot_content: JSON.stringify({
4045
- value: "base state",
4046
- }),
4047
- version_id: baseVersion.id,
4048
- untracked: 0,
4049
- })
4050
- .execute();
4051
-
4052
- // Create two versions from the same base version
4053
- await createVersion({
4054
- lix,
4055
- id: "version_a",
4056
- from: baseVersion,
4057
- });
4058
-
4059
- await createVersion({
4060
- lix,
4061
- id: "version_b",
4062
- from: baseVersion,
4063
- });
4064
-
4065
- const versions = await lix.db
4066
- .selectFrom("version")
4067
- .where("id", "in", ["base_version", "version_a", "version_b"])
4068
- .select(["id", "commit_id"])
4069
- .execute();
4070
-
4071
- expect(versions).toHaveLength(3);
4072
-
4073
- // Both versions should initially see the base state
4074
- const initialState = await db
4075
- .selectFrom("lix_internal_state_vtable")
4076
- .where("schema_key", "=", "mock_schema")
4077
- .where("entity_id", "=", "e0")
4078
- .orderBy("entity_id")
4079
- .orderBy("version_id")
4080
- .selectAll()
4081
- .execute();
4082
-
4083
- expect(initialState).toHaveLength(3); // base, version_a, version_b
4084
-
4085
- // Update state in version A
4086
- await db
4087
- .updateTable("lix_internal_state_vtable")
4088
- .set({
4089
- snapshot_content: JSON.stringify({ value: "updated in version A" }),
4090
- })
4091
- .where("entity_id", "=", "e0")
4092
- .where("version_id", "=", "version_a")
4093
- .execute();
4094
-
4095
- // Update state in version B differently
4096
- await db
4097
- .updateTable("lix_internal_state_vtable")
4098
- .set({
4099
- snapshot_content: JSON.stringify({ value: "updated in version B" }),
4100
- })
4101
- .where("entity_id", "=", "e0")
4102
- .where("version_id", "=", "version_b")
4103
- .execute();
4104
-
4105
- const divergedState = await db
4106
- .selectFrom("lix_internal_state_vtable")
4107
- .where("schema_key", "=", "mock_schema")
4108
- .where("entity_id", "=", "e0")
4109
- .selectAll()
4110
- .orderBy("version_id")
4111
- .execute();
4112
-
4113
- // All three versions should have different states
4114
- expect(divergedState).toHaveLength(3);
4115
- expect(divergedState[0]?.version_id).toBe("base_version");
4116
- expect(divergedState[1]?.version_id).toBe("version_a");
4117
- expect(divergedState[2]?.version_id).toBe("version_b");
4118
-
4119
- const divergedContent0 = divergedState[0]!.snapshot_content;
4120
- const divergedContent1 = divergedState[1]!.snapshot_content;
4121
- const divergedContent2 = divergedState[2]!.snapshot_content;
4122
-
4123
- expect(divergedContent0).toEqual({ value: "base state" });
4124
- expect(divergedContent1).toEqual({ value: "updated in version A" });
4125
- expect(divergedContent2).toEqual({ value: "updated in version B" });
4126
- }
4127
- );
4128
-
4129
- simulationTest(
4130
- "tracked insert then delete within same transaction leaves no residue via lix_internal_state_vtable",
4131
- async ({ openSimulatedLix }) => {
4132
- const lix = await openSimulatedLix({
4133
- keyValues: [
4134
- {
4135
- key: "lix_deterministic_mode",
4136
- value: { enabled: true },
4137
- lixcol_version_id: "global",
4138
- },
4139
- ],
4140
- });
4141
-
4142
- const mockSchema: LixSchemaDefinition = {
4143
- "x-lix-key": "key_value",
4144
- "x-lix-version": "1.0",
4145
- type: "object",
4146
- additionalProperties: false,
4147
- properties: {
4148
- key: { type: "string" },
4149
- value: { type: ["boolean", "null"] },
4150
- },
4151
- };
4152
-
4153
- await lix.db
4154
- .insertInto("stored_schema")
4155
- .values({ value: mockSchema })
4156
- .execute();
4157
-
4158
- const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
4159
-
4160
- const active = await lix.db
4161
- .selectFrom("active_version")
4162
- .selectAll()
4163
- .executeTakeFirstOrThrow();
4164
-
4165
- await db.transaction().execute(async (trx) => {
4166
- // tracked by default (untracked: 0)
4167
- await trx
4168
- .insertInto("lix_internal_state_vtable")
4169
- .values({
4170
- entity_id: "tx_skip_flag_tracked",
4171
- file_id: "system",
4172
- schema_key: "key_value",
4173
- plugin_key: "lix_sdk",
4174
- schema_version: "1.0",
4175
- version_id: (active as any).version_id ?? (active as any).id,
4176
- snapshot_content: JSON.stringify({
4177
- key: "tx_skip_flag_tracked",
4178
- value: true,
4179
- }),
4180
- untracked: 0, // tracked (SQLite uses INTEGER for boolean)
4181
- })
4182
- .execute();
4183
-
4184
- await trx
4185
- .deleteFrom("lix_internal_state_vtable")
4186
- .where("entity_id", "=", "tx_skip_flag_tracked")
4187
- .where(
4188
- "version_id",
4189
- "=",
4190
- (active as any).version_id ?? (active as any).id
4191
- )
4192
- .execute();
4193
- });
4194
-
4195
- const remaining = await db
4196
- .selectFrom("lix_internal_state_vtable")
4197
- .where("entity_id", "=", "tx_skip_flag_tracked")
4198
- .where(
4199
- "version_id",
4200
- "=",
4201
- (active as any).version_id ?? (active as any).id
4202
- )
4203
- .where("snapshot_content", "is not", null)
4204
- .orderBy("entity_id")
4205
- .orderBy("version_id")
4206
- .selectAll()
4207
- .execute();
4208
-
4209
- expect(remaining).toHaveLength(0);
4210
- }
4211
- );