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

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