@lix-js/sdk 0.4.7 → 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 (1812) hide show
  1. package/dist/account/create-account.d.ts +18 -4
  2. package/dist/account/create-account.d.ts.map +1 -1
  3. package/dist/account/create-account.js +27 -3
  4. package/dist/account/create-account.js.map +1 -1
  5. package/dist/account/create-account.test.js +42 -4
  6. package/dist/account/create-account.test.js.map +1 -1
  7. package/dist/account/index.d.ts +1 -1
  8. package/dist/account/index.d.ts.map +1 -1
  9. package/dist/account/index.js +1 -1
  10. package/dist/account/index.js.map +1 -1
  11. package/dist/account/schema.d.ts +44 -0
  12. package/dist/account/schema.d.ts.map +1 -0
  13. package/dist/account/schema.js +112 -0
  14. package/dist/account/schema.js.map +1 -0
  15. package/dist/account/schema.test.d.ts +2 -0
  16. package/dist/account/schema.test.d.ts.map +1 -0
  17. package/dist/account/schema.test.js +310 -0
  18. package/dist/account/schema.test.js.map +1 -0
  19. package/dist/account/switch-account.d.ts +2 -2
  20. package/dist/account/switch-account.d.ts.map +1 -1
  21. package/dist/account/switch-account.js +8 -2
  22. package/dist/account/switch-account.js.map +1 -1
  23. package/dist/account/switch-account.test.js +31 -10
  24. package/dist/account/switch-account.test.js.map +1 -1
  25. package/dist/change/apply-changes.d.ts +13 -0
  26. package/dist/change/apply-changes.d.ts.map +1 -1
  27. package/dist/change/apply-changes.js +14 -4
  28. package/dist/change/apply-changes.js.map +1 -1
  29. package/dist/change/apply-changes.test.js +91 -1
  30. package/dist/change/apply-changes.test.js.map +1 -1
  31. package/dist/change/create-change-v2.d.ts +11 -0
  32. package/dist/change/create-change-v2.d.ts.map +1 -0
  33. package/dist/change/create-change-v2.js +31 -0
  34. package/dist/change/create-change-v2.js.map +1 -0
  35. package/dist/change/create-change-v2.test.d.ts +2 -0
  36. package/dist/change/create-change-v2.test.d.ts.map +1 -0
  37. package/dist/change/create-change-v2.test.js +39 -0
  38. package/dist/change/create-change-v2.test.js.map +1 -0
  39. package/dist/change/create-change.d.ts +11 -22
  40. package/dist/change/create-change.d.ts.map +1 -1
  41. package/dist/change/create-change.js +31 -83
  42. package/dist/change/create-change.js.map +1 -1
  43. package/dist/change/create-change.test.js +127 -176
  44. package/dist/change/create-change.test.js.map +1 -1
  45. package/dist/change/index.d.ts +1 -2
  46. package/dist/change/index.d.ts.map +1 -1
  47. package/dist/change/index.js +1 -2
  48. package/dist/change/index.js.map +1 -1
  49. package/dist/change/mock-change.d.ts +1 -1
  50. package/dist/change/mock-change.d.ts.map +1 -1
  51. package/dist/change/mock-change.js +1 -0
  52. package/dist/change/mock-change.js.map +1 -1
  53. package/dist/change/schema.d.ts +66 -0
  54. package/dist/change/schema.d.ts.map +1 -0
  55. package/dist/change/schema.js +103 -0
  56. package/dist/change/schema.js.map +1 -0
  57. package/dist/change/schema.test.d.ts +2 -0
  58. package/dist/change/schema.test.d.ts.map +1 -0
  59. package/dist/change/schema.test.js +268 -0
  60. package/dist/change/schema.test.js.map +1 -0
  61. package/dist/change-author/index.d.ts +2 -0
  62. package/dist/change-author/index.d.ts.map +1 -0
  63. package/dist/change-author/index.js +2 -0
  64. package/dist/change-author/index.js.map +1 -0
  65. package/dist/change-author/schema.d.ts +34 -0
  66. package/dist/change-author/schema.d.ts.map +1 -0
  67. package/dist/change-author/schema.js +41 -0
  68. package/dist/change-author/schema.js.map +1 -0
  69. package/dist/change-author/schema.test.d.ts +2 -0
  70. package/dist/change-author/schema.test.d.ts.map +1 -0
  71. package/dist/change-author/schema.test.js +310 -0
  72. package/dist/change-author/schema.test.js.map +1 -0
  73. package/dist/change-conflict/create-change-conflict.d.ts.map +1 -1
  74. package/dist/change-conflict/create-change-conflict.js +24 -6
  75. package/dist/change-conflict/create-change-conflict.js.map +1 -1
  76. package/dist/change-conflict/create-change-conflict.test.js +13 -11
  77. package/dist/change-conflict/create-change-conflict.test.js.map +1 -1
  78. package/dist/change-conflict/detect-change-conflicts.d.ts.map +1 -1
  79. package/dist/change-conflict/detect-change-conflicts.js +2 -0
  80. package/dist/change-conflict/detect-change-conflicts.js.map +1 -1
  81. package/dist/change-conflict/detect-change-conflicts.test.js +17 -13
  82. package/dist/change-conflict/detect-change-conflicts.test.js.map +1 -1
  83. package/dist/change-conflict/detect-diverging-entity-conflict.d.ts.map +1 -1
  84. package/dist/change-conflict/detect-diverging-entity-conflict.js +3 -1
  85. package/dist/change-conflict/detect-diverging-entity-conflict.js.map +1 -1
  86. package/dist/change-conflict/detect-diverging-entity-conflict.test.js +23 -21
  87. package/dist/change-conflict/detect-diverging-entity-conflict.test.js.map +1 -1
  88. package/dist/change-conflict/garbage-collect-change-conflicts.d.ts.map +1 -1
  89. package/dist/change-conflict/garbage-collect-change-conflicts.js +2 -0
  90. package/dist/change-conflict/garbage-collect-change-conflicts.js.map +1 -1
  91. package/dist/change-conflict/garbage-collect-change-conflicts.test.js +15 -15
  92. package/dist/change-conflict/garbage-collect-change-conflicts.test.js.map +1 -1
  93. package/dist/change-conflict/resolve-conflict-by-selecting.d.ts.map +1 -1
  94. package/dist/change-conflict/resolve-conflict-by-selecting.js +2 -2
  95. package/dist/change-conflict/resolve-conflict-by-selecting.js.map +1 -1
  96. package/dist/change-conflict/resolve-conflict-by-selecting.test.js +17 -8
  97. package/dist/change-conflict/resolve-conflict-by-selecting.test.js.map +1 -1
  98. package/dist/change-proposal/create-change-proposal.d.ts +16 -0
  99. package/dist/change-proposal/create-change-proposal.d.ts.map +1 -0
  100. package/dist/change-proposal/create-change-proposal.js +52 -0
  101. package/dist/change-proposal/create-change-proposal.js.map +1 -0
  102. package/dist/change-proposal/create-change-proposal.test.d.ts +2 -0
  103. package/dist/change-proposal/create-change-proposal.test.d.ts.map +1 -0
  104. package/dist/change-proposal/create-change-proposal.test.js +91 -0
  105. package/dist/change-proposal/create-change-proposal.test.js.map +1 -0
  106. package/dist/change-proposal/database-schema.d.ts +13 -0
  107. package/dist/change-proposal/database-schema.d.ts.map +1 -0
  108. package/dist/change-proposal/database-schema.js +17 -0
  109. package/dist/change-proposal/database-schema.js.map +1 -0
  110. package/dist/change-proposal/database-schema.test.d.ts +2 -0
  111. package/dist/change-proposal/database-schema.test.d.ts.map +1 -0
  112. package/dist/change-proposal/database-schema.test.js +159 -0
  113. package/dist/change-proposal/database-schema.test.js.map +1 -0
  114. package/dist/change-proposal/index.d.ts +3 -0
  115. package/dist/change-proposal/index.d.ts.map +1 -0
  116. package/dist/change-proposal/index.js +3 -0
  117. package/dist/change-proposal/index.js.map +1 -0
  118. package/dist/change-set/apply-change-set.d.ts +10 -0
  119. package/dist/change-set/apply-change-set.d.ts.map +1 -0
  120. package/dist/change-set/apply-change-set.js +139 -0
  121. package/dist/change-set/apply-change-set.js.map +1 -0
  122. package/dist/change-set/apply-change-set.test.d.ts +2 -0
  123. package/dist/change-set/apply-change-set.test.d.ts.map +1 -0
  124. package/dist/change-set/apply-change-set.test.js +393 -0
  125. package/dist/change-set/apply-change-set.test.js.map +1 -0
  126. package/dist/change-set/before-after-of-file.d.ts +31 -0
  127. package/dist/change-set/before-after-of-file.d.ts.map +1 -0
  128. package/dist/change-set/before-after-of-file.js +191 -0
  129. package/dist/change-set/before-after-of-file.js.map +1 -0
  130. package/dist/change-set/before-after-of-file.test.d.ts +2 -0
  131. package/dist/change-set/before-after-of-file.test.d.ts.map +1 -0
  132. package/dist/change-set/before-after-of-file.test.js +221 -0
  133. package/dist/change-set/before-after-of-file.test.js.map +1 -0
  134. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts +2 -1
  135. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts.map +1 -1
  136. package/dist/change-set/change-set-element-in-symmetric-difference.js.map +1 -1
  137. package/dist/change-set/change-set-element-in-symmetric-difference.test.js +204 -34
  138. package/dist/change-set/change-set-element-in-symmetric-difference.test.js.map +1 -1
  139. package/dist/change-set/checkout-change-set.d.ts +15 -0
  140. package/dist/change-set/checkout-change-set.d.ts.map +1 -0
  141. package/dist/change-set/checkout-change-set.js +64 -0
  142. package/dist/change-set/checkout-change-set.js.map +1 -0
  143. package/dist/change-set/checkout-change-set.test.d.ts +2 -0
  144. package/dist/change-set/checkout-change-set.test.d.ts.map +1 -0
  145. package/dist/change-set/checkout-change-set.test.js +127 -0
  146. package/dist/change-set/checkout-change-set.test.js.map +1 -0
  147. package/dist/change-set/create-change-set.d.ts +19 -20
  148. package/dist/change-set/create-change-set.d.ts.map +1 -1
  149. package/dist/change-set/create-change-set.js +73 -34
  150. package/dist/change-set/create-change-set.js.map +1 -1
  151. package/dist/change-set/create-change-set.test.js +78 -27
  152. package/dist/change-set/create-change-set.test.js.map +1 -1
  153. package/dist/change-set/create-checkpoint.d.ts +19 -0
  154. package/dist/change-set/create-checkpoint.d.ts.map +1 -0
  155. package/dist/change-set/create-checkpoint.js +95 -0
  156. package/dist/change-set/create-checkpoint.js.map +1 -0
  157. package/dist/change-set/create-checkpoint.test.d.ts +2 -0
  158. package/dist/change-set/create-checkpoint.test.d.ts.map +1 -0
  159. package/dist/change-set/create-checkpoint.test.js +347 -0
  160. package/dist/change-set/create-checkpoint.test.js.map +1 -0
  161. package/dist/change-set/create-merge-change-set.d.ts +23 -0
  162. package/dist/change-set/create-merge-change-set.d.ts.map +1 -0
  163. package/dist/change-set/create-merge-change-set.js +68 -0
  164. package/dist/change-set/create-merge-change-set.js.map +1 -0
  165. package/dist/change-set/create-merge-change-set.test.d.ts +2 -0
  166. package/dist/change-set/create-merge-change-set.test.d.ts.map +1 -0
  167. package/dist/change-set/create-merge-change-set.test.js +211 -0
  168. package/dist/change-set/create-merge-change-set.test.js.map +1 -0
  169. package/dist/change-set/create-transition-change-set.d.ts +18 -0
  170. package/dist/change-set/create-transition-change-set.d.ts.map +1 -0
  171. package/dist/change-set/create-transition-change-set.js +102 -0
  172. package/dist/change-set/create-transition-change-set.js.map +1 -0
  173. package/dist/change-set/create-transition-change-set.test.d.ts +2 -0
  174. package/dist/change-set/create-transition-change-set.test.d.ts.map +1 -0
  175. package/dist/change-set/create-transition-change-set.test.js +211 -0
  176. package/dist/change-set/create-transition-change-set.test.js.map +1 -0
  177. package/dist/change-set/create-undo-change-set.d.ts +27 -0
  178. package/dist/change-set/create-undo-change-set.d.ts.map +1 -0
  179. package/dist/change-set/create-undo-change-set.js +122 -0
  180. package/dist/change-set/create-undo-change-set.js.map +1 -0
  181. package/dist/change-set/create-undo-change-set.test.d.ts +2 -0
  182. package/dist/change-set/create-undo-change-set.test.d.ts.map +1 -0
  183. package/dist/change-set/create-undo-change-set.test.js +273 -0
  184. package/dist/change-set/create-undo-change-set.test.js.map +1 -0
  185. package/dist/change-set/database-schema.d.ts +39 -0
  186. package/dist/change-set/database-schema.d.ts.map +1 -0
  187. package/dist/change-set/database-schema.js +86 -0
  188. package/dist/change-set/database-schema.js.map +1 -0
  189. package/dist/change-set/database-schema.test.d.ts +2 -0
  190. package/dist/change-set/database-schema.test.d.ts.map +1 -0
  191. package/dist/change-set/database-schema.test.js +547 -0
  192. package/dist/change-set/database-schema.test.js.map +1 -0
  193. package/dist/change-set/diff-for-file.d.ts +29 -0
  194. package/dist/change-set/diff-for-file.d.ts.map +1 -0
  195. package/dist/change-set/diff-for-file.js +19 -0
  196. package/dist/change-set/diff-for-file.js.map +1 -0
  197. package/dist/change-set/get-before-after-of-file.d.ts +31 -0
  198. package/dist/change-set/get-before-after-of-file.d.ts.map +1 -0
  199. package/dist/change-set/get-before-after-of-file.js +189 -0
  200. package/dist/change-set/get-before-after-of-file.js.map +1 -0
  201. package/dist/change-set/get-before-after-of-file.test.d.ts +2 -0
  202. package/dist/change-set/get-before-after-of-file.test.d.ts.map +1 -0
  203. package/dist/change-set/get-before-after-of-file.test.js +220 -0
  204. package/dist/change-set/get-before-after-of-file.test.js.map +1 -0
  205. package/dist/change-set/index.d.ts +2 -1
  206. package/dist/change-set/index.d.ts.map +1 -1
  207. package/dist/change-set/index.js +2 -1
  208. package/dist/change-set/index.js.map +1 -1
  209. package/dist/change-set/merge-change-sets.d.ts +23 -0
  210. package/dist/change-set/merge-change-sets.d.ts.map +1 -0
  211. package/dist/change-set/merge-change-sets.js +69 -0
  212. package/dist/change-set/merge-change-sets.js.map +1 -0
  213. package/dist/change-set/merge-change-sets.test.d.ts +2 -0
  214. package/dist/change-set/merge-change-sets.test.d.ts.map +1 -0
  215. package/dist/change-set/merge-change-sets.test.js +184 -0
  216. package/dist/change-set/merge-change-sets.test.js.map +1 -0
  217. package/dist/change-set/restore-change-set.d.ts +14 -0
  218. package/dist/change-set/restore-change-set.d.ts.map +1 -0
  219. package/dist/change-set/restore-change-set.js +98 -0
  220. package/dist/change-set/restore-change-set.js.map +1 -0
  221. package/dist/change-set/restore-change-set.test.d.ts +2 -0
  222. package/dist/change-set/restore-change-set.test.d.ts.map +1 -0
  223. package/dist/change-set/restore-change-set.test.js +238 -0
  224. package/dist/change-set/restore-change-set.test.js.map +1 -0
  225. package/dist/change-set/schema.d.ts +105 -0
  226. package/dist/change-set/schema.d.ts.map +1 -0
  227. package/dist/change-set/schema.js +122 -0
  228. package/dist/change-set/schema.js.map +1 -0
  229. package/dist/change-set/schema.test.d.ts +2 -0
  230. package/dist/change-set/schema.test.d.ts.map +1 -0
  231. package/dist/change-set/schema.test.js +574 -0
  232. package/dist/change-set/schema.test.js.map +1 -0
  233. package/dist/change-set-edge/database-schema.d.ts +11 -0
  234. package/dist/change-set-edge/database-schema.d.ts.map +1 -0
  235. package/dist/change-set-edge/database-schema.js +29 -0
  236. package/dist/change-set-edge/database-schema.js.map +1 -0
  237. package/dist/change-set-edge/database-schema.test.d.ts +2 -0
  238. package/dist/change-set-edge/database-schema.test.d.ts.map +1 -0
  239. package/dist/change-set-edge/database-schema.test.js +166 -0
  240. package/dist/change-set-edge/database-schema.test.js.map +1 -0
  241. package/dist/change-set-edge/index.d.ts +2 -0
  242. package/dist/change-set-edge/index.d.ts.map +1 -0
  243. package/dist/change-set-edge/index.js +2 -0
  244. package/dist/change-set-edge/index.js.map +1 -0
  245. package/dist/change-set-v2/apply-change-set.d.ts +10 -0
  246. package/dist/change-set-v2/apply-change-set.d.ts.map +1 -0
  247. package/dist/change-set-v2/apply-change-set.js +147 -0
  248. package/dist/change-set-v2/apply-change-set.js.map +1 -0
  249. package/dist/change-set-v2/apply-change-set.test.d.ts +2 -0
  250. package/dist/change-set-v2/apply-change-set.test.d.ts.map +1 -0
  251. package/dist/change-set-v2/apply-change-set.test.js +270 -0
  252. package/dist/change-set-v2/apply-change-set.test.js.map +1 -0
  253. package/dist/change-set-v2/create-change-set.d.ts +10 -0
  254. package/dist/change-set-v2/create-change-set.d.ts.map +1 -0
  255. package/dist/change-set-v2/create-change-set.js +57 -0
  256. package/dist/change-set-v2/create-change-set.js.map +1 -0
  257. package/dist/change-set-v2/create-change-set.test.d.ts +2 -0
  258. package/dist/change-set-v2/create-change-set.test.d.ts.map +1 -0
  259. package/dist/change-set-v2/create-change-set.test.js +59 -0
  260. package/dist/change-set-v2/create-change-set.test.js.map +1 -0
  261. package/dist/change-set-v2/create-checkpoint.d.ts +7 -0
  262. package/dist/change-set-v2/create-checkpoint.d.ts.map +1 -0
  263. package/dist/change-set-v2/create-checkpoint.js +79 -0
  264. package/dist/change-set-v2/create-checkpoint.js.map +1 -0
  265. package/dist/change-set-v2/create-checkpoint.test.d.ts +2 -0
  266. package/dist/change-set-v2/create-checkpoint.test.d.ts.map +1 -0
  267. package/dist/change-set-v2/create-checkpoint.test.js +289 -0
  268. package/dist/change-set-v2/create-checkpoint.test.js.map +1 -0
  269. package/dist/change-set-v2/create-merge-change-set.d.ts +23 -0
  270. package/dist/change-set-v2/create-merge-change-set.d.ts.map +1 -0
  271. package/dist/change-set-v2/create-merge-change-set.js +68 -0
  272. package/dist/change-set-v2/create-merge-change-set.js.map +1 -0
  273. package/dist/change-set-v2/create-merge-change-set.test.d.ts +2 -0
  274. package/dist/change-set-v2/create-merge-change-set.test.d.ts.map +1 -0
  275. package/dist/change-set-v2/create-merge-change-set.test.js +223 -0
  276. package/dist/change-set-v2/create-merge-change-set.test.js.map +1 -0
  277. package/dist/change-set-v2/index.d.ts +5 -0
  278. package/dist/change-set-v2/index.d.ts.map +1 -0
  279. package/dist/change-set-v2/index.js +5 -0
  280. package/dist/change-set-v2/index.js.map +1 -0
  281. package/dist/change-set-v2/schema.d.ts +50 -0
  282. package/dist/change-set-v2/schema.d.ts.map +1 -0
  283. package/dist/change-set-v2/schema.js +347 -0
  284. package/dist/change-set-v2/schema.js.map +1 -0
  285. package/dist/change-set-v2/schema.test.d.ts +2 -0
  286. package/dist/change-set-v2/schema.test.d.ts.map +1 -0
  287. package/dist/change-set-v2/schema.test.js +713 -0
  288. package/dist/change-set-v2/schema.test.js.map +1 -0
  289. package/dist/commit/apply-commit.d.ts +32 -0
  290. package/dist/commit/apply-commit.d.ts.map +1 -0
  291. package/dist/commit/apply-commit.js +63 -0
  292. package/dist/commit/apply-commit.js.map +1 -0
  293. package/dist/commit/apply-commit.test.d.ts +2 -0
  294. package/dist/commit/apply-commit.test.d.ts.map +1 -0
  295. package/dist/commit/apply-commit.test.js +367 -0
  296. package/dist/commit/apply-commit.test.js.map +1 -0
  297. package/dist/commit/create-checkpoint.d.ts +19 -0
  298. package/dist/commit/create-checkpoint.d.ts.map +1 -0
  299. package/dist/commit/create-checkpoint.js +118 -0
  300. package/dist/commit/create-checkpoint.js.map +1 -0
  301. package/dist/commit/create-checkpoint.test.d.ts +2 -0
  302. package/dist/commit/create-checkpoint.test.d.ts.map +1 -0
  303. package/dist/commit/create-checkpoint.test.js +472 -0
  304. package/dist/commit/create-checkpoint.test.js.map +1 -0
  305. package/dist/commit/create-commit.d.ts +38 -0
  306. package/dist/commit/create-commit.d.ts.map +1 -0
  307. package/dist/commit/create-commit.js +68 -0
  308. package/dist/commit/create-commit.js.map +1 -0
  309. package/dist/commit/create-merge-commit.d.ts +24 -0
  310. package/dist/commit/create-merge-commit.d.ts.map +1 -0
  311. package/dist/commit/create-merge-commit.js +103 -0
  312. package/dist/commit/create-merge-commit.js.map +1 -0
  313. package/dist/commit/create-merge-commit.test.d.ts +2 -0
  314. package/dist/commit/create-merge-commit.test.d.ts.map +1 -0
  315. package/dist/commit/create-merge-commit.test.js +242 -0
  316. package/dist/commit/create-merge-commit.test.js.map +1 -0
  317. package/dist/commit/create-transition-commit.d.ts +18 -0
  318. package/dist/commit/create-transition-commit.d.ts.map +1 -0
  319. package/dist/commit/create-transition-commit.js +136 -0
  320. package/dist/commit/create-transition-commit.js.map +1 -0
  321. package/dist/commit/create-transition-commit.test.d.ts +2 -0
  322. package/dist/commit/create-transition-commit.test.d.ts.map +1 -0
  323. package/dist/commit/create-transition-commit.test.js +221 -0
  324. package/dist/commit/create-transition-commit.test.js.map +1 -0
  325. package/dist/commit/create-undo-commit.d.ts +27 -0
  326. package/dist/commit/create-undo-commit.d.ts.map +1 -0
  327. package/dist/commit/create-undo-commit.js +143 -0
  328. package/dist/commit/create-undo-commit.js.map +1 -0
  329. package/dist/commit/create-undo-commit.test.d.ts +2 -0
  330. package/dist/commit/create-undo-commit.test.d.ts.map +1 -0
  331. package/dist/commit/create-undo-commit.test.js +298 -0
  332. package/dist/commit/create-undo-commit.test.js.map +1 -0
  333. package/dist/commit/index.d.ts +6 -0
  334. package/dist/commit/index.d.ts.map +1 -0
  335. package/dist/commit/index.js +6 -0
  336. package/dist/commit/index.js.map +1 -0
  337. package/dist/commit/schema.d.ts +73 -0
  338. package/dist/commit/schema.d.ts.map +1 -0
  339. package/dist/commit/schema.js +90 -0
  340. package/dist/commit/schema.js.map +1 -0
  341. package/dist/commit/schema.test.d.ts +2 -0
  342. package/dist/commit/schema.test.d.ts.map +1 -0
  343. package/dist/commit/schema.test.js +216 -0
  344. package/dist/commit/schema.test.js.map +1 -0
  345. package/dist/database/apply-schema.d.ts +3 -0
  346. package/dist/database/apply-schema.d.ts.map +1 -1
  347. package/dist/database/apply-schema.js +91 -258
  348. package/dist/database/apply-schema.js.map +1 -1
  349. package/dist/database/execute-sync.d.ts +12 -6
  350. package/dist/database/execute-sync.d.ts.map +1 -1
  351. package/dist/database/execute-sync.js +25 -24
  352. package/dist/database/execute-sync.js.map +1 -1
  353. package/dist/database/execute-sync.test.js +53 -60
  354. package/dist/database/execute-sync.test.js.map +1 -1
  355. package/dist/database/graph-traversal-mode.d.ts +72 -0
  356. package/dist/database/graph-traversal-mode.d.ts.map +1 -0
  357. package/dist/database/graph-traversal-mode.js +2 -0
  358. package/dist/database/graph-traversal-mode.js.map +1 -0
  359. package/dist/database/index.d.ts +1 -2
  360. package/dist/database/index.d.ts.map +1 -1
  361. package/dist/database/index.js +1 -2
  362. package/dist/database/index.js.map +1 -1
  363. package/dist/database/init-db.d.ts +2 -0
  364. package/dist/database/init-db.d.ts.map +1 -1
  365. package/dist/database/init-db.js +119 -67
  366. package/dist/database/init-db.js.map +1 -1
  367. package/dist/database/init-db.test.js +2 -480
  368. package/dist/database/init-db.test.js.map +1 -1
  369. package/dist/database/kysely-plugin/json-column-plugin.d.ts +7 -0
  370. package/dist/database/kysely-plugin/json-column-plugin.d.ts.map +1 -0
  371. package/dist/database/kysely-plugin/json-column-plugin.js +210 -0
  372. package/dist/database/kysely-plugin/json-column-plugin.js.map +1 -0
  373. package/dist/database/kysely-plugin/json-column-plugin.test.d.ts +2 -0
  374. package/dist/database/kysely-plugin/json-column-plugin.test.d.ts.map +1 -0
  375. package/dist/database/kysely-plugin/json-column-plugin.test.js +329 -0
  376. package/dist/database/kysely-plugin/json-column-plugin.test.js.map +1 -0
  377. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts.map +1 -1
  378. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js +5 -10
  379. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js.map +1 -1
  380. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js +1 -1
  381. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js.map +1 -1
  382. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts +14 -2
  383. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts.map +1 -1
  384. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js +145 -74
  385. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js.map +1 -1
  386. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js +145 -1
  387. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js.map +1 -1
  388. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.d.ts +15 -0
  389. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.d.ts.map +1 -0
  390. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.js +31 -0
  391. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.js.map +1 -0
  392. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.d.ts +2 -0
  393. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.d.ts.map +1 -0
  394. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.js +51 -0
  395. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.js.map +1 -0
  396. package/dist/database/mutation-log/database-schema.d.ts.map +1 -1
  397. package/dist/database/mutation-log/database-schema.js +0 -4
  398. package/dist/database/mutation-log/database-schema.js.map +1 -1
  399. package/dist/database/nano-id.d.ts +4 -1
  400. package/dist/database/nano-id.d.ts.map +1 -1
  401. package/dist/database/nano-id.js +4 -1
  402. package/dist/database/nano-id.js.map +1 -1
  403. package/dist/database/nano-id.test.js +3 -3
  404. package/dist/database/nano-id.test.js.map +1 -1
  405. package/dist/database/schema.d.ts +50 -209
  406. package/dist/database/schema.d.ts.map +1 -1
  407. package/dist/database/schema.js +39 -1
  408. package/dist/database/schema.js.map +1 -1
  409. package/dist/deterministic/generate-human-id.d.ts +20 -0
  410. package/dist/deterministic/generate-human-id.d.ts.map +1 -0
  411. package/dist/deterministic/generate-human-id.js +86 -0
  412. package/dist/deterministic/generate-human-id.js.map +1 -0
  413. package/dist/deterministic/generate-human-id.test.d.ts +2 -0
  414. package/dist/deterministic/generate-human-id.test.d.ts.map +1 -0
  415. package/dist/deterministic/generate-human-id.test.js +123 -0
  416. package/dist/deterministic/generate-human-id.test.js.map +1 -0
  417. package/dist/deterministic/index.d.ts +8 -0
  418. package/dist/deterministic/index.d.ts.map +1 -0
  419. package/dist/deterministic/index.js +8 -0
  420. package/dist/deterministic/index.js.map +1 -0
  421. package/dist/deterministic/is-deterministic-mode.d.ts +14 -0
  422. package/dist/deterministic/is-deterministic-mode.d.ts.map +1 -0
  423. package/dist/deterministic/is-deterministic-mode.js +25 -0
  424. package/dist/deterministic/is-deterministic-mode.js.map +1 -0
  425. package/dist/deterministic/is-deterministic-mode.test.d.ts +2 -0
  426. package/dist/deterministic/is-deterministic-mode.test.d.ts.map +1 -0
  427. package/dist/deterministic/is-deterministic-mode.test.js +103 -0
  428. package/dist/deterministic/is-deterministic-mode.test.js.map +1 -0
  429. package/dist/deterministic/nano-id.d.ts +61 -0
  430. package/dist/deterministic/nano-id.d.ts.map +1 -0
  431. package/dist/deterministic/nano-id.js +161 -0
  432. package/dist/deterministic/nano-id.js.map +1 -0
  433. package/dist/deterministic/nano-id.test.d.ts +2 -0
  434. package/dist/deterministic/nano-id.test.d.ts.map +1 -0
  435. package/dist/deterministic/nano-id.test.js +163 -0
  436. package/dist/deterministic/nano-id.test.js.map +1 -0
  437. package/dist/deterministic/options.d.ts +53 -0
  438. package/dist/deterministic/options.d.ts.map +1 -0
  439. package/dist/deterministic/options.js +52 -0
  440. package/dist/deterministic/options.js.map +1 -0
  441. package/dist/deterministic/options.test.d.ts +2 -0
  442. package/dist/deterministic/options.test.d.ts.map +1 -0
  443. package/dist/deterministic/options.test.js +111 -0
  444. package/dist/deterministic/options.test.js.map +1 -0
  445. package/dist/deterministic/random.d.ts +68 -0
  446. package/dist/deterministic/random.d.ts.map +1 -0
  447. package/dist/deterministic/random.js +225 -0
  448. package/dist/deterministic/random.js.map +1 -0
  449. package/dist/deterministic/random.test.d.ts +2 -0
  450. package/dist/deterministic/random.test.d.ts.map +1 -0
  451. package/dist/deterministic/random.test.js +244 -0
  452. package/dist/deterministic/random.test.js.map +1 -0
  453. package/dist/deterministic/sequence.d.ts +56 -0
  454. package/dist/deterministic/sequence.d.ts.map +1 -0
  455. package/dist/deterministic/sequence.js +107 -0
  456. package/dist/deterministic/sequence.js.map +1 -0
  457. package/dist/deterministic/sequence.test.d.ts +2 -0
  458. package/dist/deterministic/sequence.test.d.ts.map +1 -0
  459. package/dist/deterministic/sequence.test.js +71 -0
  460. package/dist/deterministic/sequence.test.js.map +1 -0
  461. package/dist/deterministic/timestamp.d.ts +47 -0
  462. package/dist/deterministic/timestamp.d.ts.map +1 -0
  463. package/dist/deterministic/timestamp.js +74 -0
  464. package/dist/deterministic/timestamp.js.map +1 -0
  465. package/dist/deterministic/timestamp.test.d.ts +2 -0
  466. package/dist/deterministic/timestamp.test.d.ts.map +1 -0
  467. package/dist/deterministic/timestamp.test.js +145 -0
  468. package/dist/deterministic/timestamp.test.js.map +1 -0
  469. package/dist/deterministic/uuid-v7.d.ts +49 -0
  470. package/dist/deterministic/uuid-v7.d.ts.map +1 -0
  471. package/dist/deterministic/uuid-v7.js +75 -0
  472. package/dist/deterministic/uuid-v7.js.map +1 -0
  473. package/dist/deterministic/uuid-v7.test.d.ts +2 -0
  474. package/dist/deterministic/uuid-v7.test.d.ts.map +1 -0
  475. package/dist/deterministic/uuid-v7.test.js +114 -0
  476. package/dist/deterministic/uuid-v7.test.js.map +1 -0
  477. package/dist/discussion/create-discussion.d.ts +2 -1
  478. package/dist/discussion/create-discussion.d.ts.map +1 -1
  479. package/dist/discussion/create-discussion.js.map +1 -1
  480. package/dist/discussion/create-discussion.test.js +13 -2
  481. package/dist/discussion/create-discussion.test.js.map +1 -1
  482. package/dist/entity/eb-entity.d.ts +76 -0
  483. package/dist/entity/eb-entity.d.ts.map +1 -0
  484. package/dist/entity/eb-entity.js +156 -0
  485. package/dist/entity/eb-entity.js.map +1 -0
  486. package/dist/entity/eb-entity.test.d.ts +2 -0
  487. package/dist/entity/eb-entity.test.d.ts.map +1 -0
  488. package/dist/entity/eb-entity.test.js +573 -0
  489. package/dist/entity/eb-entity.test.js.map +1 -0
  490. package/dist/entity/index.d.ts +7 -0
  491. package/dist/entity/index.d.ts.map +1 -0
  492. package/dist/entity/index.js +4 -0
  493. package/dist/entity/index.js.map +1 -0
  494. package/dist/entity/label/create-entity-label.d.ts +61 -0
  495. package/dist/entity/label/create-entity-label.d.ts.map +1 -0
  496. package/dist/entity/label/create-entity-label.js +92 -0
  497. package/dist/entity/label/create-entity-label.js.map +1 -0
  498. package/dist/entity/label/create-entity-label.test.d.ts +2 -0
  499. package/dist/entity/label/create-entity-label.test.d.ts.map +1 -0
  500. package/dist/entity/label/create-entity-label.test.js +261 -0
  501. package/dist/entity/label/create-entity-label.test.js.map +1 -0
  502. package/dist/entity/label/schema.d.ts +40 -0
  503. package/dist/entity/label/schema.d.ts.map +1 -0
  504. package/dist/entity/label/schema.js +42 -0
  505. package/dist/entity/label/schema.js.map +1 -0
  506. package/dist/entity/label/schema.test.d.ts +2 -0
  507. package/dist/entity/label/schema.test.d.ts.map +1 -0
  508. package/dist/entity/label/schema.test.js +596 -0
  509. package/dist/entity/label/schema.test.js.map +1 -0
  510. package/dist/entity/schema.d.ts +13 -0
  511. package/dist/entity/schema.d.ts.map +1 -0
  512. package/dist/entity/schema.js +5 -0
  513. package/dist/entity/schema.js.map +1 -0
  514. package/dist/entity/thread/create-entity-thread.d.ts +75 -0
  515. package/dist/entity/thread/create-entity-thread.d.ts.map +1 -0
  516. package/dist/entity/thread/create-entity-thread.js +109 -0
  517. package/dist/entity/thread/create-entity-thread.js.map +1 -0
  518. package/dist/entity/thread/create-entity-thread.test.d.ts +2 -0
  519. package/dist/entity/thread/create-entity-thread.test.d.ts.map +1 -0
  520. package/dist/entity/thread/create-entity-thread.test.js +240 -0
  521. package/dist/entity/thread/create-entity-thread.test.js.map +1 -0
  522. package/dist/entity/thread/query-threads.test.d.ts +2 -0
  523. package/dist/entity/thread/query-threads.test.d.ts.map +1 -0
  524. package/dist/entity/thread/query-threads.test.js +330 -0
  525. package/dist/entity/thread/query-threads.test.js.map +1 -0
  526. package/dist/entity/thread/schema.d.ts +40 -0
  527. package/dist/entity/thread/schema.d.ts.map +1 -0
  528. package/dist/entity/thread/schema.js +42 -0
  529. package/dist/entity/thread/schema.js.map +1 -0
  530. package/dist/entity/thread/schema.test.d.ts +2 -0
  531. package/dist/entity/thread/schema.test.d.ts.map +1 -0
  532. package/dist/entity/thread/schema.test.js +144 -0
  533. package/dist/entity/thread/schema.test.js.map +1 -0
  534. package/dist/entity-views/entity-state-all.d.ts +269 -0
  535. package/dist/entity-views/entity-state-all.d.ts.map +1 -0
  536. package/dist/entity-views/entity-state-all.js +254 -0
  537. package/dist/entity-views/entity-state-all.js.map +1 -0
  538. package/dist/entity-views/entity-state-all.test.d.ts +2 -0
  539. package/dist/entity-views/entity-state-all.test.d.ts.map +1 -0
  540. package/dist/entity-views/entity-state-all.test.js +544 -0
  541. package/dist/entity-views/entity-state-all.test.js.map +1 -0
  542. package/dist/entity-views/entity-state-history.d.ts +218 -0
  543. package/dist/entity-views/entity-state-history.d.ts.map +1 -0
  544. package/dist/entity-views/entity-state-history.js +61 -0
  545. package/dist/entity-views/entity-state-history.js.map +1 -0
  546. package/dist/entity-views/entity-state-history.test.d.ts +2 -0
  547. package/dist/entity-views/entity-state-history.test.d.ts.map +1 -0
  548. package/dist/entity-views/entity-state-history.test.js +329 -0
  549. package/dist/entity-views/entity-state-history.test.js.map +1 -0
  550. package/dist/entity-views/entity-state.d.ts +269 -0
  551. package/dist/entity-views/entity-state.d.ts.map +1 -0
  552. package/dist/entity-views/entity-state.js +251 -0
  553. package/dist/entity-views/entity-state.js.map +1 -0
  554. package/dist/entity-views/entity-state.test.d.ts +2 -0
  555. package/dist/entity-views/entity-state.test.d.ts.map +1 -0
  556. package/dist/entity-views/entity-state.test.js +616 -0
  557. package/dist/entity-views/entity-state.test.js.map +1 -0
  558. package/dist/entity-views/entity-view-builder.d.ts +92 -0
  559. package/dist/entity-views/entity-view-builder.d.ts.map +1 -0
  560. package/dist/entity-views/entity-view-builder.js +63 -0
  561. package/dist/entity-views/entity-view-builder.js.map +1 -0
  562. package/dist/entity-views/entity-view-builder.test.d.ts +2 -0
  563. package/dist/entity-views/entity-view-builder.test.d.ts.map +1 -0
  564. package/dist/entity-views/entity-view-builder.test.js +247 -0
  565. package/dist/entity-views/entity-view-builder.test.js.map +1 -0
  566. package/dist/entity-views/index.d.ts +2 -0
  567. package/dist/entity-views/index.d.ts.map +1 -0
  568. package/dist/entity-views/index.js +2 -0
  569. package/dist/entity-views/index.js.map +1 -0
  570. package/dist/entity-views/types.d.ts +309 -0
  571. package/dist/entity-views/types.d.ts.map +1 -0
  572. package/dist/entity-views/types.js +2 -0
  573. package/dist/entity-views/types.js.map +1 -0
  574. package/dist/entity-views/types.test.d.ts +2 -0
  575. package/dist/entity-views/types.test.d.ts.map +1 -0
  576. package/dist/entity-views/types.test.js +62 -0
  577. package/dist/entity-views/types.test.js.map +1 -0
  578. package/dist/file/database-schema.d.ts +25 -0
  579. package/dist/file/database-schema.d.ts.map +1 -0
  580. package/dist/file/database-schema.js +26 -0
  581. package/dist/file/database-schema.js.map +1 -0
  582. package/dist/file/database-schema.test.d.ts +2 -0
  583. package/dist/file/database-schema.test.d.ts.map +1 -0
  584. package/dist/file/database-schema.test.js +60 -0
  585. package/dist/file/database-schema.test.js.map +1 -0
  586. package/dist/file/file-handlers.d.ts +15 -0
  587. package/dist/file/file-handlers.d.ts.map +1 -0
  588. package/dist/file/file-handlers.js +354 -0
  589. package/dist/file/file-handlers.js.map +1 -0
  590. package/dist/file/file-handlers.test.d.ts +2 -0
  591. package/dist/file/file-handlers.test.d.ts.map +1 -0
  592. package/dist/file/file-handlers.test.js +151 -0
  593. package/dist/file/file-handlers.test.js.map +1 -0
  594. package/dist/file/index.d.ts +1 -1
  595. package/dist/file/index.d.ts.map +1 -1
  596. package/dist/file/index.js +1 -1
  597. package/dist/file/index.js.map +1 -1
  598. package/dist/file/materialize-file-data-at-changeset.d.ts +9 -0
  599. package/dist/file/materialize-file-data-at-changeset.d.ts.map +1 -0
  600. package/dist/file/materialize-file-data-at-changeset.js +119 -0
  601. package/dist/file/materialize-file-data-at-changeset.js.map +1 -0
  602. package/dist/file/materialize-file-data-at-commit.d.ts +9 -0
  603. package/dist/file/materialize-file-data-at-commit.d.ts.map +1 -0
  604. package/dist/file/materialize-file-data-at-commit.js +119 -0
  605. package/dist/file/materialize-file-data-at-commit.js.map +1 -0
  606. package/dist/file/materialize-file-data.d.ts +8 -0
  607. package/dist/file/materialize-file-data.d.ts.map +1 -0
  608. package/dist/file/materialize-file-data.js +91 -0
  609. package/dist/file/materialize-file-data.js.map +1 -0
  610. package/dist/file/materialize-file-data.test.d.ts +2 -0
  611. package/dist/file/materialize-file-data.test.d.ts.map +1 -0
  612. package/dist/file/materialize-file-data.test.js +90 -0
  613. package/dist/file/materialize-file-data.test.js.map +1 -0
  614. package/dist/file/schema.d.ts +109 -0
  615. package/dist/file/schema.d.ts.map +1 -0
  616. package/dist/file/schema.js +333 -0
  617. package/dist/file/schema.js.map +1 -0
  618. package/dist/file/schema.test.d.ts +2 -0
  619. package/dist/file/schema.test.d.ts.map +1 -0
  620. package/dist/file/schema.test.js +1313 -0
  621. package/dist/file/schema.test.js.map +1 -0
  622. package/dist/file/store-detected-change-schema.d.ts +8 -0
  623. package/dist/file/store-detected-change-schema.d.ts.map +1 -0
  624. package/dist/file/store-detected-change-schema.js +41 -0
  625. package/dist/file/store-detected-change-schema.js.map +1 -0
  626. package/dist/file/store-detected-change-schema.test.d.ts +2 -0
  627. package/dist/file/store-detected-change-schema.test.d.ts.map +1 -0
  628. package/dist/file/store-detected-change-schema.test.js +211 -0
  629. package/dist/file/store-detected-change-schema.test.js.map +1 -0
  630. package/dist/file/unknown-file-fallback-plugin.d.ts +22 -0
  631. package/dist/file/unknown-file-fallback-plugin.d.ts.map +1 -0
  632. package/dist/file/unknown-file-fallback-plugin.js +73 -0
  633. package/dist/file/unknown-file-fallback-plugin.js.map +1 -0
  634. package/dist/file/unknown-file-fallback-plugin.test.d.ts +2 -0
  635. package/dist/file/unknown-file-fallback-plugin.test.d.ts.map +1 -0
  636. package/dist/file/unknown-file-fallback-plugin.test.js +305 -0
  637. package/dist/file/unknown-file-fallback-plugin.test.js.map +1 -0
  638. package/dist/file-queue/database-schema.d.ts +17 -0
  639. package/dist/file-queue/database-schema.d.ts.map +1 -0
  640. package/dist/file-queue/database-schema.js +53 -0
  641. package/dist/file-queue/database-schema.js.map +1 -0
  642. package/dist/file-queue/file-handlers.d.ts +1 -1
  643. package/dist/file-queue/file-handlers.d.ts.map +1 -1
  644. package/dist/file-queue/file-handlers.js +60 -29
  645. package/dist/file-queue/file-handlers.js.map +1 -1
  646. package/dist/file-queue/file-queue-process.d.ts.map +1 -1
  647. package/dist/file-queue/file-queue-process.js +26 -17
  648. package/dist/file-queue/file-queue-process.js.map +1 -1
  649. package/dist/file-queue/file-queue-process.test.js +133 -43
  650. package/dist/file-queue/file-queue-process.test.js.map +1 -1
  651. package/dist/file-queue/with-skip-file-queue.d.ts +18 -0
  652. package/dist/file-queue/with-skip-file-queue.d.ts.map +1 -1
  653. package/dist/file-queue/with-skip-file-queue.js +56 -10
  654. package/dist/file-queue/with-skip-file-queue.js.map +1 -1
  655. package/dist/file-queue/with-skip-file-queue.test.js +28 -12
  656. package/dist/file-queue/with-skip-file-queue.test.js.map +1 -1
  657. package/dist/hooks/create-hooks.d.ts +50 -0
  658. package/dist/hooks/create-hooks.d.ts.map +1 -0
  659. package/dist/hooks/create-hooks.js +25 -0
  660. package/dist/hooks/create-hooks.js.map +1 -0
  661. package/dist/hooks/create-hooks.test.d.ts +2 -0
  662. package/dist/hooks/create-hooks.test.d.ts.map +1 -0
  663. package/dist/hooks/create-hooks.test.js +98 -0
  664. package/dist/hooks/create-hooks.test.js.map +1 -0
  665. package/dist/hooks/index.d.ts +2 -0
  666. package/dist/hooks/index.d.ts.map +1 -0
  667. package/dist/hooks/index.js +2 -0
  668. package/dist/hooks/index.js.map +1 -0
  669. package/dist/index.d.ts +13 -6
  670. package/dist/index.d.ts.map +1 -1
  671. package/dist/index.js +13 -6
  672. package/dist/index.js.map +1 -1
  673. package/dist/key-value/database-schema.d.ts +3 -2
  674. package/dist/key-value/database-schema.d.ts.map +1 -1
  675. package/dist/key-value/database-schema.js +3 -3
  676. package/dist/key-value/database-schema.test.js +13 -4
  677. package/dist/key-value/database-schema.test.js.map +1 -1
  678. package/dist/key-value/index.d.ts +2 -0
  679. package/dist/key-value/index.d.ts.map +1 -0
  680. package/dist/key-value/index.js +2 -0
  681. package/dist/key-value/index.js.map +1 -0
  682. package/dist/key-value/schema.d.ts +81 -0
  683. package/dist/key-value/schema.d.ts.map +1 -0
  684. package/dist/key-value/schema.js +31 -0
  685. package/dist/key-value/schema.js.map +1 -0
  686. package/dist/key-value/schema.test.d.ts +2 -0
  687. package/dist/key-value/schema.test.d.ts.map +1 -0
  688. package/dist/key-value/schema.test.js +237 -0
  689. package/dist/key-value/schema.test.js.map +1 -0
  690. package/dist/key-value-v2/schema.d.ts +27 -0
  691. package/dist/key-value-v2/schema.d.ts.map +1 -0
  692. package/dist/key-value-v2/schema.js +73 -0
  693. package/dist/key-value-v2/schema.js.map +1 -0
  694. package/dist/key-value-v2/schema.test.d.ts +2 -0
  695. package/dist/key-value-v2/schema.test.d.ts.map +1 -0
  696. package/dist/key-value-v2/schema.test.js +144 -0
  697. package/dist/key-value-v2/schema.test.js.map +1 -0
  698. package/dist/label/create-label.d.ts +20 -0
  699. package/dist/label/create-label.d.ts.map +1 -0
  700. package/dist/label/create-label.js +45 -0
  701. package/dist/label/create-label.js.map +1 -0
  702. package/dist/label/create-label.test.d.ts +2 -0
  703. package/dist/label/create-label.test.d.ts.map +1 -0
  704. package/dist/label/create-label.test.js +191 -0
  705. package/dist/label/create-label.test.js.map +1 -0
  706. package/dist/label/index.d.ts +3 -0
  707. package/dist/label/index.d.ts.map +1 -0
  708. package/dist/label/index.js +3 -0
  709. package/dist/label/index.js.map +1 -0
  710. package/dist/label/schema.d.ts +22 -0
  711. package/dist/label/schema.d.ts.map +1 -0
  712. package/dist/label/schema.js +26 -0
  713. package/dist/label/schema.js.map +1 -0
  714. package/dist/label/schema.test.d.ts +2 -0
  715. package/dist/label/schema.test.d.ts.map +1 -0
  716. package/dist/label/schema.test.js +76 -0
  717. package/dist/label/schema.test.js.map +1 -0
  718. package/dist/lix/index.d.ts +3 -3
  719. package/dist/lix/index.d.ts.map +1 -1
  720. package/dist/lix/index.js +3 -6
  721. package/dist/lix/index.js.map +1 -1
  722. package/dist/lix/merge.test.js +4 -1
  723. package/dist/lix/merge.test.js.map +1 -1
  724. package/dist/lix/new-lix.d.ts +79 -4
  725. package/dist/lix/new-lix.d.ts.map +1 -1
  726. package/dist/lix/new-lix.js +487 -8
  727. package/dist/lix/new-lix.js.map +1 -1
  728. package/dist/lix/new-lix.test.js +346 -17
  729. package/dist/lix/new-lix.test.js.map +1 -1
  730. package/dist/lix/open-lix-in-memory.test.js +2 -7
  731. package/dist/lix/open-lix-in-memory.test.js.map +1 -1
  732. package/dist/lix/open-lix.d.ts +68 -7
  733. package/dist/lix/open-lix.d.ts.map +1 -1
  734. package/dist/lix/open-lix.js +190 -32
  735. package/dist/lix/open-lix.js.map +1 -1
  736. package/dist/lix/open-lix.test.js +296 -25
  737. package/dist/lix/open-lix.test.js.map +1 -1
  738. package/dist/lix/storage/in-memory.d.ts +35 -0
  739. package/dist/lix/storage/in-memory.d.ts.map +1 -0
  740. package/dist/lix/storage/in-memory.js +50 -0
  741. package/dist/lix/storage/in-memory.js.map +1 -0
  742. package/dist/lix/storage/in-memory.test.d.ts +2 -0
  743. package/dist/lix/storage/in-memory.test.d.ts.map +1 -0
  744. package/dist/lix/storage/in-memory.test.js +85 -0
  745. package/dist/lix/storage/in-memory.test.js.map +1 -0
  746. package/dist/lix/storage/lix-storage-adapter.d.ts +46 -0
  747. package/dist/lix/storage/lix-storage-adapter.d.ts.map +1 -0
  748. package/dist/lix/storage/lix-storage-adapter.js +2 -0
  749. package/dist/lix/storage/lix-storage-adapter.js.map +1 -0
  750. package/dist/lix/storage/opfs.d.ts +95 -0
  751. package/dist/lix/storage/opfs.d.ts.map +1 -0
  752. package/dist/lix/storage/opfs.js +263 -0
  753. package/dist/lix/storage/opfs.js.map +1 -0
  754. package/dist/lix/storage/opfs.test.d.ts +2 -0
  755. package/dist/lix/storage/opfs.test.d.ts.map +1 -0
  756. package/dist/lix/storage/opfs.test.js +350 -0
  757. package/dist/lix/storage/opfs.test.js.map +1 -0
  758. package/dist/log/create-lix-own-log.d.ts +74 -0
  759. package/dist/log/create-lix-own-log.d.ts.map +1 -0
  760. package/dist/log/create-lix-own-log.js +92 -0
  761. package/dist/log/create-lix-own-log.js.map +1 -0
  762. package/dist/log/create-lix-own-log.test.d.ts +2 -0
  763. package/dist/log/create-lix-own-log.test.d.ts.map +1 -0
  764. package/dist/log/create-lix-own-log.test.js +85 -0
  765. package/dist/log/create-lix-own-log.test.js.map +1 -0
  766. package/dist/log/create-log.d.ts +32 -0
  767. package/dist/log/create-log.d.ts.map +1 -0
  768. package/dist/log/create-log.js +43 -0
  769. package/dist/log/create-log.js.map +1 -0
  770. package/dist/log/database-schema.d.ts +33 -0
  771. package/dist/log/database-schema.d.ts.map +1 -0
  772. package/dist/log/database-schema.js +14 -0
  773. package/dist/log/database-schema.js.map +1 -0
  774. package/dist/log/database-schema.test.d.ts +2 -0
  775. package/dist/log/database-schema.test.d.ts.map +1 -0
  776. package/dist/log/database-schema.test.js +22 -0
  777. package/dist/log/database-schema.test.js.map +1 -0
  778. package/dist/log/index.d.ts +3 -0
  779. package/dist/log/index.d.ts.map +1 -0
  780. package/dist/log/index.js +3 -0
  781. package/dist/log/index.js.map +1 -0
  782. package/dist/log/schema.d.ts +32 -0
  783. package/dist/log/schema.d.ts.map +1 -0
  784. package/dist/log/schema.js +42 -0
  785. package/dist/log/schema.js.map +1 -0
  786. package/dist/log/schema.test.d.ts +2 -0
  787. package/dist/log/schema.test.d.ts.map +1 -0
  788. package/dist/log/schema.test.js +119 -0
  789. package/dist/log/schema.test.js.map +1 -0
  790. package/dist/observe/create-observe.d.ts +17 -0
  791. package/dist/observe/create-observe.d.ts.map +1 -0
  792. package/dist/observe/create-observe.js +147 -0
  793. package/dist/observe/create-observe.js.map +1 -0
  794. package/dist/observe/create-observe.test.d.ts +2 -0
  795. package/dist/observe/create-observe.test.d.ts.map +1 -0
  796. package/dist/observe/create-observe.test.js +638 -0
  797. package/dist/observe/create-observe.test.js.map +1 -0
  798. package/dist/observe/determine-schema-keys.d.ts +6 -0
  799. package/dist/observe/determine-schema-keys.d.ts.map +1 -0
  800. package/dist/observe/determine-schema-keys.js +145 -0
  801. package/dist/observe/determine-schema-keys.js.map +1 -0
  802. package/dist/observe/determine-schema-keys.test.d.ts +2 -0
  803. package/dist/observe/determine-schema-keys.test.d.ts.map +1 -0
  804. package/dist/observe/determine-schema-keys.test.js +266 -0
  805. package/dist/observe/determine-schema-keys.test.js.map +1 -0
  806. package/dist/observe/index.d.ts +2 -0
  807. package/dist/observe/index.d.ts.map +1 -0
  808. package/dist/observe/index.js +2 -0
  809. package/dist/observe/index.js.map +1 -0
  810. package/dist/observe/lix-observable.d.ts +31 -0
  811. package/dist/observe/lix-observable.d.ts.map +1 -0
  812. package/dist/observe/lix-observable.js +65 -0
  813. package/dist/observe/lix-observable.js.map +1 -0
  814. package/dist/observe/lix-observable.test.d.ts +2 -0
  815. package/dist/observe/lix-observable.test.d.ts.map +1 -0
  816. package/dist/observe/lix-observable.test.js +187 -0
  817. package/dist/observe/lix-observable.test.js.map +1 -0
  818. package/dist/own-change-control/apply-own-change.d.ts +5 -1
  819. package/dist/own-change-control/apply-own-change.d.ts.map +1 -1
  820. package/dist/own-change-control/apply-own-change.js +26 -12
  821. package/dist/own-change-control/apply-own-change.js.map +1 -1
  822. package/dist/own-change-control/apply-own-change.test.js +86 -48
  823. package/dist/own-change-control/apply-own-change.test.js.map +1 -1
  824. package/dist/own-change-control/change-controlled-tables.d.ts +5 -7
  825. package/dist/own-change-control/change-controlled-tables.d.ts.map +1 -1
  826. package/dist/own-change-control/change-controlled-tables.js +27 -21
  827. package/dist/own-change-control/change-controlled-tables.js.map +1 -1
  828. package/dist/own-change-control/change-controlled-tables.test.js +35 -5
  829. package/dist/own-change-control/change-controlled-tables.test.js.map +1 -1
  830. package/dist/own-change-control/database-triggers.d.ts +2 -1
  831. package/dist/own-change-control/database-triggers.d.ts.map +1 -1
  832. package/dist/own-change-control/database-triggers.js +209 -67
  833. package/dist/own-change-control/database-triggers.js.map +1 -1
  834. package/dist/own-change-control/database-triggers.test.js +139 -8
  835. package/dist/own-change-control/database-triggers.test.js.map +1 -1
  836. package/dist/own-change-control/with-skip-own-change-control.d.ts.map +1 -1
  837. package/dist/own-change-control/with-skip-own-change-control.js +28 -6
  838. package/dist/own-change-control/with-skip-own-change-control.js.map +1 -1
  839. package/dist/own-change-control/with-skip-own-change-control.test.js +38 -1
  840. package/dist/own-change-control/with-skip-own-change-control.test.js.map +1 -1
  841. package/dist/plugin/index.d.ts +2 -1
  842. package/dist/plugin/index.d.ts.map +1 -1
  843. package/dist/plugin/index.js +1 -1
  844. package/dist/plugin/index.js.map +1 -1
  845. package/dist/plugin/lix-plugin.d.ts +26 -47
  846. package/dist/plugin/lix-plugin.d.ts.map +1 -1
  847. package/dist/plugin/lix-plugin.js +1 -1
  848. package/dist/plugin/lix-plugin.js.map +1 -1
  849. package/dist/plugin/lix-plugin.test-d.js +17 -11
  850. package/dist/plugin/lix-plugin.test-d.js.map +1 -1
  851. package/dist/plugin/load-plugin.d.ts.map +1 -1
  852. package/dist/plugin/load-plugin.js.map +1 -1
  853. package/dist/plugin/mock-json-plugin.d.ts +17 -0
  854. package/dist/plugin/mock-json-plugin.d.ts.map +1 -0
  855. package/dist/plugin/mock-json-plugin.flatten.d.ts +3 -0
  856. package/dist/plugin/mock-json-plugin.flatten.d.ts.map +1 -0
  857. package/dist/plugin/mock-json-plugin.flatten.js +124 -0
  858. package/dist/plugin/mock-json-plugin.flatten.js.map +1 -0
  859. package/dist/plugin/mock-json-plugin.js +101 -0
  860. package/dist/plugin/mock-json-plugin.js.map +1 -0
  861. package/dist/plugin/mock-json-plugin.test.d.ts +2 -0
  862. package/dist/plugin/mock-json-plugin.test.d.ts.map +1 -0
  863. package/dist/plugin/mock-json-plugin.test.js +164 -0
  864. package/dist/plugin/mock-json-plugin.test.js.map +1 -0
  865. package/dist/prototype/database-schema.d.ts +43 -0
  866. package/dist/prototype/database-schema.d.ts.map +1 -0
  867. package/dist/prototype/database-schema.js +72 -0
  868. package/dist/prototype/database-schema.js.map +1 -0
  869. package/dist/prototype/file-handlers.d.ts +24 -0
  870. package/dist/prototype/file-handlers.d.ts.map +1 -0
  871. package/dist/prototype/file-handlers.js +129 -0
  872. package/dist/prototype/file-handlers.js.map +1 -0
  873. package/dist/prototype/file-schema.d.ts +47 -0
  874. package/dist/prototype/file-schema.d.ts.map +1 -0
  875. package/dist/prototype/file-schema.js +135 -0
  876. package/dist/prototype/file-schema.js.map +1 -0
  877. package/dist/prototype/file-schema.test.d.ts +2 -0
  878. package/dist/prototype/file-schema.test.d.ts.map +1 -0
  879. package/dist/prototype/file-schema.test.js +146 -0
  880. package/dist/prototype/file-schema.test.js.map +1 -0
  881. package/dist/prototype/get-and-materialize-row.d.ts +5 -0
  882. package/dist/prototype/get-and-materialize-row.d.ts.map +1 -0
  883. package/dist/prototype/get-and-materialize-row.js +99 -0
  884. package/dist/prototype/get-and-materialize-row.js.map +1 -0
  885. package/dist/prototype/json-plugin.d.ts +49 -0
  886. package/dist/prototype/json-plugin.d.ts.map +1 -0
  887. package/dist/prototype/json-plugin.js +104 -0
  888. package/dist/prototype/json-plugin.js.map +1 -0
  889. package/dist/prototype/validate-file-path.d.ts +16 -0
  890. package/dist/prototype/validate-file-path.d.ts.map +1 -0
  891. package/dist/prototype/validate-file-path.js +44 -0
  892. package/dist/prototype/validate-file-path.js.map +1 -0
  893. package/dist/prototype/validate-file-path.test.d.ts +2 -0
  894. package/dist/prototype/validate-file-path.test.d.ts.map +1 -0
  895. package/dist/prototype/validate-file-path.test.js +36 -0
  896. package/dist/prototype/validate-file-path.test.js.map +1 -0
  897. package/dist/prototype/version-schema.d.ts +34 -0
  898. package/dist/prototype/version-schema.d.ts.map +1 -0
  899. package/dist/prototype/version-schema.js +86 -0
  900. package/dist/prototype/version-schema.js.map +1 -0
  901. package/dist/prototype/version-schema.test.d.ts +2 -0
  902. package/dist/prototype/version-schema.test.d.ts.map +1 -0
  903. package/dist/prototype/version-schema.test.js +114 -0
  904. package/dist/prototype/version-schema.test.js.map +1 -0
  905. package/dist/query-filter/change-conflict-in-version.d.ts +2 -0
  906. package/dist/query-filter/change-conflict-in-version.d.ts.map +1 -1
  907. package/dist/query-filter/change-conflict-in-version.js +2 -0
  908. package/dist/query-filter/change-conflict-in-version.js.map +1 -1
  909. package/dist/query-filter/change-has-label.d.ts +9 -3
  910. package/dist/query-filter/change-has-label.d.ts.map +1 -1
  911. package/dist/query-filter/change-has-label.js +7 -4
  912. package/dist/query-filter/change-has-label.js.map +1 -1
  913. package/dist/query-filter/change-has-label.test.js +36 -11
  914. package/dist/query-filter/change-has-label.test.js.map +1 -1
  915. package/dist/query-filter/change-in-version.d.ts +2 -0
  916. package/dist/query-filter/change-in-version.d.ts.map +1 -1
  917. package/dist/query-filter/change-in-version.js +2 -0
  918. package/dist/query-filter/change-in-version.js.map +1 -1
  919. package/dist/query-filter/change-is-leaf-in-version.d.ts +1 -0
  920. package/dist/query-filter/change-is-leaf-in-version.d.ts.map +1 -1
  921. package/dist/query-filter/change-is-leaf-in-version.js +1 -0
  922. package/dist/query-filter/change-is-leaf-in-version.js.map +1 -1
  923. package/dist/query-filter/change-is-leaf-of.d.ts +2 -0
  924. package/dist/query-filter/change-is-leaf-of.d.ts.map +1 -1
  925. package/dist/query-filter/change-is-leaf-of.js +2 -0
  926. package/dist/query-filter/change-is-leaf-of.js.map +1 -1
  927. package/dist/query-filter/change-is-leaf-v2.d.ts +69 -0
  928. package/dist/query-filter/change-is-leaf-v2.d.ts.map +1 -0
  929. package/dist/query-filter/change-is-leaf-v2.js +116 -0
  930. package/dist/query-filter/change-is-leaf-v2.js.map +1 -0
  931. package/dist/query-filter/change-is-leaf-v2.test.d.ts +2 -0
  932. package/dist/query-filter/change-is-leaf-v2.test.d.ts.map +1 -0
  933. package/dist/query-filter/change-is-leaf-v2.test.js +237 -0
  934. package/dist/query-filter/change-is-leaf-v2.test.js.map +1 -0
  935. package/dist/query-filter/change-is-leaf.d.ts +2 -0
  936. package/dist/query-filter/change-is-leaf.d.ts.map +1 -1
  937. package/dist/query-filter/change-is-leaf.js +2 -0
  938. package/dist/query-filter/change-is-leaf.js.map +1 -1
  939. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts +2 -0
  940. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts.map +1 -1
  941. package/dist/query-filter/change-is-lowest-common-ancestor-of.js +4 -0
  942. package/dist/query-filter/change-is-lowest-common-ancestor-of.js.map +1 -1
  943. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js +5 -3
  944. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js.map +1 -1
  945. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts +30 -0
  946. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts.map +1 -0
  947. package/dist/query-filter/change-set-element-in-ancestry-of.js +51 -0
  948. package/dist/query-filter/change-set-element-in-ancestry-of.js.map +1 -0
  949. package/dist/query-filter/change-set-element-in-ancestry-of.test.d.ts +2 -0
  950. package/dist/query-filter/change-set-element-in-ancestry-of.test.d.ts.map +1 -0
  951. package/dist/query-filter/change-set-element-in-ancestry-of.test.js +396 -0
  952. package/dist/query-filter/change-set-element-in-ancestry-of.test.js.map +1 -0
  953. package/dist/query-filter/change-set-element-in-symmetric-difference-of.d.ts +21 -0
  954. package/dist/query-filter/change-set-element-in-symmetric-difference-of.d.ts.map +1 -0
  955. package/dist/query-filter/change-set-element-in-symmetric-difference-of.js +37 -0
  956. package/dist/query-filter/change-set-element-in-symmetric-difference-of.js.map +1 -0
  957. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.d.ts +2 -0
  958. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.d.ts.map +1 -0
  959. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.js +276 -0
  960. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.js.map +1 -0
  961. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts +20 -0
  962. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts.map +1 -0
  963. package/dist/query-filter/change-set-element-in-symmetric-difference.js +36 -0
  964. package/dist/query-filter/change-set-element-in-symmetric-difference.js.map +1 -0
  965. package/dist/query-filter/change-set-element-in-symmetric-difference.test.d.ts +2 -0
  966. package/dist/query-filter/change-set-element-in-symmetric-difference.test.d.ts.map +1 -0
  967. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js +369 -0
  968. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js.map +1 -0
  969. package/dist/query-filter/change-set-element-is-leaf-of.d.ts +29 -0
  970. package/dist/query-filter/change-set-element-is-leaf-of.d.ts.map +1 -0
  971. package/dist/query-filter/change-set-element-is-leaf-of.js +113 -0
  972. package/dist/query-filter/change-set-element-is-leaf-of.js.map +1 -0
  973. package/dist/query-filter/change-set-element-is-leaf-of.test.d.ts +2 -0
  974. package/dist/query-filter/change-set-element-is-leaf-of.test.d.ts.map +1 -0
  975. package/dist/query-filter/change-set-element-is-leaf-of.test.js +574 -0
  976. package/dist/query-filter/change-set-element-is-leaf-of.test.js.map +1 -0
  977. package/dist/query-filter/change-set-has-label.d.ts +19 -3
  978. package/dist/query-filter/change-set-has-label.d.ts.map +1 -1
  979. package/dist/query-filter/change-set-has-label.js +17 -4
  980. package/dist/query-filter/change-set-has-label.js.map +1 -1
  981. package/dist/query-filter/change-set-has-label.test.js +13 -20
  982. package/dist/query-filter/change-set-has-label.test.js.map +1 -1
  983. package/dist/query-filter/change-set-is-ancestor-of.d.ts +51 -0
  984. package/dist/query-filter/change-set-is-ancestor-of.d.ts.map +1 -0
  985. package/dist/query-filter/change-set-is-ancestor-of.js +63 -0
  986. package/dist/query-filter/change-set-is-ancestor-of.js.map +1 -0
  987. package/dist/query-filter/change-set-is-ancestor-of.test.d.ts +2 -0
  988. package/dist/query-filter/change-set-is-ancestor-of.test.d.ts.map +1 -0
  989. package/dist/query-filter/change-set-is-ancestor-of.test.js +153 -0
  990. package/dist/query-filter/change-set-is-ancestor-of.test.js.map +1 -0
  991. package/dist/query-filter/change-set-is-descendant-of.d.ts +44 -0
  992. package/dist/query-filter/change-set-is-descendant-of.d.ts.map +1 -0
  993. package/dist/query-filter/change-set-is-descendant-of.js +56 -0
  994. package/dist/query-filter/change-set-is-descendant-of.js.map +1 -0
  995. package/dist/query-filter/change-set-is-descendant-of.test.d.ts +2 -0
  996. package/dist/query-filter/change-set-is-descendant-of.test.d.ts.map +1 -0
  997. package/dist/query-filter/change-set-is-descendant-of.test.js +137 -0
  998. package/dist/query-filter/change-set-is-descendant-of.test.js.map +1 -0
  999. package/dist/query-filter/commit-is-ancestor-of.d.ts +51 -0
  1000. package/dist/query-filter/commit-is-ancestor-of.d.ts.map +1 -0
  1001. package/dist/query-filter/commit-is-ancestor-of.js +63 -0
  1002. package/dist/query-filter/commit-is-ancestor-of.js.map +1 -0
  1003. package/dist/query-filter/commit-is-ancestor-of.test.d.ts +2 -0
  1004. package/dist/query-filter/commit-is-ancestor-of.test.d.ts.map +1 -0
  1005. package/dist/query-filter/commit-is-ancestor-of.test.js +292 -0
  1006. package/dist/query-filter/commit-is-ancestor-of.test.js.map +1 -0
  1007. package/dist/query-filter/commit-is-descendant-of.d.ts +44 -0
  1008. package/dist/query-filter/commit-is-descendant-of.d.ts.map +1 -0
  1009. package/dist/query-filter/commit-is-descendant-of.js +56 -0
  1010. package/dist/query-filter/commit-is-descendant-of.js.map +1 -0
  1011. package/dist/query-filter/commit-is-descendant-of.test.d.ts +2 -0
  1012. package/dist/query-filter/commit-is-descendant-of.test.d.ts.map +1 -0
  1013. package/dist/query-filter/commit-is-descendant-of.test.js +325 -0
  1014. package/dist/query-filter/commit-is-descendant-of.test.js.map +1 -0
  1015. package/dist/query-filter/index.d.ts +5 -8
  1016. package/dist/query-filter/index.d.ts.map +1 -1
  1017. package/dist/query-filter/index.js +5 -8
  1018. package/dist/query-filter/index.js.map +1 -1
  1019. package/dist/query-filter/version-change-in-difference.d.ts +2 -0
  1020. package/dist/query-filter/version-change-in-difference.d.ts.map +1 -1
  1021. package/dist/query-filter/version-change-in-difference.js +2 -0
  1022. package/dist/query-filter/version-change-in-difference.js.map +1 -1
  1023. package/dist/query-filter/version-change-in-symmetric-difference.d.ts +2 -0
  1024. package/dist/query-filter/version-change-in-symmetric-difference.d.ts.map +1 -1
  1025. package/dist/query-filter/version-change-in-symmetric-difference.js +2 -0
  1026. package/dist/query-filter/version-change-in-symmetric-difference.js.map +1 -1
  1027. package/dist/schema-definition/definition.d.ts +449 -0
  1028. package/dist/schema-definition/definition.d.ts.map +1 -0
  1029. package/dist/schema-definition/definition.js +106 -0
  1030. package/dist/schema-definition/definition.js.map +1 -0
  1031. package/dist/schema-definition/definition.test-d.d.ts +2 -0
  1032. package/dist/schema-definition/definition.test-d.d.ts.map +1 -0
  1033. package/dist/schema-definition/definition.test-d.js +177 -0
  1034. package/dist/schema-definition/definition.test-d.js.map +1 -0
  1035. package/dist/schema-definition/definition.test.d.ts +2 -0
  1036. package/dist/schema-definition/definition.test.d.ts.map +1 -0
  1037. package/dist/schema-definition/definition.test.js +369 -0
  1038. package/dist/schema-definition/definition.test.js.map +1 -0
  1039. package/dist/schema-definition/index.d.ts +4 -0
  1040. package/dist/schema-definition/index.d.ts.map +1 -0
  1041. package/dist/schema-definition/index.js +4 -0
  1042. package/dist/schema-definition/index.js.map +1 -0
  1043. package/dist/schema-definition/json-type.d.ts +24 -0
  1044. package/dist/schema-definition/json-type.d.ts.map +1 -0
  1045. package/dist/schema-definition/json-type.js +42 -0
  1046. package/dist/schema-definition/json-type.js.map +1 -0
  1047. package/dist/schema-definition/json-type.test.d.ts +2 -0
  1048. package/dist/schema-definition/json-type.test.d.ts.map +1 -0
  1049. package/dist/schema-definition/json-type.test.js +21 -0
  1050. package/dist/schema-definition/json-type.test.js.map +1 -0
  1051. package/dist/schema-definition/validate-lix-schema.d.ts +65 -0
  1052. package/dist/schema-definition/validate-lix-schema.d.ts.map +1 -0
  1053. package/dist/schema-definition/validate-lix-schema.js +93 -0
  1054. package/dist/schema-definition/validate-lix-schema.js.map +1 -0
  1055. package/dist/schema-definition/validate-lix-schema.test.d.ts +2 -0
  1056. package/dist/schema-definition/validate-lix-schema.test.d.ts.map +1 -0
  1057. package/dist/schema-definition/validate-lix-schema.test.js +73 -0
  1058. package/dist/schema-definition/validate-lix-schema.test.js.map +1 -0
  1059. package/dist/server-protocol-handler/create-server-protocol-handler.d.ts +0 -1
  1060. package/dist/server-protocol-handler/create-server-protocol-handler.d.ts.map +1 -1
  1061. package/dist/server-protocol-handler/create-server-protocol-handler.js +0 -2
  1062. package/dist/server-protocol-handler/create-server-protocol-handler.js.map +1 -1
  1063. package/dist/server-protocol-handler/environment/create-in-memory-environment.d.ts.map +1 -1
  1064. package/dist/server-protocol-handler/environment/create-in-memory-environment.js +5 -20
  1065. package/dist/server-protocol-handler/environment/create-in-memory-environment.js.map +1 -1
  1066. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js +13 -14
  1067. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js.map +1 -1
  1068. package/dist/server-protocol-handler/environment/environment.d.ts +0 -4
  1069. package/dist/server-protocol-handler/environment/environment.d.ts.map +1 -1
  1070. package/dist/server-protocol-handler/routes/get-v1.d.ts.map +1 -1
  1071. package/dist/server-protocol-handler/routes/get-v1.js +1 -1
  1072. package/dist/server-protocol-handler/routes/get-v1.js.map +1 -1
  1073. package/dist/server-protocol-handler/routes/get-v1.test.js +11 -12
  1074. package/dist/server-protocol-handler/routes/get-v1.test.js.map +1 -1
  1075. package/dist/server-protocol-handler/routes/new-v1.d.ts.map +1 -1
  1076. package/dist/server-protocol-handler/routes/new-v1.js +3 -5
  1077. package/dist/server-protocol-handler/routes/new-v1.js.map +1 -1
  1078. package/dist/server-protocol-handler/routes/new-v1.test.js +7 -8
  1079. package/dist/server-protocol-handler/routes/new-v1.test.js.map +1 -1
  1080. package/dist/server-protocol-handler/routes/pull-v1.test.js +48 -32
  1081. package/dist/server-protocol-handler/routes/pull-v1.test.js.map +1 -1
  1082. package/dist/server-protocol-handler/routes/push-v1.d.ts.map +1 -1
  1083. package/dist/server-protocol-handler/routes/push-v1.js +2 -0
  1084. package/dist/server-protocol-handler/routes/push-v1.js.map +1 -1
  1085. package/dist/server-protocol-handler/routes/push-v1.test.js +22 -26
  1086. package/dist/server-protocol-handler/routes/push-v1.test.js.map +1 -1
  1087. package/dist/services/env-variables/index.d.ts +1 -1
  1088. package/dist/services/env-variables/index.js +2 -2
  1089. package/dist/services/env-variables/index.js.map +1 -1
  1090. package/dist/services/telemetry/capture.d.ts.map +1 -1
  1091. package/dist/snapshot/create-snapshot.d.ts +3 -14
  1092. package/dist/snapshot/create-snapshot.d.ts.map +1 -1
  1093. package/dist/snapshot/create-snapshot.js +14 -19
  1094. package/dist/snapshot/create-snapshot.js.map +1 -1
  1095. package/dist/snapshot/create-snapshot.test.js +48 -19
  1096. package/dist/snapshot/create-snapshot.test.js.map +1 -1
  1097. package/dist/snapshot/database-schema.d.ts +19 -0
  1098. package/dist/snapshot/database-schema.d.ts.map +1 -0
  1099. package/dist/snapshot/database-schema.js +33 -0
  1100. package/dist/snapshot/database-schema.js.map +1 -0
  1101. package/dist/snapshot/database-schema.test.d.ts +2 -0
  1102. package/dist/snapshot/database-schema.test.d.ts.map +1 -0
  1103. package/dist/snapshot/database-schema.test.js +58 -0
  1104. package/dist/snapshot/database-schema.test.js.map +1 -0
  1105. package/dist/snapshot/index.d.ts +1 -0
  1106. package/dist/snapshot/index.d.ts.map +1 -1
  1107. package/dist/snapshot/index.js +1 -0
  1108. package/dist/snapshot/index.js.map +1 -1
  1109. package/dist/snapshot/json-sha-256.d.ts +2 -1
  1110. package/dist/snapshot/json-sha-256.d.ts.map +1 -1
  1111. package/dist/snapshot/json-sha-256.js +1 -3
  1112. package/dist/snapshot/json-sha-256.js.map +1 -1
  1113. package/dist/snapshot/json-sha-256.test.js +40 -2
  1114. package/dist/snapshot/json-sha-256.test.js.map +1 -1
  1115. package/dist/snapshot/mock-json-snapshot.d.ts +1 -1
  1116. package/dist/snapshot/mock-json-snapshot.d.ts.map +1 -1
  1117. package/dist/snapshot/schema.d.ts +8 -0
  1118. package/dist/snapshot/schema.d.ts.map +1 -0
  1119. package/dist/snapshot/schema.js +20 -0
  1120. package/dist/snapshot/schema.js.map +1 -0
  1121. package/dist/snapshot/schema.test.d.ts +2 -0
  1122. package/dist/snapshot/schema.test.d.ts.map +1 -0
  1123. package/dist/snapshot/schema.test.js +202 -0
  1124. package/dist/snapshot/schema.test.js.map +1 -0
  1125. package/dist/state/cache/clear-state-cache.d.ts +8 -0
  1126. package/dist/state/cache/clear-state-cache.d.ts.map +1 -0
  1127. package/dist/state/cache/clear-state-cache.js +14 -0
  1128. package/dist/state/cache/clear-state-cache.js.map +1 -0
  1129. package/dist/state/cache/clear-state-cache.test.d.ts +2 -0
  1130. package/dist/state/cache/clear-state-cache.test.d.ts.map +1 -0
  1131. package/dist/state/cache/clear-state-cache.test.js +34 -0
  1132. package/dist/state/cache/clear-state-cache.test.js.map +1 -0
  1133. package/dist/state/cache/is-stale-state-cache.d.ts +5 -0
  1134. package/dist/state/cache/is-stale-state-cache.d.ts.map +1 -0
  1135. package/dist/state/cache/is-stale-state-cache.js +22 -0
  1136. package/dist/state/cache/is-stale-state-cache.js.map +1 -0
  1137. package/dist/state/cache/is-stale-state-cache.test.d.ts +2 -0
  1138. package/dist/state/cache/is-stale-state-cache.test.d.ts.map +1 -0
  1139. package/dist/state/cache/is-stale-state-cache.test.js +27 -0
  1140. package/dist/state/cache/is-stale-state-cache.test.js.map +1 -0
  1141. package/dist/state/cache/mark-state-cache-as-stale.d.ts +10 -0
  1142. package/dist/state/cache/mark-state-cache-as-stale.d.ts.map +1 -0
  1143. package/dist/state/cache/mark-state-cache-as-stale.js +42 -0
  1144. package/dist/state/cache/mark-state-cache-as-stale.js.map +1 -0
  1145. package/dist/state/cache/populate-state-cache.d.ts +9 -0
  1146. package/dist/state/cache/populate-state-cache.d.ts.map +1 -0
  1147. package/dist/state/cache/populate-state-cache.js +106 -0
  1148. package/dist/state/cache/populate-state-cache.js.map +1 -0
  1149. package/dist/state/cache/populate-state-cache.test.d.ts +2 -0
  1150. package/dist/state/cache/populate-state-cache.test.d.ts.map +1 -0
  1151. package/dist/state/cache/populate-state-cache.test.js +204 -0
  1152. package/dist/state/cache/populate-state-cache.test.js.map +1 -0
  1153. package/dist/state/cache/schema.d.ts +20 -0
  1154. package/dist/state/cache/schema.d.ts.map +1 -0
  1155. package/dist/state/cache/schema.js +21 -0
  1156. package/dist/state/cache/schema.js.map +1 -0
  1157. package/dist/state/cache/update-state-cache.d.ts +21 -0
  1158. package/dist/state/cache/update-state-cache.d.ts.map +1 -0
  1159. package/dist/state/cache/update-state-cache.js +294 -0
  1160. package/dist/state/cache/update-state-cache.js.map +1 -0
  1161. package/dist/state/cache/update-state-cache.test.d.ts +2 -0
  1162. package/dist/state/cache/update-state-cache.test.d.ts.map +1 -0
  1163. package/dist/state/cache/update-state-cache.test.js +440 -0
  1164. package/dist/state/cache/update-state-cache.test.js.map +1 -0
  1165. package/dist/state/commit.d.ts +18 -0
  1166. package/dist/state/commit.d.ts.map +1 -0
  1167. package/dist/state/commit.js +457 -0
  1168. package/dist/state/commit.js.map +1 -0
  1169. package/dist/state/commit.test.d.ts +2 -0
  1170. package/dist/state/commit.test.d.ts.map +1 -0
  1171. package/dist/state/commit.test.js +1173 -0
  1172. package/dist/state/commit.test.js.map +1 -0
  1173. package/dist/state/create-changeset-for-transaction.d.ts +15 -0
  1174. package/dist/state/create-changeset-for-transaction.d.ts.map +1 -0
  1175. package/dist/state/create-changeset-for-transaction.js +237 -0
  1176. package/dist/state/create-changeset-for-transaction.js.map +1 -0
  1177. package/dist/state/get-version-record-by-id-or-throw.d.ts +6 -0
  1178. package/dist/state/get-version-record-by-id-or-throw.d.ts.map +1 -0
  1179. package/dist/state/get-version-record-by-id-or-throw.js +36 -0
  1180. package/dist/state/get-version-record-by-id-or-throw.js.map +1 -0
  1181. package/dist/state/handle-state-mutation.d.ts +6 -0
  1182. package/dist/state/handle-state-mutation.d.ts.map +1 -0
  1183. package/dist/state/handle-state-mutation.js +157 -0
  1184. package/dist/state/handle-state-mutation.js.map +1 -0
  1185. package/dist/state/handle-state-mutation.test.d.ts +2 -0
  1186. package/dist/state/handle-state-mutation.test.d.ts.map +1 -0
  1187. package/dist/state/handle-state-mutation.test.js +686 -0
  1188. package/dist/state/handle-state-mutation.test.js.map +1 -0
  1189. package/dist/state/insert-transaction-state.d.ts +71 -0
  1190. package/dist/state/insert-transaction-state.d.ts.map +1 -0
  1191. package/dist/state/insert-transaction-state.js +272 -0
  1192. package/dist/state/insert-transaction-state.js.map +1 -0
  1193. package/dist/state/insert-transaction-state.test.d.ts +2 -0
  1194. package/dist/state/insert-transaction-state.test.d.ts.map +1 -0
  1195. package/dist/state/insert-transaction-state.test.js +789 -0
  1196. package/dist/state/insert-transaction-state.test.js.map +1 -0
  1197. package/dist/state/materialize-state.d.ts +3 -0
  1198. package/dist/state/materialize-state.d.ts.map +1 -0
  1199. package/dist/state/materialize-state.js +230 -0
  1200. package/dist/state/materialize-state.js.map +1 -0
  1201. package/dist/state/materialize-state.test.d.ts +2 -0
  1202. package/dist/state/materialize-state.test.d.ts.map +1 -0
  1203. package/dist/state/materialize-state.test.js +1934 -0
  1204. package/dist/state/materialize-state.test.js.map +1 -0
  1205. package/dist/state/primary-key.d.ts +39 -0
  1206. package/dist/state/primary-key.d.ts.map +1 -0
  1207. package/dist/state/primary-key.js +62 -0
  1208. package/dist/state/primary-key.js.map +1 -0
  1209. package/dist/state/primary-key.test.d.ts +2 -0
  1210. package/dist/state/primary-key.test.d.ts.map +1 -0
  1211. package/dist/state/primary-key.test.js +114 -0
  1212. package/dist/state/primary-key.test.js.map +1 -0
  1213. package/dist/state/resolved-state-view.d.ts +33 -0
  1214. package/dist/state/resolved-state-view.d.ts.map +1 -0
  1215. package/dist/state/resolved-state-view.js +182 -0
  1216. package/dist/state/resolved-state-view.js.map +1 -0
  1217. package/dist/state/resolved-state-view.test.d.ts +2 -0
  1218. package/dist/state/resolved-state-view.test.d.ts.map +1 -0
  1219. package/dist/state/resolved-state-view.test.js +433 -0
  1220. package/dist/state/resolved-state-view.test.js.map +1 -0
  1221. package/dist/state/schema.bench.d.ts +2 -0
  1222. package/dist/state/schema.bench.d.ts.map +1 -0
  1223. package/dist/state/schema.bench.js +36 -0
  1224. package/dist/state/schema.bench.js.map +1 -0
  1225. package/dist/state/schema.d.ts +43 -0
  1226. package/dist/state/schema.d.ts.map +1 -0
  1227. package/dist/state/schema.js +789 -0
  1228. package/dist/state/schema.js.map +1 -0
  1229. package/dist/state/schema.test.d.ts +2 -0
  1230. package/dist/state/schema.test.d.ts.map +1 -0
  1231. package/dist/state/schema.test.js +2701 -0
  1232. package/dist/state/schema.test.js.map +1 -0
  1233. package/dist/state/untracked/schema.d.ts +25 -0
  1234. package/dist/state/untracked/schema.d.ts.map +1 -0
  1235. package/dist/state/untracked/schema.js +38 -0
  1236. package/dist/state/untracked/schema.js.map +1 -0
  1237. package/dist/state/untracked/schema.test.d.ts +2 -0
  1238. package/dist/state/untracked/schema.test.d.ts.map +1 -0
  1239. package/dist/state/untracked/schema.test.js +275 -0
  1240. package/dist/state/untracked/schema.test.js.map +1 -0
  1241. package/dist/state/untracked/update-untracked-state.d.ts +36 -0
  1242. package/dist/state/untracked/update-untracked-state.d.ts.map +1 -0
  1243. package/dist/state/untracked/update-untracked-state.js +113 -0
  1244. package/dist/state/untracked/update-untracked-state.js.map +1 -0
  1245. package/dist/state/untracked/update-untracked-state.test.d.ts +2 -0
  1246. package/dist/state/untracked/update-untracked-state.test.d.ts.map +1 -0
  1247. package/dist/state/untracked/update-untracked-state.test.js +417 -0
  1248. package/dist/state/untracked/update-untracked-state.test.js.map +1 -0
  1249. package/dist/state/validate-snapshot-content.d.ts +9 -0
  1250. package/dist/state/validate-snapshot-content.d.ts.map +1 -0
  1251. package/dist/state/validate-snapshot-content.js +42 -0
  1252. package/dist/state/validate-snapshot-content.js.map +1 -0
  1253. package/dist/state/validate-snapshot-content.test.d.ts +2 -0
  1254. package/dist/state/validate-snapshot-content.test.d.ts.map +1 -0
  1255. package/dist/state/validate-snapshot-content.test.js +67 -0
  1256. package/dist/state/validate-snapshot-content.test.js.map +1 -0
  1257. package/dist/state/validate-state-mutation.d.ts +13 -0
  1258. package/dist/state/validate-state-mutation.d.ts.map +1 -0
  1259. package/dist/state/validate-state-mutation.js +645 -0
  1260. package/dist/state/validate-state-mutation.js.map +1 -0
  1261. package/dist/state/validate-state-mutation.test.d.ts +2 -0
  1262. package/dist/state/validate-state-mutation.test.d.ts.map +1 -0
  1263. package/dist/state/validate-state-mutation.test.js +2859 -0
  1264. package/dist/state/validate-state-mutation.test.js.map +1 -0
  1265. package/dist/state-history/schema.d.ts +68 -0
  1266. package/dist/state-history/schema.d.ts.map +1 -0
  1267. package/dist/state-history/schema.js +116 -0
  1268. package/dist/state-history/schema.js.map +1 -0
  1269. package/dist/state-history/schema.test.d.ts +2 -0
  1270. package/dist/state-history/schema.test.d.ts.map +1 -0
  1271. package/dist/state-history/schema.test.js +855 -0
  1272. package/dist/state-history/schema.test.js.map +1 -0
  1273. package/dist/stored-schema/index.d.ts +2 -0
  1274. package/dist/stored-schema/index.d.ts.map +1 -0
  1275. package/dist/stored-schema/index.js +2 -0
  1276. package/dist/stored-schema/index.js.map +1 -0
  1277. package/dist/stored-schema/schema.d.ts +25 -0
  1278. package/dist/stored-schema/schema.d.ts.map +1 -0
  1279. package/dist/stored-schema/schema.js +48 -0
  1280. package/dist/stored-schema/schema.js.map +1 -0
  1281. package/dist/stored-schema/schema.test.d.ts +2 -0
  1282. package/dist/stored-schema/schema.test.d.ts.map +1 -0
  1283. package/dist/stored-schema/schema.test.js +192 -0
  1284. package/dist/stored-schema/schema.test.js.map +1 -0
  1285. package/dist/sync/get-diffing-rows.d.ts +12 -0
  1286. package/dist/sync/get-diffing-rows.d.ts.map +1 -1
  1287. package/dist/sync/get-diffing-rows.js +14 -0
  1288. package/dist/sync/get-diffing-rows.js.map +1 -1
  1289. package/dist/sync/merge-state.d.ts.map +1 -1
  1290. package/dist/sync/merge-state.js +2 -1
  1291. package/dist/sync/merge-state.js.map +1 -1
  1292. package/dist/sync/pull-from-server.d.ts.map +1 -1
  1293. package/dist/sync/pull-from-server.js +2 -1
  1294. package/dist/sync/pull-from-server.js.map +1 -1
  1295. package/dist/sync/pull-from-server.test.js +32 -28
  1296. package/dist/sync/pull-from-server.test.js.map +1 -1
  1297. package/dist/sync/push-to-server.d.ts +10 -1
  1298. package/dist/sync/push-to-server.d.ts.map +1 -1
  1299. package/dist/sync/push-to-server.js +10 -1
  1300. package/dist/sync/push-to-server.js.map +1 -1
  1301. package/dist/sync/push-to-server.test.js +62 -63
  1302. package/dist/sync/push-to-server.test.js.map +1 -1
  1303. package/dist/sync/sync-process.d.ts +1 -1
  1304. package/dist/sync/sync-process.d.ts.map +1 -1
  1305. package/dist/sync/sync-process.js +1 -2
  1306. package/dist/sync/sync-process.js.map +1 -1
  1307. package/dist/sync/sync-process.test.js +20 -17
  1308. package/dist/sync/sync-process.test.js.map +1 -1
  1309. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts +8 -0
  1310. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts.map +1 -0
  1311. package/dist/test-utilities/simulation-test/cache-miss-simulation.js +79 -0
  1312. package/dist/test-utilities/simulation-test/cache-miss-simulation.js.map +1 -0
  1313. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.d.ts +2 -0
  1314. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.d.ts.map +1 -0
  1315. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js +127 -0
  1316. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js.map +1 -0
  1317. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.d.ts +2 -0
  1318. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.d.ts.map +1 -0
  1319. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.js +2 -0
  1320. package/dist/test-utilities/simulation-test/chaotic-timestamp-simulation.js.map +1 -0
  1321. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts +10 -0
  1322. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts.map +1 -0
  1323. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js +52 -0
  1324. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js.map +1 -0
  1325. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.d.ts +2 -0
  1326. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.d.ts.map +1 -0
  1327. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js +71 -0
  1328. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js.map +1 -0
  1329. package/dist/test-utilities/simulation-test/simulation-test.d.ts +82 -0
  1330. package/dist/test-utilities/simulation-test/simulation-test.d.ts.map +1 -0
  1331. package/dist/test-utilities/simulation-test/simulation-test.js +85 -0
  1332. package/dist/test-utilities/simulation-test/simulation-test.js.map +1 -0
  1333. package/dist/test-utilities/simulation-test/simulation-test.test.d.ts +2 -0
  1334. package/dist/test-utilities/simulation-test/simulation-test.test.d.ts.map +1 -0
  1335. package/dist/test-utilities/simulation-test/simulation-test.test.js +310 -0
  1336. package/dist/test-utilities/simulation-test/simulation-test.test.js.map +1 -0
  1337. package/dist/thread/comment-utils.d.ts +2 -0
  1338. package/dist/thread/comment-utils.d.ts.map +1 -0
  1339. package/dist/thread/comment-utils.js +2 -0
  1340. package/dist/thread/comment-utils.js.map +1 -0
  1341. package/dist/thread/comment.d.ts +24 -0
  1342. package/dist/thread/comment.d.ts.map +1 -0
  1343. package/dist/thread/comment.js +43 -0
  1344. package/dist/thread/comment.js.map +1 -0
  1345. package/dist/thread/create-thread-comment.d.ts +18 -0
  1346. package/dist/thread/create-thread-comment.d.ts.map +1 -0
  1347. package/dist/thread/create-thread-comment.js +64 -0
  1348. package/dist/thread/create-thread-comment.js.map +1 -0
  1349. package/dist/thread/create-thread-comment.test.d.ts +2 -0
  1350. package/dist/thread/create-thread-comment.test.d.ts.map +1 -0
  1351. package/dist/thread/create-thread-comment.test.js +97 -0
  1352. package/dist/thread/create-thread-comment.test.js.map +1 -0
  1353. package/dist/thread/create-thread.d.ts +42 -0
  1354. package/dist/thread/create-thread.d.ts.map +1 -0
  1355. package/dist/thread/create-thread.js +79 -0
  1356. package/dist/thread/create-thread.js.map +1 -0
  1357. package/dist/thread/create-thread.test.d.ts +2 -0
  1358. package/dist/thread/create-thread.test.d.ts.map +1 -0
  1359. package/dist/thread/create-thread.test.js +175 -0
  1360. package/dist/thread/create-thread.test.js.map +1 -0
  1361. package/dist/thread/database-schema.d.ts +20 -0
  1362. package/dist/thread/database-schema.d.ts.map +1 -0
  1363. package/dist/thread/database-schema.js +57 -0
  1364. package/dist/thread/database-schema.js.map +1 -0
  1365. package/dist/thread/database-schema.test.d.ts +2 -0
  1366. package/dist/thread/database-schema.test.d.ts.map +1 -0
  1367. package/dist/thread/database-schema.test.js +59 -0
  1368. package/dist/thread/database-schema.test.js.map +1 -0
  1369. package/dist/thread/index.d.ts +5 -0
  1370. package/dist/thread/index.d.ts.map +1 -0
  1371. package/dist/thread/index.js +4 -0
  1372. package/dist/thread/index.js.map +1 -0
  1373. package/dist/thread/schema.d.ts +62 -0
  1374. package/dist/thread/schema.d.ts.map +1 -0
  1375. package/dist/thread/schema.js +72 -0
  1376. package/dist/thread/schema.js.map +1 -0
  1377. package/dist/thread/schema.test.d.ts +2 -0
  1378. package/dist/thread/schema.test.d.ts.map +1 -0
  1379. package/dist/thread/schema.test.js +125 -0
  1380. package/dist/thread/schema.test.js.map +1 -0
  1381. package/dist/version/create-version.d.ts +14 -17
  1382. package/dist/version/create-version.d.ts.map +1 -1
  1383. package/dist/version/create-version.js +53 -52
  1384. package/dist/version/create-version.js.map +1 -1
  1385. package/dist/version/create-version.test.js +121 -109
  1386. package/dist/version/create-version.test.js.map +1 -1
  1387. package/dist/version/database-schema.d.ts +21 -0
  1388. package/dist/version/database-schema.d.ts.map +1 -0
  1389. package/dist/version/database-schema.js +169 -0
  1390. package/dist/version/database-schema.js.map +1 -0
  1391. package/dist/version/database-schema.test.d.ts +2 -0
  1392. package/dist/version/database-schema.test.d.ts.map +1 -0
  1393. package/dist/version/database-schema.test.js +625 -0
  1394. package/dist/version/database-schema.test.js.map +1 -0
  1395. package/dist/version/index.d.ts +1 -5
  1396. package/dist/version/index.d.ts.map +1 -1
  1397. package/dist/version/index.js +1 -5
  1398. package/dist/version/index.js.map +1 -1
  1399. package/dist/version/merge-version.d.ts +3 -0
  1400. package/dist/version/merge-version.d.ts.map +1 -1
  1401. package/dist/version/merge-version.js +3 -0
  1402. package/dist/version/merge-version.js.map +1 -1
  1403. package/dist/version/merge-version.test.js +10 -5
  1404. package/dist/version/merge-version.test.js.map +1 -1
  1405. package/dist/version/schema.d.ts +78 -0
  1406. package/dist/version/schema.d.ts.map +1 -0
  1407. package/dist/version/schema.js +147 -0
  1408. package/dist/version/schema.js.map +1 -0
  1409. package/dist/version/schema.test.d.ts +2 -0
  1410. package/dist/version/schema.test.d.ts.map +1 -0
  1411. package/dist/version/schema.test.js +884 -0
  1412. package/dist/version/schema.test.js.map +1 -0
  1413. package/dist/version/select-active-version.d.ts +7 -0
  1414. package/dist/version/select-active-version.d.ts.map +1 -0
  1415. package/dist/version/select-active-version.js +7 -0
  1416. package/dist/version/select-active-version.js.map +1 -0
  1417. package/dist/version/switch-version.d.ts +5 -5
  1418. package/dist/version/switch-version.d.ts.map +1 -1
  1419. package/dist/version/switch-version.js +6 -62
  1420. package/dist/version/switch-version.js.map +1 -1
  1421. package/dist/version/switch-version.test.js +14 -214
  1422. package/dist/version/switch-version.test.js.map +1 -1
  1423. package/dist/version/update-changes-in-version.d.ts +2 -0
  1424. package/dist/version/update-changes-in-version.d.ts.map +1 -1
  1425. package/dist/version/update-changes-in-version.js +2 -0
  1426. package/dist/version/update-changes-in-version.js.map +1 -1
  1427. package/dist/version-v2/create-version.d.ts +18 -0
  1428. package/dist/version-v2/create-version.d.ts.map +1 -0
  1429. package/dist/version-v2/create-version.js +35 -0
  1430. package/dist/version-v2/create-version.js.map +1 -0
  1431. package/dist/version-v2/create-version.test.d.ts +2 -0
  1432. package/dist/version-v2/create-version.test.d.ts.map +1 -0
  1433. package/dist/version-v2/create-version.test.js +88 -0
  1434. package/dist/version-v2/create-version.test.js.map +1 -0
  1435. package/dist/version-v2/database-schema.d.ts +21 -0
  1436. package/dist/version-v2/database-schema.d.ts.map +1 -0
  1437. package/dist/version-v2/database-schema.js +169 -0
  1438. package/dist/version-v2/database-schema.js.map +1 -0
  1439. package/dist/version-v2/database-schema.test.d.ts +2 -0
  1440. package/dist/version-v2/database-schema.test.d.ts.map +1 -0
  1441. package/dist/version-v2/database-schema.test.js +625 -0
  1442. package/dist/version-v2/database-schema.test.js.map +1 -0
  1443. package/dist/version-v2/index.d.ts +2 -0
  1444. package/dist/version-v2/index.d.ts.map +1 -0
  1445. package/dist/version-v2/index.js +2 -0
  1446. package/dist/version-v2/index.js.map +1 -0
  1447. package/dist/version-v2/swich-version.d.ts +27 -0
  1448. package/dist/version-v2/swich-version.d.ts.map +1 -0
  1449. package/dist/version-v2/swich-version.js +46 -0
  1450. package/dist/version-v2/swich-version.js.map +1 -0
  1451. package/dist/version-v2/switch-version.d.ts +27 -0
  1452. package/dist/version-v2/switch-version.d.ts.map +1 -0
  1453. package/dist/version-v2/switch-version.js +91 -0
  1454. package/dist/version-v2/switch-version.js.map +1 -0
  1455. package/dist/version-v2/switch-version.test.d.ts +2 -0
  1456. package/dist/version-v2/switch-version.test.d.ts.map +1 -0
  1457. package/dist/version-v2/switch-version.test.js +110 -0
  1458. package/dist/version-v2/switch-version.test.js.map +1 -0
  1459. package/dist/version-v2/with-skip-update-working-change-set.d.ts +3 -0
  1460. package/dist/version-v2/with-skip-update-working-change-set.d.ts.map +1 -0
  1461. package/dist/version-v2/with-skip-update-working-change-set.js +50 -0
  1462. package/dist/version-v2/with-skip-update-working-change-set.js.map +1 -0
  1463. package/dist/version-v2/with-skip-update-working-change-set.test.d.ts +2 -0
  1464. package/dist/version-v2/with-skip-update-working-change-set.test.d.ts.map +1 -0
  1465. package/dist/version-v2/with-skip-update-working-change-set.test.js +49 -0
  1466. package/dist/version-v2/with-skip-update-working-change-set.test.js.map +1 -0
  1467. package/dist/zettel-ast/index.d.ts +11 -0
  1468. package/dist/zettel-ast/index.d.ts.map +1 -0
  1469. package/dist/zettel-ast/index.js +11 -0
  1470. package/dist/zettel-ast/index.js.map +1 -0
  1471. package/package.json +12 -11
  1472. package/src/account/create-account.test.ts +49 -4
  1473. package/src/account/create-account.ts +37 -7
  1474. package/src/account/index.ts +5 -1
  1475. package/src/account/schema.test.ts +370 -0
  1476. package/src/account/schema.ts +132 -0
  1477. package/src/account/switch-account.test.ts +33 -10
  1478. package/src/account/switch-account.ts +13 -4
  1479. package/src/change/index.ts +4 -2
  1480. package/src/change/schema.test.ts +322 -0
  1481. package/src/change/schema.ts +173 -0
  1482. package/src/change-author/index.ts +4 -0
  1483. package/src/change-author/schema.test.ts +364 -0
  1484. package/src/change-author/schema.ts +54 -0
  1485. package/src/change-conflict/create-change-conflict.test.ts +14 -11
  1486. package/src/change-conflict/create-change-conflict.ts +29 -6
  1487. package/src/change-conflict/detect-change-conflicts.test.ts +18 -15
  1488. package/src/change-conflict/detect-change-conflicts.ts +3 -0
  1489. package/src/change-conflict/detect-diverging-entity-conflict.test.ts +24 -21
  1490. package/src/change-conflict/detect-diverging-entity-conflict.ts +4 -1
  1491. package/src/change-conflict/garbage-collect-change-conflicts.test.ts +16 -15
  1492. package/src/change-conflict/garbage-collect-change-conflicts.ts +3 -0
  1493. package/src/change-conflict/resolve-conflict-by-selecting.test.ts +18 -8
  1494. package/src/change-conflict/resolve-conflict-by-selecting.ts +3 -2
  1495. package/src/change-proposal/create-change-proposal.test.ts +106 -0
  1496. package/src/change-proposal/create-change-proposal.ts +71 -0
  1497. package/src/change-proposal/database-schema.test.ts +180 -0
  1498. package/src/change-proposal/database-schema.ts +32 -0
  1499. package/src/change-proposal/index.ts +2 -0
  1500. package/src/change-set/apply-change-set.test.ts +472 -0
  1501. package/src/change-set/apply-change-set.ts +174 -0
  1502. package/src/change-set/create-change-set.test.ts +87 -27
  1503. package/src/change-set/create-change-set.ts +95 -43
  1504. package/src/change-set/index.ts +9 -1
  1505. package/src/change-set/schema.test.ts +671 -0
  1506. package/src/change-set/schema.ts +150 -0
  1507. package/src/commit/apply-commit.test.ts +426 -0
  1508. package/src/commit/apply-commit.ts +74 -0
  1509. package/src/commit/create-checkpoint.test.ts +605 -0
  1510. package/src/commit/create-checkpoint.ts +140 -0
  1511. package/src/commit/create-commit.ts +80 -0
  1512. package/src/commit/create-merge-commit.test.ts +268 -0
  1513. package/src/commit/create-merge-commit.ts +138 -0
  1514. package/src/commit/create-transition-commit.test.ts +256 -0
  1515. package/src/commit/create-transition-commit.ts +187 -0
  1516. package/src/commit/create-undo-commit.test.ts +358 -0
  1517. package/src/commit/create-undo-commit.ts +180 -0
  1518. package/src/commit/index.ts +11 -0
  1519. package/src/commit/schema.test.ts +257 -0
  1520. package/src/commit/schema.ts +104 -0
  1521. package/src/database/execute-sync.test.ts +60 -72
  1522. package/src/database/execute-sync.ts +26 -27
  1523. package/src/database/graph-traversal-mode.ts +75 -0
  1524. package/src/database/index.ts +1 -2
  1525. package/src/database/init-db.ts +158 -74
  1526. package/src/database/kysely-plugin/json-column-plugin.test.ts +404 -0
  1527. package/src/database/kysely-plugin/json-column-plugin.ts +280 -0
  1528. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.ts +5 -10
  1529. package/src/database/kysely-plugin/parse-jsonb-plugin-v2.ts +1 -1
  1530. package/src/database/kysely-plugin/serialize-jsonb-plugin.test.ts +177 -2
  1531. package/src/database/kysely-plugin/serialize-jsonb-plugin.ts +186 -87
  1532. package/src/database/kysely-plugin/view-insert-returning-error-plugin.test.ts +62 -0
  1533. package/src/database/kysely-plugin/view-insert-returning-error-plugin.ts +49 -0
  1534. package/src/database/nano-id.test.ts +3 -3
  1535. package/src/database/nano-id.ts +4 -1
  1536. package/src/database/schema.ts +105 -270
  1537. package/src/deterministic/generate-human-id.test.ts +154 -0
  1538. package/src/deterministic/generate-human-id.ts +94 -0
  1539. package/src/deterministic/index.ts +7 -0
  1540. package/src/deterministic/is-deterministic-mode.test.ts +133 -0
  1541. package/src/deterministic/is-deterministic-mode.ts +32 -0
  1542. package/src/deterministic/nano-id.test.ts +200 -0
  1543. package/src/deterministic/nano-id.ts +188 -0
  1544. package/src/deterministic/options.test.ts +157 -0
  1545. package/src/deterministic/options.ts +62 -0
  1546. package/src/deterministic/random.test.ts +293 -0
  1547. package/src/deterministic/random.ts +261 -0
  1548. package/src/deterministic/sequence.test.ts +93 -0
  1549. package/src/deterministic/sequence.ts +132 -0
  1550. package/src/deterministic/timestamp.test.ts +170 -0
  1551. package/src/deterministic/timestamp.ts +83 -0
  1552. package/src/deterministic/uuid-v7.test.ts +144 -0
  1553. package/src/deterministic/uuid-v7.ts +82 -0
  1554. package/src/entity/eb-entity.test.ts +687 -0
  1555. package/src/entity/eb-entity.ts +203 -0
  1556. package/src/entity/index.ts +12 -0
  1557. package/src/entity/label/create-entity-label.test.ts +316 -0
  1558. package/src/entity/label/create-entity-label.ts +113 -0
  1559. package/src/entity/label/schema.test.ts +692 -0
  1560. package/src/entity/label/schema.ts +55 -0
  1561. package/src/entity/schema.ts +22 -0
  1562. package/src/entity/thread/create-entity-thread.test.ts +282 -0
  1563. package/src/entity/thread/create-entity-thread.ts +134 -0
  1564. package/src/entity/thread/query-threads.test.ts +394 -0
  1565. package/src/entity/thread/schema.test.ts +170 -0
  1566. package/src/entity/thread/schema.ts +55 -0
  1567. package/src/entity-views/README.md +214 -0
  1568. package/src/entity-views/entity-state-all.test.ts +647 -0
  1569. package/src/entity-views/entity-state-all.ts +575 -0
  1570. package/src/entity-views/entity-state-history.test.ts +387 -0
  1571. package/src/entity-views/entity-state-history.ts +275 -0
  1572. package/src/entity-views/entity-state.test.ts +732 -0
  1573. package/src/entity-views/entity-state.ts +571 -0
  1574. package/src/entity-views/entity-view-builder.test.ts +293 -0
  1575. package/src/entity-views/entity-view-builder.ts +148 -0
  1576. package/src/entity-views/index.ts +1 -0
  1577. package/src/entity-views/types.test.ts +99 -0
  1578. package/src/entity-views/types.ts +328 -0
  1579. package/src/file/file-handlers.test.ts +174 -0
  1580. package/src/file/file-handlers.ts +404 -0
  1581. package/src/file/index.ts +5 -1
  1582. package/src/file/materialize-file-data-at-commit.ts +157 -0
  1583. package/src/file/materialize-file-data.test.ts +107 -0
  1584. package/src/file/materialize-file-data.ts +120 -0
  1585. package/src/file/schema.test.ts +1646 -0
  1586. package/src/file/schema.ts +427 -0
  1587. package/src/file/store-detected-change-schema.test.ts +248 -0
  1588. package/src/file/store-detected-change-schema.ts +52 -0
  1589. package/src/file/unknown-file-fallback-plugin.test.ts +368 -0
  1590. package/src/file/unknown-file-fallback-plugin.ts +95 -0
  1591. package/src/hooks/create-hooks.test.ts +125 -0
  1592. package/src/hooks/create-hooks.ts +68 -0
  1593. package/src/hooks/index.ts +1 -0
  1594. package/src/index.ts +13 -6
  1595. package/src/key-value/index.ts +1 -0
  1596. package/src/key-value/schema.test.ts +280 -0
  1597. package/src/key-value/schema.ts +98 -0
  1598. package/src/label/create-label.test.ts +234 -0
  1599. package/src/label/create-label.ts +61 -0
  1600. package/src/label/index.ts +2 -0
  1601. package/src/label/schema.test.ts +92 -0
  1602. package/src/label/schema.ts +37 -0
  1603. package/src/lix/index.ts +3 -6
  1604. package/src/lix/new-lix.test.ts +412 -16
  1605. package/src/lix/new-lix.ts +619 -8
  1606. package/src/lix/open-lix.test.ts +369 -27
  1607. package/src/lix/open-lix.ts +256 -46
  1608. package/src/lix/storage/in-memory.test.ts +106 -0
  1609. package/src/lix/storage/in-memory.ts +64 -0
  1610. package/src/lix/storage/lix-storage-adapter.ts +52 -0
  1611. package/src/lix/storage/opfs.test.ts +438 -0
  1612. package/src/lix/storage/opfs.ts +313 -0
  1613. package/src/log/create-lix-own-log.test.ts +123 -0
  1614. package/src/log/create-lix-own-log.ts +113 -0
  1615. package/src/log/create-log.ts +52 -0
  1616. package/src/log/index.ts +2 -0
  1617. package/src/log/schema.test.ts +140 -0
  1618. package/src/log/schema.ts +51 -0
  1619. package/src/observe/create-observe.test.ts +836 -0
  1620. package/src/observe/create-observe.ts +184 -0
  1621. package/src/observe/determine-schema-keys.test.ts +371 -0
  1622. package/src/observe/determine-schema-keys.ts +165 -0
  1623. package/src/observe/index.ts +1 -0
  1624. package/src/observe/lix-observable.test.ts +247 -0
  1625. package/src/observe/lix-observable.ts +92 -0
  1626. package/src/plugin/index.ts +2 -2
  1627. package/src/plugin/lix-plugin.test-d.ts +26 -15
  1628. package/src/plugin/lix-plugin.ts +43 -52
  1629. package/src/plugin/mock-json-plugin.flatten.ts +161 -0
  1630. package/src/plugin/mock-json-plugin.test.ts +214 -0
  1631. package/src/plugin/mock-json-plugin.ts +113 -0
  1632. package/src/query-filter/change-set-element-in-ancestry-of.test.ts +440 -0
  1633. package/src/query-filter/change-set-element-in-ancestry-of.ts +69 -0
  1634. package/src/query-filter/change-set-element-in-symmetric-difference.test.ts +410 -0
  1635. package/src/{change-set → query-filter}/change-set-element-in-symmetric-difference.ts +4 -3
  1636. package/src/query-filter/change-set-element-is-leaf-of.test.ts +623 -0
  1637. package/src/query-filter/change-set-element-is-leaf-of.ts +132 -0
  1638. package/src/query-filter/commit-is-ancestor-of.test.ts +333 -0
  1639. package/src/query-filter/commit-is-ancestor-of.ts +77 -0
  1640. package/src/query-filter/commit-is-descendant-of.test.ts +365 -0
  1641. package/src/query-filter/commit-is-descendant-of.ts +70 -0
  1642. package/src/query-filter/index.ts +5 -8
  1643. package/src/schema-definition/definition.test-d.ts +253 -0
  1644. package/src/schema-definition/definition.test.ts +425 -0
  1645. package/src/schema-definition/definition.ts +502 -0
  1646. package/src/schema-definition/index.ts +13 -0
  1647. package/src/schema-definition/json-type.test.ts +30 -0
  1648. package/src/schema-definition/json-type.ts +53 -0
  1649. package/src/schema-definition/validate-lix-schema.test.ts +94 -0
  1650. package/src/schema-definition/validate-lix-schema.ts +104 -0
  1651. package/src/server-protocol-handler/create-server-protocol-handler.ts +0 -4
  1652. package/src/server-protocol-handler/environment/create-in-memory-environment.test.ts +13 -14
  1653. package/src/server-protocol-handler/environment/create-in-memory-environment.ts +5 -24
  1654. package/src/server-protocol-handler/environment/environment.ts +0 -5
  1655. package/src/server-protocol-handler/routes/get-v1.test.ts +11 -12
  1656. package/src/server-protocol-handler/routes/get-v1.ts +3 -1
  1657. package/src/server-protocol-handler/routes/new-v1.test.ts +7 -8
  1658. package/src/server-protocol-handler/routes/new-v1.ts +3 -5
  1659. package/src/server-protocol-handler/routes/pull-v1.test.ts +49 -33
  1660. package/src/server-protocol-handler/routes/pull-v1.ts +1 -1
  1661. package/src/server-protocol-handler/routes/push-v1.test.ts +26 -27
  1662. package/src/server-protocol-handler/routes/push-v1.ts +4 -1
  1663. package/src/snapshot/schema.test.ts +268 -0
  1664. package/src/snapshot/schema.ts +29 -0
  1665. package/src/state/README.md +95 -0
  1666. package/src/state/cache/clear-state-cache.test.ts +43 -0
  1667. package/src/state/cache/clear-state-cache.ts +16 -0
  1668. package/src/state/cache/is-stale-state-cache.test.ts +35 -0
  1669. package/src/state/cache/is-stale-state-cache.ts +29 -0
  1670. package/src/state/cache/mark-state-cache-as-stale.ts +53 -0
  1671. package/src/state/cache/populate-state-cache.test.ts +259 -0
  1672. package/src/state/cache/populate-state-cache.ts +124 -0
  1673. package/src/state/cache/schema.ts +41 -0
  1674. package/src/state/cache/update-state-cache.test.ts +510 -0
  1675. package/src/state/cache/update-state-cache.ts +317 -0
  1676. package/src/state/commit.test.ts +1402 -0
  1677. package/src/state/commit.ts +587 -0
  1678. package/src/state/insert-transaction-state.test.ts +928 -0
  1679. package/src/state/insert-transaction-state.ts +306 -0
  1680. package/src/state/materialize-state.test.ts +2358 -0
  1681. package/src/state/materialize-state.ts +235 -0
  1682. package/src/state/primary-key.test.ts +158 -0
  1683. package/src/state/primary-key.ts +80 -0
  1684. package/src/state/resolved-state-view.test.ts +521 -0
  1685. package/src/state/resolved-state-view.ts +202 -0
  1686. package/src/state/schema.bench.ts +43 -0
  1687. package/src/state/schema.test.ts +3260 -0
  1688. package/src/state/schema.ts +992 -0
  1689. package/src/state/untracked/schema.test.ts +301 -0
  1690. package/src/state/untracked/schema.ts +55 -0
  1691. package/src/state/untracked/update-untracked-state.test.ts +466 -0
  1692. package/src/state/untracked/update-untracked-state.ts +133 -0
  1693. package/src/state/validate-state-mutation.test.ts +3308 -0
  1694. package/src/state/validate-state-mutation.ts +866 -0
  1695. package/src/state-history/schema.test.ts +1002 -0
  1696. package/src/state-history/schema.ts +221 -0
  1697. package/src/stored-schema/index.ts +4 -0
  1698. package/src/stored-schema/schema.test.ts +240 -0
  1699. package/src/stored-schema/schema.ts +67 -0
  1700. package/src/sync/get-diffing-rows.ts +16 -0
  1701. package/src/sync/merge-state.ts +7 -4
  1702. package/src/sync/pull-from-server.test.ts +33 -28
  1703. package/src/sync/pull-from-server.ts +4 -2
  1704. package/src/sync/push-to-server.test.ts +79 -83
  1705. package/src/sync/push-to-server.ts +11 -2
  1706. package/src/sync/sync-process.test.ts +21 -18
  1707. package/src/sync/sync-process.ts +2 -3
  1708. package/src/test-utilities/simulation-test/cache-miss-simulation.test.ts +162 -0
  1709. package/src/test-utilities/simulation-test/cache-miss-simulation.ts +99 -0
  1710. package/src/test-utilities/simulation-test/chaotic-timestamp-simulation.ts +0 -0
  1711. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.test.ts +88 -0
  1712. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.ts +69 -0
  1713. package/src/test-utilities/simulation-test/simulation-test.test.ts +400 -0
  1714. package/src/test-utilities/simulation-test/simulation-test.ts +176 -0
  1715. package/src/thread/create-thread-comment.test.ts +122 -0
  1716. package/src/thread/create-thread-comment.ts +84 -0
  1717. package/src/thread/create-thread.test.ts +212 -0
  1718. package/src/thread/create-thread.ts +108 -0
  1719. package/src/thread/index.ts +9 -0
  1720. package/src/thread/schema.test.ts +157 -0
  1721. package/src/thread/schema.ts +90 -0
  1722. package/src/version/create-version.test.ts +135 -116
  1723. package/src/version/create-version.ts +64 -61
  1724. package/src/version/index.ts +5 -6
  1725. package/src/version/schema.test.ts +1030 -0
  1726. package/src/version/schema.ts +163 -0
  1727. package/src/version/select-active-version.ts +18 -0
  1728. package/src/version/switch-version.test.ts +14 -275
  1729. package/src/version/switch-version.ts +9 -79
  1730. package/src/zettel-ast/index.ts +10 -0
  1731. package/src/account/database-schema.test.ts +0 -184
  1732. package/src/account/database-schema.ts +0 -54
  1733. package/src/change/apply-changes.test.ts +0 -268
  1734. package/src/change/apply-changes.ts +0 -114
  1735. package/src/change/create-change.test.ts +0 -296
  1736. package/src/change/create-change.ts +0 -129
  1737. package/src/change/mock-change.ts +0 -21
  1738. package/src/change-schema/README.md +0 -3
  1739. package/src/change-schema/index.ts +0 -4
  1740. package/src/change-schema/types.test-d.ts +0 -52
  1741. package/src/change-schema/types.ts +0 -53
  1742. package/src/change-set/change-set-element-in-symmetric-difference.test.ts +0 -128
  1743. package/src/database/apply-schema.ts +0 -272
  1744. package/src/database/init-db.test.ts +0 -626
  1745. package/src/database/mutation-log/database-schema.ts +0 -128
  1746. package/src/database/mutation-log/lix-session.ts +0 -19
  1747. package/src/discussion/create-comment.ts +0 -18
  1748. package/src/discussion/create-discussion.test.ts +0 -45
  1749. package/src/discussion/create-discussion.ts +0 -48
  1750. package/src/discussion/index.ts +0 -2
  1751. package/src/file/validate-file-path.test.ts +0 -44
  1752. package/src/file/validate-file-path.ts +0 -60
  1753. package/src/file-queue/file-handlers.ts +0 -267
  1754. package/src/file-queue/file-queue-process.test.ts +0 -456
  1755. package/src/file-queue/file-queue-process.ts +0 -108
  1756. package/src/file-queue/file-queue-settled.test.ts +0 -56
  1757. package/src/file-queue/file-queue-settled.ts +0 -31
  1758. package/src/file-queue/index.ts +0 -1
  1759. package/src/file-queue/with-skip-file-queue.test.ts +0 -158
  1760. package/src/file-queue/with-skip-file-queue.ts +0 -33
  1761. package/src/key-value/database-schema.test.ts +0 -140
  1762. package/src/key-value/database-schema.ts +0 -66
  1763. package/src/lix/close-lix.ts +0 -8
  1764. package/src/lix/merge.get-leaf-changes-only-in-source.test.ts +0 -143
  1765. package/src/lix/merge.get-leaf-changes-only-in-source.ts +0 -46
  1766. package/src/lix/merge.test.ts +0 -858
  1767. package/src/lix/merge.ts +0 -244
  1768. package/src/lix/open-lix-in-memory.test.ts +0 -34
  1769. package/src/lix/open-lix-in-memory.ts +0 -28
  1770. package/src/lix/to-blob.ts +0 -14
  1771. package/src/own-change-control/apply-own-change.test.ts +0 -361
  1772. package/src/own-change-control/apply-own-change.ts +0 -110
  1773. package/src/own-change-control/change-controlled-tables.test.ts +0 -69
  1774. package/src/own-change-control/change-controlled-tables.ts +0 -102
  1775. package/src/own-change-control/database-triggers.test.ts +0 -259
  1776. package/src/own-change-control/database-triggers.ts +0 -189
  1777. package/src/own-change-control/index.ts +0 -1
  1778. package/src/own-change-control/with-skip-own-change-control.test.ts +0 -57
  1779. package/src/own-change-control/with-skip-own-change-control.ts +0 -34
  1780. package/src/plugin/load-plugin.ts +0 -37
  1781. package/src/plugin/with-transaction.ts +0 -22
  1782. package/src/query-filter/change-conflict-in-version.test.ts +0 -62
  1783. package/src/query-filter/change-conflict-in-version.ts +0 -25
  1784. package/src/query-filter/change-has-label.test.ts +0 -52
  1785. package/src/query-filter/change-has-label.ts +0 -41
  1786. package/src/query-filter/change-in-version.test.ts +0 -82
  1787. package/src/query-filter/change-in-version.ts +0 -31
  1788. package/src/query-filter/change-is-leaf-in-version.test.ts +0 -77
  1789. package/src/query-filter/change-is-leaf-in-version.ts +0 -36
  1790. package/src/query-filter/change-is-leaf-of.bench.ts +0 -175
  1791. package/src/query-filter/change-is-leaf-of.test.ts +0 -84
  1792. package/src/query-filter/change-is-leaf-of.ts +0 -46
  1793. package/src/query-filter/change-is-leaf.test.ts +0 -140
  1794. package/src/query-filter/change-is-leaf.ts +0 -25
  1795. package/src/query-filter/change-is-lowest-common-ancestor-of.test.ts +0 -173
  1796. package/src/query-filter/change-is-lowest-common-ancestor-of.ts +0 -57
  1797. package/src/query-filter/change-set-has-label.test.ts +0 -50
  1798. package/src/query-filter/change-set-has-label.ts +0 -36
  1799. package/src/query-filter/version-change-in-difference.test.ts +0 -105
  1800. package/src/query-filter/version-change-in-difference.ts +0 -37
  1801. package/src/query-filter/version-change-in-symmetric-difference.test.ts +0 -104
  1802. package/src/query-filter/version-change-in-symmetric-difference.ts +0 -52
  1803. package/src/snapshot/create-snapshot.test.ts +0 -68
  1804. package/src/snapshot/create-snapshot.ts +0 -40
  1805. package/src/snapshot/index.ts +0 -2
  1806. package/src/snapshot/json-sha-256.test.ts +0 -12
  1807. package/src/snapshot/json-sha-256.ts +0 -35
  1808. package/src/snapshot/mock-json-snapshot.ts +0 -14
  1809. package/src/version/merge-version.test.ts +0 -530
  1810. package/src/version/merge-version.ts +0 -88
  1811. package/src/version/update-changes-in-version.test.ts +0 -371
  1812. package/src/version/update-changes-in-version.ts +0 -47
