@lix-js/sdk 0.5.1 → 0.6.0-preview.1

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