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