@@ -0,0 +1,1934 @@
1
+ import { describe, expect } from "vitest";
2
+ import { selectActiveVersion } from "../version/select-active-version.js";
3
+ import { createVersion } from "../version/create-version.js";
4
+ import { timestamp } from "../deterministic/timestamp.js";
5
+ import { simulationTest, normalSimulation, outOfOrderSequenceSimulation, } from "../test-utilities/simulation-test/simulation-test.js";
6
+ describe("internal_materialization_version_tips", () => {
7
+ simulationTest("includes all versions with state, even if other versions branch from them", async ({ openSimulatedLix }) => {
8
+ // Test the rule: "if a version entity exists, the version is active.
9
+ // even if other versions 'build' on this version by branching away from the commit"
10
+ const lix = await openSimulatedLix({
11
+ keyValues: [
12
+ {
13
+ key: "lix_deterministic_mode",
14
+ value: { enabled: true, bootstrap: true },
15
+ },
16
+ ],
17
+ });
18
+ // Create base version with state
19
+ await createVersion({ lix, id: "base-version" });
20
+ await lix.db
21
+ .insertInto("state_all")
22
+ .values({
23
+ entity_id: "base-entity",
24
+ schema_key: "mock_entity",
25
+ schema_version: "1.0",
26
+ file_id: "mock-file",
27
+ version_id: "base-version",
28
+ plugin_key: "mock-plugin",
29
+ snapshot_content: { id: "base-entity", name: "Base Entity" },
30
+ })
31
+ .execute();
32
+ // Get base version's current commit
33
+ const baseVersion = await lix.db
34
+ .selectFrom("version")
35
+ .select("commit_id")
36
+ .where("id", "=", "base-version")
37
+ .executeTakeFirstOrThrow();
38
+ // Create version A that branches from base version's commit
39
+ await createVersion({ lix, id: "version-a" });
40
+ await lix.db
41
+ .updateTable("version")
42
+ .set({ commit_id: baseVersion.commit_id })
43
+ .where("id", "=", "version-a")
44
+ .execute();
45
+ // Add state to version A (this will create a new commit, making base-version no longer a "tip")
46
+ await lix.db
47
+ .insertInto("state_all")
48
+ .values({
49
+ entity_id: "entity-a",
50
+ schema_key: "mock_entity",
51
+ schema_version: "1.0",
52
+ file_id: "mock-file",
53
+ version_id: "version-a",
54
+ plugin_key: "mock-plugin",
55
+ snapshot_content: { id: "entity-a", name: "Version A Entity" },
56
+ })
57
+ .execute();
58
+ // Create version B that also branches from base version's commit
59
+ await createVersion({ lix, id: "version-b" });
60
+ await lix.db
61
+ .updateTable("version")
62
+ .set({ commit_id: baseVersion.commit_id })
63
+ .where("id", "=", "version-b")
64
+ .execute();
65
+ // Add state to version B
66
+ await lix.db
67
+ .insertInto("state_all")
68
+ .values({
69
+ entity_id: "entity-b",
70
+ schema_key: "mock_entity",
71
+ schema_version: "1.0",
72
+ file_id: "mock-file",
73
+ version_id: "version-b",
74
+ plugin_key: "mock-plugin",
75
+ snapshot_content: { id: "entity-b", name: "Version B Entity" },
76
+ })
77
+ .execute();
78
+ // Now base-version has children (version-a and version-b branched from it),
79
+ // so it's no longer a "tip" commit. But it still has important state that should be materialized.
80
+ // Query version tips - should include ALL versions with state, not just leaf tips
81
+ const tips = await lix.db
82
+ .selectFrom("internal_materialization_version_tips")
83
+ .selectAll()
84
+ .where("version_id", "in", ["base-version", "version-a", "version-b"])
85
+ .orderBy("version_id")
86
+ .execute();
87
+ // All three versions should be included because they all have entities/state
88
+ expect(tips).toHaveLength(3);
89
+ const baseVersionTip = tips.find((t) => t.version_id === "base-version");
90
+ const versionATip = tips.find((t) => t.version_id === "version-a");
91
+ const versionBTip = tips.find((t) => t.version_id === "version-b");
92
+ // All versions should be present in version tips
93
+ expect(baseVersionTip).toBeDefined();
94
+ expect(versionATip).toBeDefined();
95
+ expect(versionBTip).toBeDefined();
96
+ // Verify that the base version's state can be materialized (not excluded from materialization pipeline)
97
+ const baseMaterializedState = await lix.db
98
+ .selectFrom("internal_state_materializer")
99
+ .selectAll()
100
+ .where("version_id", "=", "base-version")
101
+ .where("entity_id", "=", "base-entity")
102
+ .executeTakeFirst();
103
+ expect(baseMaterializedState).toBeDefined();
104
+ expect(baseMaterializedState.snapshot_content).toEqual({
105
+ id: "base-entity",
106
+ name: "Base Entity",
107
+ });
108
+ }, {
109
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
110
+ });
111
+ simulationTest("finds tip commit for a version with single commit", async ({ openSimulatedLix }) => {
112
+ const lix = await openSimulatedLix({
113
+ keyValues: [
114
+ {
115
+ key: "lix_deterministic_mode",
116
+ value: { enabled: true, bootstrap: true },
117
+ },
118
+ ],
119
+ });
120
+ const activeVersion = await selectActiveVersion(lix).executeTakeFirstOrThrow();
121
+ // Query the view
122
+ const results = await lix.db
123
+ .selectFrom("internal_materialization_version_tips")
124
+ .where("version_id", "=", activeVersion.id)
125
+ .selectAll()
126
+ .execute();
127
+ // Verify results
128
+ expect(results).toHaveLength(1);
129
+ expect(results[0]?.version_id).toBe(activeVersion.id);
130
+ expect(results[0]?.tip_commit_id).toBe(activeVersion.commit_id);
131
+ }, {
132
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
133
+ });
134
+ simulationTest("updates tip when new commit is added", async ({ openSimulatedLix }) => {
135
+ const lix = await openSimulatedLix({
136
+ keyValues: [
137
+ {
138
+ key: "lix_deterministic_mode",
139
+ value: { enabled: true, bootstrap: true },
140
+ },
141
+ ],
142
+ });
143
+ const activeVersion = await selectActiveVersion(lix).executeTakeFirstOrThrow();
144
+ // Get initial tip
145
+ const initialResults = await lix.db
146
+ .selectFrom("internal_materialization_version_tips")
147
+ .where("version_id", "=", activeVersion.id)
148
+ .selectAll()
149
+ .execute();
150
+ const initialTip = initialResults[0]?.tip_commit_id;
151
+ // Insert state to trigger a new commit
152
+ await lix.db
153
+ .insertInto("state")
154
+ .values({
155
+ entity_id: "entity-1",
156
+ schema_key: "mock_entity",
157
+ schema_version: "1.0",
158
+ file_id: "mock-file",
159
+ plugin_key: "mock-plugin",
160
+ snapshot_content: { id: "entity-1", name: "Test Entity" },
161
+ })
162
+ .execute();
163
+ // Get updated tip
164
+ const updatedResults = await lix.db
165
+ .selectFrom("internal_materialization_version_tips")
166
+ .where("version_id", "=", activeVersion.id)
167
+ .selectAll()
168
+ .execute();
169
+ const updatedTip = updatedResults[0]?.tip_commit_id;
170
+ // Verify tip changed
171
+ expect(updatedTip).not.toBe(initialTip);
172
+ expect(updatedResults).toHaveLength(1);
173
+ expect(updatedResults[0]?.version_id).toBe(activeVersion.id);
174
+ }, {
175
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
176
+ });
177
+ simulationTest("handles multiple versions with independent tips", async ({ openSimulatedLix }) => {
178
+ const lix = await openSimulatedLix({
179
+ keyValues: [
180
+ {
181
+ key: "lix_deterministic_mode",
182
+ value: { enabled: true, bootstrap: true },
183
+ },
184
+ ],
185
+ });
186
+ // Create two versions
187
+ await createVersion({ lix, id: "version-1" });
188
+ await createVersion({ lix, id: "version-2" });
189
+ // Add state to version1 to create a commit
190
+ await lix.db
191
+ .insertInto("state_all")
192
+ .values({
193
+ entity_id: "entity-1",
194
+ schema_key: "mock_entity",
195
+ schema_version: "1.0",
196
+ file_id: "mock-file",
197
+ version_id: "version-1",
198
+ plugin_key: "mock-plugin",
199
+ snapshot_content: { id: "entity-1", name: "Version 1 Entity" },
200
+ })
201
+ .execute();
202
+ // Add state to version2 to create a commit
203
+ await lix.db
204
+ .insertInto("state_all")
205
+ .values({
206
+ entity_id: "entity-2",
207
+ schema_key: "mock_entity",
208
+ schema_version: "1.0",
209
+ file_id: "mock-file",
210
+ version_id: "version-2",
211
+ plugin_key: "mock-plugin",
212
+ snapshot_content: { id: "entity-2", name: "Version 2 Entity" },
213
+ })
214
+ .execute();
215
+ // Get tips for both versions
216
+ const tips = await lix.db
217
+ .selectFrom("internal_materialization_version_tips")
218
+ .selectAll()
219
+ .where("version_id", "in", ["version-1", "version-2"])
220
+ .orderBy("version_id")
221
+ .execute();
222
+ // Should have two different tips
223
+ expect(tips).toHaveLength(2); // includes the default version
224
+ const v1Tip = tips.find((t) => t.version_id === "version-1");
225
+ const v2Tip = tips.find((t) => t.version_id === "version-2");
226
+ expect(v1Tip).toBeDefined();
227
+ expect(v2Tip).toBeDefined();
228
+ expect(v1Tip?.tip_commit_id).not.toBe(v2Tip?.tip_commit_id);
229
+ // Add more state to version1 to move its tip
230
+ await lix.db
231
+ .insertInto("state_all")
232
+ .values({
233
+ entity_id: "entity-3",
234
+ schema_key: "mock_entity",
235
+ schema_version: "1.0",
236
+ file_id: "mock-file",
237
+ version_id: "version-1",
238
+ plugin_key: "mock-plugin",
239
+ snapshot_content: {
240
+ id: "entity-3",
241
+ name: "Another Version 1 Entity",
242
+ },
243
+ })
244
+ .execute();
245
+ // Get updated tips
246
+ const updatedTips = await lix.db
247
+ .selectFrom("internal_materialization_version_tips")
248
+ .selectAll()
249
+ .orderBy("version_id")
250
+ .execute();
251
+ const v1UpdatedTip = updatedTips.find((t) => t.version_id === "version-1");
252
+ const v2UpdatedTip = updatedTips.find((t) => t.version_id === "version-2");
253
+ // Version 1 tip should have changed, version 2 should remain the same
254
+ expect(v1UpdatedTip?.tip_commit_id).not.toBe(v1Tip?.tip_commit_id);
255
+ expect(v2UpdatedTip?.tip_commit_id).toBe(v2Tip?.tip_commit_id);
256
+ }, {
257
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
258
+ });
259
+ });
260
+ describe("internal_materialization_commit_graph", () => {
261
+ simulationTest("builds linear commit history with correct depths", async ({ openSimulatedLix }) => {
262
+ // Linear history: initial -> commit1 -> commit2 -> commit3 (tip)
263
+ // Expected depths: 3 2 1 0
264
+ const lix = await openSimulatedLix({
265
+ keyValues: [
266
+ {
267
+ key: "lix_deterministic_mode",
268
+ value: { enabled: true, bootstrap: true },
269
+ },
270
+ ],
271
+ });
272
+ // Create a version
273
+ const initialVersion = await createVersion({
274
+ lix,
275
+ id: "linear-test-version",
276
+ });
277
+ // Create commit 1 (will be at depth 2)
278
+ await lix.db
279
+ .insertInto("state_all")
280
+ .values({
281
+ entity_id: "entity-1",
282
+ schema_key: "mock_entity",
283
+ schema_version: "1.0",
284
+ file_id: "mock-file",
285
+ version_id: "linear-test-version",
286
+ plugin_key: "mock-plugin",
287
+ snapshot_content: { id: "entity-1", name: "First commit" },
288
+ })
289
+ .execute();
290
+ // Get first commit id
291
+ const commits1 = await lix.db
292
+ .selectFrom("commit")
293
+ .innerJoin("version", "version.commit_id", "commit.id")
294
+ .select("commit.id")
295
+ .where("version.id", "=", "linear-test-version")
296
+ .orderBy("commit.lixcol_created_at", "desc")
297
+ .limit(1)
298
+ .execute();
299
+ const commit1Id = commits1[0].id;
300
+ // Create commit 2 (will be at depth 1)
301
+ await lix.db
302
+ .insertInto("state_all")
303
+ .values({
304
+ entity_id: "entity-2",
305
+ schema_key: "mock_entity",
306
+ schema_version: "1.0",
307
+ file_id: "mock-file",
308
+ version_id: "linear-test-version",
309
+ plugin_key: "mock-plugin",
310
+ snapshot_content: { id: "entity-2", name: "Second commit" },
311
+ })
312
+ .execute();
313
+ // Get second commit id
314
+ const commits2 = await lix.db
315
+ .selectFrom("commit")
316
+ .innerJoin("version", "version.commit_id", "commit.id")
317
+ .select("commit.id")
318
+ .where("version.id", "=", "linear-test-version")
319
+ .orderBy("commit.lixcol_created_at", "desc")
320
+ .limit(1)
321
+ .execute();
322
+ const commit2Id = commits2[0].id;
323
+ // Create commit 3 (will be at depth 0 - tip)
324
+ await lix.db
325
+ .insertInto("state_all")
326
+ .values({
327
+ entity_id: "entity-3",
328
+ schema_key: "mock_entity",
329
+ schema_version: "1.0",
330
+ file_id: "mock-file",
331
+ version_id: "linear-test-version",
332
+ plugin_key: "mock-plugin",
333
+ snapshot_content: { id: "entity-3", name: "Third commit" },
334
+ })
335
+ .execute();
336
+ // Get third commit id
337
+ const commits3 = await lix.db
338
+ .selectFrom("commit")
339
+ .innerJoin("version", "version.commit_id", "commit.id")
340
+ .select("commit.id")
341
+ .where("version.id", "=", "linear-test-version")
342
+ .orderBy("commit.lixcol_created_at", "desc")
343
+ .limit(1)
344
+ .execute();
345
+ const commit3Id = commits3[0].id;
346
+ // Query the commit graph view
347
+ const graph = await lix.db
348
+ .selectFrom("internal_materialization_commit_graph")
349
+ .selectAll()
350
+ .where("version_id", "=", "linear-test-version")
351
+ .orderBy("depth")
352
+ .execute();
353
+ // Verify we have 4 commits with correct depths (including initial)
354
+ expect(graph).toHaveLength(4);
355
+ // Commit 3 (tip) should be at depth 0
356
+ expect(graph[0]).toMatchObject({
357
+ commit_id: commit3Id,
358
+ version_id: "linear-test-version",
359
+ depth: 0,
360
+ });
361
+ // Commit 2 should be at depth 1
362
+ expect(graph[1]).toMatchObject({
363
+ commit_id: commit2Id,
364
+ version_id: "linear-test-version",
365
+ depth: 1,
366
+ });
367
+ // Commit 1 should be at depth 2
368
+ expect(graph[2]).toMatchObject({
369
+ commit_id: commit1Id,
370
+ version_id: "linear-test-version",
371
+ depth: 2,
372
+ });
373
+ // Initial commit should be at depth 3
374
+ expect(graph[3]).toMatchObject({
375
+ version_id: "linear-test-version",
376
+ commit_id: initialVersion.commit_id,
377
+ depth: 3,
378
+ });
379
+ }, {
380
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
381
+ });
382
+ simulationTest("handles branching commit history", async ({ openSimulatedLix }) => {
383
+ // Branching history:
384
+ // initial
385
+ // |
386
+ // commit1 (depth 2)
387
+ // / \
388
+ // commit2a commit2b (both depth 1)
389
+ // | |
390
+ // commit3a commit3b (both depth 0 - tips)
391
+ const lix = await openSimulatedLix({
392
+ keyValues: [
393
+ {
394
+ key: "lix_deterministic_mode",
395
+ value: { enabled: true, bootstrap: true },
396
+ },
397
+ ],
398
+ });
399
+ // Create two versions that branch from a common commit
400
+ await createVersion({ lix, id: "branch-version-1" });
401
+ await createVersion({ lix, id: "branch-version-2" });
402
+ // Create a common commit in version1
403
+ await lix.db
404
+ .insertInto("state_all")
405
+ .values({
406
+ entity_id: "common-entity",
407
+ schema_key: "mock_entity",
408
+ schema_version: "1.0",
409
+ file_id: "mock-file",
410
+ version_id: "branch-version-1",
411
+ plugin_key: "mock-plugin",
412
+ snapshot_content: { id: "common-entity", name: "Common commit" },
413
+ })
414
+ .execute();
415
+ // Get the common commit id
416
+ const commonCommit = await lix.db
417
+ .selectFrom("commit")
418
+ .innerJoin("version", "version.commit_id", "commit.id")
419
+ .select("commit.id")
420
+ .where("version.id", "=", "branch-version-1")
421
+ .orderBy("commit.lixcol_created_at", "desc")
422
+ .limit(1)
423
+ .execute();
424
+ const commonCommitId = commonCommit[0].id;
425
+ // Update version2 to point to the common commit (simulating a branch)
426
+ await lix.db
427
+ .updateTable("version")
428
+ .set({ commit_id: commonCommitId })
429
+ .where("id", "=", "branch-version-2")
430
+ .execute();
431
+ // Create diverging commits in version1
432
+ await lix.db
433
+ .insertInto("state_all")
434
+ .values({
435
+ entity_id: "branch1-entity",
436
+ schema_key: "mock_entity",
437
+ schema_version: "1.0",
438
+ file_id: "mock-file",
439
+ version_id: "branch-version-1",
440
+ plugin_key: "mock-plugin",
441
+ snapshot_content: { id: "branch1-entity", name: "Branch 1 commit" },
442
+ })
443
+ .execute();
444
+ // Create diverging commits in version2
445
+ await lix.db
446
+ .insertInto("state_all")
447
+ .values({
448
+ entity_id: "branch2-entity",
449
+ schema_key: "mock_entity",
450
+ schema_version: "1.0",
451
+ file_id: "mock-file",
452
+ version_id: "branch-version-2",
453
+ plugin_key: "mock-plugin",
454
+ snapshot_content: { id: "branch2-entity", name: "Branch 2 commit" },
455
+ })
456
+ .execute();
457
+ // Query the commit graph for version1
458
+ const graph1 = await lix.db
459
+ .selectFrom("internal_materialization_commit_graph")
460
+ .selectAll()
461
+ .where("version_id", "=", "branch-version-1")
462
+ .orderBy("depth")
463
+ .execute();
464
+ // Query the commit graph for version2
465
+ const graph2 = await lix.db
466
+ .selectFrom("internal_materialization_commit_graph")
467
+ .selectAll()
468
+ .where("version_id", "=", "branch-version-2")
469
+ .orderBy("depth")
470
+ .execute();
471
+ // Version 1 should have its own tip at depth 0 and common commit at depth 1
472
+ expect(graph1).toHaveLength(3); // initial, common, branch1
473
+ expect(graph1[0]).toMatchObject({
474
+ version_id: "branch-version-1",
475
+ depth: 0,
476
+ });
477
+ expect(graph1[1]).toMatchObject({
478
+ commit_id: commonCommitId,
479
+ version_id: "branch-version-1",
480
+ depth: 1,
481
+ });
482
+ // Version 2 should have its own tip at depth 0 and common commit at depth 1
483
+ expect(graph2).toHaveLength(3); // initial, common, branch2
484
+ expect(graph2[0]).toMatchObject({
485
+ version_id: "branch-version-2",
486
+ depth: 0,
487
+ });
488
+ expect(graph2[1]).toMatchObject({
489
+ commit_id: commonCommitId,
490
+ version_id: "branch-version-2",
491
+ depth: 1,
492
+ });
493
+ // Both versions should see the common commit at the same relative depth
494
+ const v1CommonDepth = graph1.find((g) => g.commit_id === commonCommitId)?.depth;
495
+ const v2CommonDepth = graph2.find((g) => g.commit_id === commonCommitId)?.depth;
496
+ expect(v1CommonDepth).toBe(1);
497
+ expect(v2CommonDepth).toBe(1);
498
+ }, {
499
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
500
+ });
501
+ simulationTest("handles merge commits without duplicates", async ({ openSimulatedLix }) => {
502
+ // Diamond pattern:
503
+ // initial
504
+ // |
505
+ // commit1
506
+ // / \
507
+ // commit2a commit2b
508
+ // \ /
509
+ // commit3 (merge commit with two parents)
510
+ const lix = await openSimulatedLix({
511
+ keyValues: [
512
+ {
513
+ key: "lix_deterministic_mode",
514
+ value: { enabled: true, bootstrap: true },
515
+ },
516
+ ],
517
+ });
518
+ // Create version A
519
+ await createVersion({ lix, id: "merge-version-a" });
520
+ // Create version B that will diverge
521
+ await createVersion({ lix, id: "merge-version-b" });
522
+ // Add unique changes to version A
523
+ await lix.db
524
+ .insertInto("state_all")
525
+ .values({
526
+ entity_id: "entity-a",
527
+ schema_key: "mock_entity",
528
+ schema_version: "1.0",
529
+ file_id: "mock-file",
530
+ version_id: "merge-version-a",
531
+ plugin_key: "mock-plugin",
532
+ snapshot_content: { id: "entity-a", name: "Version A change" },
533
+ })
534
+ .execute();
535
+ // Add unique changes to version B
536
+ await lix.db
537
+ .insertInto("state_all")
538
+ .values({
539
+ entity_id: "entity-b",
540
+ schema_key: "mock_entity",
541
+ schema_version: "1.0",
542
+ file_id: "mock-file",
543
+ version_id: "merge-version-b",
544
+ plugin_key: "mock-plugin",
545
+ snapshot_content: { id: "entity-b", name: "Version B change" },
546
+ })
547
+ .execute();
548
+ // Get both version tips
549
+ const versionATip = await lix.db
550
+ .selectFrom("version")
551
+ .select("commit_id")
552
+ .where("id", "=", "merge-version-a")
553
+ .executeTakeFirstOrThrow();
554
+ const versionBTip = await lix.db
555
+ .selectFrom("version")
556
+ .select("commit_id")
557
+ .where("id", "=", "merge-version-b")
558
+ .executeTakeFirstOrThrow();
559
+ // Create a merge commit manually with two parent edges
560
+ const ts = timestamp({ lix });
561
+ const mergeCommitId = `merge-${ts}`;
562
+ const mergeChangeSetId = `cs-${mergeCommitId}`;
563
+ // Create the change set first
564
+ await lix.db
565
+ .insertInto("change_set_all")
566
+ .values({
567
+ id: mergeChangeSetId,
568
+ lixcol_version_id: "global",
569
+ })
570
+ .execute();
571
+ // Create the merge commit in commit_all (global version)
572
+ await lix.db
573
+ .insertInto("commit_all")
574
+ .values({
575
+ id: mergeCommitId,
576
+ change_set_id: mergeChangeSetId,
577
+ lixcol_version_id: "global",
578
+ })
579
+ .execute();
580
+ // Create edges to both parents
581
+ await lix.db
582
+ .insertInto("change")
583
+ .values([
584
+ {
585
+ id: `edge-1-${mergeCommitId}`,
586
+ entity_id: `edge-${mergeCommitId}-${versionATip.commit_id}`,
587
+ schema_key: "lix_commit_edge",
588
+ schema_version: "1.0",
589
+ file_id: "lix-file",
590
+ plugin_key: "lix",
591
+ snapshot_content: {
592
+ parent_id: versionATip.commit_id,
593
+ child_id: mergeCommitId,
594
+ },
595
+ created_at: ts,
596
+ },
597
+ {
598
+ id: `edge-2-${mergeCommitId}`,
599
+ entity_id: `edge-${mergeCommitId}-${versionBTip.commit_id}`,
600
+ schema_key: "lix_commit_edge",
601
+ schema_version: "1.0",
602
+ file_id: "lix-file",
603
+ plugin_key: "lix",
604
+ snapshot_content: {
605
+ parent_id: versionBTip.commit_id,
606
+ child_id: mergeCommitId,
607
+ },
608
+ created_at: ts,
609
+ },
610
+ ])
611
+ .execute();
612
+ // Update version A to point to the merge commit
613
+ await lix.db
614
+ .updateTable("version")
615
+ .set({ commit_id: mergeCommitId })
616
+ .where("id", "=", "merge-version-a")
617
+ .execute();
618
+ // Query the commit graph for the merged version
619
+ const graph = await lix.db
620
+ .selectFrom("internal_materialization_commit_graph")
621
+ .selectAll()
622
+ .where("version_id", "=", "merge-version-a")
623
+ .orderBy("depth")
624
+ .execute();
625
+ // Count how many times each commit appears
626
+ const commitCounts = new Map();
627
+ for (const entry of graph) {
628
+ const count = commitCounts.get(entry.commit_id) || 0;
629
+ commitCounts.set(entry.commit_id, count + 1);
630
+ }
631
+ // Verify no commit appears more than once (no duplicates)
632
+ for (const [, count] of commitCounts) {
633
+ expect(count).toBe(1);
634
+ }
635
+ // Verify the merge commit is at depth 0 (tip)
636
+ expect(graph[0]).toMatchObject({
637
+ commit_id: mergeCommitId,
638
+ version_id: "merge-version-a",
639
+ depth: 0,
640
+ });
641
+ // Verify both parent commits appear in the graph
642
+ const hasVersionATip = graph.some((g) => g.commit_id === versionATip.commit_id);
643
+ const hasVersionBTip = graph.some((g) => g.commit_id === versionBTip.commit_id);
644
+ expect(hasVersionATip).toBe(true);
645
+ expect(hasVersionBTip).toBe(true);
646
+ // Verify we have expected commits
647
+ // We should have at least 4 commits:
648
+ // - 1 merge commit (depth 0)
649
+ // - 2 parent commits from divergent versions (depth 1)
650
+ // - At least 1 shared initial commit (depth 2)
651
+ expect(graph.length).toBeGreaterThanOrEqual(4);
652
+ // The merge commit should have two commits at depth 1 (its parents)
653
+ const depth1Commits = graph.filter((g) => g.depth === 1);
654
+ expect(depth1Commits).toHaveLength(2);
655
+ }, {
656
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
657
+ });
658
+ simulationTest("detects and handles cycles gracefully", async ({ openSimulatedLix }) => {
659
+ // Test that cycle detection prevents infinite loops in recursive CTEs
660
+ // This tests the path-based cycle detection in version ancestry
661
+ const lix = await openSimulatedLix({
662
+ keyValues: [
663
+ {
664
+ key: "lix_deterministic_mode",
665
+ value: { enabled: true, bootstrap: true },
666
+ },
667
+ ],
668
+ });
669
+ // Create three versions
670
+ await createVersion({ lix, id: "version-cycle-a" });
671
+ await createVersion({
672
+ lix,
673
+ id: "version-cycle-b",
674
+ inherits_from_version_id: "version-cycle-a",
675
+ });
676
+ await createVersion({
677
+ lix,
678
+ id: "version-cycle-c",
679
+ inherits_from_version_id: "version-cycle-b",
680
+ });
681
+ // Manually create a cycle by updating version A to inherit from C
682
+ // This simulates data corruption: A -> B -> C -> A
683
+ await lix.db
684
+ .updateTable("version")
685
+ .set({
686
+ inherits_from_version_id: "version-cycle-c",
687
+ })
688
+ .where("id", "=", "version-cycle-a")
689
+ .execute();
690
+ // Query version ancestry - should not hang due to cycle detection
691
+ const ancestry = await lix.db
692
+ .selectFrom("internal_materialization_version_ancestry")
693
+ .selectAll()
694
+ .where("version_id", "=", "version-cycle-a")
695
+ .execute();
696
+ // Version A should see itself and its ancestors, but stop when cycle detected
697
+ const ancestorIds = ancestry.map((a) => a.ancestor_version_id);
698
+ const uniqueAncestors = new Set(ancestorIds);
699
+ // Should contain A (itself), B, and C - cycle detection should have stopped
700
+ expect(uniqueAncestors.has("version-cycle-a")).toBe(true);
701
+ expect(uniqueAncestors.has("version-cycle-b")).toBe(true);
702
+ expect(uniqueAncestors.has("version-cycle-c")).toBe(true);
703
+ // The important part is that cycle detection prevented infinite recursion
704
+ // We should have a finite number of results even with a cycle
705
+ expect(ancestry.length).toBeLessThan(20); // Would be infinite without cycle detection
706
+ // Check that we stopped at reasonable inheritance depths
707
+ const maxDepth = Math.max(...ancestry.map((a) => a.inheritance_depth));
708
+ expect(maxDepth).toBeLessThanOrEqual(3); // Should stop after traversing the cycle once
709
+ }, {
710
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
711
+ });
712
+ simulationTest("associates commits with correct version", async ({ openSimulatedLix }) => {
713
+ // Create multiple versions and verify version_id association
714
+ const lix = await openSimulatedLix({
715
+ keyValues: [
716
+ {
717
+ key: "lix_deterministic_mode",
718
+ value: { enabled: true, bootstrap: true },
719
+ },
720
+ ],
721
+ });
722
+ // Create three versions
723
+ await createVersion({ lix, id: "version-x" });
724
+ await createVersion({ lix, id: "version-y" });
725
+ await createVersion({ lix, id: "version-z" });
726
+ // Add commits to each version
727
+ await lix.db
728
+ .insertInto("state_all")
729
+ .values({
730
+ entity_id: "entity-x",
731
+ schema_key: "mock_entity",
732
+ schema_version: "1.0",
733
+ file_id: "mock-file",
734
+ version_id: "version-x",
735
+ plugin_key: "mock-plugin",
736
+ snapshot_content: { id: "entity-x", name: "Version X Entity" },
737
+ })
738
+ .execute();
739
+ await lix.db
740
+ .insertInto("state_all")
741
+ .values({
742
+ entity_id: "entity-y",
743
+ schema_key: "mock_entity",
744
+ schema_version: "1.0",
745
+ file_id: "mock-file",
746
+ version_id: "version-y",
747
+ plugin_key: "mock-plugin",
748
+ snapshot_content: { id: "entity-y", name: "Version Y Entity" },
749
+ })
750
+ .execute();
751
+ // Query graphs for each version
752
+ const graphX = await lix.db
753
+ .selectFrom("internal_materialization_commit_graph")
754
+ .selectAll()
755
+ .where("version_id", "=", "version-x")
756
+ .execute();
757
+ const graphY = await lix.db
758
+ .selectFrom("internal_materialization_commit_graph")
759
+ .selectAll()
760
+ .where("version_id", "=", "version-y")
761
+ .execute();
762
+ const graphZ = await lix.db
763
+ .selectFrom("internal_materialization_commit_graph")
764
+ .selectAll()
765
+ .where("version_id", "=", "version-z")
766
+ .execute();
767
+ // Each version should only see commits associated with it
768
+ expect(graphX.every((g) => g.version_id === "version-x")).toBe(true);
769
+ expect(graphY.every((g) => g.version_id === "version-y")).toBe(true);
770
+ // Version X should have 2 commits (initial + one change)
771
+ expect(graphX).toHaveLength(2);
772
+ // Version Y should have 2 commits (initial + one change)
773
+ expect(graphY).toHaveLength(2);
774
+ // Version Z has only the initial commit, so will appear with 1 commit in the graph
775
+ expect(graphZ).toHaveLength(1);
776
+ // Verify each version has its own unique tip commit
777
+ const xTip = graphX.find((g) => g.depth === 0);
778
+ const yTip = graphY.find((g) => g.depth === 0);
779
+ expect(xTip).toBeDefined();
780
+ expect(yTip).toBeDefined();
781
+ expect(xTip.commit_id).not.toBe(yTip.commit_id);
782
+ // The commit graph correctly associates commits with their versions
783
+ // Each graph entry has the correct version_id
784
+ const allGraphEntries = [...graphX, ...graphY, ...graphZ];
785
+ expect(allGraphEntries.every((g) => g.version_id === "version-x" ||
786
+ g.version_id === "version-y" ||
787
+ g.version_id === "version-z")).toBe(true);
788
+ }, {
789
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
790
+ });
791
+ });
792
+ describe("internal_materialization_latest_visible_state", () => {
793
+ simulationTest("finds latest change for each entity in a single version", async ({ openSimulatedLix }) => {
794
+ // Create version with multiple changes to same entity
795
+ // Verify only the latest (closest to tip) change is visible
796
+ const lix = await openSimulatedLix({
797
+ keyValues: [
798
+ {
799
+ key: "lix_deterministic_mode",
800
+ value: { enabled: true, bootstrap: true },
801
+ },
802
+ ],
803
+ });
804
+ // Create a version
805
+ await createVersion({ lix, id: "latest-test-version" });
806
+ // Create multiple changes to the same entity
807
+ // First change - create entity
808
+ await lix.db
809
+ .insertInto("state_all")
810
+ .values({
811
+ entity_id: "entity-1",
812
+ schema_key: "mock_entity",
813
+ schema_version: "1.0",
814
+ file_id: "mock-file",
815
+ version_id: "latest-test-version",
816
+ plugin_key: "mock-plugin",
817
+ snapshot_content: { id: "entity-1", name: "Initial Name", value: 1 },
818
+ })
819
+ .execute();
820
+ // Second change - update entity
821
+ await lix.db
822
+ .insertInto("state_all")
823
+ .values({
824
+ entity_id: "entity-1",
825
+ schema_key: "mock_entity",
826
+ schema_version: "1.0",
827
+ file_id: "mock-file",
828
+ version_id: "latest-test-version",
829
+ plugin_key: "mock-plugin",
830
+ snapshot_content: { id: "entity-1", name: "Updated Name", value: 2 },
831
+ })
832
+ .execute();
833
+ // Third change - another update
834
+ await lix.db
835
+ .insertInto("state_all")
836
+ .values({
837
+ entity_id: "entity-1",
838
+ schema_key: "mock_entity",
839
+ schema_version: "1.0",
840
+ file_id: "mock-file",
841
+ version_id: "latest-test-version",
842
+ plugin_key: "mock-plugin",
843
+ snapshot_content: { id: "entity-1", name: "Final Name", value: 3 },
844
+ })
845
+ .execute();
846
+ // Query the latest visible state view
847
+ const latestState = await lix.db
848
+ .selectFrom("internal_materialization_latest_visible_state")
849
+ .selectAll()
850
+ .where("version_id", "=", "latest-test-version")
851
+ .where("entity_id", "=", "entity-1")
852
+ .execute();
853
+ // Should only have one entry (the latest)
854
+ expect(latestState).toHaveLength(1);
855
+ // Should be the most recent change (closest to tip, depth 0)
856
+ const state = latestState[0];
857
+ expect(state.entity_id).toBe("entity-1");
858
+ expect(state.snapshot_content).toEqual({
859
+ id: "entity-1",
860
+ name: "Final Name",
861
+ value: 3,
862
+ });
863
+ expect(state.depth).toBe(0); // Latest commit is at depth 0
864
+ // Verify it selected the change from the newest commit
865
+ const commits = await lix.db
866
+ .selectFrom("commit")
867
+ .innerJoin("version", "version.commit_id", "commit.id")
868
+ .select("commit.id")
869
+ .where("version.id", "=", "latest-test-version")
870
+ .orderBy("commit.lixcol_created_at", "desc")
871
+ .execute();
872
+ expect(state.commit_id).toBe(commits[0].id);
873
+ }, {
874
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
875
+ });
876
+ simulationTest("handles multiple entities with different change histories", async ({ openSimulatedLix }) => {
877
+ // Create multiple entities with different numbers of changes
878
+ // Verify each entity shows its latest state
879
+ const lix = await openSimulatedLix({
880
+ keyValues: [
881
+ {
882
+ key: "lix_deterministic_mode",
883
+ value: { enabled: true, bootstrap: true },
884
+ },
885
+ ],
886
+ });
887
+ // Create a version
888
+ await createVersion({ lix, id: "multi-entity-version" });
889
+ // Entity 1: Three changes
890
+ await lix.db
891
+ .insertInto("state_all")
892
+ .values({
893
+ entity_id: "entity-1",
894
+ schema_key: "mock_entity",
895
+ schema_version: "1.0",
896
+ file_id: "mock-file",
897
+ version_id: "multi-entity-version",
898
+ plugin_key: "mock-plugin",
899
+ snapshot_content: { id: "entity-1", version: 1 },
900
+ })
901
+ .execute();
902
+ await lix.db
903
+ .insertInto("state_all")
904
+ .values({
905
+ entity_id: "entity-1",
906
+ schema_key: "mock_entity",
907
+ schema_version: "1.0",
908
+ file_id: "mock-file",
909
+ version_id: "multi-entity-version",
910
+ plugin_key: "mock-plugin",
911
+ snapshot_content: { id: "entity-1", version: 2 },
912
+ })
913
+ .execute();
914
+ await lix.db
915
+ .insertInto("state_all")
916
+ .values({
917
+ entity_id: "entity-1",
918
+ schema_key: "mock_entity",
919
+ schema_version: "1.0",
920
+ file_id: "mock-file",
921
+ version_id: "multi-entity-version",
922
+ plugin_key: "mock-plugin",
923
+ snapshot_content: { id: "entity-1", version: 3 },
924
+ })
925
+ .execute();
926
+ // Entity 2: Two changes
927
+ await lix.db
928
+ .insertInto("state_all")
929
+ .values({
930
+ entity_id: "entity-2",
931
+ schema_key: "mock_entity",
932
+ schema_version: "1.0",
933
+ file_id: "mock-file",
934
+ version_id: "multi-entity-version",
935
+ plugin_key: "mock-plugin",
936
+ snapshot_content: { id: "entity-2", status: "created" },
937
+ })
938
+ .execute();
939
+ await lix.db
940
+ .insertInto("state_all")
941
+ .values({
942
+ entity_id: "entity-2",
943
+ schema_key: "mock_entity",
944
+ schema_version: "1.0",
945
+ file_id: "mock-file",
946
+ version_id: "multi-entity-version",
947
+ plugin_key: "mock-plugin",
948
+ snapshot_content: { id: "entity-2", status: "updated" },
949
+ })
950
+ .execute();
951
+ // Entity 3: Single change
952
+ await lix.db
953
+ .insertInto("state_all")
954
+ .values({
955
+ entity_id: "entity-3",
956
+ schema_key: "mock_entity",
957
+ schema_version: "1.0",
958
+ file_id: "mock-file",
959
+ version_id: "multi-entity-version",
960
+ plugin_key: "mock-plugin",
961
+ snapshot_content: { id: "entity-3", data: "single-change" },
962
+ })
963
+ .execute();
964
+ // Query the latest visible state view
965
+ const latestStates = await lix.db
966
+ .selectFrom("internal_materialization_latest_visible_state")
967
+ .selectAll()
968
+ .where("version_id", "=", "multi-entity-version")
969
+ .where("schema_key", "=", "mock_entity")
970
+ .orderBy("entity_id")
971
+ .execute();
972
+ // Should have exactly 3 entries (one per entity)
973
+ expect(latestStates).toHaveLength(3);
974
+ // Verify each entity shows its latest state
975
+ const entity1State = latestStates.find((s) => s.entity_id === "entity-1");
976
+ const entity2State = latestStates.find((s) => s.entity_id === "entity-2");
977
+ const entity3State = latestStates.find((s) => s.entity_id === "entity-3");
978
+ expect(entity1State).toBeDefined();
979
+ expect(entity1State.snapshot_content).toEqual({
980
+ id: "entity-1",
981
+ version: 3,
982
+ });
983
+ expect(entity2State).toBeDefined();
984
+ expect(entity2State.snapshot_content).toEqual({
985
+ id: "entity-2",
986
+ status: "updated",
987
+ });
988
+ expect(entity3State).toBeDefined();
989
+ expect(entity3State.snapshot_content).toEqual({
990
+ id: "entity-3",
991
+ data: "single-change",
992
+ });
993
+ // The depths depend on which commit each entity's latest change was in
994
+ // Entity-1's latest change (version 3) was in the 4th commit from tip
995
+ expect(entity1State.depth).toBe(3);
996
+ // Entity-2's latest change was in the 2nd commit from tip
997
+ expect(entity2State.depth).toBe(1);
998
+ // Entity-3's only change was in the tip commit
999
+ expect(entity3State.depth).toBe(0);
1000
+ // Each entity correctly shows its latest state regardless of depth
1001
+ // This demonstrates that the view correctly selects the most recent
1002
+ // change for each entity, even when they're at different depths
1003
+ }, {
1004
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1005
+ });
1006
+ simulationTest("respects first-seen-wins principle for commits at same depth", async () => {
1007
+ // TODO: Create scenario where multiple changes exist at same depth
1008
+ // Verify consistent selection based on first-seen
1009
+ }, {
1010
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1011
+ });
1012
+ simulationTest("includes NULL snapshots (deletions) in results", async ({ openSimulatedLix }) => {
1013
+ // Create entity, then delete it (NULL snapshot)
1014
+ // Verify deletion tombstone appears in latest visible state
1015
+ const lix = await openSimulatedLix({
1016
+ keyValues: [
1017
+ {
1018
+ key: "lix_deterministic_mode",
1019
+ value: { enabled: true, bootstrap: true },
1020
+ },
1021
+ ],
1022
+ });
1023
+ // Create a version
1024
+ await createVersion({ lix, id: "deletion-test-version" });
1025
+ // Create an entity
1026
+ await lix.db
1027
+ .insertInto("state_all")
1028
+ .values({
1029
+ entity_id: "entity-to-delete",
1030
+ schema_key: "mock_entity",
1031
+ schema_version: "1.0",
1032
+ file_id: "mock-file",
1033
+ version_id: "deletion-test-version",
1034
+ plugin_key: "mock-plugin",
1035
+ snapshot_content: {
1036
+ id: "entity-to-delete",
1037
+ name: "Original Entity",
1038
+ active: true,
1039
+ },
1040
+ })
1041
+ .execute();
1042
+ // Update the entity
1043
+ await lix.db
1044
+ .insertInto("state_all")
1045
+ .values({
1046
+ entity_id: "entity-to-delete",
1047
+ schema_key: "mock_entity",
1048
+ schema_version: "1.0",
1049
+ file_id: "mock-file",
1050
+ version_id: "deletion-test-version",
1051
+ plugin_key: "mock-plugin",
1052
+ snapshot_content: {
1053
+ id: "entity-to-delete",
1054
+ name: "Updated Entity",
1055
+ active: true,
1056
+ },
1057
+ })
1058
+ .execute();
1059
+ // Delete the entity by inserting NULL snapshot
1060
+ await lix.db
1061
+ .insertInto("state_all")
1062
+ .values({
1063
+ entity_id: "entity-to-delete",
1064
+ schema_key: "mock_entity",
1065
+ schema_version: "1.0",
1066
+ file_id: "mock-file",
1067
+ version_id: "deletion-test-version",
1068
+ plugin_key: "mock-plugin",
1069
+ // @ts-expect-error - snapshot_content is intentionally NULL for deletion
1070
+ snapshot_content: null, // Deletion tombstone
1071
+ })
1072
+ .execute();
1073
+ // Query the latest visible state view
1074
+ const latestState = await lix.db
1075
+ .selectFrom("internal_materialization_latest_visible_state")
1076
+ .selectAll()
1077
+ .where("version_id", "=", "deletion-test-version")
1078
+ .where("entity_id", "=", "entity-to-delete")
1079
+ .execute();
1080
+ // Should have exactly one entry - the deletion tombstone
1081
+ expect(latestState).toHaveLength(1);
1082
+ const deletionState = latestState[0];
1083
+ // Verify it's the deletion (NULL snapshot)
1084
+ expect(deletionState.entity_id).toBe("entity-to-delete");
1085
+ expect(deletionState.snapshot_content).toBeNull();
1086
+ expect(deletionState.depth).toBe(0); // Latest commit
1087
+ // Verify it's tracking the deletion, not earlier states
1088
+ expect(deletionState.schema_key).toBe("mock_entity");
1089
+ expect(deletionState.file_id).toBe("mock-file");
1090
+ // Create another entity that is NOT deleted to verify filtering
1091
+ await lix.db
1092
+ .insertInto("state_all")
1093
+ .values({
1094
+ entity_id: "entity-still-exists",
1095
+ schema_key: "mock_entity",
1096
+ schema_version: "1.0",
1097
+ file_id: "mock-file",
1098
+ version_id: "deletion-test-version",
1099
+ plugin_key: "mock-plugin",
1100
+ snapshot_content: {
1101
+ id: "entity-still-exists",
1102
+ name: "Active Entity",
1103
+ },
1104
+ })
1105
+ .execute();
1106
+ // Query all latest states for this version
1107
+ const allStates = await lix.db
1108
+ .selectFrom("internal_materialization_latest_visible_state")
1109
+ .selectAll()
1110
+ .where("version_id", "=", "deletion-test-version")
1111
+ .where("schema_key", "=", "mock_entity")
1112
+ .orderBy("entity_id")
1113
+ .execute();
1114
+ // Should have both entities
1115
+ expect(allStates).toHaveLength(2);
1116
+ // One is deleted (NULL), one exists
1117
+ const deletedEntity = allStates.find((s) => s.entity_id === "entity-to-delete");
1118
+ const activeEntity = allStates.find((s) => s.entity_id === "entity-still-exists");
1119
+ expect(deletedEntity.snapshot_content).toBeNull();
1120
+ expect(activeEntity.snapshot_content).not.toBeNull();
1121
+ expect(activeEntity.snapshot_content).toEqual({
1122
+ id: "entity-still-exists",
1123
+ name: "Active Entity",
1124
+ });
1125
+ }, {
1126
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1127
+ });
1128
+ });
1129
+ describe("internal_materialization_version_ancestry", () => {
1130
+ simulationTest("version is its own ancestor at depth 0", async ({ openSimulatedLix }) => {
1131
+ // Create a version and verify it appears as its own ancestor
1132
+ // at inheritance depth 0
1133
+ const lix = await openSimulatedLix({
1134
+ keyValues: [
1135
+ {
1136
+ key: "lix_deterministic_mode",
1137
+ value: { enabled: true, bootstrap: true },
1138
+ },
1139
+ ],
1140
+ });
1141
+ // Create a standalone version
1142
+ await createVersion({ lix, id: "standalone-version" });
1143
+ // Query the version ancestry view
1144
+ const ancestry = await lix.db
1145
+ .selectFrom("internal_materialization_version_ancestry")
1146
+ .selectAll()
1147
+ .where("version_id", "=", "standalone-version")
1148
+ .execute();
1149
+ // By default, versions inherit from 'global'
1150
+ // Should have two entries: itself (depth 0) and global (depth 1)
1151
+ expect(ancestry).toHaveLength(2);
1152
+ // Check self-ancestry at depth 0
1153
+ const selfAncestor = ancestry.find((a) => a.ancestor_version_id === "standalone-version");
1154
+ expect(selfAncestor).toBeDefined();
1155
+ expect(selfAncestor.version_id).toBe("standalone-version");
1156
+ expect(selfAncestor.ancestor_version_id).toBe("standalone-version");
1157
+ expect(selfAncestor.inheritance_depth).toBe(0);
1158
+ // Check global ancestry at depth 1
1159
+ const globalAncestor = ancestry.find((a) => a.ancestor_version_id === "global");
1160
+ expect(globalAncestor).toBeDefined();
1161
+ expect(globalAncestor.version_id).toBe("standalone-version");
1162
+ expect(globalAncestor.ancestor_version_id).toBe("global");
1163
+ expect(globalAncestor.inheritance_depth).toBe(1);
1164
+ }, {
1165
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1166
+ });
1167
+ simulationTest("handles single-level inheritance", async ({ openSimulatedLix }) => {
1168
+ const lix = await openSimulatedLix({
1169
+ keyValues: [
1170
+ {
1171
+ key: "lix_deterministic_mode",
1172
+ value: { enabled: true, bootstrap: true },
1173
+ },
1174
+ ],
1175
+ });
1176
+ // Create parent version A
1177
+ await createVersion({ lix, id: "version-a" });
1178
+ // Create child version B that inherits from A
1179
+ await createVersion({
1180
+ lix,
1181
+ id: "version-b",
1182
+ inherits_from_version_id: "version-a",
1183
+ });
1184
+ // Query ancestry for version B
1185
+ const ancestry = await lix.db
1186
+ .selectFrom("internal_materialization_version_ancestry")
1187
+ .selectAll()
1188
+ .where("version_id", "=", "version-b")
1189
+ .orderBy("inheritance_depth", "asc")
1190
+ .execute();
1191
+ // Version B should see:
1192
+ // - Itself at depth 0
1193
+ // - Version A at depth 1
1194
+ // - Global at depth 2 (inherited through A)
1195
+ expect(ancestry).toHaveLength(3);
1196
+ expect(ancestry[0]).toEqual({
1197
+ version_id: "version-b",
1198
+ ancestor_version_id: "version-b",
1199
+ inheritance_depth: 0,
1200
+ });
1201
+ expect(ancestry[1]).toEqual({
1202
+ version_id: "version-b",
1203
+ ancestor_version_id: "version-a",
1204
+ inheritance_depth: 1,
1205
+ });
1206
+ expect(ancestry[2]).toEqual({
1207
+ version_id: "version-b",
1208
+ ancestor_version_id: "global",
1209
+ inheritance_depth: 2,
1210
+ });
1211
+ }, {
1212
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1213
+ });
1214
+ simulationTest("handles multi-level inheritance chain", async ({ openSimulatedLix }) => {
1215
+ const lix = await openSimulatedLix({
1216
+ keyValues: [
1217
+ {
1218
+ key: "lix_deterministic_mode",
1219
+ value: { enabled: true, bootstrap: true },
1220
+ },
1221
+ ],
1222
+ });
1223
+ // Create inheritance chain: global → A → B → C → D
1224
+ await createVersion({ lix, id: "version-a" });
1225
+ await createVersion({
1226
+ lix,
1227
+ id: "version-b",
1228
+ inherits_from_version_id: "version-a",
1229
+ });
1230
+ await createVersion({
1231
+ lix,
1232
+ id: "version-c",
1233
+ inherits_from_version_id: "version-b",
1234
+ });
1235
+ await createVersion({
1236
+ lix,
1237
+ id: "version-d",
1238
+ inherits_from_version_id: "version-c",
1239
+ });
1240
+ // Query ancestry for version D
1241
+ const ancestry = await lix.db
1242
+ .selectFrom("internal_materialization_version_ancestry")
1243
+ .selectAll()
1244
+ .where("version_id", "=", "version-d")
1245
+ .orderBy("inheritance_depth", "asc")
1246
+ .execute();
1247
+ // Version D should see all ancestors at correct depths
1248
+ expect(ancestry).toHaveLength(5);
1249
+ expect(ancestry[0]).toEqual({
1250
+ version_id: "version-d",
1251
+ ancestor_version_id: "version-d",
1252
+ inheritance_depth: 0,
1253
+ });
1254
+ expect(ancestry[1]).toEqual({
1255
+ version_id: "version-d",
1256
+ ancestor_version_id: "version-c",
1257
+ inheritance_depth: 1,
1258
+ });
1259
+ expect(ancestry[2]).toEqual({
1260
+ version_id: "version-d",
1261
+ ancestor_version_id: "version-b",
1262
+ inheritance_depth: 2,
1263
+ });
1264
+ expect(ancestry[3]).toEqual({
1265
+ version_id: "version-d",
1266
+ ancestor_version_id: "version-a",
1267
+ inheritance_depth: 3,
1268
+ });
1269
+ expect(ancestry[4]).toEqual({
1270
+ version_id: "version-d",
1271
+ ancestor_version_id: "global",
1272
+ inheritance_depth: 4,
1273
+ });
1274
+ }, {
1275
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1276
+ });
1277
+ simulationTest("handles diamond inheritance pattern", async ({ openSimulatedLix }) => {
1278
+ const lix = await openSimulatedLix({
1279
+ keyValues: [
1280
+ {
1281
+ key: "lix_deterministic_mode",
1282
+ value: { enabled: true, bootstrap: true },
1283
+ },
1284
+ ],
1285
+ });
1286
+ // Create diamond pattern:
1287
+ // global
1288
+ // |
1289
+ // A
1290
+ // / \
1291
+ // B C
1292
+ // \ /
1293
+ // D
1294
+ // Note: In this system, a version can only inherit from ONE parent
1295
+ // So D inherits from B, which inherits from A
1296
+ // C also inherits from A, but D doesn't directly inherit from C
1297
+ await createVersion({ lix, id: "version-a" });
1298
+ await createVersion({
1299
+ lix,
1300
+ id: "version-b",
1301
+ inherits_from_version_id: "version-a",
1302
+ });
1303
+ await createVersion({
1304
+ lix,
1305
+ id: "version-c",
1306
+ inherits_from_version_id: "version-a",
1307
+ });
1308
+ // D inherits from B (not from both B and C)
1309
+ await createVersion({
1310
+ lix,
1311
+ id: "version-d",
1312
+ inherits_from_version_id: "version-b",
1313
+ });
1314
+ // Query ancestry for version D
1315
+ const ancestryD = await lix.db
1316
+ .selectFrom("internal_materialization_version_ancestry")
1317
+ .selectAll()
1318
+ .where("version_id", "=", "version-d")
1319
+ .orderBy("inheritance_depth", "asc")
1320
+ .execute();
1321
+ // D should see: itself, B, A, global
1322
+ expect(ancestryD).toHaveLength(4);
1323
+ expect(ancestryD[0]).toEqual({
1324
+ version_id: "version-d",
1325
+ ancestor_version_id: "version-d",
1326
+ inheritance_depth: 0,
1327
+ });
1328
+ expect(ancestryD[1]).toEqual({
1329
+ version_id: "version-d",
1330
+ ancestor_version_id: "version-b",
1331
+ inheritance_depth: 1,
1332
+ });
1333
+ expect(ancestryD[2]).toEqual({
1334
+ version_id: "version-d",
1335
+ ancestor_version_id: "version-a",
1336
+ inheritance_depth: 2,
1337
+ });
1338
+ expect(ancestryD[3]).toEqual({
1339
+ version_id: "version-d",
1340
+ ancestor_version_id: "global",
1341
+ inheritance_depth: 3,
1342
+ });
1343
+ // Verify C also sees A as ancestor
1344
+ const ancestryC = await lix.db
1345
+ .selectFrom("internal_materialization_version_ancestry")
1346
+ .selectAll()
1347
+ .where("version_id", "=", "version-c")
1348
+ .orderBy("inheritance_depth", "asc")
1349
+ .execute();
1350
+ expect(ancestryC).toHaveLength(3);
1351
+ expect(ancestryC[1]?.ancestor_version_id).toBe("version-a");
1352
+ expect(ancestryC[1]?.inheritance_depth).toBe(1);
1353
+ }, {
1354
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1355
+ });
1356
+ simulationTest("handles version with no inheritance", async ({ openSimulatedLix }) => {
1357
+ const lix = await openSimulatedLix({
1358
+ keyValues: [
1359
+ {
1360
+ key: "lix_deterministic_mode",
1361
+ value: { enabled: true, bootstrap: true },
1362
+ },
1363
+ ],
1364
+ });
1365
+ // Create a version that explicitly does NOT inherit from global
1366
+ await createVersion({
1367
+ lix,
1368
+ id: "standalone-version",
1369
+ inherits_from_version_id: null,
1370
+ });
1371
+ // Query ancestry
1372
+ const ancestry = await lix.db
1373
+ .selectFrom("internal_materialization_version_ancestry")
1374
+ .selectAll()
1375
+ .where("version_id", "=", "standalone-version")
1376
+ .orderBy("inheritance_depth", "asc")
1377
+ .execute();
1378
+ // Should only see itself as ancestor
1379
+ expect(ancestry).toHaveLength(1);
1380
+ expect(ancestry[0]).toEqual({
1381
+ version_id: "standalone-version",
1382
+ ancestor_version_id: "standalone-version",
1383
+ inheritance_depth: 0,
1384
+ });
1385
+ }, {
1386
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1387
+ });
1388
+ simulationTest("cycle detection prevents infinite recursion", async ({ openSimulatedLix }) => {
1389
+ const lix = await openSimulatedLix({
1390
+ keyValues: [
1391
+ {
1392
+ key: "lix_deterministic_mode",
1393
+ value: { enabled: true, bootstrap: true },
1394
+ },
1395
+ ],
1396
+ });
1397
+ // Create version A that will later point to B
1398
+ await createVersion({
1399
+ lix,
1400
+ id: "version-a",
1401
+ inherits_from_version_id: null, // Start with no inheritance
1402
+ });
1403
+ // Create version B that inherits from A
1404
+ await createVersion({
1405
+ lix,
1406
+ id: "version-b",
1407
+ inherits_from_version_id: "version-a",
1408
+ });
1409
+ // Now update A to inherit from B, creating a cycle
1410
+ // This would create A -> B -> A -> B -> ...
1411
+ await lix.db
1412
+ .updateTable("version")
1413
+ .set({ inherits_from_version_id: "version-b" })
1414
+ .where("id", "=", "version-a")
1415
+ .execute();
1416
+ // Query ancestry for version A with DISTINCT to remove duplicates
1417
+ const ancestryA = await lix.db
1418
+ .selectFrom("internal_materialization_version_ancestry")
1419
+ .selectAll()
1420
+ .where("version_id", "=", "version-a")
1421
+ .distinct()
1422
+ .orderBy("inheritance_depth", "asc")
1423
+ .execute();
1424
+ // Should have exactly 2 entries due to cycle detection
1425
+ // A sees: itself (depth 0), B (depth 1)
1426
+ // The cycle detection prevents seeing A again at depth 2
1427
+ expect(ancestryA).toHaveLength(2);
1428
+ expect(ancestryA[0]).toEqual({
1429
+ version_id: "version-a",
1430
+ ancestor_version_id: "version-a",
1431
+ inheritance_depth: 0,
1432
+ });
1433
+ expect(ancestryA[1]).toEqual({
1434
+ version_id: "version-a",
1435
+ ancestor_version_id: "version-b",
1436
+ inheritance_depth: 1,
1437
+ });
1438
+ // Query ancestry for version B
1439
+ const ancestryB = await lix.db
1440
+ .selectFrom("internal_materialization_version_ancestry")
1441
+ .selectAll()
1442
+ .where("version_id", "=", "version-b")
1443
+ .distinct()
1444
+ .orderBy("inheritance_depth", "asc")
1445
+ .execute();
1446
+ // B should also see exactly 2 entries
1447
+ // B sees: itself (depth 0), A (depth 1)
1448
+ expect(ancestryB).toHaveLength(2);
1449
+ expect(ancestryB[0]).toEqual({
1450
+ version_id: "version-b",
1451
+ ancestor_version_id: "version-b",
1452
+ inheritance_depth: 0,
1453
+ });
1454
+ expect(ancestryB[1]).toEqual({
1455
+ version_id: "version-b",
1456
+ ancestor_version_id: "version-a",
1457
+ inheritance_depth: 1,
1458
+ });
1459
+ }, {
1460
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1461
+ });
1462
+ });
1463
+ describe("internal_state_materializer", () => {
1464
+ simulationTest("shows entity from own version", async ({ openSimulatedLix }) => {
1465
+ const lix = await openSimulatedLix({
1466
+ keyValues: [
1467
+ {
1468
+ key: "lix_deterministic_mode",
1469
+ value: { enabled: true, bootstrap: true },
1470
+ },
1471
+ ],
1472
+ });
1473
+ // Create a version
1474
+ await createVersion({ lix, id: "version-1" });
1475
+ // Insert an entity directly to version-1
1476
+ await lix.db
1477
+ .insertInto("key_value_all")
1478
+ .values({
1479
+ key: "test-key",
1480
+ value: "test-value",
1481
+ lixcol_version_id: "version-1",
1482
+ })
1483
+ .execute();
1484
+ // Query the materializer for version-1
1485
+ const materializedState = await lix.db
1486
+ .selectFrom("internal_state_materializer")
1487
+ .selectAll()
1488
+ .where("version_id", "=", "version-1")
1489
+ .where("entity_id", "=", "test-key")
1490
+ .executeTakeFirst();
1491
+ const cachedState = await lix.db
1492
+ .selectFrom("state_all")
1493
+ .selectAll()
1494
+ .where("version_id", "=", "version-1")
1495
+ .where("entity_id", "=", "test-key")
1496
+ .executeTakeFirst();
1497
+ expect(materializedState).toBeDefined();
1498
+ expect(materializedState.snapshot_content).toEqual({
1499
+ key: "test-key",
1500
+ value: "test-value",
1501
+ });
1502
+ expect(materializedState.inherited_from_version_id).toBeNull(); // Not inherited
1503
+ expect(materializedState).toEqual(cachedState);
1504
+ }, {
1505
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1506
+ });
1507
+ simulationTest("inherits entity from parent version", async ({ openSimulatedLix }) => {
1508
+ const lix = await openSimulatedLix({
1509
+ keyValues: [
1510
+ {
1511
+ key: "lix_deterministic_mode",
1512
+ value: { enabled: true, bootstrap: true },
1513
+ },
1514
+ ],
1515
+ });
1516
+ // Create parent and child versions
1517
+ await createVersion({ lix, id: "parent-version" });
1518
+ await createVersion({
1519
+ lix,
1520
+ id: "child-version",
1521
+ inherits_from_version_id: "parent-version",
1522
+ });
1523
+ // Add entity to parent version
1524
+ await lix.db
1525
+ .insertInto("key_value_all")
1526
+ .values({
1527
+ key: "inherited-key",
1528
+ value: "parent-value",
1529
+ lixcol_version_id: "parent-version",
1530
+ })
1531
+ .execute();
1532
+ // Query the materializer for child version
1533
+ const materializedState = await lix.db
1534
+ .selectFrom("internal_state_materializer")
1535
+ .selectAll()
1536
+ .where("version_id", "=", "child-version")
1537
+ .where("entity_id", "=", "inherited-key")
1538
+ .executeTakeFirst();
1539
+ const cachedState = await lix.db
1540
+ .selectFrom("state_all")
1541
+ .selectAll()
1542
+ .where("version_id", "=", "child-version")
1543
+ .where("entity_id", "=", "inherited-key")
1544
+ .executeTakeFirst();
1545
+ // Child should see the entity from parent
1546
+ expect(materializedState).toBeDefined();
1547
+ expect(materializedState.snapshot_content).toEqual({
1548
+ key: "inherited-key",
1549
+ value: "parent-value",
1550
+ });
1551
+ expect(materializedState.inherited_from_version_id).toBe("parent-version");
1552
+ expect(materializedState).toEqual(cachedState);
1553
+ }, {
1554
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1555
+ });
1556
+ simulationTest("child version overrides parent entity", async ({ openSimulatedLix }) => {
1557
+ const lix = await openSimulatedLix({
1558
+ keyValues: [
1559
+ {
1560
+ key: "lix_deterministic_mode",
1561
+ value: { enabled: true, bootstrap: true },
1562
+ },
1563
+ ],
1564
+ });
1565
+ // Create parent and child versions
1566
+ await createVersion({ lix, id: "parent-version" });
1567
+ await createVersion({
1568
+ lix,
1569
+ id: "child-version",
1570
+ inherits_from_version_id: "parent-version",
1571
+ });
1572
+ // Add entity to parent version
1573
+ await lix.db
1574
+ .insertInto("key_value_all")
1575
+ .values({
1576
+ key: "shared-key",
1577
+ value: "parent-value",
1578
+ lixcol_version_id: "parent-version",
1579
+ })
1580
+ .execute();
1581
+ // Update the inherited entity in child version
1582
+ await lix.db
1583
+ .updateTable("key_value_all")
1584
+ .set({
1585
+ value: "child-value",
1586
+ })
1587
+ .where("key", "=", "shared-key")
1588
+ .where("lixcol_version_id", "=", "child-version")
1589
+ .execute();
1590
+ // Query the materializer for child version
1591
+ const materializedState = await lix.db
1592
+ .selectFrom("internal_state_materializer")
1593
+ .selectAll()
1594
+ .where("version_id", "=", "child-version")
1595
+ .where("entity_id", "=", "shared-key")
1596
+ .executeTakeFirst();
1597
+ const cachedState = await lix.db
1598
+ .selectFrom("state_all")
1599
+ .selectAll()
1600
+ .where("version_id", "=", "child-version")
1601
+ .where("entity_id", "=", "shared-key")
1602
+ .executeTakeFirst();
1603
+ // Child should see its own value, not parent's
1604
+ expect(materializedState).toBeDefined();
1605
+ expect(materializedState.snapshot_content).toEqual({
1606
+ key: "shared-key",
1607
+ value: "child-value",
1608
+ });
1609
+ expect(materializedState.inherited_from_version_id).toBeNull(); // Not inherited
1610
+ expect(materializedState).toEqual(cachedState);
1611
+ }, {
1612
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1613
+ });
1614
+ simulationTest("handles multi-level inheritance", async ({ openSimulatedLix }) => {
1615
+ const lix = await openSimulatedLix({
1616
+ keyValues: [
1617
+ {
1618
+ key: "lix_deterministic_mode",
1619
+ value: { enabled: true, bootstrap: true },
1620
+ },
1621
+ ],
1622
+ });
1623
+ // Create inheritance chain: A -> B -> C
1624
+ await createVersion({ lix, id: "version-a" });
1625
+ await createVersion({
1626
+ lix,
1627
+ id: "version-b",
1628
+ inherits_from_version_id: "version-a",
1629
+ });
1630
+ await createVersion({
1631
+ lix,
1632
+ id: "version-c",
1633
+ inherits_from_version_id: "version-b",
1634
+ });
1635
+ // Add entity to version A
1636
+ await lix.db
1637
+ .insertInto("key_value_all")
1638
+ .values({
1639
+ key: "deep-key",
1640
+ value: "value-from-a",
1641
+ lixcol_version_id: "version-a",
1642
+ })
1643
+ .execute();
1644
+ // Add different entity to version B
1645
+ await lix.db
1646
+ .insertInto("key_value_all")
1647
+ .values({
1648
+ key: "b-only-key",
1649
+ value: "value-from-b",
1650
+ lixcol_version_id: "version-b",
1651
+ })
1652
+ .execute();
1653
+ // Query materializer for version C
1654
+ const materializedStates = await lix.db
1655
+ .selectFrom("internal_state_materializer")
1656
+ .selectAll()
1657
+ .where("version_id", "=", "version-c")
1658
+ .where("schema_key", "=", "lix_key_value")
1659
+ .where("entity_id", "in", ["deep-key", "b-only-key"])
1660
+ .orderBy("entity_id")
1661
+ .execute();
1662
+ // C should see both entities
1663
+ expect(materializedStates).toHaveLength(2);
1664
+ // Check inherited from A (through B)
1665
+ const deepKey = materializedStates.find((s) => s.entity_id === "deep-key");
1666
+ expect(deepKey).toBeDefined();
1667
+ expect(deepKey.snapshot_content).toEqual({
1668
+ key: "deep-key",
1669
+ value: "value-from-a",
1670
+ });
1671
+ expect(deepKey.inherited_from_version_id).toBe("version-a");
1672
+ // Check inherited from B
1673
+ const bKey = materializedStates.find((s) => s.entity_id === "b-only-key");
1674
+ expect(bKey).toBeDefined();
1675
+ expect(bKey.snapshot_content).toEqual({
1676
+ key: "b-only-key",
1677
+ value: "value-from-b",
1678
+ });
1679
+ expect(bKey.inherited_from_version_id).toBe("version-b");
1680
+ }, {
1681
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1682
+ });
1683
+ simulationTest("includes deleted entities as tombstones (NULL snapshots)", async ({ openSimulatedLix }) => {
1684
+ const lix = await openSimulatedLix({
1685
+ keyValues: [
1686
+ {
1687
+ key: "lix_deterministic_mode",
1688
+ value: { enabled: true, bootstrap: true },
1689
+ },
1690
+ ],
1691
+ });
1692
+ // Create a version
1693
+ await createVersion({ lix, id: "version-1" });
1694
+ // Insert an entity
1695
+ await lix.db
1696
+ .insertInto("key_value_all")
1697
+ .values({
1698
+ key: "entity-to-delete",
1699
+ value: "initial-value",
1700
+ lixcol_version_id: "version-1",
1701
+ })
1702
+ .execute();
1703
+ // Delete the entity (update to NULL snapshot)
1704
+ await lix.db
1705
+ .deleteFrom("key_value_all")
1706
+ .where("key", "=", "entity-to-delete")
1707
+ .where("lixcol_version_id", "=", "version-1")
1708
+ .execute();
1709
+ // Query the materializer - should return deleted entities as tombstones
1710
+ const materializedState = await lix.db
1711
+ .selectFrom("internal_state_materializer")
1712
+ .selectAll()
1713
+ .where("version_id", "=", "version-1")
1714
+ .where("entity_id", "=", "entity-to-delete")
1715
+ .executeTakeFirst();
1716
+ // Materializer should include the deleted entity as a tombstone
1717
+ expect(materializedState).toBeDefined();
1718
+ expect(materializedState.snapshot_content).toBeNull();
1719
+ expect(materializedState.entity_id).toBe("entity-to-delete");
1720
+ expect(materializedState.version_id).toBe("version-1");
1721
+ // But the latest visible state should still have it with NULL
1722
+ const latestVisible = await lix.db
1723
+ .selectFrom("internal_materialization_latest_visible_state")
1724
+ .selectAll()
1725
+ .where("version_id", "=", "version-1")
1726
+ .where("entity_id", "=", "entity-to-delete")
1727
+ .executeTakeFirst();
1728
+ expect(latestVisible).toBeDefined();
1729
+ expect(latestVisible.snapshot_content).toBeNull();
1730
+ }, {
1731
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1732
+ });
1733
+ simulationTest("deletion in child overrides parent entity", async ({ openSimulatedLix }) => {
1734
+ const lix = await openSimulatedLix({
1735
+ keyValues: [
1736
+ {
1737
+ key: "lix_deterministic_mode",
1738
+ value: { enabled: true, bootstrap: true },
1739
+ },
1740
+ ],
1741
+ });
1742
+ // Create parent and child versions
1743
+ await createVersion({ lix, id: "parent-version" });
1744
+ await createVersion({
1745
+ lix,
1746
+ id: "child-version",
1747
+ inherits_from_version_id: "parent-version",
1748
+ });
1749
+ // Add entity to parent version
1750
+ await lix.db
1751
+ .insertInto("key_value_all")
1752
+ .values({
1753
+ key: "entity-to-override",
1754
+ value: "parent-value",
1755
+ lixcol_version_id: "parent-version",
1756
+ })
1757
+ .execute();
1758
+ // Delete the inherited entity in child version
1759
+ await lix.db
1760
+ .deleteFrom("key_value_all")
1761
+ .where("key", "=", "entity-to-override")
1762
+ .where("lixcol_version_id", "=", "child-version")
1763
+ .execute();
1764
+ // Query materializer for parent - should see the entity
1765
+ const parentState = await lix.db
1766
+ .selectFrom("internal_state_materializer")
1767
+ .selectAll()
1768
+ .where("version_id", "=", "parent-version")
1769
+ .where("entity_id", "=", "entity-to-override")
1770
+ .executeTakeFirst();
1771
+ const parentCachedState = await lix.db
1772
+ .selectFrom("state_all")
1773
+ .selectAll()
1774
+ .where("version_id", "=", "parent-version")
1775
+ .where("entity_id", "=", "entity-to-override")
1776
+ .executeTakeFirst();
1777
+ expect(parentCachedState).toEqual(parentState);
1778
+ expect(parentState).toBeDefined();
1779
+ expect(parentState.snapshot_content).toEqual({
1780
+ key: "entity-to-override",
1781
+ value: "parent-value",
1782
+ });
1783
+ // Query materializer for child - should see the entity as a tombstone (deleted)
1784
+ const childState = await lix.db
1785
+ .selectFrom("internal_state_materializer")
1786
+ .selectAll()
1787
+ .where("version_id", "=", "child-version")
1788
+ .where("entity_id", "=", "entity-to-override")
1789
+ .executeTakeFirst();
1790
+ expect(childState).toBeDefined();
1791
+ expect(childState.snapshot_content).toBeNull();
1792
+ expect(childState.entity_id).toBe("entity-to-override");
1793
+ expect(childState.version_id).toBe("child-version");
1794
+ expect(childState.inherited_from_version_id).toBeNull(); // Direct deletion in child
1795
+ // But the latest visible state for child should have NULL snapshot
1796
+ const childLatestVisible = await lix.db
1797
+ .selectFrom("internal_materialization_latest_visible_state")
1798
+ .selectAll()
1799
+ .where("version_id", "=", "child-version")
1800
+ .where("entity_id", "=", "entity-to-override")
1801
+ .executeTakeFirst();
1802
+ expect(childLatestVisible).toBeDefined();
1803
+ expect(childLatestVisible.snapshot_content).toBeNull();
1804
+ }, {
1805
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1806
+ });
1807
+ simulationTest("handles diamond inheritance - takes from closest ancestor", async ({ openSimulatedLix }) => {
1808
+ const lix = await openSimulatedLix({
1809
+ keyValues: [
1810
+ {
1811
+ key: "lix_deterministic_mode",
1812
+ value: { enabled: true, bootstrap: true },
1813
+ },
1814
+ ],
1815
+ });
1816
+ // Create diamond inheritance pattern:
1817
+ // A (root)
1818
+ // / \
1819
+ // B C
1820
+ // \ /
1821
+ // D
1822
+ //
1823
+ // Note: In Lix, a version can only inherit from one parent directly
1824
+ // So D inherits from B, B inherits from A, C also inherits from A
1825
+ await createVersion({ lix, id: "version-a" });
1826
+ await createVersion({
1827
+ lix,
1828
+ id: "version-b",
1829
+ inherits_from_version_id: "version-a",
1830
+ });
1831
+ await createVersion({
1832
+ lix,
1833
+ id: "version-c",
1834
+ inherits_from_version_id: "version-a",
1835
+ });
1836
+ await createVersion({
1837
+ lix,
1838
+ id: "version-d",
1839
+ inherits_from_version_id: "version-b",
1840
+ });
1841
+ // Add entity to root version A
1842
+ await lix.db
1843
+ .insertInto("key_value_all")
1844
+ .values({
1845
+ key: "shared-entity",
1846
+ value: "value-from-a",
1847
+ lixcol_version_id: "version-a",
1848
+ })
1849
+ .execute();
1850
+ // Override the entity in version B
1851
+ await lix.db
1852
+ .updateTable("key_value_all")
1853
+ .set({
1854
+ value: "value-from-b",
1855
+ })
1856
+ .where("key", "=", "shared-entity")
1857
+ .where("lixcol_version_id", "=", "version-b")
1858
+ .execute();
1859
+ // Also override the entity in version C
1860
+ await lix.db
1861
+ .updateTable("key_value_all")
1862
+ .set({
1863
+ value: "value-from-c",
1864
+ })
1865
+ .where("key", "=", "shared-entity")
1866
+ .where("lixcol_version_id", "=", "version-c")
1867
+ .execute();
1868
+ // Query materializer for version D
1869
+ const dState = await lix.db
1870
+ .selectFrom("internal_state_materializer")
1871
+ .selectAll()
1872
+ .where("version_id", "=", "version-d")
1873
+ .where("entity_id", "=", "shared-entity")
1874
+ .executeTakeFirst();
1875
+ // D should see the value from B (its direct parent), not from A or C
1876
+ expect(dState).toBeDefined();
1877
+ expect(dState.snapshot_content).toEqual({
1878
+ key: "shared-entity",
1879
+ value: "value-from-b",
1880
+ });
1881
+ expect(dState.inherited_from_version_id).toBe("version-b");
1882
+ // Verify that B sees its own value
1883
+ const bState = await lix.db
1884
+ .selectFrom("internal_state_materializer")
1885
+ .selectAll()
1886
+ .where("version_id", "=", "version-b")
1887
+ .where("entity_id", "=", "shared-entity")
1888
+ .executeTakeFirst();
1889
+ expect(bState).toBeDefined();
1890
+ expect(bState.snapshot_content).toEqual({
1891
+ key: "shared-entity",
1892
+ value: "value-from-b",
1893
+ });
1894
+ expect(bState.inherited_from_version_id).toBeNull(); // B has its own value
1895
+ // Verify that C sees its own value
1896
+ const cState = await lix.db
1897
+ .selectFrom("internal_state_materializer")
1898
+ .selectAll()
1899
+ .where("version_id", "=", "version-c")
1900
+ .where("entity_id", "=", "shared-entity")
1901
+ .executeTakeFirst();
1902
+ expect(cState).toBeDefined();
1903
+ expect(cState.snapshot_content).toEqual({
1904
+ key: "shared-entity",
1905
+ value: "value-from-c",
1906
+ });
1907
+ expect(cState.inherited_from_version_id).toBeNull(); // C has its own value
1908
+ // Test inheritance ranking - add a different entity only in A
1909
+ await lix.db
1910
+ .insertInto("key_value_all")
1911
+ .values({
1912
+ key: "root-only-entity",
1913
+ value: "only-in-a",
1914
+ lixcol_version_id: "version-a",
1915
+ })
1916
+ .execute();
1917
+ // D should inherit it through B (depth 2 from D's perspective)
1918
+ const dRootEntity = await lix.db
1919
+ .selectFrom("internal_state_materializer")
1920
+ .selectAll()
1921
+ .where("version_id", "=", "version-d")
1922
+ .where("entity_id", "=", "root-only-entity")
1923
+ .executeTakeFirst();
1924
+ expect(dRootEntity).toBeDefined();
1925
+ expect(dRootEntity.snapshot_content).toEqual({
1926
+ key: "root-only-entity",
1927
+ value: "only-in-a",
1928
+ });
1929
+ expect(dRootEntity.inherited_from_version_id).toBe("version-a");
1930
+ }, {
1931
+ simulations: [normalSimulation, outOfOrderSequenceSimulation],
1932
+ });
1933
+ });
1934
+ //# sourceMappingURL=materialize-state.test.js.map