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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1378) hide show
  1. package/dist/account/create-account.d.ts +5 -5
  2. package/dist/account/create-account.d.ts.map +1 -1
  3. package/dist/account/create-account.js +2 -2
  4. package/dist/account/create-account.js.map +1 -1
  5. package/dist/account/index.d.ts +1 -1
  6. package/dist/account/index.d.ts.map +1 -1
  7. package/dist/account/schema.d.ts +23 -7
  8. package/dist/account/schema.d.ts.map +1 -1
  9. package/dist/account/schema.js +84 -27
  10. package/dist/account/schema.js.map +1 -1
  11. package/dist/account/schema.test.js +87 -83
  12. package/dist/account/schema.test.js.map +1 -1
  13. package/dist/account/switch-account.d.ts +2 -2
  14. package/dist/account/switch-account.d.ts.map +1 -1
  15. package/dist/account/switch-account.js +3 -4
  16. package/dist/account/switch-account.js.map +1 -1
  17. package/dist/account/switch-account.test.js +4 -4
  18. package/dist/account/switch-account.test.js.map +1 -1
  19. package/dist/change/apply-changes.d.ts +13 -0
  20. package/dist/change/apply-changes.d.ts.map +1 -1
  21. package/dist/change/apply-changes.js +14 -4
  22. package/dist/change/apply-changes.js.map +1 -1
  23. package/dist/change/apply-changes.test.js +91 -1
  24. package/dist/change/apply-changes.test.js.map +1 -1
  25. package/dist/change/create-change-v2.d.ts +11 -0
  26. package/dist/change/create-change-v2.d.ts.map +1 -0
  27. package/dist/change/create-change-v2.js +31 -0
  28. package/dist/change/create-change-v2.js.map +1 -0
  29. package/dist/change/create-change-v2.test.d.ts +2 -0
  30. package/dist/change/create-change-v2.test.d.ts.map +1 -0
  31. package/dist/change/create-change-v2.test.js +39 -0
  32. package/dist/change/create-change-v2.test.js.map +1 -0
  33. package/dist/change/create-change.d.ts +2 -2
  34. package/dist/change/create-change.d.ts.map +1 -1
  35. package/dist/change/create-change.js +3 -1
  36. package/dist/change/create-change.js.map +1 -1
  37. package/dist/change/create-change.test.js +4 -6
  38. package/dist/change/create-change.test.js.map +1 -1
  39. package/dist/change/index.d.ts +1 -1
  40. package/dist/change/index.d.ts.map +1 -1
  41. package/dist/change/index.js.map +1 -1
  42. package/dist/change/schema.d.ts +40 -2
  43. package/dist/change/schema.d.ts.map +1 -1
  44. package/dist/change/schema.js +50 -9
  45. package/dist/change/schema.js.map +1 -1
  46. package/dist/change/schema.test.js +33 -0
  47. package/dist/change/schema.test.js.map +1 -1
  48. package/dist/change-author/index.d.ts +1 -1
  49. package/dist/change-author/index.d.ts.map +1 -1
  50. package/dist/change-author/index.js +1 -1
  51. package/dist/change-author/index.js.map +1 -1
  52. package/dist/change-author/schema.d.ts +12 -9
  53. package/dist/change-author/schema.d.ts.map +1 -1
  54. package/dist/change-author/schema.js +16 -10
  55. package/dist/change-author/schema.js.map +1 -1
  56. package/dist/change-author/schema.test.js +283 -229
  57. package/dist/change-author/schema.test.js.map +1 -1
  58. package/dist/change-proposal/create-change-proposal.d.ts +3 -3
  59. package/dist/change-proposal/create-change-proposal.d.ts.map +1 -1
  60. package/dist/change-proposal/database-schema.js +1 -1
  61. package/dist/change-set/apply-change-set.d.ts +2 -2
  62. package/dist/change-set/apply-change-set.d.ts.map +1 -1
  63. package/dist/change-set/apply-change-set.js +40 -51
  64. package/dist/change-set/apply-change-set.js.map +1 -1
  65. package/dist/change-set/apply-change-set.test.js +6 -3
  66. package/dist/change-set/apply-change-set.test.js.map +1 -1
  67. package/dist/change-set/before-after-of-file.d.ts +31 -0
  68. package/dist/change-set/before-after-of-file.d.ts.map +1 -0
  69. package/dist/change-set/before-after-of-file.js +191 -0
  70. package/dist/change-set/before-after-of-file.js.map +1 -0
  71. package/dist/change-set/before-after-of-file.test.d.ts +2 -0
  72. package/dist/change-set/before-after-of-file.test.d.ts.map +1 -0
  73. package/dist/change-set/before-after-of-file.test.js +221 -0
  74. package/dist/change-set/before-after-of-file.test.js.map +1 -0
  75. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts +2 -1
  76. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts.map +1 -1
  77. package/dist/change-set/change-set-element-in-symmetric-difference.js.map +1 -1
  78. package/dist/change-set/change-set-element-in-symmetric-difference.test.js +204 -34
  79. package/dist/change-set/change-set-element-in-symmetric-difference.test.js.map +1 -1
  80. package/dist/change-set/checkout-change-set.d.ts +15 -0
  81. package/dist/change-set/checkout-change-set.d.ts.map +1 -0
  82. package/dist/change-set/checkout-change-set.js +64 -0
  83. package/dist/change-set/checkout-change-set.js.map +1 -0
  84. package/dist/change-set/checkout-change-set.test.d.ts +2 -0
  85. package/dist/change-set/checkout-change-set.test.d.ts.map +1 -0
  86. package/dist/change-set/checkout-change-set.test.js +127 -0
  87. package/dist/change-set/checkout-change-set.test.js.map +1 -0
  88. package/dist/change-set/create-change-set.d.ts +7 -9
  89. package/dist/change-set/create-change-set.d.ts.map +1 -1
  90. package/dist/change-set/create-change-set.js +3 -25
  91. package/dist/change-set/create-change-set.js.map +1 -1
  92. package/dist/change-set/create-change-set.test.js +0 -31
  93. package/dist/change-set/create-change-set.test.js.map +1 -1
  94. package/dist/change-set/create-checkpoint.d.ts.map +1 -1
  95. package/dist/change-set/create-checkpoint.js +11 -2
  96. package/dist/change-set/create-checkpoint.js.map +1 -1
  97. package/dist/change-set/create-checkpoint.test.js +53 -0
  98. package/dist/change-set/create-checkpoint.test.js.map +1 -1
  99. package/dist/change-set/create-merge-change-set.d.ts +4 -4
  100. package/dist/change-set/create-merge-change-set.d.ts.map +1 -1
  101. package/dist/change-set/create-transition-change-set.d.ts +4 -4
  102. package/dist/change-set/create-transition-change-set.d.ts.map +1 -1
  103. package/dist/change-set/create-undo-change-set.d.ts +5 -5
  104. package/dist/change-set/create-undo-change-set.d.ts.map +1 -1
  105. package/dist/change-set/create-undo-change-set.js +4 -3
  106. package/dist/change-set/create-undo-change-set.js.map +1 -1
  107. package/dist/change-set/database-schema.d.ts +39 -0
  108. package/dist/change-set/database-schema.d.ts.map +1 -0
  109. package/dist/change-set/database-schema.js +86 -0
  110. package/dist/change-set/database-schema.js.map +1 -0
  111. package/dist/change-set/database-schema.test.d.ts +2 -0
  112. package/dist/change-set/database-schema.test.d.ts.map +1 -0
  113. package/dist/change-set/database-schema.test.js +547 -0
  114. package/dist/change-set/database-schema.test.js.map +1 -0
  115. package/dist/change-set/diff-for-file.d.ts +29 -0
  116. package/dist/change-set/diff-for-file.d.ts.map +1 -0
  117. package/dist/change-set/diff-for-file.js +19 -0
  118. package/dist/change-set/diff-for-file.js.map +1 -0
  119. package/dist/change-set/get-before-after-of-file.d.ts +31 -0
  120. package/dist/change-set/get-before-after-of-file.d.ts.map +1 -0
  121. package/dist/change-set/get-before-after-of-file.js +189 -0
  122. package/dist/change-set/get-before-after-of-file.js.map +1 -0
  123. package/dist/change-set/get-before-after-of-file.test.d.ts +2 -0
  124. package/dist/change-set/get-before-after-of-file.test.d.ts.map +1 -0
  125. package/dist/change-set/get-before-after-of-file.test.js +220 -0
  126. package/dist/change-set/get-before-after-of-file.test.js.map +1 -0
  127. package/dist/change-set/index.d.ts +1 -5
  128. package/dist/change-set/index.d.ts.map +1 -1
  129. package/dist/change-set/index.js +1 -5
  130. package/dist/change-set/index.js.map +1 -1
  131. package/dist/change-set/merge-change-sets.d.ts +23 -0
  132. package/dist/change-set/merge-change-sets.d.ts.map +1 -0
  133. package/dist/change-set/merge-change-sets.js +69 -0
  134. package/dist/change-set/merge-change-sets.js.map +1 -0
  135. package/dist/change-set/merge-change-sets.test.d.ts +2 -0
  136. package/dist/change-set/merge-change-sets.test.d.ts.map +1 -0
  137. package/dist/change-set/merge-change-sets.test.js +184 -0
  138. package/dist/change-set/merge-change-sets.test.js.map +1 -0
  139. package/dist/change-set/restore-change-set.d.ts +14 -0
  140. package/dist/change-set/restore-change-set.d.ts.map +1 -0
  141. package/dist/change-set/restore-change-set.js +98 -0
  142. package/dist/change-set/restore-change-set.js.map +1 -0
  143. package/dist/change-set/restore-change-set.test.d.ts +2 -0
  144. package/dist/change-set/restore-change-set.test.d.ts.map +1 -0
  145. package/dist/change-set/restore-change-set.test.js +238 -0
  146. package/dist/change-set/restore-change-set.test.js.map +1 -0
  147. package/dist/change-set/schema.d.ts +28 -72
  148. package/dist/change-set/schema.d.ts.map +1 -1
  149. package/dist/change-set/schema.js +37 -84
  150. package/dist/change-set/schema.js.map +1 -1
  151. package/dist/change-set/schema.test.js +0 -247
  152. package/dist/change-set/schema.test.js.map +1 -1
  153. package/dist/change-set-edge/database-schema.d.ts +11 -0
  154. package/dist/change-set-edge/database-schema.d.ts.map +1 -0
  155. package/dist/change-set-edge/database-schema.js +29 -0
  156. package/dist/change-set-edge/database-schema.js.map +1 -0
  157. package/dist/change-set-edge/database-schema.test.d.ts +2 -0
  158. package/dist/change-set-edge/database-schema.test.d.ts.map +1 -0
  159. package/dist/change-set-edge/database-schema.test.js +166 -0
  160. package/dist/change-set-edge/database-schema.test.js.map +1 -0
  161. package/dist/change-set-edge/index.d.ts +2 -0
  162. package/dist/change-set-edge/index.d.ts.map +1 -0
  163. package/dist/change-set-edge/index.js +2 -0
  164. package/dist/change-set-edge/index.js.map +1 -0
  165. package/dist/change-set-v2/apply-change-set.d.ts +10 -0
  166. package/dist/change-set-v2/apply-change-set.d.ts.map +1 -0
  167. package/dist/change-set-v2/apply-change-set.js +147 -0
  168. package/dist/change-set-v2/apply-change-set.js.map +1 -0
  169. package/dist/change-set-v2/apply-change-set.test.d.ts +2 -0
  170. package/dist/change-set-v2/apply-change-set.test.d.ts.map +1 -0
  171. package/dist/change-set-v2/apply-change-set.test.js +270 -0
  172. package/dist/change-set-v2/apply-change-set.test.js.map +1 -0
  173. package/dist/change-set-v2/create-change-set.d.ts +10 -0
  174. package/dist/change-set-v2/create-change-set.d.ts.map +1 -0
  175. package/dist/change-set-v2/create-change-set.js +57 -0
  176. package/dist/change-set-v2/create-change-set.js.map +1 -0
  177. package/dist/change-set-v2/create-change-set.test.d.ts +2 -0
  178. package/dist/change-set-v2/create-change-set.test.d.ts.map +1 -0
  179. package/dist/change-set-v2/create-change-set.test.js +59 -0
  180. package/dist/change-set-v2/create-change-set.test.js.map +1 -0
  181. package/dist/change-set-v2/create-checkpoint.d.ts +7 -0
  182. package/dist/change-set-v2/create-checkpoint.d.ts.map +1 -0
  183. package/dist/change-set-v2/create-checkpoint.js +79 -0
  184. package/dist/change-set-v2/create-checkpoint.js.map +1 -0
  185. package/dist/change-set-v2/create-checkpoint.test.d.ts +2 -0
  186. package/dist/change-set-v2/create-checkpoint.test.d.ts.map +1 -0
  187. package/dist/change-set-v2/create-checkpoint.test.js +289 -0
  188. package/dist/change-set-v2/create-checkpoint.test.js.map +1 -0
  189. package/dist/change-set-v2/create-merge-change-set.d.ts +23 -0
  190. package/dist/change-set-v2/create-merge-change-set.d.ts.map +1 -0
  191. package/dist/change-set-v2/create-merge-change-set.js +68 -0
  192. package/dist/change-set-v2/create-merge-change-set.js.map +1 -0
  193. package/dist/change-set-v2/create-merge-change-set.test.d.ts +2 -0
  194. package/dist/change-set-v2/create-merge-change-set.test.d.ts.map +1 -0
  195. package/dist/change-set-v2/create-merge-change-set.test.js +223 -0
  196. package/dist/change-set-v2/create-merge-change-set.test.js.map +1 -0
  197. package/dist/change-set-v2/index.d.ts +5 -0
  198. package/dist/change-set-v2/index.d.ts.map +1 -0
  199. package/dist/change-set-v2/index.js +5 -0
  200. package/dist/change-set-v2/index.js.map +1 -0
  201. package/dist/change-set-v2/schema.d.ts +50 -0
  202. package/dist/change-set-v2/schema.d.ts.map +1 -0
  203. package/dist/change-set-v2/schema.js +347 -0
  204. package/dist/change-set-v2/schema.js.map +1 -0
  205. package/dist/change-set-v2/schema.test.d.ts +2 -0
  206. package/dist/change-set-v2/schema.test.d.ts.map +1 -0
  207. package/dist/change-set-v2/schema.test.js +713 -0
  208. package/dist/change-set-v2/schema.test.js.map +1 -0
  209. package/dist/commit/apply-commit.d.ts +32 -0
  210. package/dist/commit/apply-commit.d.ts.map +1 -0
  211. package/dist/commit/apply-commit.js +63 -0
  212. package/dist/commit/apply-commit.js.map +1 -0
  213. package/dist/commit/apply-commit.test.d.ts +2 -0
  214. package/dist/commit/apply-commit.test.d.ts.map +1 -0
  215. package/dist/commit/apply-commit.test.js +367 -0
  216. package/dist/commit/apply-commit.test.js.map +1 -0
  217. package/dist/commit/create-checkpoint.d.ts +19 -0
  218. package/dist/commit/create-checkpoint.d.ts.map +1 -0
  219. package/dist/commit/create-checkpoint.js +118 -0
  220. package/dist/commit/create-checkpoint.js.map +1 -0
  221. package/dist/commit/create-checkpoint.test.d.ts +2 -0
  222. package/dist/commit/create-checkpoint.test.d.ts.map +1 -0
  223. package/dist/commit/create-checkpoint.test.js +472 -0
  224. package/dist/commit/create-checkpoint.test.js.map +1 -0
  225. package/dist/commit/create-commit.d.ts +38 -0
  226. package/dist/commit/create-commit.d.ts.map +1 -0
  227. package/dist/commit/create-commit.js +68 -0
  228. package/dist/commit/create-commit.js.map +1 -0
  229. package/dist/commit/create-merge-commit.d.ts +24 -0
  230. package/dist/commit/create-merge-commit.d.ts.map +1 -0
  231. package/dist/commit/create-merge-commit.js +103 -0
  232. package/dist/commit/create-merge-commit.js.map +1 -0
  233. package/dist/commit/create-merge-commit.test.d.ts +2 -0
  234. package/dist/commit/create-merge-commit.test.d.ts.map +1 -0
  235. package/dist/commit/create-merge-commit.test.js +242 -0
  236. package/dist/commit/create-merge-commit.test.js.map +1 -0
  237. package/dist/commit/create-transition-commit.d.ts +18 -0
  238. package/dist/commit/create-transition-commit.d.ts.map +1 -0
  239. package/dist/commit/create-transition-commit.js +136 -0
  240. package/dist/commit/create-transition-commit.js.map +1 -0
  241. package/dist/commit/create-transition-commit.test.d.ts +2 -0
  242. package/dist/commit/create-transition-commit.test.d.ts.map +1 -0
  243. package/dist/commit/create-transition-commit.test.js +221 -0
  244. package/dist/commit/create-transition-commit.test.js.map +1 -0
  245. package/dist/commit/create-undo-commit.d.ts +27 -0
  246. package/dist/commit/create-undo-commit.d.ts.map +1 -0
  247. package/dist/commit/create-undo-commit.js +143 -0
  248. package/dist/commit/create-undo-commit.js.map +1 -0
  249. package/dist/commit/create-undo-commit.test.d.ts +2 -0
  250. package/dist/commit/create-undo-commit.test.d.ts.map +1 -0
  251. package/dist/commit/create-undo-commit.test.js +298 -0
  252. package/dist/commit/create-undo-commit.test.js.map +1 -0
  253. package/dist/commit/index.d.ts +6 -0
  254. package/dist/commit/index.d.ts.map +1 -0
  255. package/dist/commit/index.js +6 -0
  256. package/dist/commit/index.js.map +1 -0
  257. package/dist/commit/schema.d.ts +73 -0
  258. package/dist/commit/schema.d.ts.map +1 -0
  259. package/dist/commit/schema.js +90 -0
  260. package/dist/commit/schema.js.map +1 -0
  261. package/dist/commit/schema.test.d.ts +2 -0
  262. package/dist/commit/schema.test.d.ts.map +1 -0
  263. package/dist/commit/schema.test.js +216 -0
  264. package/dist/commit/schema.test.js.map +1 -0
  265. package/dist/database/apply-schema.d.ts +3 -0
  266. package/dist/database/apply-schema.d.ts.map +1 -1
  267. package/dist/database/apply-schema.js +91 -258
  268. package/dist/database/apply-schema.js.map +1 -1
  269. package/dist/database/index.d.ts +0 -2
  270. package/dist/database/index.d.ts.map +1 -1
  271. package/dist/database/index.js +0 -2
  272. package/dist/database/index.js.map +1 -1
  273. package/dist/database/init-db.d.ts.map +1 -1
  274. package/dist/database/init-db.js +83 -44
  275. package/dist/database/init-db.js.map +1 -1
  276. package/dist/database/init-db.test.js +2 -480
  277. package/dist/database/init-db.test.js.map +1 -1
  278. package/dist/database/kysely-plugin/json-column-plugin.d.ts +5 -1
  279. package/dist/database/kysely-plugin/json-column-plugin.d.ts.map +1 -1
  280. package/dist/database/kysely-plugin/json-column-plugin.js +52 -10
  281. package/dist/database/kysely-plugin/json-column-plugin.js.map +1 -1
  282. package/dist/database/kysely-plugin/json-column-plugin.test.d.ts +2 -0
  283. package/dist/database/kysely-plugin/json-column-plugin.test.d.ts.map +1 -0
  284. package/dist/database/kysely-plugin/json-column-plugin.test.js +329 -0
  285. package/dist/database/kysely-plugin/json-column-plugin.test.js.map +1 -0
  286. package/dist/database/mutation-log/database-schema.d.ts.map +1 -1
  287. package/dist/database/mutation-log/database-schema.js +0 -4
  288. package/dist/database/mutation-log/database-schema.js.map +1 -1
  289. package/dist/database/nano-id.d.ts +4 -1
  290. package/dist/database/nano-id.d.ts.map +1 -1
  291. package/dist/database/nano-id.js +4 -1
  292. package/dist/database/nano-id.js.map +1 -1
  293. package/dist/database/nano-id.test.js +3 -3
  294. package/dist/database/nano-id.test.js.map +1 -1
  295. package/dist/database/schema.d.ts +21 -14
  296. package/dist/database/schema.d.ts.map +1 -1
  297. package/dist/database/schema.js +9 -5
  298. package/dist/database/schema.js.map +1 -1
  299. package/dist/deterministic/generate-human-id.d.ts +20 -0
  300. package/dist/deterministic/generate-human-id.d.ts.map +1 -0
  301. package/dist/deterministic/generate-human-id.js +86 -0
  302. package/dist/deterministic/generate-human-id.js.map +1 -0
  303. package/dist/deterministic/generate-human-id.test.d.ts +2 -0
  304. package/dist/deterministic/generate-human-id.test.d.ts.map +1 -0
  305. package/dist/deterministic/generate-human-id.test.js +123 -0
  306. package/dist/deterministic/generate-human-id.test.js.map +1 -0
  307. package/dist/deterministic/index.d.ts +8 -0
  308. package/dist/deterministic/index.d.ts.map +1 -0
  309. package/dist/deterministic/index.js +8 -0
  310. package/dist/deterministic/index.js.map +1 -0
  311. package/dist/deterministic/is-deterministic-mode.d.ts +14 -0
  312. package/dist/deterministic/is-deterministic-mode.d.ts.map +1 -0
  313. package/dist/deterministic/is-deterministic-mode.js +25 -0
  314. package/dist/deterministic/is-deterministic-mode.js.map +1 -0
  315. package/dist/deterministic/is-deterministic-mode.test.d.ts +2 -0
  316. package/dist/deterministic/is-deterministic-mode.test.d.ts.map +1 -0
  317. package/dist/deterministic/is-deterministic-mode.test.js +103 -0
  318. package/dist/deterministic/is-deterministic-mode.test.js.map +1 -0
  319. package/dist/deterministic/nano-id.d.ts +61 -0
  320. package/dist/deterministic/nano-id.d.ts.map +1 -0
  321. package/dist/deterministic/nano-id.js +161 -0
  322. package/dist/deterministic/nano-id.js.map +1 -0
  323. package/dist/deterministic/nano-id.test.d.ts +2 -0
  324. package/dist/deterministic/nano-id.test.d.ts.map +1 -0
  325. package/dist/deterministic/nano-id.test.js +163 -0
  326. package/dist/deterministic/nano-id.test.js.map +1 -0
  327. package/dist/deterministic/options.d.ts +53 -0
  328. package/dist/deterministic/options.d.ts.map +1 -0
  329. package/dist/deterministic/options.js +52 -0
  330. package/dist/deterministic/options.js.map +1 -0
  331. package/dist/deterministic/options.test.d.ts +2 -0
  332. package/dist/deterministic/options.test.d.ts.map +1 -0
  333. package/dist/deterministic/options.test.js +111 -0
  334. package/dist/deterministic/options.test.js.map +1 -0
  335. package/dist/deterministic/random.d.ts +68 -0
  336. package/dist/deterministic/random.d.ts.map +1 -0
  337. package/dist/deterministic/random.js +225 -0
  338. package/dist/deterministic/random.js.map +1 -0
  339. package/dist/deterministic/random.test.d.ts +2 -0
  340. package/dist/deterministic/random.test.d.ts.map +1 -0
  341. package/dist/deterministic/random.test.js +244 -0
  342. package/dist/deterministic/random.test.js.map +1 -0
  343. package/dist/deterministic/sequence.d.ts +56 -0
  344. package/dist/deterministic/sequence.d.ts.map +1 -0
  345. package/dist/deterministic/sequence.js +107 -0
  346. package/dist/deterministic/sequence.js.map +1 -0
  347. package/dist/deterministic/sequence.test.d.ts +2 -0
  348. package/dist/deterministic/sequence.test.d.ts.map +1 -0
  349. package/dist/deterministic/sequence.test.js +71 -0
  350. package/dist/deterministic/sequence.test.js.map +1 -0
  351. package/dist/deterministic/timestamp.d.ts +47 -0
  352. package/dist/deterministic/timestamp.d.ts.map +1 -0
  353. package/dist/deterministic/timestamp.js +74 -0
  354. package/dist/deterministic/timestamp.js.map +1 -0
  355. package/dist/deterministic/timestamp.test.d.ts +2 -0
  356. package/dist/deterministic/timestamp.test.d.ts.map +1 -0
  357. package/dist/deterministic/timestamp.test.js +145 -0
  358. package/dist/deterministic/timestamp.test.js.map +1 -0
  359. package/dist/deterministic/uuid-v7.d.ts +49 -0
  360. package/dist/deterministic/uuid-v7.d.ts.map +1 -0
  361. package/dist/deterministic/uuid-v7.js +75 -0
  362. package/dist/deterministic/uuid-v7.js.map +1 -0
  363. package/dist/deterministic/uuid-v7.test.d.ts +2 -0
  364. package/dist/deterministic/uuid-v7.test.d.ts.map +1 -0
  365. package/dist/deterministic/uuid-v7.test.js +114 -0
  366. package/dist/deterministic/uuid-v7.test.js.map +1 -0
  367. package/dist/discussion/create-discussion.d.ts +2 -1
  368. package/dist/discussion/create-discussion.d.ts.map +1 -1
  369. package/dist/discussion/create-discussion.js.map +1 -1
  370. package/dist/discussion/create-discussion.test.js +13 -2
  371. package/dist/discussion/create-discussion.test.js.map +1 -1
  372. package/dist/entity/eb-entity.d.ts +76 -0
  373. package/dist/entity/eb-entity.d.ts.map +1 -0
  374. package/dist/entity/eb-entity.js +156 -0
  375. package/dist/entity/eb-entity.js.map +1 -0
  376. package/dist/entity/eb-entity.test.d.ts +2 -0
  377. package/dist/entity/eb-entity.test.d.ts.map +1 -0
  378. package/dist/entity/eb-entity.test.js +573 -0
  379. package/dist/entity/eb-entity.test.js.map +1 -0
  380. package/dist/entity/index.d.ts +7 -0
  381. package/dist/entity/index.d.ts.map +1 -0
  382. package/dist/entity/index.js +4 -0
  383. package/dist/entity/index.js.map +1 -0
  384. package/dist/entity/label/create-entity-label.d.ts +61 -0
  385. package/dist/entity/label/create-entity-label.d.ts.map +1 -0
  386. package/dist/entity/label/create-entity-label.js +92 -0
  387. package/dist/entity/label/create-entity-label.js.map +1 -0
  388. package/dist/entity/label/create-entity-label.test.d.ts +2 -0
  389. package/dist/entity/label/create-entity-label.test.d.ts.map +1 -0
  390. package/dist/entity/label/create-entity-label.test.js +261 -0
  391. package/dist/entity/label/create-entity-label.test.js.map +1 -0
  392. package/dist/entity/label/schema.d.ts +40 -0
  393. package/dist/entity/label/schema.d.ts.map +1 -0
  394. package/dist/entity/label/schema.js +42 -0
  395. package/dist/entity/label/schema.js.map +1 -0
  396. package/dist/entity/label/schema.test.d.ts +2 -0
  397. package/dist/entity/label/schema.test.d.ts.map +1 -0
  398. package/dist/entity/label/schema.test.js +596 -0
  399. package/dist/entity/label/schema.test.js.map +1 -0
  400. package/dist/entity/schema.d.ts +13 -0
  401. package/dist/entity/schema.d.ts.map +1 -0
  402. package/dist/entity/schema.js +5 -0
  403. package/dist/entity/schema.js.map +1 -0
  404. package/dist/entity/thread/create-entity-thread.d.ts +75 -0
  405. package/dist/entity/thread/create-entity-thread.d.ts.map +1 -0
  406. package/dist/entity/thread/create-entity-thread.js +109 -0
  407. package/dist/entity/thread/create-entity-thread.js.map +1 -0
  408. package/dist/entity/thread/create-entity-thread.test.d.ts +2 -0
  409. package/dist/entity/thread/create-entity-thread.test.d.ts.map +1 -0
  410. package/dist/entity/thread/create-entity-thread.test.js +240 -0
  411. package/dist/entity/thread/create-entity-thread.test.js.map +1 -0
  412. package/dist/entity/thread/query-threads.test.d.ts +2 -0
  413. package/dist/entity/thread/query-threads.test.d.ts.map +1 -0
  414. package/dist/entity/thread/query-threads.test.js +330 -0
  415. package/dist/entity/thread/query-threads.test.js.map +1 -0
  416. package/dist/entity/thread/schema.d.ts +40 -0
  417. package/dist/entity/thread/schema.d.ts.map +1 -0
  418. package/dist/entity/thread/schema.js +42 -0
  419. package/dist/entity/thread/schema.js.map +1 -0
  420. package/dist/entity/thread/schema.test.d.ts +2 -0
  421. package/dist/entity/thread/schema.test.d.ts.map +1 -0
  422. package/dist/entity/thread/schema.test.js +144 -0
  423. package/dist/entity/thread/schema.test.js.map +1 -0
  424. package/dist/entity-views/entity-state-all.d.ts +52 -0
  425. package/dist/entity-views/entity-state-all.d.ts.map +1 -1
  426. package/dist/entity-views/entity-state-all.js +19 -11
  427. package/dist/entity-views/entity-state-all.js.map +1 -1
  428. package/dist/entity-views/entity-state-all.test.js +173 -0
  429. package/dist/entity-views/entity-state-all.test.js.map +1 -1
  430. package/dist/entity-views/entity-state-history.d.ts +55 -15
  431. package/dist/entity-views/entity-state-history.d.ts.map +1 -1
  432. package/dist/entity-views/entity-state-history.js +7 -4
  433. package/dist/entity-views/entity-state-history.js.map +1 -1
  434. package/dist/entity-views/entity-state-history.test.js +70 -15
  435. package/dist/entity-views/entity-state-history.test.js.map +1 -1
  436. package/dist/entity-views/entity-state.d.ts +52 -0
  437. package/dist/entity-views/entity-state.d.ts.map +1 -1
  438. package/dist/entity-views/entity-state.js +18 -10
  439. package/dist/entity-views/entity-state.js.map +1 -1
  440. package/dist/entity-views/entity-state.test.js +120 -1
  441. package/dist/entity-views/entity-state.test.js.map +1 -1
  442. package/dist/entity-views/entity-view-builder.test.js +6 -6
  443. package/dist/entity-views/entity-view-builder.test.js.map +1 -1
  444. package/dist/entity-views/types.d.ts +2 -2
  445. package/dist/file/database-schema.d.ts +25 -0
  446. package/dist/file/database-schema.d.ts.map +1 -0
  447. package/dist/file/database-schema.js +26 -0
  448. package/dist/file/database-schema.js.map +1 -0
  449. package/dist/file/database-schema.test.d.ts +2 -0
  450. package/dist/file/database-schema.test.d.ts.map +1 -0
  451. package/dist/file/database-schema.test.js +60 -0
  452. package/dist/file/database-schema.test.js.map +1 -0
  453. package/dist/file/file-handlers.d.ts.map +1 -1
  454. package/dist/file/file-handlers.js +36 -0
  455. package/dist/file/file-handlers.js.map +1 -1
  456. package/dist/file/file-handlers.test.js +4 -4
  457. package/dist/file/file-handlers.test.js.map +1 -1
  458. package/dist/file/materialize-file-data-at-changeset.d.ts +1 -1
  459. package/dist/file/materialize-file-data-at-changeset.d.ts.map +1 -1
  460. package/dist/file/materialize-file-data-at-changeset.js +55 -29
  461. package/dist/file/materialize-file-data-at-changeset.js.map +1 -1
  462. package/dist/file/materialize-file-data-at-commit.d.ts +9 -0
  463. package/dist/file/materialize-file-data-at-commit.d.ts.map +1 -0
  464. package/dist/file/materialize-file-data-at-commit.js +119 -0
  465. package/dist/file/materialize-file-data-at-commit.js.map +1 -0
  466. package/dist/file/schema.d.ts +68 -5
  467. package/dist/file/schema.d.ts.map +1 -1
  468. package/dist/file/schema.js +118 -50
  469. package/dist/file/schema.js.map +1 -1
  470. package/dist/file/schema.test.js +543 -35
  471. package/dist/file/schema.test.js.map +1 -1
  472. package/dist/file-queue/database-schema.d.ts +17 -0
  473. package/dist/file-queue/database-schema.d.ts.map +1 -0
  474. package/dist/file-queue/database-schema.js +53 -0
  475. package/dist/file-queue/database-schema.js.map +1 -0
  476. package/dist/file-queue/file-handlers.d.ts +1 -1
  477. package/dist/file-queue/file-handlers.d.ts.map +1 -1
  478. package/dist/file-queue/file-handlers.js +60 -29
  479. package/dist/file-queue/file-handlers.js.map +1 -1
  480. package/dist/file-queue/file-queue-process.d.ts.map +1 -1
  481. package/dist/file-queue/file-queue-process.js +26 -17
  482. package/dist/file-queue/file-queue-process.js.map +1 -1
  483. package/dist/file-queue/file-queue-process.test.js +133 -43
  484. package/dist/file-queue/file-queue-process.test.js.map +1 -1
  485. package/dist/file-queue/with-skip-file-queue.d.ts +18 -0
  486. package/dist/file-queue/with-skip-file-queue.d.ts.map +1 -1
  487. package/dist/file-queue/with-skip-file-queue.js +56 -10
  488. package/dist/file-queue/with-skip-file-queue.js.map +1 -1
  489. package/dist/file-queue/with-skip-file-queue.test.js +28 -12
  490. package/dist/file-queue/with-skip-file-queue.test.js.map +1 -1
  491. package/dist/hooks/create-hooks.d.ts +4 -26
  492. package/dist/hooks/create-hooks.d.ts.map +1 -1
  493. package/dist/hooks/create-hooks.js +3 -7
  494. package/dist/hooks/create-hooks.js.map +1 -1
  495. package/dist/index.d.ts +3 -0
  496. package/dist/index.d.ts.map +1 -1
  497. package/dist/index.js +3 -0
  498. package/dist/index.js.map +1 -1
  499. package/dist/key-value/database-schema.d.ts +3 -2
  500. package/dist/key-value/database-schema.d.ts.map +1 -1
  501. package/dist/key-value/database-schema.js +3 -3
  502. package/dist/key-value/database-schema.test.js +13 -4
  503. package/dist/key-value/database-schema.test.js.map +1 -1
  504. package/dist/key-value/index.d.ts +1 -1
  505. package/dist/key-value/index.d.ts.map +1 -1
  506. package/dist/key-value/index.js.map +1 -1
  507. package/dist/key-value/schema.d.ts +63 -3
  508. package/dist/key-value/schema.d.ts.map +1 -1
  509. package/dist/key-value/schema.js +8 -2
  510. package/dist/key-value/schema.js.map +1 -1
  511. package/dist/key-value/schema.test.js +91 -2
  512. package/dist/key-value/schema.test.js.map +1 -1
  513. package/dist/key-value-v2/schema.d.ts +27 -0
  514. package/dist/key-value-v2/schema.d.ts.map +1 -0
  515. package/dist/key-value-v2/schema.js +73 -0
  516. package/dist/key-value-v2/schema.js.map +1 -0
  517. package/dist/key-value-v2/schema.test.d.ts +2 -0
  518. package/dist/key-value-v2/schema.test.d.ts.map +1 -0
  519. package/dist/key-value-v2/schema.test.js +144 -0
  520. package/dist/key-value-v2/schema.test.js.map +1 -0
  521. package/dist/label/create-label.d.ts +5 -5
  522. package/dist/label/create-label.d.ts.map +1 -1
  523. package/dist/label/create-label.js +2 -2
  524. package/dist/label/create-label.js.map +1 -1
  525. package/dist/label/index.d.ts +1 -1
  526. package/dist/label/index.d.ts.map +1 -1
  527. package/dist/label/index.js.map +1 -1
  528. package/dist/label/schema.d.ts +3 -3
  529. package/dist/label/schema.d.ts.map +1 -1
  530. package/dist/label/schema.js +4 -6
  531. package/dist/label/schema.js.map +1 -1
  532. package/dist/lix/close-lix.d.ts +1 -10
  533. package/dist/lix/close-lix.d.ts.map +1 -1
  534. package/dist/lix/close-lix.js +1 -10
  535. package/dist/lix/close-lix.js.map +1 -1
  536. package/dist/lix/merge.test.js +4 -1
  537. package/dist/lix/merge.test.js.map +1 -1
  538. package/dist/lix/new-lix.d.ts +4 -2
  539. package/dist/lix/new-lix.d.ts.map +1 -1
  540. package/dist/lix/new-lix.js +244 -60
  541. package/dist/lix/new-lix.js.map +1 -1
  542. package/dist/lix/new-lix.test.js +175 -1
  543. package/dist/lix/new-lix.test.js.map +1 -1
  544. package/dist/lix/open-lix-in-memory.d.ts +1 -9
  545. package/dist/lix/open-lix-in-memory.d.ts.map +1 -1
  546. package/dist/lix/open-lix-in-memory.js +7 -15
  547. package/dist/lix/open-lix-in-memory.js.map +1 -1
  548. package/dist/lix/open-lix-in-memory.test.js +2 -1
  549. package/dist/lix/open-lix-in-memory.test.js.map +1 -1
  550. package/dist/lix/open-lix.d.ts +12 -13
  551. package/dist/lix/open-lix.d.ts.map +1 -1
  552. package/dist/lix/open-lix.js +147 -55
  553. package/dist/lix/open-lix.js.map +1 -1
  554. package/dist/lix/open-lix.test.js +242 -3
  555. package/dist/lix/open-lix.test.js.map +1 -1
  556. package/dist/lix/storage/in-memory.d.ts +7 -6
  557. package/dist/lix/storage/in-memory.d.ts.map +1 -1
  558. package/dist/lix/storage/in-memory.js +10 -17
  559. package/dist/lix/storage/in-memory.js.map +1 -1
  560. package/dist/lix/storage/in-memory.test.js +7 -68
  561. package/dist/lix/storage/in-memory.test.js.map +1 -1
  562. package/dist/lix/storage/lix-storage-adapter.d.ts +35 -5
  563. package/dist/lix/storage/lix-storage-adapter.d.ts.map +1 -1
  564. package/dist/lix/storage/opfs.d.ts +39 -10
  565. package/dist/lix/storage/opfs.d.ts.map +1 -1
  566. package/dist/lix/storage/opfs.js +148 -37
  567. package/dist/lix/storage/opfs.js.map +1 -1
  568. package/dist/lix/storage/opfs.test.js +203 -24
  569. package/dist/lix/storage/opfs.test.js.map +1 -1
  570. package/dist/lix/to-blob.d.ts +2 -9
  571. package/dist/lix/to-blob.d.ts.map +1 -1
  572. package/dist/lix/to-blob.js +2 -9
  573. package/dist/lix/to-blob.js.map +1 -1
  574. package/dist/log/create-lix-own-log.d.ts +9 -1
  575. package/dist/log/create-lix-own-log.d.ts.map +1 -1
  576. package/dist/log/create-lix-own-log.js +14 -25
  577. package/dist/log/create-lix-own-log.js.map +1 -1
  578. package/dist/log/create-lix-own-log.test.js +9 -5
  579. package/dist/log/create-lix-own-log.test.js.map +1 -1
  580. package/dist/log/create-log.d.ts +2 -2
  581. package/dist/log/create-log.d.ts.map +1 -1
  582. package/dist/log/create-log.js +2 -2
  583. package/dist/log/create-log.js.map +1 -1
  584. package/dist/log/database-schema.d.ts +33 -0
  585. package/dist/log/database-schema.d.ts.map +1 -0
  586. package/dist/log/database-schema.js +14 -0
  587. package/dist/log/database-schema.js.map +1 -0
  588. package/dist/log/database-schema.test.d.ts +2 -0
  589. package/dist/log/database-schema.test.d.ts.map +1 -0
  590. package/dist/log/database-schema.test.js +22 -0
  591. package/dist/log/database-schema.test.js.map +1 -0
  592. package/dist/log/index.d.ts +1 -1
  593. package/dist/log/index.d.ts.map +1 -1
  594. package/dist/log/index.js.map +1 -1
  595. package/dist/log/schema.d.ts +3 -3
  596. package/dist/log/schema.d.ts.map +1 -1
  597. package/dist/log/schema.js +4 -5
  598. package/dist/log/schema.js.map +1 -1
  599. package/dist/observe/create-observe.d.ts.map +1 -1
  600. package/dist/observe/create-observe.js +32 -3
  601. package/dist/observe/create-observe.js.map +1 -1
  602. package/dist/observe/create-observe.test.js +298 -44
  603. package/dist/observe/create-observe.test.js.map +1 -1
  604. package/dist/observe/determine-schema-keys.d.ts +6 -0
  605. package/dist/observe/determine-schema-keys.d.ts.map +1 -0
  606. package/dist/observe/determine-schema-keys.js +145 -0
  607. package/dist/observe/determine-schema-keys.js.map +1 -0
  608. package/dist/observe/determine-schema-keys.test.d.ts +2 -0
  609. package/dist/observe/determine-schema-keys.test.d.ts.map +1 -0
  610. package/dist/observe/determine-schema-keys.test.js +266 -0
  611. package/dist/observe/determine-schema-keys.test.js.map +1 -0
  612. package/dist/own-change-control/apply-own-change.d.ts +5 -1
  613. package/dist/own-change-control/apply-own-change.d.ts.map +1 -1
  614. package/dist/own-change-control/apply-own-change.js +26 -12
  615. package/dist/own-change-control/apply-own-change.js.map +1 -1
  616. package/dist/own-change-control/apply-own-change.test.js +86 -48
  617. package/dist/own-change-control/apply-own-change.test.js.map +1 -1
  618. package/dist/own-change-control/change-controlled-tables.d.ts +5 -7
  619. package/dist/own-change-control/change-controlled-tables.d.ts.map +1 -1
  620. package/dist/own-change-control/change-controlled-tables.js +27 -21
  621. package/dist/own-change-control/change-controlled-tables.js.map +1 -1
  622. package/dist/own-change-control/change-controlled-tables.test.js +35 -5
  623. package/dist/own-change-control/change-controlled-tables.test.js.map +1 -1
  624. package/dist/own-change-control/database-triggers.d.ts +2 -1
  625. package/dist/own-change-control/database-triggers.d.ts.map +1 -1
  626. package/dist/own-change-control/database-triggers.js +209 -67
  627. package/dist/own-change-control/database-triggers.js.map +1 -1
  628. package/dist/own-change-control/database-triggers.test.js +139 -8
  629. package/dist/own-change-control/database-triggers.test.js.map +1 -1
  630. package/dist/own-change-control/with-skip-own-change-control.d.ts.map +1 -1
  631. package/dist/own-change-control/with-skip-own-change-control.js +28 -6
  632. package/dist/own-change-control/with-skip-own-change-control.js.map +1 -1
  633. package/dist/own-change-control/with-skip-own-change-control.test.js +38 -1
  634. package/dist/own-change-control/with-skip-own-change-control.test.js.map +1 -1
  635. package/dist/plugin/lix-plugin.d.ts +3 -3
  636. package/dist/plugin/lix-plugin.d.ts.map +1 -1
  637. package/dist/plugin/load-plugin.d.ts.map +1 -1
  638. package/dist/plugin/load-plugin.js.map +1 -1
  639. package/dist/prototype/database-schema.d.ts +43 -0
  640. package/dist/prototype/database-schema.d.ts.map +1 -0
  641. package/dist/prototype/database-schema.js +72 -0
  642. package/dist/prototype/database-schema.js.map +1 -0
  643. package/dist/prototype/file-handlers.d.ts +24 -0
  644. package/dist/prototype/file-handlers.d.ts.map +1 -0
  645. package/dist/prototype/file-handlers.js +129 -0
  646. package/dist/prototype/file-handlers.js.map +1 -0
  647. package/dist/prototype/file-schema.d.ts +47 -0
  648. package/dist/prototype/file-schema.d.ts.map +1 -0
  649. package/dist/prototype/file-schema.js +135 -0
  650. package/dist/prototype/file-schema.js.map +1 -0
  651. package/dist/prototype/file-schema.test.d.ts +2 -0
  652. package/dist/prototype/file-schema.test.d.ts.map +1 -0
  653. package/dist/prototype/file-schema.test.js +146 -0
  654. package/dist/prototype/file-schema.test.js.map +1 -0
  655. package/dist/prototype/get-and-materialize-row.d.ts +5 -0
  656. package/dist/prototype/get-and-materialize-row.d.ts.map +1 -0
  657. package/dist/prototype/get-and-materialize-row.js +99 -0
  658. package/dist/prototype/get-and-materialize-row.js.map +1 -0
  659. package/dist/prototype/json-plugin.d.ts +49 -0
  660. package/dist/prototype/json-plugin.d.ts.map +1 -0
  661. package/dist/prototype/json-plugin.js +104 -0
  662. package/dist/prototype/json-plugin.js.map +1 -0
  663. package/dist/prototype/validate-file-path.d.ts +16 -0
  664. package/dist/prototype/validate-file-path.d.ts.map +1 -0
  665. package/dist/prototype/validate-file-path.js +44 -0
  666. package/dist/prototype/validate-file-path.js.map +1 -0
  667. package/dist/prototype/validate-file-path.test.d.ts +2 -0
  668. package/dist/prototype/validate-file-path.test.d.ts.map +1 -0
  669. package/dist/prototype/validate-file-path.test.js +36 -0
  670. package/dist/prototype/validate-file-path.test.js.map +1 -0
  671. package/dist/prototype/version-schema.d.ts +34 -0
  672. package/dist/prototype/version-schema.d.ts.map +1 -0
  673. package/dist/prototype/version-schema.js +86 -0
  674. package/dist/prototype/version-schema.js.map +1 -0
  675. package/dist/prototype/version-schema.test.d.ts +2 -0
  676. package/dist/prototype/version-schema.test.d.ts.map +1 -0
  677. package/dist/prototype/version-schema.test.js +114 -0
  678. package/dist/prototype/version-schema.test.js.map +1 -0
  679. package/dist/query-filter/change-conflict-in-version.d.ts +2 -0
  680. package/dist/query-filter/change-conflict-in-version.d.ts.map +1 -1
  681. package/dist/query-filter/change-conflict-in-version.js +2 -0
  682. package/dist/query-filter/change-conflict-in-version.js.map +1 -1
  683. package/dist/query-filter/change-in-version.d.ts +2 -0
  684. package/dist/query-filter/change-in-version.d.ts.map +1 -1
  685. package/dist/query-filter/change-in-version.js +2 -0
  686. package/dist/query-filter/change-in-version.js.map +1 -1
  687. package/dist/query-filter/change-is-leaf-in-version.d.ts +1 -0
  688. package/dist/query-filter/change-is-leaf-in-version.d.ts.map +1 -1
  689. package/dist/query-filter/change-is-leaf-in-version.js +1 -0
  690. package/dist/query-filter/change-is-leaf-in-version.js.map +1 -1
  691. package/dist/query-filter/change-is-leaf-of.d.ts +2 -0
  692. package/dist/query-filter/change-is-leaf-of.d.ts.map +1 -1
  693. package/dist/query-filter/change-is-leaf-of.js +2 -0
  694. package/dist/query-filter/change-is-leaf-of.js.map +1 -1
  695. package/dist/query-filter/change-is-leaf-v2.d.ts +69 -0
  696. package/dist/query-filter/change-is-leaf-v2.d.ts.map +1 -0
  697. package/dist/query-filter/change-is-leaf-v2.js +116 -0
  698. package/dist/query-filter/change-is-leaf-v2.js.map +1 -0
  699. package/dist/query-filter/change-is-leaf-v2.test.d.ts +2 -0
  700. package/dist/query-filter/change-is-leaf-v2.test.d.ts.map +1 -0
  701. package/dist/query-filter/change-is-leaf-v2.test.js +237 -0
  702. package/dist/query-filter/change-is-leaf-v2.test.js.map +1 -0
  703. package/dist/query-filter/change-is-leaf.d.ts +2 -0
  704. package/dist/query-filter/change-is-leaf.d.ts.map +1 -1
  705. package/dist/query-filter/change-is-leaf.js +2 -0
  706. package/dist/query-filter/change-is-leaf.js.map +1 -1
  707. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts +2 -0
  708. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts.map +1 -1
  709. package/dist/query-filter/change-is-lowest-common-ancestor-of.js +4 -0
  710. package/dist/query-filter/change-is-lowest-common-ancestor-of.js.map +1 -1
  711. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js +5 -3
  712. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js.map +1 -1
  713. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts +10 -10
  714. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts.map +1 -1
  715. package/dist/query-filter/change-set-element-in-ancestry-of.js +22 -17
  716. package/dist/query-filter/change-set-element-in-ancestry-of.js.map +1 -1
  717. package/dist/query-filter/change-set-element-in-ancestry-of.test.js +99 -26
  718. package/dist/query-filter/change-set-element-in-ancestry-of.test.js.map +1 -1
  719. package/dist/query-filter/change-set-element-in-symmetric-difference-of.d.ts +21 -0
  720. package/dist/query-filter/change-set-element-in-symmetric-difference-of.d.ts.map +1 -0
  721. package/dist/query-filter/change-set-element-in-symmetric-difference-of.js +37 -0
  722. package/dist/query-filter/change-set-element-in-symmetric-difference-of.js.map +1 -0
  723. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.d.ts +2 -0
  724. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.d.ts.map +1 -0
  725. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.js +276 -0
  726. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.js.map +1 -0
  727. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts +2 -2
  728. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts.map +1 -1
  729. package/dist/query-filter/change-set-element-in-symmetric-difference.js.map +1 -1
  730. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js.map +1 -1
  731. package/dist/query-filter/change-set-element-is-leaf-of.d.ts +11 -11
  732. package/dist/query-filter/change-set-element-is-leaf-of.d.ts.map +1 -1
  733. package/dist/query-filter/change-set-element-is-leaf-of.js +58 -36
  734. package/dist/query-filter/change-set-element-is-leaf-of.js.map +1 -1
  735. package/dist/query-filter/change-set-element-is-leaf-of.test.js +83 -24
  736. package/dist/query-filter/change-set-element-is-leaf-of.test.js.map +1 -1
  737. package/dist/query-filter/change-set-is-ancestor-of.d.ts +2 -2
  738. package/dist/query-filter/change-set-is-ancestor-of.d.ts.map +1 -1
  739. package/dist/query-filter/change-set-is-ancestor-of.js.map +1 -1
  740. package/dist/query-filter/change-set-is-descendant-of.d.ts +2 -2
  741. package/dist/query-filter/change-set-is-descendant-of.d.ts.map +1 -1
  742. package/dist/query-filter/change-set-is-descendant-of.js.map +1 -1
  743. package/dist/query-filter/commit-is-ancestor-of.d.ts +51 -0
  744. package/dist/query-filter/commit-is-ancestor-of.d.ts.map +1 -0
  745. package/dist/query-filter/commit-is-ancestor-of.js +63 -0
  746. package/dist/query-filter/commit-is-ancestor-of.js.map +1 -0
  747. package/dist/query-filter/commit-is-ancestor-of.test.d.ts +2 -0
  748. package/dist/query-filter/commit-is-ancestor-of.test.d.ts.map +1 -0
  749. package/dist/query-filter/commit-is-ancestor-of.test.js +292 -0
  750. package/dist/query-filter/commit-is-ancestor-of.test.js.map +1 -0
  751. package/dist/query-filter/commit-is-descendant-of.d.ts +44 -0
  752. package/dist/query-filter/commit-is-descendant-of.d.ts.map +1 -0
  753. package/dist/query-filter/commit-is-descendant-of.js +56 -0
  754. package/dist/query-filter/commit-is-descendant-of.js.map +1 -0
  755. package/dist/query-filter/commit-is-descendant-of.test.d.ts +2 -0
  756. package/dist/query-filter/commit-is-descendant-of.test.d.ts.map +1 -0
  757. package/dist/query-filter/commit-is-descendant-of.test.js +325 -0
  758. package/dist/query-filter/commit-is-descendant-of.test.js.map +1 -0
  759. package/dist/query-filter/index.d.ts +2 -4
  760. package/dist/query-filter/index.d.ts.map +1 -1
  761. package/dist/query-filter/index.js +2 -4
  762. package/dist/query-filter/index.js.map +1 -1
  763. package/dist/query-filter/version-change-in-difference.d.ts +2 -0
  764. package/dist/query-filter/version-change-in-difference.d.ts.map +1 -1
  765. package/dist/query-filter/version-change-in-difference.js +2 -0
  766. package/dist/query-filter/version-change-in-difference.js.map +1 -1
  767. package/dist/query-filter/version-change-in-symmetric-difference.d.ts +2 -0
  768. package/dist/query-filter/version-change-in-symmetric-difference.d.ts.map +1 -1
  769. package/dist/query-filter/version-change-in-symmetric-difference.js +2 -0
  770. package/dist/query-filter/version-change-in-symmetric-difference.js.map +1 -1
  771. package/dist/schema-definition/definition.d.ts +73 -30
  772. package/dist/schema-definition/definition.d.ts.map +1 -1
  773. package/dist/schema-definition/definition.js +38 -14
  774. package/dist/schema-definition/definition.js.map +1 -1
  775. package/dist/schema-definition/definition.test.js +70 -25
  776. package/dist/schema-definition/definition.test.js.map +1 -1
  777. package/dist/schema-definition/validate-lix-schema.d.ts.map +1 -1
  778. package/dist/schema-definition/validate-lix-schema.js.map +1 -1
  779. package/dist/schema-definition/validate-lix-schema.test.js +1 -1
  780. package/dist/schema-definition/validate-lix-schema.test.js.map +1 -1
  781. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js +2 -2
  782. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js.map +1 -1
  783. package/dist/server-protocol-handler/routes/push-v1.test.js +1 -1
  784. package/dist/server-protocol-handler/routes/push-v1.test.js.map +1 -1
  785. package/dist/services/env-variables/index.js +1 -1
  786. package/dist/services/env-variables/index.js.map +1 -1
  787. package/dist/snapshot/create-snapshot.d.ts +2 -2
  788. package/dist/snapshot/create-snapshot.d.ts.map +1 -1
  789. package/dist/snapshot/create-snapshot.test.js +3 -3
  790. package/dist/snapshot/create-snapshot.test.js.map +1 -1
  791. package/dist/snapshot/database-schema.d.ts +19 -0
  792. package/dist/snapshot/database-schema.d.ts.map +1 -0
  793. package/dist/snapshot/database-schema.js +33 -0
  794. package/dist/snapshot/database-schema.js.map +1 -0
  795. package/dist/snapshot/database-schema.test.d.ts +2 -0
  796. package/dist/snapshot/database-schema.test.d.ts.map +1 -0
  797. package/dist/snapshot/database-schema.test.js +58 -0
  798. package/dist/snapshot/database-schema.test.js.map +1 -0
  799. package/dist/snapshot/schema.d.ts.map +1 -1
  800. package/dist/snapshot/schema.js +10 -2
  801. package/dist/snapshot/schema.js.map +1 -1
  802. package/dist/snapshot/schema.test.js +86 -0
  803. package/dist/snapshot/schema.test.js.map +1 -1
  804. package/dist/state/cache/clear-state-cache.d.ts +8 -0
  805. package/dist/state/cache/clear-state-cache.d.ts.map +1 -0
  806. package/dist/state/cache/clear-state-cache.js +14 -0
  807. package/dist/state/cache/clear-state-cache.js.map +1 -0
  808. package/dist/state/cache/clear-state-cache.test.d.ts +2 -0
  809. package/dist/state/cache/clear-state-cache.test.d.ts.map +1 -0
  810. package/dist/state/cache/clear-state-cache.test.js +34 -0
  811. package/dist/state/cache/clear-state-cache.test.js.map +1 -0
  812. package/dist/state/cache/is-stale-state-cache.d.ts +5 -0
  813. package/dist/state/cache/is-stale-state-cache.d.ts.map +1 -0
  814. package/dist/state/cache/is-stale-state-cache.js +22 -0
  815. package/dist/state/cache/is-stale-state-cache.js.map +1 -0
  816. package/dist/state/cache/is-stale-state-cache.test.d.ts +2 -0
  817. package/dist/state/cache/is-stale-state-cache.test.d.ts.map +1 -0
  818. package/dist/state/cache/is-stale-state-cache.test.js +27 -0
  819. package/dist/state/cache/is-stale-state-cache.test.js.map +1 -0
  820. package/dist/state/cache/mark-state-cache-as-stale.d.ts +10 -0
  821. package/dist/state/cache/mark-state-cache-as-stale.d.ts.map +1 -0
  822. package/dist/state/cache/mark-state-cache-as-stale.js +42 -0
  823. package/dist/state/cache/mark-state-cache-as-stale.js.map +1 -0
  824. package/dist/state/cache/populate-state-cache.d.ts +9 -0
  825. package/dist/state/cache/populate-state-cache.d.ts.map +1 -0
  826. package/dist/state/cache/populate-state-cache.js +106 -0
  827. package/dist/state/cache/populate-state-cache.js.map +1 -0
  828. package/dist/state/cache/populate-state-cache.test.d.ts +2 -0
  829. package/dist/state/cache/populate-state-cache.test.d.ts.map +1 -0
  830. package/dist/state/cache/populate-state-cache.test.js +204 -0
  831. package/dist/state/cache/populate-state-cache.test.js.map +1 -0
  832. package/dist/state/cache/schema.d.ts +20 -0
  833. package/dist/state/cache/schema.d.ts.map +1 -0
  834. package/dist/state/cache/schema.js +21 -0
  835. package/dist/state/cache/schema.js.map +1 -0
  836. package/dist/state/cache/update-state-cache.d.ts +21 -0
  837. package/dist/state/cache/update-state-cache.d.ts.map +1 -0
  838. package/dist/state/cache/update-state-cache.js +294 -0
  839. package/dist/state/cache/update-state-cache.js.map +1 -0
  840. package/dist/state/cache/update-state-cache.test.d.ts +2 -0
  841. package/dist/state/cache/update-state-cache.test.d.ts.map +1 -0
  842. package/dist/state/cache/update-state-cache.test.js +440 -0
  843. package/dist/state/cache/update-state-cache.test.js.map +1 -0
  844. package/dist/state/commit.d.ts +18 -0
  845. package/dist/state/commit.d.ts.map +1 -0
  846. package/dist/state/commit.js +457 -0
  847. package/dist/state/commit.js.map +1 -0
  848. package/dist/state/commit.test.d.ts +2 -0
  849. package/dist/state/commit.test.d.ts.map +1 -0
  850. package/dist/state/commit.test.js +1173 -0
  851. package/dist/state/commit.test.js.map +1 -0
  852. package/dist/state/get-version-record-by-id-or-throw.d.ts +2 -2
  853. package/dist/state/get-version-record-by-id-or-throw.d.ts.map +1 -1
  854. package/dist/state/get-version-record-by-id-or-throw.js.map +1 -1
  855. package/dist/state/handle-state-mutation.d.ts +0 -12
  856. package/dist/state/handle-state-mutation.d.ts.map +1 -1
  857. package/dist/state/handle-state-mutation.js +11 -206
  858. package/dist/state/handle-state-mutation.js.map +1 -1
  859. package/dist/state/handle-state-mutation.test.js +213 -159
  860. package/dist/state/handle-state-mutation.test.js.map +1 -1
  861. package/dist/state/insert-transaction-state.d.ts +71 -0
  862. package/dist/state/insert-transaction-state.d.ts.map +1 -0
  863. package/dist/state/insert-transaction-state.js +272 -0
  864. package/dist/state/insert-transaction-state.js.map +1 -0
  865. package/dist/state/insert-transaction-state.test.d.ts +2 -0
  866. package/dist/state/insert-transaction-state.test.d.ts.map +1 -0
  867. package/dist/state/insert-transaction-state.test.js +789 -0
  868. package/dist/state/insert-transaction-state.test.js.map +1 -0
  869. package/dist/state/materialize-state.d.ts +3 -0
  870. package/dist/state/materialize-state.d.ts.map +1 -0
  871. package/dist/state/materialize-state.js +230 -0
  872. package/dist/state/materialize-state.js.map +1 -0
  873. package/dist/state/materialize-state.test.d.ts +2 -0
  874. package/dist/state/materialize-state.test.d.ts.map +1 -0
  875. package/dist/state/materialize-state.test.js +1934 -0
  876. package/dist/state/materialize-state.test.js.map +1 -0
  877. package/dist/state/primary-key.d.ts +39 -0
  878. package/dist/state/primary-key.d.ts.map +1 -0
  879. package/dist/state/primary-key.js +62 -0
  880. package/dist/state/primary-key.js.map +1 -0
  881. package/dist/state/primary-key.test.d.ts +2 -0
  882. package/dist/state/primary-key.test.d.ts.map +1 -0
  883. package/dist/state/primary-key.test.js +114 -0
  884. package/dist/state/primary-key.test.js.map +1 -0
  885. package/dist/state/resolved-state-view.d.ts +33 -0
  886. package/dist/state/resolved-state-view.d.ts.map +1 -0
  887. package/dist/state/resolved-state-view.js +182 -0
  888. package/dist/state/resolved-state-view.js.map +1 -0
  889. package/dist/state/resolved-state-view.test.d.ts +2 -0
  890. package/dist/state/resolved-state-view.test.d.ts.map +1 -0
  891. package/dist/state/resolved-state-view.test.js +433 -0
  892. package/dist/state/resolved-state-view.test.js.map +1 -0
  893. package/dist/state/schema.d.ts +6 -19
  894. package/dist/state/schema.d.ts.map +1 -1
  895. package/dist/state/schema.js +533 -796
  896. package/dist/state/schema.js.map +1 -1
  897. package/dist/state/schema.test.js +1684 -1013
  898. package/dist/state/schema.test.js.map +1 -1
  899. package/dist/state/untracked/schema.d.ts +25 -0
  900. package/dist/state/untracked/schema.d.ts.map +1 -0
  901. package/dist/state/untracked/schema.js +38 -0
  902. package/dist/state/untracked/schema.js.map +1 -0
  903. package/dist/state/untracked/schema.test.d.ts +2 -0
  904. package/dist/state/untracked/schema.test.d.ts.map +1 -0
  905. package/dist/state/untracked/schema.test.js +275 -0
  906. package/dist/state/untracked/schema.test.js.map +1 -0
  907. package/dist/state/untracked/update-untracked-state.d.ts +36 -0
  908. package/dist/state/untracked/update-untracked-state.d.ts.map +1 -0
  909. package/dist/state/untracked/update-untracked-state.js +113 -0
  910. package/dist/state/untracked/update-untracked-state.js.map +1 -0
  911. package/dist/state/untracked/update-untracked-state.test.d.ts +2 -0
  912. package/dist/state/untracked/update-untracked-state.test.d.ts.map +1 -0
  913. package/dist/state/untracked/update-untracked-state.test.js +417 -0
  914. package/dist/state/untracked/update-untracked-state.test.js.map +1 -0
  915. package/dist/state/validate-snapshot-content.d.ts +9 -0
  916. package/dist/state/validate-snapshot-content.d.ts.map +1 -0
  917. package/dist/state/validate-snapshot-content.js +42 -0
  918. package/dist/state/validate-snapshot-content.js.map +1 -0
  919. package/dist/state/validate-snapshot-content.test.d.ts +2 -0
  920. package/dist/state/validate-snapshot-content.test.d.ts.map +1 -0
  921. package/dist/state/validate-snapshot-content.test.js +67 -0
  922. package/dist/state/validate-snapshot-content.test.js.map +1 -0
  923. package/dist/state/validate-state-mutation.d.ts +2 -2
  924. package/dist/state/validate-state-mutation.d.ts.map +1 -1
  925. package/dist/state/validate-state-mutation.js +211 -51
  926. package/dist/state/validate-state-mutation.js.map +1 -1
  927. package/dist/state/validate-state-mutation.test.js +910 -75
  928. package/dist/state/validate-state-mutation.test.js.map +1 -1
  929. package/dist/state-history/schema.d.ts +29 -19
  930. package/dist/state-history/schema.d.ts.map +1 -1
  931. package/dist/state-history/schema.js +49 -37
  932. package/dist/state-history/schema.js.map +1 -1
  933. package/dist/state-history/schema.test.js +221 -67
  934. package/dist/state-history/schema.test.js.map +1 -1
  935. package/dist/stored-schema/index.d.ts +1 -1
  936. package/dist/stored-schema/index.d.ts.map +1 -1
  937. package/dist/stored-schema/index.js +1 -1
  938. package/dist/stored-schema/index.js.map +1 -1
  939. package/dist/stored-schema/schema.d.ts +1 -1
  940. package/dist/stored-schema/schema.d.ts.map +1 -1
  941. package/dist/stored-schema/schema.test.js.map +1 -1
  942. package/dist/sync/push-to-server.test.js.map +1 -1
  943. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts +8 -0
  944. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts.map +1 -0
  945. package/dist/test-utilities/simulation-test/cache-miss-simulation.js +79 -0
  946. package/dist/test-utilities/simulation-test/cache-miss-simulation.js.map +1 -0
  947. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.d.ts +2 -0
  948. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.d.ts.map +1 -0
  949. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js +127 -0
  950. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js.map +1 -0
  951. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.d.ts +2 -0
  952. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.d.ts.map +1 -0
  953. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.js +2 -0
  954. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.js.map +1 -0
  955. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts +10 -0
  956. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts.map +1 -0
  957. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js +52 -0
  958. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js.map +1 -0
  959. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.d.ts +2 -0
  960. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.d.ts.map +1 -0
  961. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js +71 -0
  962. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js.map +1 -0
  963. package/dist/test-utilities/simulation-test/simulation-test.d.ts +82 -0
  964. package/dist/test-utilities/simulation-test/simulation-test.d.ts.map +1 -0
  965. package/dist/test-utilities/simulation-test/simulation-test.js +85 -0
  966. package/dist/test-utilities/simulation-test/simulation-test.js.map +1 -0
  967. package/dist/test-utilities/simulation-test/simulation-test.test.d.ts +2 -0
  968. package/dist/test-utilities/simulation-test/simulation-test.test.d.ts.map +1 -0
  969. package/dist/test-utilities/simulation-test/simulation-test.test.js +310 -0
  970. package/dist/test-utilities/simulation-test/simulation-test.test.js.map +1 -0
  971. package/dist/thread/comment-utils.d.ts +2 -0
  972. package/dist/thread/comment-utils.d.ts.map +1 -0
  973. package/dist/thread/comment-utils.js +2 -0
  974. package/dist/thread/comment-utils.js.map +1 -0
  975. package/dist/thread/comment.d.ts +24 -0
  976. package/dist/thread/comment.d.ts.map +1 -0
  977. package/dist/thread/comment.js +43 -0
  978. package/dist/thread/comment.js.map +1 -0
  979. package/dist/thread/create-thread-comment.d.ts +2 -2
  980. package/dist/thread/create-thread-comment.d.ts.map +1 -1
  981. package/dist/thread/create-thread-comment.js +20 -3
  982. package/dist/thread/create-thread-comment.js.map +1 -1
  983. package/dist/thread/create-thread-comment.test.js +49 -3
  984. package/dist/thread/create-thread-comment.test.js.map +1 -1
  985. package/dist/thread/create-thread.d.ts +18 -4
  986. package/dist/thread/create-thread.d.ts.map +1 -1
  987. package/dist/thread/create-thread.js +24 -3
  988. package/dist/thread/create-thread.js.map +1 -1
  989. package/dist/thread/create-thread.test.js +149 -0
  990. package/dist/thread/create-thread.test.js.map +1 -1
  991. package/dist/thread/database-schema.d.ts +20 -0
  992. package/dist/thread/database-schema.d.ts.map +1 -0
  993. package/dist/thread/database-schema.js +57 -0
  994. package/dist/thread/database-schema.js.map +1 -0
  995. package/dist/thread/database-schema.test.d.ts +2 -0
  996. package/dist/thread/database-schema.test.d.ts.map +1 -0
  997. package/dist/thread/database-schema.test.js +59 -0
  998. package/dist/thread/database-schema.test.js.map +1 -0
  999. package/dist/thread/index.d.ts +2 -1
  1000. package/dist/thread/index.d.ts.map +1 -1
  1001. package/dist/thread/schema.d.ts +13 -10
  1002. package/dist/thread/schema.d.ts.map +1 -1
  1003. package/dist/thread/schema.js +20 -14
  1004. package/dist/thread/schema.js.map +1 -1
  1005. package/dist/thread/schema.test.js +65 -0
  1006. package/dist/thread/schema.test.js.map +1 -1
  1007. package/dist/version/create-version.d.ts +14 -9
  1008. package/dist/version/create-version.d.ts.map +1 -1
  1009. package/dist/version/create-version.js +40 -12
  1010. package/dist/version/create-version.js.map +1 -1
  1011. package/dist/version/create-version.test.js +80 -25
  1012. package/dist/version/create-version.test.js.map +1 -1
  1013. package/dist/version/database-schema.d.ts +21 -0
  1014. package/dist/version/database-schema.d.ts.map +1 -0
  1015. package/dist/version/database-schema.js +169 -0
  1016. package/dist/version/database-schema.js.map +1 -0
  1017. package/dist/version/database-schema.test.d.ts +2 -0
  1018. package/dist/version/database-schema.test.d.ts.map +1 -0
  1019. package/dist/version/database-schema.test.js +625 -0
  1020. package/dist/version/database-schema.test.js.map +1 -0
  1021. package/dist/version/index.d.ts +1 -1
  1022. package/dist/version/index.d.ts.map +1 -1
  1023. package/dist/version/merge-version.d.ts +3 -0
  1024. package/dist/version/merge-version.d.ts.map +1 -1
  1025. package/dist/version/merge-version.js +3 -0
  1026. package/dist/version/merge-version.js.map +1 -1
  1027. package/dist/version/merge-version.test.js +10 -5
  1028. package/dist/version/merge-version.test.js.map +1 -1
  1029. package/dist/version/schema.d.ts +28 -23
  1030. package/dist/version/schema.d.ts.map +1 -1
  1031. package/dist/version/schema.js +42 -30
  1032. package/dist/version/schema.js.map +1 -1
  1033. package/dist/version/schema.test.js +311 -88
  1034. package/dist/version/schema.test.js.map +1 -1
  1035. package/dist/version/select-active-version.d.ts +7 -0
  1036. package/dist/version/select-active-version.d.ts.map +1 -0
  1037. package/dist/version/select-active-version.js +7 -0
  1038. package/dist/version/select-active-version.js.map +1 -0
  1039. package/dist/version/switch-version.d.ts +3 -3
  1040. package/dist/version/switch-version.d.ts.map +1 -1
  1041. package/dist/version/switch-version.js +1 -1
  1042. package/dist/version/switch-version.test.js +1 -1
  1043. package/dist/version/switch-version.test.js.map +1 -1
  1044. package/dist/version/update-changes-in-version.d.ts +2 -0
  1045. package/dist/version/update-changes-in-version.d.ts.map +1 -1
  1046. package/dist/version/update-changes-in-version.js +2 -0
  1047. package/dist/version/update-changes-in-version.js.map +1 -1
  1048. package/dist/version-v2/create-version.d.ts +18 -0
  1049. package/dist/version-v2/create-version.d.ts.map +1 -0
  1050. package/dist/version-v2/create-version.js +35 -0
  1051. package/dist/version-v2/create-version.js.map +1 -0
  1052. package/dist/version-v2/create-version.test.d.ts +2 -0
  1053. package/dist/version-v2/create-version.test.d.ts.map +1 -0
  1054. package/dist/version-v2/create-version.test.js +88 -0
  1055. package/dist/version-v2/create-version.test.js.map +1 -0
  1056. package/dist/version-v2/database-schema.d.ts +21 -0
  1057. package/dist/version-v2/database-schema.d.ts.map +1 -0
  1058. package/dist/version-v2/database-schema.js +169 -0
  1059. package/dist/version-v2/database-schema.js.map +1 -0
  1060. package/dist/version-v2/database-schema.test.d.ts +2 -0
  1061. package/dist/version-v2/database-schema.test.d.ts.map +1 -0
  1062. package/dist/version-v2/database-schema.test.js +625 -0
  1063. package/dist/version-v2/database-schema.test.js.map +1 -0
  1064. package/dist/version-v2/index.d.ts +2 -0
  1065. package/dist/version-v2/index.d.ts.map +1 -0
  1066. package/dist/version-v2/index.js +2 -0
  1067. package/dist/version-v2/index.js.map +1 -0
  1068. package/dist/version-v2/swich-version.d.ts +27 -0
  1069. package/dist/version-v2/swich-version.d.ts.map +1 -0
  1070. package/dist/version-v2/swich-version.js +46 -0
  1071. package/dist/version-v2/swich-version.js.map +1 -0
  1072. package/dist/version-v2/switch-version.d.ts +27 -0
  1073. package/dist/version-v2/switch-version.d.ts.map +1 -0
  1074. package/dist/version-v2/switch-version.js +91 -0
  1075. package/dist/version-v2/switch-version.js.map +1 -0
  1076. package/dist/version-v2/switch-version.test.d.ts +2 -0
  1077. package/dist/version-v2/switch-version.test.d.ts.map +1 -0
  1078. package/dist/version-v2/switch-version.test.js +110 -0
  1079. package/dist/version-v2/switch-version.test.js.map +1 -0
  1080. package/dist/version-v2/with-skip-update-working-change-set.d.ts +3 -0
  1081. package/dist/version-v2/with-skip-update-working-change-set.d.ts.map +1 -0
  1082. package/dist/version-v2/with-skip-update-working-change-set.js +50 -0
  1083. package/dist/version-v2/with-skip-update-working-change-set.js.map +1 -0
  1084. package/dist/version-v2/with-skip-update-working-change-set.test.d.ts +2 -0
  1085. package/dist/version-v2/with-skip-update-working-change-set.test.d.ts.map +1 -0
  1086. package/dist/version-v2/with-skip-update-working-change-set.test.js +49 -0
  1087. package/dist/version-v2/with-skip-update-working-change-set.test.js.map +1 -0
  1088. package/package.json +3 -3
  1089. package/src/account/create-account.ts +7 -7
  1090. package/src/account/index.ts +2 -2
  1091. package/src/account/schema.test.ts +99 -99
  1092. package/src/account/schema.ts +91 -35
  1093. package/src/account/switch-account.test.ts +4 -4
  1094. package/src/account/switch-account.ts +6 -6
  1095. package/src/change/index.ts +4 -1
  1096. package/src/change/schema.test.ts +38 -0
  1097. package/src/change/schema.ts +91 -11
  1098. package/src/change-author/index.ts +4 -1
  1099. package/src/change-author/schema.test.ts +306 -242
  1100. package/src/change-author/schema.ts +18 -12
  1101. package/src/change-proposal/create-change-proposal.ts +3 -3
  1102. package/src/change-proposal/database-schema.ts +1 -1
  1103. package/src/change-set/apply-change-set.test.ts +10 -7
  1104. package/src/change-set/apply-change-set.ts +44 -56
  1105. package/src/change-set/create-change-set.test.ts +0 -39
  1106. package/src/change-set/create-change-set.ts +9 -33
  1107. package/src/change-set/index.ts +3 -11
  1108. package/src/change-set/schema.test.ts +0 -310
  1109. package/src/change-set/schema.ts +43 -100
  1110. package/src/commit/apply-commit.test.ts +426 -0
  1111. package/src/commit/apply-commit.ts +74 -0
  1112. package/src/{change-set → commit}/create-checkpoint.test.ts +244 -26
  1113. package/src/commit/create-checkpoint.ts +140 -0
  1114. package/src/commit/create-commit.ts +80 -0
  1115. package/src/{change-set/create-merge-change-set.test.ts → commit/create-merge-commit.test.ts} +50 -19
  1116. package/src/{change-set/create-merge-change-set.ts → commit/create-merge-commit.ts} +55 -16
  1117. package/src/{change-set/create-transition-change-set.test.ts → commit/create-transition-commit.test.ts} +43 -32
  1118. package/src/{change-set/create-transition-change-set.ts → commit/create-transition-commit.ts} +60 -22
  1119. package/src/{change-set/create-undo-change-set.test.ts → commit/create-undo-commit.test.ts} +52 -23
  1120. package/src/{change-set/create-undo-change-set.ts → commit/create-undo-commit.ts} +59 -26
  1121. package/src/commit/index.ts +11 -0
  1122. package/src/commit/schema.test.ts +257 -0
  1123. package/src/commit/schema.ts +104 -0
  1124. package/src/database/index.ts +0 -2
  1125. package/src/database/init-db.ts +113 -45
  1126. package/src/database/kysely-plugin/json-column-plugin.test.ts +404 -0
  1127. package/src/database/kysely-plugin/json-column-plugin.ts +80 -15
  1128. package/src/database/nano-id.test.ts +3 -3
  1129. package/src/database/nano-id.ts +4 -1
  1130. package/src/database/schema.ts +26 -24
  1131. package/src/deterministic/generate-human-id.test.ts +154 -0
  1132. package/src/deterministic/generate-human-id.ts +94 -0
  1133. package/src/deterministic/index.ts +7 -0
  1134. package/src/deterministic/is-deterministic-mode.test.ts +133 -0
  1135. package/src/deterministic/is-deterministic-mode.ts +32 -0
  1136. package/src/deterministic/nano-id.test.ts +200 -0
  1137. package/src/deterministic/nano-id.ts +188 -0
  1138. package/src/deterministic/options.test.ts +157 -0
  1139. package/src/deterministic/options.ts +62 -0
  1140. package/src/deterministic/random.test.ts +293 -0
  1141. package/src/deterministic/random.ts +261 -0
  1142. package/src/deterministic/sequence.test.ts +93 -0
  1143. package/src/deterministic/sequence.ts +132 -0
  1144. package/src/deterministic/timestamp.test.ts +170 -0
  1145. package/src/deterministic/timestamp.ts +83 -0
  1146. package/src/deterministic/uuid-v7.test.ts +144 -0
  1147. package/src/deterministic/uuid-v7.ts +82 -0
  1148. package/src/entity/eb-entity.test.ts +687 -0
  1149. package/src/entity/eb-entity.ts +203 -0
  1150. package/src/entity/index.ts +12 -0
  1151. package/src/entity/label/create-entity-label.test.ts +316 -0
  1152. package/src/entity/label/create-entity-label.ts +113 -0
  1153. package/src/entity/label/schema.test.ts +692 -0
  1154. package/src/entity/label/schema.ts +55 -0
  1155. package/src/entity/schema.ts +22 -0
  1156. package/src/entity/thread/create-entity-thread.test.ts +282 -0
  1157. package/src/entity/thread/create-entity-thread.ts +134 -0
  1158. package/src/entity/thread/query-threads.test.ts +394 -0
  1159. package/src/entity/thread/schema.test.ts +170 -0
  1160. package/src/entity/thread/schema.ts +55 -0
  1161. package/src/entity-views/README.md +214 -0
  1162. package/src/entity-views/entity-state-all.test.ts +202 -0
  1163. package/src/entity-views/entity-state-all.ts +80 -11
  1164. package/src/entity-views/entity-state-history.test.ts +78 -16
  1165. package/src/entity-views/entity-state-history.ts +68 -19
  1166. package/src/entity-views/entity-state.test.ts +141 -1
  1167. package/src/entity-views/entity-state.ts +79 -10
  1168. package/src/entity-views/entity-view-builder.test.ts +6 -6
  1169. package/src/entity-views/types.ts +2 -2
  1170. package/src/file/file-handlers.test.ts +4 -4
  1171. package/src/file/file-handlers.ts +40 -0
  1172. package/src/file/materialize-file-data-at-commit.ts +157 -0
  1173. package/src/file/schema.test.ts +693 -37
  1174. package/src/file/schema.ts +183 -56
  1175. package/src/hooks/create-hooks.ts +7 -40
  1176. package/src/index.ts +3 -0
  1177. package/src/key-value/index.ts +1 -1
  1178. package/src/key-value/schema.test.ts +103 -2
  1179. package/src/key-value/schema.ts +66 -5
  1180. package/src/label/create-label.ts +7 -7
  1181. package/src/label/index.ts +1 -1
  1182. package/src/label/schema.ts +7 -10
  1183. package/src/lix/new-lix.test.ts +202 -2
  1184. package/src/lix/new-lix.ts +305 -81
  1185. package/src/lix/open-lix.test.ts +308 -5
  1186. package/src/lix/open-lix.ts +169 -68
  1187. package/src/lix/storage/in-memory.test.ts +9 -83
  1188. package/src/lix/storage/in-memory.ts +13 -18
  1189. package/src/lix/storage/lix-storage-adapter.ts +41 -5
  1190. package/src/lix/storage/opfs.test.ts +254 -31
  1191. package/src/lix/storage/opfs.ts +178 -40
  1192. package/src/log/create-lix-own-log.test.ts +11 -7
  1193. package/src/log/create-lix-own-log.ts +21 -32
  1194. package/src/log/create-log.ts +4 -4
  1195. package/src/log/index.ts +1 -1
  1196. package/src/log/schema.ts +6 -10
  1197. package/src/observe/create-observe.test.ts +395 -60
  1198. package/src/observe/create-observe.ts +41 -3
  1199. package/src/observe/determine-schema-keys.test.ts +371 -0
  1200. package/src/observe/determine-schema-keys.ts +165 -0
  1201. package/src/plugin/lix-plugin.ts +3 -3
  1202. package/src/query-filter/change-set-element-in-ancestry-of.test.ts +112 -26
  1203. package/src/query-filter/change-set-element-in-ancestry-of.ts +25 -20
  1204. package/src/query-filter/change-set-element-in-symmetric-difference.test.ts +6 -6
  1205. package/src/query-filter/change-set-element-in-symmetric-difference.ts +3 -3
  1206. package/src/query-filter/change-set-element-is-leaf-of.test.ts +83 -24
  1207. package/src/query-filter/change-set-element-is-leaf-of.ts +61 -39
  1208. package/src/query-filter/commit-is-ancestor-of.test.ts +333 -0
  1209. package/src/query-filter/commit-is-ancestor-of.ts +77 -0
  1210. package/src/query-filter/commit-is-descendant-of.test.ts +365 -0
  1211. package/src/query-filter/commit-is-descendant-of.ts +70 -0
  1212. package/src/query-filter/index.ts +2 -4
  1213. package/src/schema-definition/definition.test.ts +73 -25
  1214. package/src/schema-definition/definition.ts +87 -30
  1215. package/src/schema-definition/index.ts +1 -1
  1216. package/src/schema-definition/validate-lix-schema.test.ts +14 -5
  1217. package/src/schema-definition/validate-lix-schema.ts +9 -13
  1218. package/src/server-protocol-handler/environment/create-in-memory-environment.test.ts +2 -2
  1219. package/src/server-protocol-handler/routes/push-v1.test.ts +1 -1
  1220. package/src/snapshot/schema.test.ts +113 -0
  1221. package/src/snapshot/schema.ts +10 -2
  1222. package/src/state/README.md +95 -0
  1223. package/src/state/cache/clear-state-cache.test.ts +43 -0
  1224. package/src/state/cache/clear-state-cache.ts +16 -0
  1225. package/src/state/cache/is-stale-state-cache.test.ts +35 -0
  1226. package/src/state/cache/is-stale-state-cache.ts +29 -0
  1227. package/src/state/cache/mark-state-cache-as-stale.ts +53 -0
  1228. package/src/state/cache/populate-state-cache.test.ts +259 -0
  1229. package/src/state/cache/populate-state-cache.ts +124 -0
  1230. package/src/state/cache/schema.ts +41 -0
  1231. package/src/state/cache/update-state-cache.test.ts +510 -0
  1232. package/src/state/cache/update-state-cache.ts +317 -0
  1233. package/src/state/commit.test.ts +1402 -0
  1234. package/src/state/commit.ts +587 -0
  1235. package/src/state/insert-transaction-state.test.ts +928 -0
  1236. package/src/state/insert-transaction-state.ts +306 -0
  1237. package/src/state/materialize-state.test.ts +2358 -0
  1238. package/src/state/materialize-state.ts +235 -0
  1239. package/src/state/primary-key.test.ts +158 -0
  1240. package/src/state/primary-key.ts +80 -0
  1241. package/src/state/resolved-state-view.test.ts +521 -0
  1242. package/src/state/resolved-state-view.ts +202 -0
  1243. package/src/state/schema.test.ts +3116 -2272
  1244. package/src/state/schema.ts +614 -910
  1245. package/src/state/untracked/schema.test.ts +301 -0
  1246. package/src/state/untracked/schema.ts +55 -0
  1247. package/src/state/untracked/update-untracked-state.test.ts +466 -0
  1248. package/src/state/untracked/update-untracked-state.ts +133 -0
  1249. package/src/state/validate-state-mutation.test.ts +1032 -77
  1250. package/src/state/validate-state-mutation.ts +270 -68
  1251. package/src/state-history/schema.test.ts +246 -71
  1252. package/src/state-history/schema.ts +78 -55
  1253. package/src/stored-schema/index.ts +4 -1
  1254. package/src/stored-schema/schema.test.ts +7 -7
  1255. package/src/stored-schema/schema.ts +1 -1
  1256. package/src/sync/push-to-server.test.ts +6 -6
  1257. package/src/test-utilities/simulation-test/cache-miss-simulation.test.ts +162 -0
  1258. package/src/test-utilities/simulation-test/cache-miss-simulation.ts +99 -0
  1259. package/src/test-utilities/simulation-test/chaotic-timestamp-simulation.ts +0 -0
  1260. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.test.ts +88 -0
  1261. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.ts +69 -0
  1262. package/src/test-utilities/simulation-test/simulation-test.test.ts +400 -0
  1263. package/src/test-utilities/simulation-test/simulation-test.ts +176 -0
  1264. package/src/thread/create-thread-comment.test.ts +62 -3
  1265. package/src/thread/create-thread-comment.ts +34 -6
  1266. package/src/thread/create-thread.test.ts +180 -0
  1267. package/src/thread/create-thread.ts +32 -7
  1268. package/src/thread/index.ts +3 -2
  1269. package/src/thread/schema.test.ts +81 -0
  1270. package/src/thread/schema.ts +24 -19
  1271. package/src/version/create-version.test.ts +92 -26
  1272. package/src/version/create-version.ts +49 -19
  1273. package/src/version/index.ts +2 -2
  1274. package/src/version/schema.test.ts +328 -92
  1275. package/src/version/schema.ts +47 -33
  1276. package/src/version/select-active-version.ts +18 -0
  1277. package/src/version/switch-version.test.ts +1 -1
  1278. package/src/version/switch-version.ts +3 -3
  1279. package/dist/entity-views/entity-state_history.d.ts +0 -67
  1280. package/dist/entity-views/entity-state_history.d.ts.map +0 -1
  1281. package/dist/entity-views/entity-state_history.js +0 -58
  1282. package/dist/entity-views/entity-state_history.js.map +0 -1
  1283. package/dist/entity-views/generic-types.d.ts +0 -128
  1284. package/dist/entity-views/generic-types.d.ts.map +0 -1
  1285. package/dist/entity-views/generic-types.js +0 -2
  1286. package/dist/entity-views/generic-types.js.map +0 -1
  1287. package/dist/entity-views/generic-types.test.d.ts +0 -2
  1288. package/dist/entity-views/generic-types.test.d.ts.map +0 -1
  1289. package/dist/entity-views/generic-types.test.js +0 -99
  1290. package/dist/entity-views/generic-types.test.js.map +0 -1
  1291. package/dist/lix/to-blob.test.d.ts +0 -2
  1292. package/dist/lix/to-blob.test.d.ts.map +0 -1
  1293. package/dist/lix/to-blob.test.js +0 -18
  1294. package/dist/lix/to-blob.test.js.map +0 -1
  1295. package/dist/repository/comparison-example.js +0 -173
  1296. package/dist/repository/comparison-example.js.map +0 -1
  1297. package/dist/repository/entity-repository.d.ts +0 -53
  1298. package/dist/repository/entity-repository.d.ts.map +0 -1
  1299. package/dist/repository/entity-repository.js +0 -187
  1300. package/dist/repository/entity-repository.js.map +0 -1
  1301. package/dist/repository/entity-repository.test.d.ts +0 -2
  1302. package/dist/repository/entity-repository.test.d.ts.map +0 -1
  1303. package/dist/repository/entity-repository.test.js +0 -94
  1304. package/dist/repository/entity-repository.test.js.map +0 -1
  1305. package/dist/repository/example.d.ts +0 -6
  1306. package/dist/repository/example.d.ts.map +0 -1
  1307. package/dist/repository/example.js +0 -87
  1308. package/dist/repository/example.js.map +0 -1
  1309. package/dist/repository/file-repository.d.ts +0 -39
  1310. package/dist/repository/file-repository.d.ts.map +0 -1
  1311. package/dist/repository/file-repository.js +0 -93
  1312. package/dist/repository/file-repository.js.map +0 -1
  1313. package/dist/repository/file-repository.test.d.ts +0 -2
  1314. package/dist/repository/file-repository.test.d.ts.map +0 -1
  1315. package/dist/repository/file-repository.test.js +0 -165
  1316. package/dist/repository/file-repository.test.js.map +0 -1
  1317. package/dist/repository/index.d.ts +0 -6
  1318. package/dist/repository/index.d.ts.map +0 -1
  1319. package/dist/repository/index.js +0 -6
  1320. package/dist/repository/index.js.map +0 -1
  1321. package/dist/repository/integration.test.d.ts +0 -2
  1322. package/dist/repository/integration.test.d.ts.map +0 -1
  1323. package/dist/repository/integration.test.js +0 -136
  1324. package/dist/repository/integration.test.js.map +0 -1
  1325. package/dist/repository/key-value-repository.d.ts +0 -30
  1326. package/dist/repository/key-value-repository.d.ts.map +0 -1
  1327. package/dist/repository/key-value-repository.js +0 -60
  1328. package/dist/repository/key-value-repository.js.map +0 -1
  1329. package/dist/repository/key-value-repository.test.d.ts +0 -2
  1330. package/dist/repository/key-value-repository.test.d.ts.map +0 -1
  1331. package/dist/repository/key-value-repository.test.js +0 -122
  1332. package/dist/repository/key-value-repository.test.js.map +0 -1
  1333. package/dist/repository/markdown-plugin-example.js +0 -118
  1334. package/dist/repository/markdown-plugin-example.js.map +0 -1
  1335. package/dist/repository/query-builder.d.ts +0 -69
  1336. package/dist/repository/query-builder.d.ts.map +0 -1
  1337. package/dist/repository/query-builder.js +0 -155
  1338. package/dist/repository/query-builder.js.map +0 -1
  1339. package/dist/repository/query-builder.test.d.ts +0 -2
  1340. package/dist/repository/query-builder.test.d.ts.map +0 -1
  1341. package/dist/repository/query-builder.test.js +0 -244
  1342. package/dist/repository/query-builder.test.js.map +0 -1
  1343. package/dist/repository/repository-manager.d.ts +0 -27
  1344. package/dist/repository/repository-manager.d.ts.map +0 -1
  1345. package/dist/repository/repository-manager.js +0 -19
  1346. package/dist/repository/repository-manager.js.map +0 -1
  1347. package/dist/repository/repository-manager.test.d.ts +0 -2
  1348. package/dist/repository/repository-manager.test.d.ts.map +0 -1
  1349. package/dist/repository/repository-manager.test.js +0 -65
  1350. package/dist/repository/repository-manager.test.js.map +0 -1
  1351. package/dist/repository/test-helpers.js +0 -402
  1352. package/dist/repository/test-helpers.js.map +0 -1
  1353. package/dist/schema-definition/lix-generated.test.d.ts +0 -2
  1354. package/dist/schema-definition/lix-generated.test.d.ts.map +0 -1
  1355. package/dist/schema-definition/lix-generated.test.js +0 -127
  1356. package/dist/schema-definition/lix-generated.test.js.map +0 -1
  1357. package/dist/state/entity-view-builder.d.ts +0 -145
  1358. package/dist/state/entity-view-builder.d.ts.map +0 -1
  1359. package/dist/state/entity-view-builder.js +0 -280
  1360. package/dist/state/entity-view-builder.js.map +0 -1
  1361. package/dist/state/entity-view-builder.test.d.ts +0 -2
  1362. package/dist/state/entity-view-builder.test.d.ts.map +0 -1
  1363. package/dist/state/entity-view-builder.test.js +0 -523
  1364. package/dist/state/entity-view-builder.test.js.map +0 -1
  1365. package/src/change-set/create-checkpoint.ts +0 -101
  1366. package/src/file/materialize-file-data-at-changeset.ts +0 -123
  1367. package/src/query-filter/change-has-label.test.ts +0 -79
  1368. package/src/query-filter/change-has-label.ts +0 -45
  1369. package/src/query-filter/change-set-has-label.test.ts +0 -42
  1370. package/src/query-filter/change-set-has-label.ts +0 -50
  1371. package/src/query-filter/change-set-is-ancestor-of.test.ts +0 -178
  1372. package/src/query-filter/change-set-is-ancestor-of.ts +0 -77
  1373. package/src/query-filter/change-set-is-descendant-of.test.ts +0 -169
  1374. package/src/query-filter/change-set-is-descendant-of.ts +0 -70
  1375. package/src/state/create-changeset-for-transaction.ts +0 -321
  1376. package/src/state/get-version-record-by-id-or-throw.ts +0 -51
  1377. package/src/state/handle-state-mutation.test.ts +0 -761
  1378. package/src/state/handle-state-mutation.ts +0 -418
@@ -0,0 +1,1402 @@
1
+ import { test, expect, describe } from "vitest";
2
+ import type { Kysely } from "kysely";
3
+ import type { LixInternalDatabaseSchema } from "../database/schema.js";
4
+ import type { LixCommitEdge } from "../commit/schema.js";
5
+ import { insertTransactionState } from "./insert-transaction-state.js";
6
+ import { commit } from "./commit.js";
7
+ import { openLix } from "../lix/open-lix.js";
8
+ import { nanoId, uuidV7 } from "../deterministic/index.js";
9
+ import { switchAccount } from "../account/switch-account.js";
10
+ import { commitIsAncestorOf } from "../query-filter/commit-is-ancestor-of.js";
11
+
12
+ test("commit should include meta changes (changeset, edges, version updates) in the change table", async () => {
13
+ const lix = await openLix({
14
+ account: { id: "test-account", name: "Test User" },
15
+ keyValues: [{ key: "lix_deterministic_mode", value: { enabled: true } }],
16
+ });
17
+ const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
18
+
19
+ // 1. Get the active version (should be 'global')
20
+ const activeVersions = await db
21
+ .selectFrom("active_version")
22
+ .selectAll()
23
+ .execute();
24
+
25
+ expect(activeVersions.length).toBe(1);
26
+ const activeVersion = activeVersions[0];
27
+ expect(activeVersion).toBeDefined();
28
+ const versionId = activeVersion!.version_id;
29
+
30
+ // Get the previous change set for this version
31
+ const versionBefore = await db
32
+ .selectFrom("version")
33
+ .where("id", "=", versionId)
34
+ .selectAll()
35
+ .executeTakeFirstOrThrow();
36
+ const previousCommitId = versionBefore.commit_id;
37
+
38
+ // 2. Insert transaction state
39
+ insertTransactionState({
40
+ lix: { sqlite: lix.sqlite, db },
41
+ data: {
42
+ entity_id: "test-entity-1",
43
+ schema_key: "lix_key_value",
44
+ file_id: "lix",
45
+ plugin_key: "lix_own_entity",
46
+ snapshot_content: JSON.stringify({
47
+ key: "test-key-1",
48
+ value: "test-value-1",
49
+ }),
50
+ schema_version: "1.0",
51
+ version_id: versionId,
52
+ untracked: false,
53
+ },
54
+ });
55
+
56
+ insertTransactionState({
57
+ lix: { sqlite: lix.sqlite, db },
58
+ data: {
59
+ entity_id: "test-entity-2",
60
+ schema_key: "lix_key_value",
61
+ file_id: "lix",
62
+ plugin_key: "lix_own_entity",
63
+ snapshot_content: JSON.stringify({
64
+ key: "test-key-2",
65
+ value: "test-value-2",
66
+ }),
67
+ schema_version: "1.0",
68
+ version_id: versionId,
69
+ untracked: false,
70
+ },
71
+ });
72
+
73
+ // 3. Commit
74
+ commit({ lix });
75
+
76
+ // 4. Expect the commit of the active version to have one edge to the previous one
77
+ const versionAfter = await db
78
+ .selectFrom("version")
79
+ .where("id", "=", versionId)
80
+ .selectAll()
81
+ .executeTakeFirstOrThrow();
82
+
83
+ const newCommitId = versionAfter.commit_id;
84
+ expect(newCommitId).not.toBe(previousCommitId);
85
+
86
+ // Check edges - should have exactly one edge from previous to new
87
+ const edges = await db
88
+ .selectFrom("commit_edge")
89
+ .where("parent_id", "=", previousCommitId)
90
+ .where("child_id", "=", newCommitId)
91
+ .selectAll()
92
+ .execute();
93
+
94
+ expect(edges.length).toBe(1);
95
+
96
+ // Get the change set ID from the commit
97
+ const newCommit = await db
98
+ .selectFrom("commit")
99
+ .where("id", "=", newCommitId)
100
+ .selectAll()
101
+ .executeTakeFirstOrThrow();
102
+
103
+ const newChangeSetId = newCommit.change_set_id;
104
+
105
+ // 5. Directly expect on the elements in this new set to contain the expected changes
106
+ const changeSetElements = await db
107
+ .selectFrom("change_set_element")
108
+ .where("change_set_id", "=", newChangeSetId)
109
+ .selectAll()
110
+ .execute();
111
+
112
+ // We expect exactly these elements:
113
+ // - 2 user data changes (test-entity-1, test-entity-2)
114
+ // - 2 change authors (one for each user data change)
115
+ // - 1 changeset creation
116
+ // - 1 commit creation
117
+ // - 1 commit edge creation
118
+ // - 1 version update
119
+ // Total: 8 elements
120
+ expect(changeSetElements.length).toBe(8);
121
+
122
+ // Verify the specific changes are in the change set
123
+ const elementChangeIds = changeSetElements.map((e) => e.change_id);
124
+
125
+ // Get the actual changes to verify content
126
+ const changes = await db
127
+ .selectFrom("change")
128
+ .where("id", "in", elementChangeIds)
129
+ .selectAll()
130
+ .execute();
131
+
132
+ // Group by schema_key for easier verification
133
+ const changesBySchema = changes.reduce(
134
+ (acc, change) => {
135
+ if (!acc[change.schema_key]) {
136
+ acc[change.schema_key] = [];
137
+ }
138
+ acc[change.schema_key]!.push(change);
139
+ return acc;
140
+ },
141
+ {} as Record<string, typeof changes>
142
+ );
143
+
144
+ // Verify we have the expected types of changes
145
+ expect(changesBySchema["lix_key_value"]?.length).toBe(2); // Our test data
146
+ expect(changesBySchema["lix_change_author"]?.length).toBe(2); // Change authors for test data
147
+ expect(changesBySchema["lix_change_set"]?.length).toBe(1); // The new changeset
148
+ expect(changesBySchema["lix_commit"]?.length).toBe(1); // The new commit
149
+ expect(changesBySchema["lix_commit_edge"]?.length).toBe(1); // The commit edge
150
+ expect(changesBySchema["lix_version"]?.length).toBe(1); // Version update
151
+
152
+ // Verify the test entities are included
153
+ const keyValueChanges = changesBySchema["lix_key_value"] || [];
154
+ const keyValueEntities = keyValueChanges.map((c) => c.entity_id);
155
+ expect(keyValueEntities).toContain("test-entity-1");
156
+ expect(keyValueEntities).toContain("test-entity-2");
157
+
158
+ // Verify change authors were created for user data changes
159
+ const changeAuthors = changesBySchema["lix_change_author"] || [];
160
+ expect(changeAuthors.length).toBe(2);
161
+
162
+ // Change author entity IDs should reference the user data change IDs
163
+ const userDataChangeIds = keyValueChanges.map((c) => c.id);
164
+ for (const author of changeAuthors) {
165
+ // Entity ID format for change authors is "changeId~accountId"
166
+ const changeId = author.entity_id.split("~")[0];
167
+ expect(userDataChangeIds).toContain(changeId);
168
+ }
169
+ });
170
+
171
+ test("commit with no changes should not create a change set", async () => {
172
+ const lix = await openLix({
173
+ keyValues: [{ key: "lix_deterministic_mode", value: { enabled: true } }],
174
+ });
175
+ const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
176
+
177
+ // Get initial state
178
+ const changesBeforeCommit = await db
179
+ .selectFrom("change")
180
+ .selectAll()
181
+ .execute();
182
+
183
+ const changeSetsBeforeCommit = await db
184
+ .selectFrom("change_set")
185
+ .selectAll()
186
+ .execute();
187
+
188
+ // Commit with no changes
189
+ commit({ lix });
190
+
191
+ // Should have same number of changes and change sets
192
+ const changesAfterCommit = await db
193
+ .selectFrom("change")
194
+ .selectAll()
195
+ .execute();
196
+
197
+ const changeSetsAfterCommit = await db
198
+ .selectFrom("change_set")
199
+ .selectAll()
200
+ .execute();
201
+
202
+ expect(changesAfterCommit.length).toBe(changesBeforeCommit.length);
203
+ expect(changeSetsAfterCommit.length).toBe(changeSetsBeforeCommit.length);
204
+ });
205
+
206
+ test("commit should handle multiple versions correctly", async () => {
207
+ const lix = await openLix({
208
+ keyValues: [{ key: "lix_deterministic_mode", value: { enabled: true } }],
209
+ });
210
+ const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
211
+
212
+ // Create version A with dynamic IDs
213
+ const versionAId = nanoId({ lix });
214
+ const versionACommitId = uuidV7({ lix });
215
+ const versionAChangeSetId = nanoId({ lix });
216
+ const versionAWorkingChangeSetId = nanoId({ lix });
217
+ const versionAWorkingCommitId = uuidV7({ lix });
218
+
219
+ // Create version B with dynamic IDs
220
+ const versionBId = nanoId({ lix });
221
+ const versionBCommitId = uuidV7({ lix });
222
+ const versionBChangeSetId = nanoId({ lix });
223
+ const versionBWorkingChangeSetId = nanoId({ lix });
224
+ const versionBWorkingCommitId = uuidV7({ lix });
225
+
226
+ // Create change sets for versions
227
+ insertTransactionState({
228
+ lix: { sqlite: lix.sqlite, db },
229
+ data: {
230
+ entity_id: versionAChangeSetId,
231
+ schema_key: "lix_change_set",
232
+ file_id: "lix",
233
+ plugin_key: "lix_own_entity",
234
+ snapshot_content: JSON.stringify({
235
+ id: versionAChangeSetId,
236
+ }),
237
+ schema_version: "1.0",
238
+ version_id: "global",
239
+ untracked: false,
240
+ },
241
+ });
242
+
243
+ insertTransactionState({
244
+ lix: { sqlite: lix.sqlite, db },
245
+ data: {
246
+ entity_id: versionAWorkingChangeSetId,
247
+ schema_key: "lix_change_set",
248
+ file_id: "lix",
249
+ plugin_key: "lix_own_entity",
250
+ snapshot_content: JSON.stringify({
251
+ id: versionAWorkingChangeSetId,
252
+ }),
253
+ schema_version: "1.0",
254
+ version_id: "global",
255
+ untracked: false,
256
+ },
257
+ });
258
+
259
+ insertTransactionState({
260
+ lix: { sqlite: lix.sqlite, db },
261
+ data: {
262
+ entity_id: versionBChangeSetId,
263
+ schema_key: "lix_change_set",
264
+ file_id: "lix",
265
+ plugin_key: "lix_own_entity",
266
+ snapshot_content: JSON.stringify({
267
+ id: versionBChangeSetId,
268
+ }),
269
+ schema_version: "1.0",
270
+ version_id: "global",
271
+ untracked: false,
272
+ },
273
+ });
274
+
275
+ insertTransactionState({
276
+ lix: { sqlite: lix.sqlite, db },
277
+ data: {
278
+ entity_id: versionBWorkingChangeSetId,
279
+ schema_key: "lix_change_set",
280
+ file_id: "lix",
281
+ plugin_key: "lix_own_entity",
282
+ snapshot_content: JSON.stringify({
283
+ id: versionBWorkingChangeSetId,
284
+ }),
285
+ schema_version: "1.0",
286
+ version_id: "global",
287
+ untracked: false,
288
+ },
289
+ });
290
+
291
+ // Create commits for version A
292
+ insertTransactionState({
293
+ lix: { sqlite: lix.sqlite, db },
294
+ data: {
295
+ entity_id: versionACommitId,
296
+ schema_key: "lix_commit",
297
+ file_id: "lix",
298
+ plugin_key: "lix_own_entity",
299
+ snapshot_content: JSON.stringify({
300
+ id: versionACommitId,
301
+ change_set_id: versionAChangeSetId,
302
+ }),
303
+ schema_version: "1.0",
304
+ version_id: "global",
305
+ untracked: false,
306
+ },
307
+ });
308
+
309
+ insertTransactionState({
310
+ lix: { sqlite: lix.sqlite, db },
311
+ data: {
312
+ entity_id: versionAWorkingCommitId,
313
+ schema_key: "lix_commit",
314
+ file_id: "lix",
315
+ plugin_key: "lix_own_entity",
316
+ snapshot_content: JSON.stringify({
317
+ id: versionAWorkingCommitId,
318
+ change_set_id: versionAWorkingChangeSetId,
319
+ }),
320
+ schema_version: "1.0",
321
+ version_id: "global",
322
+ untracked: false,
323
+ },
324
+ });
325
+
326
+ // Create version A
327
+ insertTransactionState({
328
+ lix: { sqlite: lix.sqlite, db },
329
+ data: {
330
+ entity_id: versionAId,
331
+ schema_key: "lix_version",
332
+ file_id: "lix",
333
+ plugin_key: "lix_own_entity",
334
+ snapshot_content: JSON.stringify({
335
+ id: versionAId,
336
+ name: "version A",
337
+ commit_id: versionACommitId,
338
+ working_commit_id: versionAWorkingCommitId,
339
+ }),
340
+ schema_version: "1.0",
341
+ version_id: "global",
342
+ untracked: false,
343
+ },
344
+ });
345
+
346
+ // Create commits for version B
347
+ insertTransactionState({
348
+ lix: { sqlite: lix.sqlite, db },
349
+ data: {
350
+ entity_id: versionBCommitId,
351
+ schema_key: "lix_commit",
352
+ file_id: "lix",
353
+ plugin_key: "lix_own_entity",
354
+ snapshot_content: JSON.stringify({
355
+ id: versionBCommitId,
356
+ change_set_id: versionBChangeSetId,
357
+ }),
358
+ schema_version: "1.0",
359
+ version_id: "global",
360
+ untracked: false,
361
+ },
362
+ });
363
+
364
+ insertTransactionState({
365
+ lix: { sqlite: lix.sqlite, db },
366
+ data: {
367
+ entity_id: versionBWorkingCommitId,
368
+ schema_key: "lix_commit",
369
+ file_id: "lix",
370
+ plugin_key: "lix_own_entity",
371
+ snapshot_content: JSON.stringify({
372
+ id: versionBWorkingCommitId,
373
+ change_set_id: versionBWorkingChangeSetId,
374
+ }),
375
+ schema_version: "1.0",
376
+ version_id: "global",
377
+ untracked: false,
378
+ },
379
+ });
380
+
381
+ // Create version B
382
+ insertTransactionState({
383
+ lix: { sqlite: lix.sqlite, db },
384
+ data: {
385
+ entity_id: versionBId,
386
+ schema_key: "lix_version",
387
+ file_id: "lix",
388
+ plugin_key: "lix_own_entity",
389
+ snapshot_content: JSON.stringify({
390
+ id: versionBId,
391
+ name: "version B",
392
+ commit_id: versionBCommitId,
393
+ working_commit_id: versionBWorkingCommitId,
394
+ }),
395
+ schema_version: "1.0",
396
+ version_id: "global",
397
+ untracked: false,
398
+ },
399
+ });
400
+
401
+ // Insert entity for version A
402
+ insertTransactionState({
403
+ lix: { sqlite: lix.sqlite, db },
404
+ data: {
405
+ entity_id: "version-a-entity",
406
+ schema_key: "lix_key_value",
407
+ file_id: "lix",
408
+ plugin_key: "lix_own_entity",
409
+ snapshot_content: JSON.stringify({
410
+ key: "version-a-key",
411
+ value: "version-a-value",
412
+ }),
413
+ schema_version: "1.0",
414
+ version_id: versionAId,
415
+ untracked: false,
416
+ },
417
+ });
418
+
419
+ // Insert entity for version B
420
+ insertTransactionState({
421
+ lix: { sqlite: lix.sqlite, db },
422
+ data: {
423
+ entity_id: "version-b-entity",
424
+ schema_key: "lix_key_value",
425
+ file_id: "lix",
426
+ plugin_key: "lix_own_entity",
427
+ snapshot_content: JSON.stringify({
428
+ key: "version-b-key",
429
+ value: "version-b-value",
430
+ }),
431
+ schema_version: "1.0",
432
+ version_id: versionBId,
433
+ untracked: false,
434
+ },
435
+ });
436
+
437
+ // Commit
438
+ commit({ lix });
439
+
440
+ // Test what matters: the versions should be properly created and working
441
+ // Version A should exist
442
+ const versionA = await db
443
+ .selectFrom("version")
444
+ .where("id", "=", versionAId)
445
+ .selectAll()
446
+ .executeTakeFirst();
447
+
448
+ expect(versionA).toBeDefined();
449
+ expect(versionA?.id).toBe(versionAId);
450
+ // After commit, the commit_id will be updated to the new commit containing changes
451
+ expect(versionA?.commit_id).toBeDefined();
452
+ expect(versionA?.working_commit_id).toBeDefined();
453
+
454
+ // Version B should exist
455
+ const versionB = await db
456
+ .selectFrom("version")
457
+ .where("id", "=", versionBId)
458
+ .selectAll()
459
+ .executeTakeFirst();
460
+
461
+ expect(versionB).toBeDefined();
462
+ expect(versionB?.id).toBe(versionBId);
463
+ // After commit, the commit_id will be updated to the new commit containing changes
464
+ expect(versionB?.commit_id).toBeDefined();
465
+ expect(versionB?.working_commit_id).toBeDefined();
466
+
467
+ // The test entities should exist in their respective versions
468
+ const versionAEntity = await db
469
+ .selectFrom("state_all")
470
+ .where("entity_id", "=", "version-a-entity")
471
+ .where("version_id", "=", versionAId)
472
+ .selectAll()
473
+ .executeTakeFirst();
474
+
475
+ expect(versionAEntity).toBeDefined();
476
+
477
+ const versionBEntity = await db
478
+ .selectFrom("state_all")
479
+ .where("entity_id", "=", "version-b-entity")
480
+ .where("version_id", "=", versionBId)
481
+ .selectAll()
482
+ .executeTakeFirst();
483
+
484
+ expect(versionBEntity).toBeDefined();
485
+
486
+ // Verify version updates
487
+ const versionChanges = await db
488
+ .selectFrom("change")
489
+ .selectAll()
490
+ .where("schema_key", "=", "lix_version")
491
+ .orderBy("created_at", "desc")
492
+ .execute();
493
+
494
+ // Should have version updates for all three versions (global, A, B)
495
+ const updatedVersionIds = versionChanges.map((c) => c.entity_id);
496
+ expect(updatedVersionIds).toContain("global");
497
+ expect(updatedVersionIds).toContain(versionAId);
498
+ expect(updatedVersionIds).toContain(versionBId);
499
+ });
500
+
501
+ describe("onStateCommit", () => {
502
+ test("fires when inserting data", async () => {
503
+ const lix = await openLix({});
504
+
505
+ // Register hook
506
+ let hookCallCount = 0;
507
+ const unsubscribe = lix.hooks.onStateCommit(() => {
508
+ hookCallCount++;
509
+ });
510
+
511
+ // Execute an INSERT
512
+ await lix.db
513
+ .insertInto("key_value")
514
+ .values({ key: "test", value: "value" })
515
+ .execute();
516
+
517
+ // Hook should fire once for the commit
518
+ expect(hookCallCount).toBe(1);
519
+
520
+ unsubscribe();
521
+ });
522
+
523
+ test("fires when updating data", async () => {
524
+ const lix = await openLix({});
525
+
526
+ // Insert initial data
527
+ await lix.db
528
+ .insertInto("key_value")
529
+ .values({ key: "test", value: "initial" })
530
+ .execute();
531
+
532
+ // Register hook after initial data
533
+ let hookCallCount = 0;
534
+ const unsubscribe = lix.hooks.onStateCommit(() => {
535
+ hookCallCount++;
536
+ });
537
+
538
+ // Execute an UPDATE
539
+ await lix.db
540
+ .updateTable("key_value")
541
+ .set({ value: "updated" })
542
+ .where("key", "=", "test")
543
+ .execute();
544
+
545
+ // Hook should fire once for the commit
546
+ expect(hookCallCount).toBe(1);
547
+
548
+ unsubscribe();
549
+ });
550
+
551
+ test("fires when deleting data", async () => {
552
+ const lix = await openLix({});
553
+
554
+ // Insert initial data
555
+ await lix.db
556
+ .insertInto("key_value")
557
+ .values({ key: "test", value: "value" })
558
+ .execute();
559
+
560
+ // Register hook after initial data
561
+ let hookCallCount = 0;
562
+ const unsubscribe = lix.hooks.onStateCommit(() => {
563
+ hookCallCount++;
564
+ });
565
+
566
+ // Execute a DELETE
567
+ await lix.db.deleteFrom("key_value").where("key", "=", "test").execute();
568
+
569
+ // Hook should fire once for the commit
570
+ expect(hookCallCount).toBe(1);
571
+
572
+ unsubscribe();
573
+ });
574
+
575
+ test("fires for batch operations", async () => {
576
+ const lix = await openLix({});
577
+
578
+ // Register hook
579
+ let hookCallCount = 0;
580
+ const unsubscribe = lix.hooks.onStateCommit(() => {
581
+ hookCallCount++;
582
+ });
583
+
584
+ // Execute multiple INSERTs in one operation
585
+ await lix.db
586
+ .insertInto("key_value")
587
+ .values([
588
+ { key: "test1", value: "value1" },
589
+ { key: "test2", value: "value2" },
590
+ { key: "test3", value: "value3" },
591
+ ])
592
+ .execute();
593
+
594
+ // Hook should fire once for the single commit
595
+ expect(hookCallCount).toBe(1);
596
+
597
+ unsubscribe();
598
+ });
599
+
600
+ test("fires once per transaction", async () => {
601
+ const lix = await openLix({});
602
+
603
+ // Register hook
604
+ let hookCallCount = 0;
605
+ const unsubscribe = lix.hooks.onStateCommit(() => {
606
+ hookCallCount++;
607
+ });
608
+
609
+ // Execute multiple separate operations
610
+ await lix.db
611
+ .insertInto("key_value")
612
+ .values({ key: "test1", value: "value1" })
613
+ .execute();
614
+
615
+ await lix.db
616
+ .insertInto("key_value")
617
+ .values({ key: "test2", value: "value2" })
618
+ .execute();
619
+
620
+ await lix.db
621
+ .updateTable("key_value")
622
+ .set({ value: "updated" })
623
+ .where("key", "=", "test1")
624
+ .execute();
625
+
626
+ // Hook should fire once for each operation
627
+ expect(hookCallCount).toBe(3);
628
+
629
+ unsubscribe();
630
+ });
631
+
632
+ test("multiple listeners all fire", async () => {
633
+ const lix = await openLix({});
634
+
635
+ // Register multiple hooks
636
+ let listener1Count = 0;
637
+ let listener2Count = 0;
638
+ let listener3Count = 0;
639
+
640
+ const unsubscribe1 = lix.hooks.onStateCommit(() => {
641
+ listener1Count++;
642
+ });
643
+
644
+ const unsubscribe2 = lix.hooks.onStateCommit(() => {
645
+ listener2Count++;
646
+ });
647
+
648
+ const unsubscribe3 = lix.hooks.onStateCommit(() => {
649
+ listener3Count++;
650
+ });
651
+
652
+ // Execute an operation
653
+ await lix.db
654
+ .insertInto("key_value")
655
+ .values({ key: "test", value: "value" })
656
+ .execute();
657
+
658
+ // All listeners should have fired
659
+ expect(listener1Count).toBe(1);
660
+ expect(listener2Count).toBe(1);
661
+ expect(listener3Count).toBe(1);
662
+
663
+ unsubscribe1();
664
+ unsubscribe2();
665
+ unsubscribe3();
666
+ });
667
+
668
+ test("unsubscribed listeners do not fire", async () => {
669
+ const lix = await openLix({});
670
+
671
+ // Register hook
672
+ let hookCallCount = 0;
673
+ const unsubscribe = lix.hooks.onStateCommit(() => {
674
+ hookCallCount++;
675
+ });
676
+
677
+ // First operation - hook should fire
678
+ await lix.db
679
+ .insertInto("key_value")
680
+ .values({ key: "test1", value: "value1" })
681
+ .execute();
682
+ expect(hookCallCount).toBe(1);
683
+
684
+ // Unsubscribe
685
+ unsubscribe();
686
+
687
+ // Second operation - hook should not fire
688
+ await lix.db
689
+ .insertInto("key_value")
690
+ .values({ key: "test2", value: "value2" })
691
+ .execute();
692
+ expect(hookCallCount).toBe(1); // Should not increase
693
+ });
694
+
695
+ test("does not fire for SELECT operations", async () => {
696
+ const lix = await openLix({});
697
+
698
+ // Insert some data first
699
+ await lix.db
700
+ .insertInto("key_value")
701
+ .values({ key: "test", value: "value" })
702
+ .execute();
703
+
704
+ // Register hook
705
+ let hookCallCount = 0;
706
+ const unsubscribe = lix.hooks.onStateCommit(() => {
707
+ hookCallCount++;
708
+ });
709
+
710
+ // Execute SELECT operations
711
+ await lix.db.selectFrom("key_value").selectAll().execute();
712
+ await lix.db.selectFrom("state").selectAll().execute();
713
+ await lix.db
714
+ .selectFrom("key_value")
715
+ .where("key", "=", "test")
716
+ .selectAll()
717
+ .execute();
718
+
719
+ // Hook should not fire for SELECT operations
720
+ expect(hookCallCount).toBe(0);
721
+
722
+ unsubscribe();
723
+ });
724
+
725
+ test("hook can access lix instance via closure", async () => {
726
+ const lix = await openLix({});
727
+
728
+ // Register hook that uses lix instance
729
+ let capturedValue: any = null;
730
+ const unsubscribe = lix.hooks.onStateCommit(() => {
731
+ // Access lix instance in the hook
732
+ capturedValue = lix.db;
733
+ });
734
+
735
+ // Execute an operation
736
+ await lix.db
737
+ .insertInto("key_value")
738
+ .values({ key: "test", value: "value" })
739
+ .execute();
740
+
741
+ // Hook should have access to lix instance
742
+ expect(capturedValue).toBeDefined();
743
+ expect(capturedValue).toBe(lix.db);
744
+
745
+ unsubscribe();
746
+ });
747
+
748
+ // TODO hooks throwing is uncaught
749
+ test.todo("errors in hook do not prevent commit", async () => {
750
+ const lix = await openLix({});
751
+
752
+ // Register hook that throws an error
753
+ const unsubscribe = lix.hooks.onStateCommit(() => {
754
+ throw new Error("Hook error");
755
+ });
756
+
757
+ // Operation should still succeed despite hook error
758
+ await expect(
759
+ lix.db
760
+ .insertInto("key_value")
761
+ .values({ key: "test", value: "value" })
762
+ .execute()
763
+ ).resolves.not.toThrow();
764
+
765
+ // Verify data was inserted
766
+ const result = await lix.db
767
+ .selectFrom("key_value")
768
+ .where("key", "=", "test")
769
+ .selectAll()
770
+ .execute();
771
+ expect(result).toHaveLength(1);
772
+
773
+ unsubscribe();
774
+ });
775
+ });
776
+
777
+ /**
778
+ * Tests that when changes are made directly to the global version,
779
+ * the global version's change_set_id is updated to reflect those changes.
780
+ *
781
+ * This is a simpler case than non-global versions because:
782
+ * - Only one version needs to be updated (global itself)
783
+ * - The changes and the version update are both stored in the same version (global)
784
+ */
785
+ test("global version should move forward when mutations occur", async () => {
786
+ const lix = await openLix({
787
+ keyValues: [{ key: "lix_deterministic_mode", value: { enabled: true } }],
788
+ });
789
+ const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
790
+
791
+ // Get the global version before any changes
792
+ const globalVersionBefore = await db
793
+ .selectFrom("version")
794
+ .where("id", "=", "global")
795
+ .selectAll()
796
+ .executeTakeFirstOrThrow();
797
+
798
+ const initialCommitId = globalVersionBefore.commit_id;
799
+
800
+ // Insert data with version_id = "global"
801
+ insertTransactionState({
802
+ lix: { sqlite: lix.sqlite, db },
803
+ data: {
804
+ entity_id: "test-global-entity",
805
+ schema_key: "lix_key_value",
806
+ file_id: "lix",
807
+ plugin_key: "lix_own_entity",
808
+ snapshot_content: JSON.stringify({
809
+ key: "test-global-key",
810
+ value: "test-global-value",
811
+ }),
812
+ schema_version: "1.0",
813
+ version_id: "global",
814
+ untracked: false,
815
+ },
816
+ });
817
+
818
+ // Commit the changes
819
+ commit({ lix });
820
+
821
+ // Get the global version after changes
822
+ const globalVersionAfter = await db
823
+ .selectFrom("version")
824
+ .where("id", "=", "global")
825
+ .selectAll()
826
+ .executeTakeFirstOrThrow();
827
+
828
+ // The global version's commit_id should have been updated
829
+ expect(globalVersionAfter.commit_id).not.toBe(initialCommitId);
830
+
831
+ // Verify a new commit was created and linked
832
+ const edges = await db
833
+ .selectFrom("commit_edge")
834
+ .where("parent_id", "=", initialCommitId)
835
+ .where("child_id", "=", globalVersionAfter.commit_id)
836
+ .selectAll()
837
+ .execute();
838
+
839
+ expect(edges.length).toBe(1);
840
+
841
+ // Get the change set ID from the new commit
842
+ const newCommit = await db
843
+ .selectFrom("commit")
844
+ .where("id", "=", globalVersionAfter.commit_id)
845
+ .selectAll()
846
+ .executeTakeFirstOrThrow();
847
+
848
+ // Verify the change set contains our change
849
+ const changeSetElements = await db
850
+ .selectFrom("change_set_element")
851
+ .where("change_set_id", "=", newCommit.change_set_id)
852
+ .selectAll()
853
+ .execute();
854
+
855
+ // Should contain our test entity change and the meta changes
856
+ const elementIds = changeSetElements.map((e) => e.entity_id);
857
+ expect(elementIds.some((id) => id.includes("test-global-entity"))).toBe(true);
858
+ });
859
+
860
+ /**
861
+ * Tests that edge changes are properly created during commit.
862
+ *
863
+ * When a version moves forward (creates a new commit), an edge change must be created
864
+ * with schema_key='lix_commit_edge' that links the old commit to the new one.
865
+ * This is critical for the materialization lineage CTE to traverse the commit history.
866
+ */
867
+ test("commit should create edge changes that are discoverable by lineage CTE", async () => {
868
+ const lix = await openLix({
869
+ keyValues: [
870
+ {
871
+ key: "lix_deterministic_mode",
872
+ value: { enabled: true, bootstrap: false },
873
+ lixcol_version_id: "global",
874
+ },
875
+ ],
876
+ });
877
+ const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
878
+
879
+ // Get the global version before any changes
880
+ const globalVersionBefore = await db
881
+ .selectFrom("version")
882
+ .where("id", "=", "global")
883
+ .selectAll()
884
+ .executeTakeFirstOrThrow();
885
+
886
+ const previousCommitId = globalVersionBefore.commit_id;
887
+
888
+ // Insert data with version_id = "global"
889
+ insertTransactionState({
890
+ lix: { sqlite: lix.sqlite, db },
891
+ data: {
892
+ entity_id: "test-edge-entity",
893
+ schema_key: "lix_key_value",
894
+ file_id: "lix",
895
+ plugin_key: "lix_own_entity",
896
+ snapshot_content: JSON.stringify({
897
+ key: "test-edge-key",
898
+ value: "test-edge-value",
899
+ }),
900
+ schema_version: "1.0",
901
+ version_id: "global",
902
+ untracked: false,
903
+ },
904
+ });
905
+
906
+ // Commit the changes
907
+ commit({ lix });
908
+
909
+ // Get the global version after changes
910
+ const globalVersionAfter = await db
911
+ .selectFrom("version")
912
+ .where("id", "=", "global")
913
+ .selectAll()
914
+ .executeTakeFirstOrThrow();
915
+
916
+ const newCommitId = globalVersionAfter.commit_id;
917
+ expect(newCommitId).not.toBe(previousCommitId);
918
+
919
+ // CRITICAL: Verify that an actual edge CHANGE exists (not just an element)
920
+ const edgeChanges = await db
921
+ .selectFrom("change")
922
+ .where("schema_key", "=", "lix_commit_edge")
923
+ .where("entity_id", "=", `${previousCommitId}~${newCommitId}`)
924
+ .selectAll()
925
+ .execute();
926
+
927
+ expect(edgeChanges.length).toBe(1);
928
+
929
+ const edgeChange = edgeChanges[0]!;
930
+ expect(edgeChange.snapshot_content).toBeTruthy();
931
+
932
+ // Verify the edge snapshot content
933
+ const edgeSnapshot = edgeChange.snapshot_content as any;
934
+ expect(edgeSnapshot.parent_id).toBe(previousCommitId);
935
+ expect(edgeSnapshot.child_id).toBe(newCommitId);
936
+
937
+ // Verify the edge is discoverable by the lineage CTE
938
+ // This simulates what internal_materialization_lineage does
939
+ const lineageRows = lix.sqlite.exec({
940
+ sql: `
941
+ WITH RECURSIVE lineage_commits(id, version_id) AS (
942
+ /* anchor: use edge-based approach to find the tip */
943
+ SELECT
944
+ json_extract(v.snapshot_content,'$.commit_id') AS id,
945
+ v.entity_id AS version_id
946
+ FROM change v
947
+ WHERE v.schema_key = 'lix_version'
948
+ AND v.entity_id = 'global'
949
+ /* keep only the row whose commit_id has NO outgoing edge */
950
+ AND NOT EXISTS (
951
+ SELECT 1
952
+ FROM change edge
953
+ WHERE edge.schema_key = 'lix_commit_edge'
954
+ AND json_extract(edge.snapshot_content,'$.parent_id') = json_extract(v.snapshot_content,'$.commit_id')
955
+ )
956
+
957
+ UNION
958
+
959
+ /* recurse upwards via parent_id */
960
+ SELECT
961
+ json_extract(edge.snapshot_content,'$.parent_id') AS id,
962
+ l.version_id AS version_id
963
+ FROM change edge
964
+ JOIN lineage_commits l ON json_extract(edge.snapshot_content,'$.child_id') = l.id
965
+ WHERE edge.schema_key = 'lix_commit_edge'
966
+ AND json_extract(edge.snapshot_content,'$.parent_id') IS NOT NULL
967
+ )
968
+ SELECT id FROM lineage_commits WHERE version_id = 'global' ORDER BY id;
969
+ `,
970
+ returnValue: "resultRows",
971
+ });
972
+
973
+ // Should have at least 2 entries: the new commit and its parent
974
+ expect(lineageRows.length).toBeGreaterThanOrEqual(2);
975
+
976
+ // Verify both commits are in the lineage
977
+ const lineageIds = lineageRows.map((row) => row[0]);
978
+ expect(lineageIds).toContain(newCommitId);
979
+ expect(lineageIds).toContain(previousCommitId);
980
+ });
981
+
982
+ /**
983
+ * Tests that when changes are made to a non-global version (like the active/main version),
984
+ * both the version itself AND the global version are updated.
985
+ *
986
+ * This is critical because:
987
+ * 1. The non-global version's commit_id moves forward to include its data changes
988
+ * 2. The global version's commit_id ALSO moves forward to track the version update itself
989
+ * 3. All version changes (updates to any version entity) are stored in the global version's history
990
+ *
991
+ * Without this behavior, each version would need to maintain its own history of all other versions,
992
+ * which would be redundant and complex. Instead, the global version serves as the central registry
993
+ * of all version state changes.
994
+ */
995
+ test("active version should move forward when mutations occur", async () => {
996
+ const lix = await openLix({
997
+ keyValues: [
998
+ {
999
+ key: "lix_deterministic_mode",
1000
+ value: { enabled: true, bootstrap: true },
1001
+ },
1002
+ ],
1003
+ });
1004
+ const db = lix.db as unknown as Kysely<LixInternalDatabaseSchema>;
1005
+
1006
+ // Get the global version before for comparison
1007
+ const globalVersionBefore = await db
1008
+ .selectFrom("version")
1009
+ .where("id", "=", "global")
1010
+ .selectAll()
1011
+ .executeTakeFirstOrThrow();
1012
+
1013
+ // Get the active version (should be the main version, not global)
1014
+ const activeVersion = await db
1015
+ .selectFrom("active_version")
1016
+ .selectAll()
1017
+ .executeTakeFirstOrThrow();
1018
+
1019
+ const activeVersionId = activeVersion.version_id;
1020
+ expect(activeVersionId).not.toBe("global"); // Ensure we're testing a non-global version
1021
+
1022
+ // Get the version before any changes
1023
+ const versionBefore = await db
1024
+ .selectFrom("version")
1025
+ .where("id", "=", activeVersionId)
1026
+ .selectAll()
1027
+ .executeTakeFirstOrThrow();
1028
+
1029
+ const initialActiveVersionCommitId = versionBefore.commit_id;
1030
+
1031
+ // Insert data with version_id = activeVersionId
1032
+ insertTransactionState({
1033
+ lix: { sqlite: lix.sqlite, db },
1034
+ data: {
1035
+ entity_id: "test-active-entity",
1036
+ schema_key: "lix_key_value",
1037
+ file_id: "lix",
1038
+ plugin_key: "lix_own_entity",
1039
+ snapshot_content: JSON.stringify({
1040
+ key: "test-active-key",
1041
+ value: "test-active-value",
1042
+ }),
1043
+ schema_version: "1.0",
1044
+ version_id: activeVersionId,
1045
+ untracked: false,
1046
+ },
1047
+ });
1048
+
1049
+ // Commit the changes
1050
+ commit({ lix });
1051
+
1052
+ // Get the version after changes
1053
+ const versionAfter = await db
1054
+ .selectFrom("version")
1055
+ .where("id", "=", activeVersionId)
1056
+ .selectAll()
1057
+ .executeTakeFirstOrThrow();
1058
+
1059
+ // The version's commit_id should have been updated
1060
+ expect(versionAfter.commit_id).not.toBe(initialActiveVersionCommitId);
1061
+
1062
+ // Verify a new commit was created and linked
1063
+ const edges = await db
1064
+ .selectFrom("commit_edge")
1065
+ .where("parent_id", "=", initialActiveVersionCommitId)
1066
+ .where("child_id", "=", versionAfter.commit_id)
1067
+ .selectAll()
1068
+ .execute();
1069
+
1070
+ expect(edges.length).toBe(1);
1071
+
1072
+ // Get the change set ID from the new commit
1073
+ const newCommit = await db
1074
+ .selectFrom("commit")
1075
+ .where("id", "=", versionAfter.commit_id)
1076
+ .selectAll()
1077
+ .executeTakeFirstOrThrow();
1078
+
1079
+ // Verify the change set contains our change
1080
+ const changeSetElements = await db
1081
+ .selectFrom("change_set_element")
1082
+ .where("change_set_id", "=", newCommit.change_set_id)
1083
+ .selectAll()
1084
+ .execute();
1085
+
1086
+ // Should contain our test entity change and the meta changes
1087
+ const elementIds = changeSetElements.map((e) => e.entity_id);
1088
+ expect(elementIds.some((id) => id.includes("test-active-entity"))).toBe(true);
1089
+
1090
+ // Also verify that the global version DID move forward
1091
+ // (because all version changes are tracked in global)
1092
+ const globalVersionAfter = await db
1093
+ .selectFrom("version")
1094
+ .where("id", "=", "global")
1095
+ .selectAll()
1096
+ .executeTakeFirstOrThrow();
1097
+
1098
+ // Global version should have been updated to track the version change
1099
+ expect(globalVersionAfter.commit_id).not.toBe(globalVersionBefore.commit_id);
1100
+
1101
+ // Get the change set ID from the global version's new commit
1102
+ const globalNewCommit = await db
1103
+ .selectFrom("commit")
1104
+ .where("id", "=", globalVersionAfter.commit_id)
1105
+ .selectAll()
1106
+ .executeTakeFirstOrThrow();
1107
+
1108
+ // Verify the global version's new changeset contains the version updates
1109
+ const globalChangeSetElements = await db
1110
+ .selectFrom("change_set_element")
1111
+ .where("change_set_id", "=", globalNewCommit.change_set_id)
1112
+ .selectAll()
1113
+ .execute();
1114
+
1115
+ // Should contain exactly two version updates: global and active version
1116
+ const versionUpdateElements = globalChangeSetElements.filter(
1117
+ (e) => e.schema_key === "lix_version"
1118
+ );
1119
+ expect(versionUpdateElements.length).toBe(2);
1120
+
1121
+ // Verify both version updates point to the correct entities
1122
+ const versionUpdateEntityIds = versionUpdateElements.map((e) => e.entity_id);
1123
+ expect(versionUpdateEntityIds).toContain("global");
1124
+ expect(versionUpdateEntityIds).toContain(activeVersionId);
1125
+
1126
+ // Get the actual version changes to verify they have the correct change_set_ids
1127
+ const versionChanges = await db
1128
+ .selectFrom("change")
1129
+ .where(
1130
+ "id",
1131
+ "in",
1132
+ versionUpdateElements.map((e) => e.change_id)
1133
+ )
1134
+ .where("schema_key", "=", "lix_version")
1135
+ .selectAll()
1136
+ .execute();
1137
+
1138
+ // Verify the version snapshots contain the correct commit_ids
1139
+ for (const change of versionChanges) {
1140
+ if (change.entity_id === "global") {
1141
+ expect(change.snapshot_content?.commit_id).toBe(
1142
+ globalVersionAfter.commit_id
1143
+ );
1144
+ } else if (change.entity_id === activeVersionId) {
1145
+ expect(change.snapshot_content?.commit_id).toBe(versionAfter.commit_id);
1146
+ }
1147
+ }
1148
+ });
1149
+
1150
+ // Tests moved from handle-state-mutation.test.ts since they test commit behavior
1151
+
1152
+ test("creates a new commit and updates the version's commit id for mutations", async () => {
1153
+ const lix = await openLix({});
1154
+
1155
+ const versionBeforeInsert = await lix.db
1156
+ .selectFrom("active_version")
1157
+ .innerJoin("version", "version.id", "active_version.version_id")
1158
+ .selectAll()
1159
+ .where("name", "=", "main")
1160
+ .executeTakeFirstOrThrow();
1161
+
1162
+ await lix.db
1163
+ .insertInto("key_value")
1164
+ .values({
1165
+ key: "mock_key",
1166
+ value: "mock_value",
1167
+ })
1168
+ .execute();
1169
+
1170
+ const versionAfterInsert = await lix.db
1171
+ .selectFrom("version")
1172
+ .selectAll()
1173
+ .where("id", "=", versionBeforeInsert.id)
1174
+ .executeTakeFirstOrThrow();
1175
+
1176
+ expect(versionAfterInsert.commit_id).not.toEqual(
1177
+ versionBeforeInsert.commit_id
1178
+ );
1179
+
1180
+ await lix.db
1181
+ .updateTable("key_value_all")
1182
+ .where("key", "=", "mock_key")
1183
+ .where(
1184
+ "lixcol_version_id",
1185
+ "=",
1186
+ lix.db.selectFrom("active_version").select("version_id")
1187
+ )
1188
+ .set({
1189
+ value: "mock_value_updated",
1190
+ })
1191
+ .execute();
1192
+
1193
+ const versionAfterUpdate = await lix.db
1194
+ .selectFrom("version")
1195
+ .selectAll()
1196
+ .where("id", "=", versionAfterInsert.id)
1197
+ .executeTakeFirstOrThrow();
1198
+
1199
+ expect(versionAfterUpdate.commit_id).not.toEqual(
1200
+ versionAfterInsert.commit_id
1201
+ );
1202
+
1203
+ await lix.db.deleteFrom("key_value").where("key", "=", "mock_key").execute();
1204
+
1205
+ const versionAfterDelete = await lix.db
1206
+ .selectFrom("version")
1207
+ .selectAll()
1208
+ .where("id", "=", versionAfterUpdate.id)
1209
+ .executeTakeFirstOrThrow();
1210
+
1211
+ expect(versionAfterDelete.commit_id).not.toEqual(
1212
+ versionAfterUpdate.commit_id
1213
+ );
1214
+
1215
+ const edges = await lix.db
1216
+ .selectFrom("commit_edge")
1217
+ .select(["parent_id", "child_id"])
1218
+ .execute();
1219
+
1220
+ expect(edges).toEqual(
1221
+ expect.arrayContaining([
1222
+ {
1223
+ parent_id: versionBeforeInsert.commit_id,
1224
+ child_id: versionAfterInsert.commit_id,
1225
+ },
1226
+ {
1227
+ parent_id: versionAfterInsert.commit_id,
1228
+ child_id: versionAfterUpdate.commit_id,
1229
+ },
1230
+ {
1231
+ parent_id: versionAfterUpdate.commit_id,
1232
+ child_id: versionAfterDelete.commit_id,
1233
+ },
1234
+ ] satisfies LixCommitEdge[])
1235
+ );
1236
+ });
1237
+
1238
+ test("groups changes of a transaction into the same change set for the given version", async () => {
1239
+ const lix = await openLix({});
1240
+
1241
+ const activeVersion = await lix.db
1242
+ .selectFrom("active_version")
1243
+ .innerJoin("version", "version.id", "active_version.version_id")
1244
+ .selectAll("version")
1245
+ .executeTakeFirstOrThrow();
1246
+
1247
+ const commitAncestryBefore = await lix.db
1248
+ .selectFrom("commit")
1249
+ .where(commitIsAncestorOf({ id: activeVersion.commit_id }))
1250
+ .selectAll()
1251
+ .execute();
1252
+
1253
+ await lix.db.transaction().execute(async (trx) => {
1254
+ await trx
1255
+ .insertInto("key_value")
1256
+ .values({
1257
+ key: "mock_key",
1258
+ value: "mock_value",
1259
+ })
1260
+ .execute();
1261
+
1262
+ await trx
1263
+ .insertInto("key_value")
1264
+ .values({
1265
+ key: "mock_key2",
1266
+ value: "mock_value2",
1267
+ })
1268
+ .execute();
1269
+ });
1270
+
1271
+ const activeVersionAfterTransaction = await lix.db
1272
+ .selectFrom("active_version")
1273
+ .innerJoin("version", "version.id", "active_version.version_id")
1274
+ .selectAll("version")
1275
+ .executeTakeFirstOrThrow();
1276
+
1277
+ const commitAncestryAfter = await lix.db
1278
+ .selectFrom("commit")
1279
+ .where(commitIsAncestorOf({ id: activeVersionAfterTransaction.commit_id }))
1280
+ .selectAll()
1281
+ .execute();
1282
+
1283
+ expect(commitAncestryAfter).toHaveLength(commitAncestryBefore.length + 1);
1284
+ });
1285
+
1286
+ test("creates change_author records for insert, update, and delete operations", async () => {
1287
+ const lix = await openLix({});
1288
+
1289
+ // Create test accounts
1290
+ await lix.db
1291
+ .insertInto("account")
1292
+ .values([
1293
+ { id: "test-account-1", name: "Test User 1" },
1294
+ { id: "test-account-2", name: "Test User 2" },
1295
+ ])
1296
+ .execute();
1297
+
1298
+ // Switch to single active account for insert
1299
+ await switchAccount({
1300
+ lix,
1301
+ to: [{ id: "test-account-1", name: "Test User 1" }],
1302
+ });
1303
+
1304
+ // INSERT: Create initial entity
1305
+ await lix.db
1306
+ .insertInto("key_value")
1307
+ .values({
1308
+ key: "crud_test_key",
1309
+ value: "initial_value",
1310
+ })
1311
+ .execute();
1312
+
1313
+ // Switch to multiple active accounts for update
1314
+ await switchAccount({
1315
+ lix,
1316
+ to: [
1317
+ { id: "test-account-1", name: "Test User 1" },
1318
+ { id: "test-account-2", name: "Test User 2" },
1319
+ ],
1320
+ });
1321
+
1322
+ // UPDATE: Modify the entity
1323
+ await lix.db
1324
+ .updateTable("key_value")
1325
+ .where("key", "=", "crud_test_key")
1326
+ .set({ value: "updated_value" })
1327
+ .execute();
1328
+
1329
+ // Switch back to single account for delete
1330
+ await switchAccount({
1331
+ lix,
1332
+ to: [{ id: "test-account-2", name: "Test User 2" }],
1333
+ });
1334
+
1335
+ // DELETE: Remove the entity
1336
+ await lix.db
1337
+ .deleteFrom("key_value")
1338
+ .where("key", "=", "crud_test_key")
1339
+ .execute();
1340
+
1341
+ // Get all changes for this entity
1342
+ const changes = await lix.db
1343
+ .selectFrom("change")
1344
+ .where("entity_id", "=", "crud_test_key")
1345
+ .where("schema_key", "=", "lix_key_value")
1346
+ .orderBy("created_at", "asc")
1347
+ .select(["id"])
1348
+ .execute();
1349
+
1350
+ expect(changes).toHaveLength(3); // Insert + Update + Delete
1351
+
1352
+ const insertChangeId = changes[0]!.id;
1353
+ const updateChangeId = changes[1]!.id;
1354
+ const deleteChangeId = changes[2]!.id;
1355
+
1356
+ // Verify change_author records for INSERT (single account)
1357
+ const insertAuthors = await lix.db
1358
+ .selectFrom("change_author")
1359
+ .where("change_id", "=", insertChangeId)
1360
+ .selectAll()
1361
+ .execute();
1362
+
1363
+ expect(insertAuthors).toHaveLength(1);
1364
+ expect(insertAuthors[0]).toMatchObject({
1365
+ change_id: insertChangeId,
1366
+ account_id: "test-account-1",
1367
+ });
1368
+
1369
+ // Verify change_author records for UPDATE (multiple accounts)
1370
+ const updateAuthors = await lix.db
1371
+ .selectFrom("change_author")
1372
+ .where("change_id", "=", updateChangeId)
1373
+ .selectAll()
1374
+ .execute();
1375
+
1376
+ expect(updateAuthors).toHaveLength(2);
1377
+
1378
+ // Check that both accounts are represented
1379
+ const updateAccountIds = updateAuthors.map((author) => author.account_id);
1380
+ expect(updateAccountIds).toContain("test-account-1");
1381
+ expect(updateAccountIds).toContain("test-account-2");
1382
+
1383
+ // Check that all records have the correct change_id
1384
+ updateAuthors.forEach((author) => {
1385
+ expect(author).toMatchObject({
1386
+ change_id: updateChangeId,
1387
+ });
1388
+ });
1389
+
1390
+ // Verify change_author records for DELETE (single account)
1391
+ const deleteAuthors = await lix.db
1392
+ .selectFrom("change_author")
1393
+ .where("change_id", "=", deleteChangeId)
1394
+ .selectAll()
1395
+ .execute();
1396
+
1397
+ expect(deleteAuthors).toHaveLength(1);
1398
+ expect(deleteAuthors[0]).toMatchObject({
1399
+ change_id: deleteChangeId,
1400
+ account_id: "test-account-2",
1401
+ });
1402
+ });