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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1106) hide show
  1. package/dist/account/create-account.d.ts +17 -3
  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 +28 -0
  12. package/dist/account/schema.d.ts.map +1 -0
  13. package/dist/account/schema.js +55 -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 +306 -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 -1
  22. package/dist/account/switch-account.js.map +1 -1
  23. package/dist/account/switch-account.test.js +27 -6
  24. package/dist/account/switch-account.test.js.map +1 -1
  25. package/dist/change/create-change.d.ts +11 -22
  26. package/dist/change/create-change.d.ts.map +1 -1
  27. package/dist/change/create-change.js +29 -83
  28. package/dist/change/create-change.js.map +1 -1
  29. package/dist/change/create-change.test.js +129 -176
  30. package/dist/change/create-change.test.js.map +1 -1
  31. package/dist/change/index.d.ts +1 -2
  32. package/dist/change/index.d.ts.map +1 -1
  33. package/dist/change/index.js +1 -2
  34. package/dist/change/index.js.map +1 -1
  35. package/dist/change/mock-change.d.ts +1 -1
  36. package/dist/change/mock-change.d.ts.map +1 -1
  37. package/dist/change/mock-change.js +1 -0
  38. package/dist/change/mock-change.js.map +1 -1
  39. package/dist/change/schema.d.ts +28 -0
  40. package/dist/change/schema.d.ts.map +1 -0
  41. package/dist/change/schema.js +62 -0
  42. package/dist/change/schema.js.map +1 -0
  43. package/dist/change/schema.test.d.ts +2 -0
  44. package/dist/change/schema.test.d.ts.map +1 -0
  45. package/dist/change/schema.test.js +235 -0
  46. package/dist/change/schema.test.js.map +1 -0
  47. package/dist/change-author/index.d.ts +2 -0
  48. package/dist/change-author/index.d.ts.map +1 -0
  49. package/dist/change-author/index.js +2 -0
  50. package/dist/change-author/index.js.map +1 -0
  51. package/dist/change-author/schema.d.ts +31 -0
  52. package/dist/change-author/schema.d.ts.map +1 -0
  53. package/dist/change-author/schema.js +35 -0
  54. package/dist/change-author/schema.js.map +1 -0
  55. package/dist/change-author/schema.test.d.ts +2 -0
  56. package/dist/change-author/schema.test.d.ts.map +1 -0
  57. package/dist/change-author/schema.test.js +256 -0
  58. package/dist/change-author/schema.test.js.map +1 -0
  59. package/dist/change-conflict/create-change-conflict.d.ts.map +1 -1
  60. package/dist/change-conflict/create-change-conflict.js +24 -6
  61. package/dist/change-conflict/create-change-conflict.js.map +1 -1
  62. package/dist/change-conflict/create-change-conflict.test.js +13 -11
  63. package/dist/change-conflict/create-change-conflict.test.js.map +1 -1
  64. package/dist/change-conflict/detect-change-conflicts.d.ts.map +1 -1
  65. package/dist/change-conflict/detect-change-conflicts.js +2 -0
  66. package/dist/change-conflict/detect-change-conflicts.js.map +1 -1
  67. package/dist/change-conflict/detect-change-conflicts.test.js +17 -13
  68. package/dist/change-conflict/detect-change-conflicts.test.js.map +1 -1
  69. package/dist/change-conflict/detect-diverging-entity-conflict.d.ts.map +1 -1
  70. package/dist/change-conflict/detect-diverging-entity-conflict.js +3 -1
  71. package/dist/change-conflict/detect-diverging-entity-conflict.js.map +1 -1
  72. package/dist/change-conflict/detect-diverging-entity-conflict.test.js +23 -21
  73. package/dist/change-conflict/detect-diverging-entity-conflict.test.js.map +1 -1
  74. package/dist/change-conflict/garbage-collect-change-conflicts.d.ts.map +1 -1
  75. package/dist/change-conflict/garbage-collect-change-conflicts.js +2 -0
  76. package/dist/change-conflict/garbage-collect-change-conflicts.js.map +1 -1
  77. package/dist/change-conflict/garbage-collect-change-conflicts.test.js +15 -15
  78. package/dist/change-conflict/garbage-collect-change-conflicts.test.js.map +1 -1
  79. package/dist/change-conflict/resolve-conflict-by-selecting.d.ts.map +1 -1
  80. package/dist/change-conflict/resolve-conflict-by-selecting.js +2 -2
  81. package/dist/change-conflict/resolve-conflict-by-selecting.js.map +1 -1
  82. package/dist/change-conflict/resolve-conflict-by-selecting.test.js +17 -8
  83. package/dist/change-conflict/resolve-conflict-by-selecting.test.js.map +1 -1
  84. package/dist/change-proposal/create-change-proposal.d.ts +16 -0
  85. package/dist/change-proposal/create-change-proposal.d.ts.map +1 -0
  86. package/dist/change-proposal/create-change-proposal.js +52 -0
  87. package/dist/change-proposal/create-change-proposal.js.map +1 -0
  88. package/dist/change-proposal/create-change-proposal.test.d.ts +2 -0
  89. package/dist/change-proposal/create-change-proposal.test.d.ts.map +1 -0
  90. package/dist/change-proposal/create-change-proposal.test.js +91 -0
  91. package/dist/change-proposal/create-change-proposal.test.js.map +1 -0
  92. package/dist/change-proposal/database-schema.d.ts +13 -0
  93. package/dist/change-proposal/database-schema.d.ts.map +1 -0
  94. package/dist/change-proposal/database-schema.js +17 -0
  95. package/dist/change-proposal/database-schema.js.map +1 -0
  96. package/dist/change-proposal/database-schema.test.d.ts +2 -0
  97. package/dist/change-proposal/database-schema.test.d.ts.map +1 -0
  98. package/dist/change-proposal/database-schema.test.js +159 -0
  99. package/dist/change-proposal/database-schema.test.js.map +1 -0
  100. package/dist/change-proposal/index.d.ts +3 -0
  101. package/dist/change-proposal/index.d.ts.map +1 -0
  102. package/dist/change-proposal/index.js +3 -0
  103. package/dist/change-proposal/index.js.map +1 -0
  104. package/dist/change-set/apply-change-set.d.ts +10 -0
  105. package/dist/change-set/apply-change-set.d.ts.map +1 -0
  106. package/dist/change-set/apply-change-set.js +150 -0
  107. package/dist/change-set/apply-change-set.js.map +1 -0
  108. package/dist/change-set/apply-change-set.test.d.ts +2 -0
  109. package/dist/change-set/apply-change-set.test.d.ts.map +1 -0
  110. package/dist/change-set/apply-change-set.test.js +390 -0
  111. package/dist/change-set/apply-change-set.test.js.map +1 -0
  112. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts.map +1 -1
  113. package/dist/change-set/create-change-set.d.ts +19 -18
  114. package/dist/change-set/create-change-set.d.ts.map +1 -1
  115. package/dist/change-set/create-change-set.js +95 -34
  116. package/dist/change-set/create-change-set.js.map +1 -1
  117. package/dist/change-set/create-change-set.test.js +109 -27
  118. package/dist/change-set/create-change-set.test.js.map +1 -1
  119. package/dist/change-set/create-checkpoint.d.ts +19 -0
  120. package/dist/change-set/create-checkpoint.d.ts.map +1 -0
  121. package/dist/change-set/create-checkpoint.js +86 -0
  122. package/dist/change-set/create-checkpoint.js.map +1 -0
  123. package/dist/change-set/create-checkpoint.test.d.ts +2 -0
  124. package/dist/change-set/create-checkpoint.test.d.ts.map +1 -0
  125. package/dist/change-set/create-checkpoint.test.js +294 -0
  126. package/dist/change-set/create-checkpoint.test.js.map +1 -0
  127. package/dist/change-set/create-merge-change-set.d.ts +23 -0
  128. package/dist/change-set/create-merge-change-set.d.ts.map +1 -0
  129. package/dist/change-set/create-merge-change-set.js +68 -0
  130. package/dist/change-set/create-merge-change-set.js.map +1 -0
  131. package/dist/change-set/create-merge-change-set.test.d.ts +2 -0
  132. package/dist/change-set/create-merge-change-set.test.d.ts.map +1 -0
  133. package/dist/change-set/create-merge-change-set.test.js +211 -0
  134. package/dist/change-set/create-merge-change-set.test.js.map +1 -0
  135. package/dist/change-set/create-transition-change-set.d.ts +18 -0
  136. package/dist/change-set/create-transition-change-set.d.ts.map +1 -0
  137. package/dist/change-set/create-transition-change-set.js +102 -0
  138. package/dist/change-set/create-transition-change-set.js.map +1 -0
  139. package/dist/change-set/create-transition-change-set.test.d.ts +2 -0
  140. package/dist/change-set/create-transition-change-set.test.d.ts.map +1 -0
  141. package/dist/change-set/create-transition-change-set.test.js +211 -0
  142. package/dist/change-set/create-transition-change-set.test.js.map +1 -0
  143. package/dist/change-set/create-undo-change-set.d.ts +27 -0
  144. package/dist/change-set/create-undo-change-set.d.ts.map +1 -0
  145. package/dist/change-set/create-undo-change-set.js +121 -0
  146. package/dist/change-set/create-undo-change-set.js.map +1 -0
  147. package/dist/change-set/create-undo-change-set.test.d.ts +2 -0
  148. package/dist/change-set/create-undo-change-set.test.d.ts.map +1 -0
  149. package/dist/change-set/create-undo-change-set.test.js +273 -0
  150. package/dist/change-set/create-undo-change-set.test.js.map +1 -0
  151. package/dist/change-set/index.d.ts +6 -1
  152. package/dist/change-set/index.d.ts.map +1 -1
  153. package/dist/change-set/index.js +6 -1
  154. package/dist/change-set/index.js.map +1 -1
  155. package/dist/change-set/schema.d.ts +149 -0
  156. package/dist/change-set/schema.d.ts.map +1 -0
  157. package/dist/change-set/schema.js +169 -0
  158. package/dist/change-set/schema.js.map +1 -0
  159. package/dist/change-set/schema.test.d.ts +2 -0
  160. package/dist/change-set/schema.test.d.ts.map +1 -0
  161. package/dist/change-set/schema.test.js +821 -0
  162. package/dist/change-set/schema.test.js.map +1 -0
  163. package/dist/database/execute-sync.d.ts +12 -6
  164. package/dist/database/execute-sync.d.ts.map +1 -1
  165. package/dist/database/execute-sync.js +25 -24
  166. package/dist/database/execute-sync.js.map +1 -1
  167. package/dist/database/execute-sync.test.js +53 -60
  168. package/dist/database/execute-sync.test.js.map +1 -1
  169. package/dist/database/graph-traversal-mode.d.ts +72 -0
  170. package/dist/database/graph-traversal-mode.d.ts.map +1 -0
  171. package/dist/database/graph-traversal-mode.js +2 -0
  172. package/dist/database/graph-traversal-mode.js.map +1 -0
  173. package/dist/database/index.d.ts +3 -2
  174. package/dist/database/index.d.ts.map +1 -1
  175. package/dist/database/index.js +3 -2
  176. package/dist/database/index.js.map +1 -1
  177. package/dist/database/init-db.d.ts +2 -0
  178. package/dist/database/init-db.d.ts.map +1 -1
  179. package/dist/database/init-db.js +69 -56
  180. package/dist/database/init-db.js.map +1 -1
  181. package/dist/database/kysely-plugin/json-column-plugin.d.ts +3 -0
  182. package/dist/database/kysely-plugin/json-column-plugin.d.ts.map +1 -0
  183. package/dist/database/kysely-plugin/json-column-plugin.js +168 -0
  184. package/dist/database/kysely-plugin/json-column-plugin.js.map +1 -0
  185. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts.map +1 -1
  186. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js +5 -10
  187. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js.map +1 -1
  188. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js +1 -1
  189. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js.map +1 -1
  190. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts +14 -2
  191. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts.map +1 -1
  192. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js +145 -74
  193. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js.map +1 -1
  194. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js +145 -1
  195. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js.map +1 -1
  196. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.d.ts +15 -0
  197. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.d.ts.map +1 -0
  198. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.js +31 -0
  199. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.js.map +1 -0
  200. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.d.ts +2 -0
  201. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.d.ts.map +1 -0
  202. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.js +51 -0
  203. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.js.map +1 -0
  204. package/dist/database/schema.d.ts +42 -208
  205. package/dist/database/schema.d.ts.map +1 -1
  206. package/dist/database/schema.js +35 -1
  207. package/dist/database/schema.js.map +1 -1
  208. package/dist/entity-views/entity-state-all.d.ts +217 -0
  209. package/dist/entity-views/entity-state-all.d.ts.map +1 -0
  210. package/dist/entity-views/entity-state-all.js +246 -0
  211. package/dist/entity-views/entity-state-all.js.map +1 -0
  212. package/dist/entity-views/entity-state-all.test.d.ts +2 -0
  213. package/dist/entity-views/entity-state-all.test.d.ts.map +1 -0
  214. package/dist/entity-views/entity-state-all.test.js +371 -0
  215. package/dist/entity-views/entity-state-all.test.js.map +1 -0
  216. package/dist/entity-views/entity-state-history.d.ts +178 -0
  217. package/dist/entity-views/entity-state-history.d.ts.map +1 -0
  218. package/dist/entity-views/entity-state-history.js +58 -0
  219. package/dist/entity-views/entity-state-history.js.map +1 -0
  220. package/dist/entity-views/entity-state-history.test.d.ts +2 -0
  221. package/dist/entity-views/entity-state-history.test.d.ts.map +1 -0
  222. package/dist/entity-views/entity-state-history.test.js +274 -0
  223. package/dist/entity-views/entity-state-history.test.js.map +1 -0
  224. package/dist/entity-views/entity-state.d.ts +217 -0
  225. package/dist/entity-views/entity-state.d.ts.map +1 -0
  226. package/dist/entity-views/entity-state.js +243 -0
  227. package/dist/entity-views/entity-state.js.map +1 -0
  228. package/dist/entity-views/entity-state.test.d.ts +2 -0
  229. package/dist/entity-views/entity-state.test.d.ts.map +1 -0
  230. package/dist/entity-views/entity-state.test.js +497 -0
  231. package/dist/entity-views/entity-state.test.js.map +1 -0
  232. package/dist/entity-views/entity-state_history.d.ts +67 -0
  233. package/dist/entity-views/entity-state_history.d.ts.map +1 -0
  234. package/dist/entity-views/entity-state_history.js +58 -0
  235. package/dist/entity-views/entity-state_history.js.map +1 -0
  236. package/dist/entity-views/entity-view-builder.d.ts +92 -0
  237. package/dist/entity-views/entity-view-builder.d.ts.map +1 -0
  238. package/dist/entity-views/entity-view-builder.js +63 -0
  239. package/dist/entity-views/entity-view-builder.js.map +1 -0
  240. package/dist/entity-views/entity-view-builder.test.d.ts +2 -0
  241. package/dist/entity-views/entity-view-builder.test.d.ts.map +1 -0
  242. package/dist/entity-views/entity-view-builder.test.js +247 -0
  243. package/dist/entity-views/entity-view-builder.test.js.map +1 -0
  244. package/dist/entity-views/generic-types.d.ts +128 -0
  245. package/dist/entity-views/generic-types.d.ts.map +1 -0
  246. package/dist/entity-views/generic-types.js +2 -0
  247. package/dist/entity-views/generic-types.js.map +1 -0
  248. package/dist/entity-views/generic-types.test.d.ts +2 -0
  249. package/dist/entity-views/generic-types.test.d.ts.map +1 -0
  250. package/dist/entity-views/generic-types.test.js +99 -0
  251. package/dist/entity-views/generic-types.test.js.map +1 -0
  252. package/dist/entity-views/index.d.ts +2 -0
  253. package/dist/entity-views/index.d.ts.map +1 -0
  254. package/dist/entity-views/index.js +2 -0
  255. package/dist/entity-views/index.js.map +1 -0
  256. package/dist/entity-views/types.d.ts +309 -0
  257. package/dist/entity-views/types.d.ts.map +1 -0
  258. package/dist/entity-views/types.js +2 -0
  259. package/dist/entity-views/types.js.map +1 -0
  260. package/dist/entity-views/types.test.d.ts +2 -0
  261. package/dist/entity-views/types.test.d.ts.map +1 -0
  262. package/dist/entity-views/types.test.js +62 -0
  263. package/dist/entity-views/types.test.js.map +1 -0
  264. package/dist/file/file-handlers.d.ts +15 -0
  265. package/dist/file/file-handlers.d.ts.map +1 -0
  266. package/dist/file/file-handlers.js +318 -0
  267. package/dist/file/file-handlers.js.map +1 -0
  268. package/dist/file/file-handlers.test.d.ts +2 -0
  269. package/dist/file/file-handlers.test.d.ts.map +1 -0
  270. package/dist/file/file-handlers.test.js +151 -0
  271. package/dist/file/file-handlers.test.js.map +1 -0
  272. package/dist/file/index.d.ts +1 -1
  273. package/dist/file/index.d.ts.map +1 -1
  274. package/dist/file/index.js +1 -1
  275. package/dist/file/index.js.map +1 -1
  276. package/dist/file/materialize-file-data-at-changeset.d.ts +9 -0
  277. package/dist/file/materialize-file-data-at-changeset.d.ts.map +1 -0
  278. package/dist/file/materialize-file-data-at-changeset.js +93 -0
  279. package/dist/file/materialize-file-data-at-changeset.js.map +1 -0
  280. package/dist/file/materialize-file-data.d.ts +8 -0
  281. package/dist/file/materialize-file-data.d.ts.map +1 -0
  282. package/dist/file/materialize-file-data.js +91 -0
  283. package/dist/file/materialize-file-data.js.map +1 -0
  284. package/dist/file/materialize-file-data.test.d.ts +2 -0
  285. package/dist/file/materialize-file-data.test.d.ts.map +1 -0
  286. package/dist/file/materialize-file-data.test.js +90 -0
  287. package/dist/file/materialize-file-data.test.js.map +1 -0
  288. package/dist/file/schema.d.ts +46 -0
  289. package/dist/file/schema.d.ts.map +1 -0
  290. package/dist/file/schema.js +265 -0
  291. package/dist/file/schema.js.map +1 -0
  292. package/dist/file/schema.test.d.ts +2 -0
  293. package/dist/file/schema.test.d.ts.map +1 -0
  294. package/dist/file/schema.test.js +805 -0
  295. package/dist/file/schema.test.js.map +1 -0
  296. package/dist/file/store-detected-change-schema.d.ts +8 -0
  297. package/dist/file/store-detected-change-schema.d.ts.map +1 -0
  298. package/dist/file/store-detected-change-schema.js +41 -0
  299. package/dist/file/store-detected-change-schema.js.map +1 -0
  300. package/dist/file/store-detected-change-schema.test.d.ts +2 -0
  301. package/dist/file/store-detected-change-schema.test.d.ts.map +1 -0
  302. package/dist/file/store-detected-change-schema.test.js +211 -0
  303. package/dist/file/store-detected-change-schema.test.js.map +1 -0
  304. package/dist/file/unknown-file-fallback-plugin.d.ts +22 -0
  305. package/dist/file/unknown-file-fallback-plugin.d.ts.map +1 -0
  306. package/dist/file/unknown-file-fallback-plugin.js +73 -0
  307. package/dist/file/unknown-file-fallback-plugin.js.map +1 -0
  308. package/dist/file/unknown-file-fallback-plugin.test.d.ts +2 -0
  309. package/dist/file/unknown-file-fallback-plugin.test.d.ts.map +1 -0
  310. package/dist/file/unknown-file-fallback-plugin.test.js +305 -0
  311. package/dist/file/unknown-file-fallback-plugin.test.js.map +1 -0
  312. package/dist/hooks/create-hooks.d.ts +72 -0
  313. package/dist/hooks/create-hooks.d.ts.map +1 -0
  314. package/dist/hooks/create-hooks.js +29 -0
  315. package/dist/hooks/create-hooks.js.map +1 -0
  316. package/dist/hooks/create-hooks.test.d.ts +2 -0
  317. package/dist/hooks/create-hooks.test.d.ts.map +1 -0
  318. package/dist/hooks/create-hooks.test.js +98 -0
  319. package/dist/hooks/create-hooks.test.js.map +1 -0
  320. package/dist/hooks/index.d.ts +2 -0
  321. package/dist/hooks/index.d.ts.map +1 -0
  322. package/dist/hooks/index.js +2 -0
  323. package/dist/hooks/index.js.map +1 -0
  324. package/dist/index.d.ts +10 -6
  325. package/dist/index.d.ts.map +1 -1
  326. package/dist/index.js +10 -6
  327. package/dist/index.js.map +1 -1
  328. package/dist/key-value/index.d.ts +2 -0
  329. package/dist/key-value/index.d.ts.map +1 -0
  330. package/dist/key-value/index.js +2 -0
  331. package/dist/key-value/index.js.map +1 -0
  332. package/dist/key-value/schema.d.ts +21 -0
  333. package/dist/key-value/schema.d.ts.map +1 -0
  334. package/dist/key-value/schema.js +25 -0
  335. package/dist/key-value/schema.js.map +1 -0
  336. package/dist/key-value/schema.test.d.ts +2 -0
  337. package/dist/key-value/schema.test.d.ts.map +1 -0
  338. package/dist/key-value/schema.test.js +148 -0
  339. package/dist/key-value/schema.test.js.map +1 -0
  340. package/dist/label/create-label.d.ts +20 -0
  341. package/dist/label/create-label.d.ts.map +1 -0
  342. package/dist/label/create-label.js +45 -0
  343. package/dist/label/create-label.js.map +1 -0
  344. package/dist/label/create-label.test.d.ts +2 -0
  345. package/dist/label/create-label.test.d.ts.map +1 -0
  346. package/dist/label/create-label.test.js +191 -0
  347. package/dist/label/create-label.test.js.map +1 -0
  348. package/dist/label/index.d.ts +3 -0
  349. package/dist/label/index.d.ts.map +1 -0
  350. package/dist/label/index.js +3 -0
  351. package/dist/label/index.js.map +1 -0
  352. package/dist/label/schema.d.ts +22 -0
  353. package/dist/label/schema.d.ts.map +1 -0
  354. package/dist/label/schema.js +28 -0
  355. package/dist/label/schema.js.map +1 -0
  356. package/dist/label/schema.test.d.ts +2 -0
  357. package/dist/label/schema.test.d.ts.map +1 -0
  358. package/dist/label/schema.test.js +76 -0
  359. package/dist/label/schema.test.js.map +1 -0
  360. package/dist/lix/close-lix.d.ts +10 -1
  361. package/dist/lix/close-lix.d.ts.map +1 -1
  362. package/dist/lix/close-lix.js +10 -1
  363. package/dist/lix/close-lix.js.map +1 -1
  364. package/dist/lix/index.d.ts +3 -2
  365. package/dist/lix/index.d.ts.map +1 -1
  366. package/dist/lix/index.js +3 -5
  367. package/dist/lix/index.js.map +1 -1
  368. package/dist/lix/new-lix.d.ts +77 -4
  369. package/dist/lix/new-lix.d.ts.map +1 -1
  370. package/dist/lix/new-lix.js +303 -8
  371. package/dist/lix/new-lix.js.map +1 -1
  372. package/dist/lix/new-lix.test.js +171 -16
  373. package/dist/lix/new-lix.test.js.map +1 -1
  374. package/dist/lix/open-lix-in-memory.d.ts +9 -1
  375. package/dist/lix/open-lix-in-memory.d.ts.map +1 -1
  376. package/dist/lix/open-lix-in-memory.js +15 -7
  377. package/dist/lix/open-lix-in-memory.js.map +1 -1
  378. package/dist/lix/open-lix-in-memory.test.js +0 -6
  379. package/dist/lix/open-lix-in-memory.test.js.map +1 -1
  380. package/dist/lix/open-lix.d.ts +68 -6
  381. package/dist/lix/open-lix.d.ts.map +1 -1
  382. package/dist/lix/open-lix.js +80 -14
  383. package/dist/lix/open-lix.js.map +1 -1
  384. package/dist/lix/open-lix.test.js +54 -22
  385. package/dist/lix/open-lix.test.js.map +1 -1
  386. package/dist/lix/storage/in-memory.d.ts +34 -0
  387. package/dist/lix/storage/in-memory.d.ts.map +1 -0
  388. package/dist/lix/storage/in-memory.js +57 -0
  389. package/dist/lix/storage/in-memory.js.map +1 -0
  390. package/dist/lix/storage/in-memory.test.d.ts +2 -0
  391. package/dist/lix/storage/in-memory.test.d.ts.map +1 -0
  392. package/dist/lix/storage/in-memory.test.js +146 -0
  393. package/dist/lix/storage/in-memory.test.js.map +1 -0
  394. package/dist/lix/storage/lix-storage-adapter.d.ts +16 -0
  395. package/dist/lix/storage/lix-storage-adapter.d.ts.map +1 -0
  396. package/dist/lix/storage/lix-storage-adapter.js +2 -0
  397. package/dist/lix/storage/lix-storage-adapter.js.map +1 -0
  398. package/dist/lix/storage/opfs.d.ts +66 -0
  399. package/dist/lix/storage/opfs.d.ts.map +1 -0
  400. package/dist/lix/storage/opfs.js +152 -0
  401. package/dist/lix/storage/opfs.js.map +1 -0
  402. package/dist/lix/storage/opfs.test.d.ts +2 -0
  403. package/dist/lix/storage/opfs.test.d.ts.map +1 -0
  404. package/dist/lix/storage/opfs.test.js +171 -0
  405. package/dist/lix/storage/opfs.test.js.map +1 -0
  406. package/dist/lix/to-blob.d.ts +9 -2
  407. package/dist/lix/to-blob.d.ts.map +1 -1
  408. package/dist/lix/to-blob.js +9 -2
  409. package/dist/lix/to-blob.js.map +1 -1
  410. package/dist/lix/to-blob.test.d.ts +2 -0
  411. package/dist/lix/to-blob.test.d.ts.map +1 -0
  412. package/dist/lix/to-blob.test.js +18 -0
  413. package/dist/lix/to-blob.test.js.map +1 -0
  414. package/dist/log/create-lix-own-log.d.ts +66 -0
  415. package/dist/log/create-lix-own-log.d.ts.map +1 -0
  416. package/dist/log/create-lix-own-log.js +103 -0
  417. package/dist/log/create-lix-own-log.js.map +1 -0
  418. package/dist/log/create-lix-own-log.test.d.ts +2 -0
  419. package/dist/log/create-lix-own-log.test.d.ts.map +1 -0
  420. package/dist/log/create-lix-own-log.test.js +81 -0
  421. package/dist/log/create-lix-own-log.test.js.map +1 -0
  422. package/dist/log/create-log.d.ts +32 -0
  423. package/dist/log/create-log.d.ts.map +1 -0
  424. package/dist/log/create-log.js +43 -0
  425. package/dist/log/create-log.js.map +1 -0
  426. package/dist/log/index.d.ts +3 -0
  427. package/dist/log/index.d.ts.map +1 -0
  428. package/dist/log/index.js +3 -0
  429. package/dist/log/index.js.map +1 -0
  430. package/dist/log/schema.d.ts +32 -0
  431. package/dist/log/schema.d.ts.map +1 -0
  432. package/dist/log/schema.js +43 -0
  433. package/dist/log/schema.js.map +1 -0
  434. package/dist/log/schema.test.d.ts +2 -0
  435. package/dist/log/schema.test.d.ts.map +1 -0
  436. package/dist/log/schema.test.js +119 -0
  437. package/dist/log/schema.test.js.map +1 -0
  438. package/dist/observe/create-observe.d.ts +17 -0
  439. package/dist/observe/create-observe.d.ts.map +1 -0
  440. package/dist/observe/create-observe.js +118 -0
  441. package/dist/observe/create-observe.js.map +1 -0
  442. package/dist/observe/create-observe.test.d.ts +2 -0
  443. package/dist/observe/create-observe.test.d.ts.map +1 -0
  444. package/dist/observe/create-observe.test.js +384 -0
  445. package/dist/observe/create-observe.test.js.map +1 -0
  446. package/dist/observe/index.d.ts +2 -0
  447. package/dist/observe/index.d.ts.map +1 -0
  448. package/dist/observe/index.js +2 -0
  449. package/dist/observe/index.js.map +1 -0
  450. package/dist/observe/lix-observable.d.ts +31 -0
  451. package/dist/observe/lix-observable.d.ts.map +1 -0
  452. package/dist/observe/lix-observable.js +65 -0
  453. package/dist/observe/lix-observable.js.map +1 -0
  454. package/dist/observe/lix-observable.test.d.ts +2 -0
  455. package/dist/observe/lix-observable.test.d.ts.map +1 -0
  456. package/dist/observe/lix-observable.test.js +187 -0
  457. package/dist/observe/lix-observable.test.js.map +1 -0
  458. package/dist/plugin/index.d.ts +2 -1
  459. package/dist/plugin/index.d.ts.map +1 -1
  460. package/dist/plugin/index.js +1 -1
  461. package/dist/plugin/index.js.map +1 -1
  462. package/dist/plugin/lix-plugin.d.ts +24 -45
  463. package/dist/plugin/lix-plugin.d.ts.map +1 -1
  464. package/dist/plugin/lix-plugin.js +1 -1
  465. package/dist/plugin/lix-plugin.js.map +1 -1
  466. package/dist/plugin/lix-plugin.test-d.js +17 -11
  467. package/dist/plugin/lix-plugin.test-d.js.map +1 -1
  468. package/dist/plugin/mock-json-plugin.d.ts +17 -0
  469. package/dist/plugin/mock-json-plugin.d.ts.map +1 -0
  470. package/dist/plugin/mock-json-plugin.flatten.d.ts +3 -0
  471. package/dist/plugin/mock-json-plugin.flatten.d.ts.map +1 -0
  472. package/dist/plugin/mock-json-plugin.flatten.js +124 -0
  473. package/dist/plugin/mock-json-plugin.flatten.js.map +1 -0
  474. package/dist/plugin/mock-json-plugin.js +101 -0
  475. package/dist/plugin/mock-json-plugin.js.map +1 -0
  476. package/dist/plugin/mock-json-plugin.test.d.ts +2 -0
  477. package/dist/plugin/mock-json-plugin.test.d.ts.map +1 -0
  478. package/dist/plugin/mock-json-plugin.test.js +164 -0
  479. package/dist/plugin/mock-json-plugin.test.js.map +1 -0
  480. package/dist/query-filter/change-conflict-in-version.d.ts.map +1 -1
  481. package/dist/query-filter/change-has-label.d.ts +9 -3
  482. package/dist/query-filter/change-has-label.d.ts.map +1 -1
  483. package/dist/query-filter/change-has-label.js +7 -4
  484. package/dist/query-filter/change-has-label.js.map +1 -1
  485. package/dist/query-filter/change-has-label.test.js +36 -11
  486. package/dist/query-filter/change-has-label.test.js.map +1 -1
  487. package/dist/query-filter/change-is-leaf.d.ts.map +1 -1
  488. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts +30 -0
  489. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts.map +1 -0
  490. package/dist/query-filter/change-set-element-in-ancestry-of.js +46 -0
  491. package/dist/query-filter/change-set-element-in-ancestry-of.js.map +1 -0
  492. package/dist/query-filter/change-set-element-in-ancestry-of.test.d.ts +2 -0
  493. package/dist/query-filter/change-set-element-in-ancestry-of.test.d.ts.map +1 -0
  494. package/dist/query-filter/change-set-element-in-ancestry-of.test.js +323 -0
  495. package/dist/query-filter/change-set-element-in-ancestry-of.test.js.map +1 -0
  496. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts +20 -0
  497. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts.map +1 -0
  498. package/dist/query-filter/change-set-element-in-symmetric-difference.js +36 -0
  499. package/dist/query-filter/change-set-element-in-symmetric-difference.js.map +1 -0
  500. package/dist/query-filter/change-set-element-in-symmetric-difference.test.d.ts +2 -0
  501. package/dist/query-filter/change-set-element-in-symmetric-difference.test.d.ts.map +1 -0
  502. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js +369 -0
  503. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js.map +1 -0
  504. package/dist/query-filter/change-set-element-is-leaf-of.d.ts +29 -0
  505. package/dist/query-filter/change-set-element-is-leaf-of.d.ts.map +1 -0
  506. package/dist/query-filter/change-set-element-is-leaf-of.js +91 -0
  507. package/dist/query-filter/change-set-element-is-leaf-of.js.map +1 -0
  508. package/dist/query-filter/change-set-element-is-leaf-of.test.d.ts +2 -0
  509. package/dist/query-filter/change-set-element-is-leaf-of.test.d.ts.map +1 -0
  510. package/dist/query-filter/change-set-element-is-leaf-of.test.js +515 -0
  511. package/dist/query-filter/change-set-element-is-leaf-of.test.js.map +1 -0
  512. package/dist/query-filter/change-set-has-label.d.ts +19 -3
  513. package/dist/query-filter/change-set-has-label.d.ts.map +1 -1
  514. package/dist/query-filter/change-set-has-label.js +17 -4
  515. package/dist/query-filter/change-set-has-label.js.map +1 -1
  516. package/dist/query-filter/change-set-has-label.test.js +13 -20
  517. package/dist/query-filter/change-set-has-label.test.js.map +1 -1
  518. package/dist/query-filter/change-set-is-ancestor-of.d.ts +51 -0
  519. package/dist/query-filter/change-set-is-ancestor-of.d.ts.map +1 -0
  520. package/dist/query-filter/change-set-is-ancestor-of.js +63 -0
  521. package/dist/query-filter/change-set-is-ancestor-of.js.map +1 -0
  522. package/dist/query-filter/change-set-is-ancestor-of.test.d.ts +2 -0
  523. package/dist/query-filter/change-set-is-ancestor-of.test.d.ts.map +1 -0
  524. package/dist/query-filter/change-set-is-ancestor-of.test.js +153 -0
  525. package/dist/query-filter/change-set-is-ancestor-of.test.js.map +1 -0
  526. package/dist/query-filter/change-set-is-descendant-of.d.ts +44 -0
  527. package/dist/query-filter/change-set-is-descendant-of.d.ts.map +1 -0
  528. package/dist/query-filter/change-set-is-descendant-of.js +56 -0
  529. package/dist/query-filter/change-set-is-descendant-of.js.map +1 -0
  530. package/dist/query-filter/change-set-is-descendant-of.test.d.ts +2 -0
  531. package/dist/query-filter/change-set-is-descendant-of.test.d.ts.map +1 -0
  532. package/dist/query-filter/change-set-is-descendant-of.test.js +137 -0
  533. package/dist/query-filter/change-set-is-descendant-of.test.js.map +1 -0
  534. package/dist/query-filter/index.d.ts +5 -6
  535. package/dist/query-filter/index.d.ts.map +1 -1
  536. package/dist/query-filter/index.js +5 -6
  537. package/dist/query-filter/index.js.map +1 -1
  538. package/dist/query-filter/version-change-in-difference.d.ts.map +1 -1
  539. package/dist/query-filter/version-change-in-symmetric-difference.d.ts.map +1 -1
  540. package/dist/repository/comparison-example.js +173 -0
  541. package/dist/repository/comparison-example.js.map +1 -0
  542. package/dist/repository/entity-repository.d.ts +53 -0
  543. package/dist/repository/entity-repository.d.ts.map +1 -0
  544. package/dist/repository/entity-repository.js +187 -0
  545. package/dist/repository/entity-repository.js.map +1 -0
  546. package/dist/repository/entity-repository.test.d.ts +2 -0
  547. package/dist/repository/entity-repository.test.d.ts.map +1 -0
  548. package/dist/repository/entity-repository.test.js +94 -0
  549. package/dist/repository/entity-repository.test.js.map +1 -0
  550. package/dist/repository/example.d.ts +6 -0
  551. package/dist/repository/example.d.ts.map +1 -0
  552. package/dist/repository/example.js +87 -0
  553. package/dist/repository/example.js.map +1 -0
  554. package/dist/repository/file-repository.d.ts +39 -0
  555. package/dist/repository/file-repository.d.ts.map +1 -0
  556. package/dist/repository/file-repository.js +93 -0
  557. package/dist/repository/file-repository.js.map +1 -0
  558. package/dist/repository/file-repository.test.d.ts +2 -0
  559. package/dist/repository/file-repository.test.d.ts.map +1 -0
  560. package/dist/repository/file-repository.test.js +165 -0
  561. package/dist/repository/file-repository.test.js.map +1 -0
  562. package/dist/repository/index.d.ts +6 -0
  563. package/dist/repository/index.d.ts.map +1 -0
  564. package/dist/repository/index.js +6 -0
  565. package/dist/repository/index.js.map +1 -0
  566. package/dist/repository/integration.test.d.ts +2 -0
  567. package/dist/repository/integration.test.d.ts.map +1 -0
  568. package/dist/repository/integration.test.js +136 -0
  569. package/dist/repository/integration.test.js.map +1 -0
  570. package/dist/repository/key-value-repository.d.ts +30 -0
  571. package/dist/repository/key-value-repository.d.ts.map +1 -0
  572. package/dist/repository/key-value-repository.js +60 -0
  573. package/dist/repository/key-value-repository.js.map +1 -0
  574. package/dist/repository/key-value-repository.test.d.ts +2 -0
  575. package/dist/repository/key-value-repository.test.d.ts.map +1 -0
  576. package/dist/repository/key-value-repository.test.js +122 -0
  577. package/dist/repository/key-value-repository.test.js.map +1 -0
  578. package/dist/repository/markdown-plugin-example.js +118 -0
  579. package/dist/repository/markdown-plugin-example.js.map +1 -0
  580. package/dist/repository/query-builder.d.ts +69 -0
  581. package/dist/repository/query-builder.d.ts.map +1 -0
  582. package/dist/repository/query-builder.js +155 -0
  583. package/dist/repository/query-builder.js.map +1 -0
  584. package/dist/repository/query-builder.test.d.ts +2 -0
  585. package/dist/repository/query-builder.test.d.ts.map +1 -0
  586. package/dist/repository/query-builder.test.js +244 -0
  587. package/dist/repository/query-builder.test.js.map +1 -0
  588. package/dist/repository/repository-manager.d.ts +27 -0
  589. package/dist/repository/repository-manager.d.ts.map +1 -0
  590. package/dist/repository/repository-manager.js +19 -0
  591. package/dist/repository/repository-manager.js.map +1 -0
  592. package/dist/repository/repository-manager.test.d.ts +2 -0
  593. package/dist/repository/repository-manager.test.d.ts.map +1 -0
  594. package/dist/repository/repository-manager.test.js +65 -0
  595. package/dist/repository/repository-manager.test.js.map +1 -0
  596. package/dist/repository/test-helpers.js +402 -0
  597. package/dist/repository/test-helpers.js.map +1 -0
  598. package/dist/schema-definition/definition.d.ts +406 -0
  599. package/dist/schema-definition/definition.d.ts.map +1 -0
  600. package/dist/schema-definition/definition.js +82 -0
  601. package/dist/schema-definition/definition.js.map +1 -0
  602. package/dist/schema-definition/definition.test-d.d.ts +2 -0
  603. package/dist/schema-definition/definition.test-d.d.ts.map +1 -0
  604. package/dist/schema-definition/definition.test-d.js +177 -0
  605. package/dist/schema-definition/definition.test-d.js.map +1 -0
  606. package/dist/schema-definition/definition.test.d.ts +2 -0
  607. package/dist/schema-definition/definition.test.d.ts.map +1 -0
  608. package/dist/schema-definition/definition.test.js +324 -0
  609. package/dist/schema-definition/definition.test.js.map +1 -0
  610. package/dist/schema-definition/index.d.ts +4 -0
  611. package/dist/schema-definition/index.d.ts.map +1 -0
  612. package/dist/schema-definition/index.js +4 -0
  613. package/dist/schema-definition/index.js.map +1 -0
  614. package/dist/schema-definition/json-type.d.ts +24 -0
  615. package/dist/schema-definition/json-type.d.ts.map +1 -0
  616. package/dist/schema-definition/json-type.js +42 -0
  617. package/dist/schema-definition/json-type.js.map +1 -0
  618. package/dist/schema-definition/json-type.test.d.ts +2 -0
  619. package/dist/schema-definition/json-type.test.d.ts.map +1 -0
  620. package/dist/schema-definition/json-type.test.js +21 -0
  621. package/dist/schema-definition/json-type.test.js.map +1 -0
  622. package/dist/schema-definition/lix-generated.test.d.ts +2 -0
  623. package/dist/schema-definition/lix-generated.test.d.ts.map +1 -0
  624. package/dist/schema-definition/lix-generated.test.js +127 -0
  625. package/dist/schema-definition/lix-generated.test.js.map +1 -0
  626. package/dist/schema-definition/validate-lix-schema.d.ts +65 -0
  627. package/dist/schema-definition/validate-lix-schema.d.ts.map +1 -0
  628. package/dist/schema-definition/validate-lix-schema.js +93 -0
  629. package/dist/schema-definition/validate-lix-schema.js.map +1 -0
  630. package/dist/schema-definition/validate-lix-schema.test.d.ts +2 -0
  631. package/dist/schema-definition/validate-lix-schema.test.d.ts.map +1 -0
  632. package/dist/schema-definition/validate-lix-schema.test.js +73 -0
  633. package/dist/schema-definition/validate-lix-schema.test.js.map +1 -0
  634. package/dist/server-protocol-handler/create-server-protocol-handler.d.ts +0 -1
  635. package/dist/server-protocol-handler/create-server-protocol-handler.d.ts.map +1 -1
  636. package/dist/server-protocol-handler/create-server-protocol-handler.js +0 -2
  637. package/dist/server-protocol-handler/create-server-protocol-handler.js.map +1 -1
  638. package/dist/server-protocol-handler/environment/create-in-memory-environment.d.ts.map +1 -1
  639. package/dist/server-protocol-handler/environment/create-in-memory-environment.js +5 -20
  640. package/dist/server-protocol-handler/environment/create-in-memory-environment.js.map +1 -1
  641. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js +13 -14
  642. package/dist/server-protocol-handler/environment/create-in-memory-environment.test.js.map +1 -1
  643. package/dist/server-protocol-handler/environment/environment.d.ts +0 -4
  644. package/dist/server-protocol-handler/environment/environment.d.ts.map +1 -1
  645. package/dist/server-protocol-handler/routes/get-v1.d.ts.map +1 -1
  646. package/dist/server-protocol-handler/routes/get-v1.js +1 -1
  647. package/dist/server-protocol-handler/routes/get-v1.js.map +1 -1
  648. package/dist/server-protocol-handler/routes/get-v1.test.js +11 -12
  649. package/dist/server-protocol-handler/routes/get-v1.test.js.map +1 -1
  650. package/dist/server-protocol-handler/routes/new-v1.d.ts.map +1 -1
  651. package/dist/server-protocol-handler/routes/new-v1.js +3 -5
  652. package/dist/server-protocol-handler/routes/new-v1.js.map +1 -1
  653. package/dist/server-protocol-handler/routes/new-v1.test.js +7 -8
  654. package/dist/server-protocol-handler/routes/new-v1.test.js.map +1 -1
  655. package/dist/server-protocol-handler/routes/pull-v1.test.js +48 -32
  656. package/dist/server-protocol-handler/routes/pull-v1.test.js.map +1 -1
  657. package/dist/server-protocol-handler/routes/push-v1.d.ts.map +1 -1
  658. package/dist/server-protocol-handler/routes/push-v1.js +2 -0
  659. package/dist/server-protocol-handler/routes/push-v1.js.map +1 -1
  660. package/dist/server-protocol-handler/routes/push-v1.test.js +22 -26
  661. package/dist/server-protocol-handler/routes/push-v1.test.js.map +1 -1
  662. package/dist/services/env-variables/index.d.ts +1 -1
  663. package/dist/services/env-variables/index.js +2 -2
  664. package/dist/services/env-variables/index.js.map +1 -1
  665. package/dist/services/telemetry/capture.d.ts.map +1 -1
  666. package/dist/snapshot/create-snapshot.d.ts +3 -14
  667. package/dist/snapshot/create-snapshot.d.ts.map +1 -1
  668. package/dist/snapshot/create-snapshot.js +14 -19
  669. package/dist/snapshot/create-snapshot.js.map +1 -1
  670. package/dist/snapshot/create-snapshot.test.js +49 -20
  671. package/dist/snapshot/create-snapshot.test.js.map +1 -1
  672. package/dist/snapshot/index.d.ts +1 -0
  673. package/dist/snapshot/index.d.ts.map +1 -1
  674. package/dist/snapshot/index.js +1 -0
  675. package/dist/snapshot/index.js.map +1 -1
  676. package/dist/snapshot/json-sha-256.d.ts +2 -1
  677. package/dist/snapshot/json-sha-256.d.ts.map +1 -1
  678. package/dist/snapshot/json-sha-256.js +1 -3
  679. package/dist/snapshot/json-sha-256.js.map +1 -1
  680. package/dist/snapshot/json-sha-256.test.js +40 -2
  681. package/dist/snapshot/json-sha-256.test.js.map +1 -1
  682. package/dist/snapshot/mock-json-snapshot.d.ts +1 -1
  683. package/dist/snapshot/mock-json-snapshot.d.ts.map +1 -1
  684. package/dist/snapshot/schema.d.ts +8 -0
  685. package/dist/snapshot/schema.d.ts.map +1 -0
  686. package/dist/snapshot/schema.js +12 -0
  687. package/dist/snapshot/schema.js.map +1 -0
  688. package/dist/snapshot/schema.test.d.ts +2 -0
  689. package/dist/snapshot/schema.test.d.ts.map +1 -0
  690. package/dist/snapshot/schema.test.js +116 -0
  691. package/dist/snapshot/schema.test.js.map +1 -0
  692. package/dist/state/create-changeset-for-transaction.d.ts +15 -0
  693. package/dist/state/create-changeset-for-transaction.d.ts.map +1 -0
  694. package/dist/state/create-changeset-for-transaction.js +237 -0
  695. package/dist/state/create-changeset-for-transaction.js.map +1 -0
  696. package/dist/state/entity-view-builder.d.ts +145 -0
  697. package/dist/state/entity-view-builder.d.ts.map +1 -0
  698. package/dist/state/entity-view-builder.js +280 -0
  699. package/dist/state/entity-view-builder.js.map +1 -0
  700. package/dist/state/entity-view-builder.test.d.ts +2 -0
  701. package/dist/state/entity-view-builder.test.d.ts.map +1 -0
  702. package/dist/state/entity-view-builder.test.js +523 -0
  703. package/dist/state/entity-view-builder.test.js.map +1 -0
  704. package/dist/state/get-version-record-by-id-or-throw.d.ts +6 -0
  705. package/dist/state/get-version-record-by-id-or-throw.d.ts.map +1 -0
  706. package/dist/state/get-version-record-by-id-or-throw.js +36 -0
  707. package/dist/state/get-version-record-by-id-or-throw.js.map +1 -0
  708. package/dist/state/handle-state-mutation.d.ts +18 -0
  709. package/dist/state/handle-state-mutation.d.ts.map +1 -0
  710. package/dist/state/handle-state-mutation.js +352 -0
  711. package/dist/state/handle-state-mutation.js.map +1 -0
  712. package/dist/state/handle-state-mutation.test.d.ts +2 -0
  713. package/dist/state/handle-state-mutation.test.d.ts.map +1 -0
  714. package/dist/state/handle-state-mutation.test.js +632 -0
  715. package/dist/state/handle-state-mutation.test.js.map +1 -0
  716. package/dist/state/schema.bench.d.ts +2 -0
  717. package/dist/state/schema.bench.d.ts.map +1 -0
  718. package/dist/state/schema.bench.js +36 -0
  719. package/dist/state/schema.bench.js.map +1 -0
  720. package/dist/state/schema.d.ts +56 -0
  721. package/dist/state/schema.d.ts.map +1 -0
  722. package/dist/state/schema.js +1052 -0
  723. package/dist/state/schema.js.map +1 -0
  724. package/dist/state/schema.test.d.ts +2 -0
  725. package/dist/state/schema.test.d.ts.map +1 -0
  726. package/dist/state/schema.test.js +2030 -0
  727. package/dist/state/schema.test.js.map +1 -0
  728. package/dist/state/validate-state-mutation.d.ts +13 -0
  729. package/dist/state/validate-state-mutation.d.ts.map +1 -0
  730. package/dist/state/validate-state-mutation.js +485 -0
  731. package/dist/state/validate-state-mutation.js.map +1 -0
  732. package/dist/state/validate-state-mutation.test.d.ts +2 -0
  733. package/dist/state/validate-state-mutation.test.d.ts.map +1 -0
  734. package/dist/state/validate-state-mutation.test.js +2024 -0
  735. package/dist/state/validate-state-mutation.test.js.map +1 -0
  736. package/dist/state-history/schema.d.ts +58 -0
  737. package/dist/state-history/schema.d.ts.map +1 -0
  738. package/dist/state-history/schema.js +104 -0
  739. package/dist/state-history/schema.js.map +1 -0
  740. package/dist/state-history/schema.test.d.ts +2 -0
  741. package/dist/state-history/schema.test.d.ts.map +1 -0
  742. package/dist/state-history/schema.test.js +701 -0
  743. package/dist/state-history/schema.test.js.map +1 -0
  744. package/dist/stored-schema/index.d.ts +2 -0
  745. package/dist/stored-schema/index.d.ts.map +1 -0
  746. package/dist/stored-schema/index.js +2 -0
  747. package/dist/stored-schema/index.js.map +1 -0
  748. package/dist/stored-schema/schema.d.ts +25 -0
  749. package/dist/stored-schema/schema.d.ts.map +1 -0
  750. package/dist/stored-schema/schema.js +48 -0
  751. package/dist/stored-schema/schema.js.map +1 -0
  752. package/dist/stored-schema/schema.test.d.ts +2 -0
  753. package/dist/stored-schema/schema.test.d.ts.map +1 -0
  754. package/dist/stored-schema/schema.test.js +192 -0
  755. package/dist/stored-schema/schema.test.js.map +1 -0
  756. package/dist/sync/get-diffing-rows.d.ts +12 -0
  757. package/dist/sync/get-diffing-rows.d.ts.map +1 -1
  758. package/dist/sync/get-diffing-rows.js +14 -0
  759. package/dist/sync/get-diffing-rows.js.map +1 -1
  760. package/dist/sync/merge-state.d.ts.map +1 -1
  761. package/dist/sync/merge-state.js +2 -1
  762. package/dist/sync/merge-state.js.map +1 -1
  763. package/dist/sync/pull-from-server.d.ts.map +1 -1
  764. package/dist/sync/pull-from-server.js +2 -1
  765. package/dist/sync/pull-from-server.js.map +1 -1
  766. package/dist/sync/pull-from-server.test.js +32 -28
  767. package/dist/sync/pull-from-server.test.js.map +1 -1
  768. package/dist/sync/push-to-server.d.ts +10 -1
  769. package/dist/sync/push-to-server.d.ts.map +1 -1
  770. package/dist/sync/push-to-server.js +10 -1
  771. package/dist/sync/push-to-server.js.map +1 -1
  772. package/dist/sync/push-to-server.test.js +62 -63
  773. package/dist/sync/push-to-server.test.js.map +1 -1
  774. package/dist/sync/sync-process.d.ts +1 -1
  775. package/dist/sync/sync-process.d.ts.map +1 -1
  776. package/dist/sync/sync-process.js +1 -2
  777. package/dist/sync/sync-process.js.map +1 -1
  778. package/dist/sync/sync-process.test.js +20 -17
  779. package/dist/sync/sync-process.test.js.map +1 -1
  780. package/dist/thread/create-thread-comment.d.ts +18 -0
  781. package/dist/thread/create-thread-comment.d.ts.map +1 -0
  782. package/dist/thread/create-thread-comment.js +47 -0
  783. package/dist/thread/create-thread-comment.js.map +1 -0
  784. package/dist/thread/create-thread-comment.test.d.ts +2 -0
  785. package/dist/thread/create-thread-comment.test.d.ts.map +1 -0
  786. package/dist/thread/create-thread-comment.test.js +51 -0
  787. package/dist/thread/create-thread-comment.test.js.map +1 -0
  788. package/dist/thread/create-thread.d.ts +28 -0
  789. package/dist/thread/create-thread.d.ts.map +1 -0
  790. package/dist/thread/create-thread.js +58 -0
  791. package/dist/thread/create-thread.js.map +1 -0
  792. package/dist/thread/create-thread.test.d.ts +2 -0
  793. package/dist/thread/create-thread.test.d.ts.map +1 -0
  794. package/dist/thread/create-thread.test.js +26 -0
  795. package/dist/thread/create-thread.test.js.map +1 -0
  796. package/dist/thread/index.d.ts +4 -0
  797. package/dist/thread/index.d.ts.map +1 -0
  798. package/dist/thread/index.js +4 -0
  799. package/dist/thread/index.js.map +1 -0
  800. package/dist/thread/schema.d.ts +59 -0
  801. package/dist/thread/schema.d.ts.map +1 -0
  802. package/dist/thread/schema.js +66 -0
  803. package/dist/thread/schema.js.map +1 -0
  804. package/dist/thread/schema.test.d.ts +2 -0
  805. package/dist/thread/schema.test.d.ts.map +1 -0
  806. package/dist/thread/schema.test.js +60 -0
  807. package/dist/thread/schema.test.js.map +1 -0
  808. package/dist/version/create-version.d.ts +9 -17
  809. package/dist/version/create-version.d.ts.map +1 -1
  810. package/dist/version/create-version.js +30 -57
  811. package/dist/version/create-version.js.map +1 -1
  812. package/dist/version/create-version.test.js +70 -113
  813. package/dist/version/create-version.test.js.map +1 -1
  814. package/dist/version/index.d.ts +1 -5
  815. package/dist/version/index.d.ts.map +1 -1
  816. package/dist/version/index.js +1 -5
  817. package/dist/version/index.js.map +1 -1
  818. package/dist/version/schema.d.ts +73 -0
  819. package/dist/version/schema.d.ts.map +1 -0
  820. package/dist/version/schema.js +135 -0
  821. package/dist/version/schema.js.map +1 -0
  822. package/dist/version/schema.test.d.ts +2 -0
  823. package/dist/version/schema.test.d.ts.map +1 -0
  824. package/dist/version/schema.test.js +661 -0
  825. package/dist/version/schema.test.js.map +1 -0
  826. package/dist/version/switch-version.d.ts +4 -4
  827. package/dist/version/switch-version.d.ts.map +1 -1
  828. package/dist/version/switch-version.js +6 -62
  829. package/dist/version/switch-version.js.map +1 -1
  830. package/dist/version/switch-version.test.js +14 -214
  831. package/dist/version/switch-version.test.js.map +1 -1
  832. package/dist/zettel-ast/index.d.ts +11 -0
  833. package/dist/zettel-ast/index.d.ts.map +1 -0
  834. package/dist/zettel-ast/index.js +11 -0
  835. package/dist/zettel-ast/index.js.map +1 -0
  836. package/package.json +10 -9
  837. package/src/account/create-account.test.ts +49 -4
  838. package/src/account/create-account.ts +36 -6
  839. package/src/account/index.ts +5 -1
  840. package/src/account/schema.test.ts +370 -0
  841. package/src/account/schema.ts +76 -0
  842. package/src/account/switch-account.test.ts +29 -6
  843. package/src/account/switch-account.ts +12 -3
  844. package/src/change/index.ts +1 -2
  845. package/src/change/schema.test.ts +284 -0
  846. package/src/change/schema.ts +93 -0
  847. package/src/change-author/index.ts +1 -0
  848. package/src/change-author/schema.test.ts +300 -0
  849. package/src/change-author/schema.ts +48 -0
  850. package/src/change-conflict/create-change-conflict.test.ts +14 -11
  851. package/src/change-conflict/create-change-conflict.ts +29 -6
  852. package/src/change-conflict/detect-change-conflicts.test.ts +18 -15
  853. package/src/change-conflict/detect-change-conflicts.ts +3 -0
  854. package/src/change-conflict/detect-diverging-entity-conflict.test.ts +24 -21
  855. package/src/change-conflict/detect-diverging-entity-conflict.ts +4 -1
  856. package/src/change-conflict/garbage-collect-change-conflicts.test.ts +16 -15
  857. package/src/change-conflict/garbage-collect-change-conflicts.ts +3 -0
  858. package/src/change-conflict/resolve-conflict-by-selecting.test.ts +18 -8
  859. package/src/change-conflict/resolve-conflict-by-selecting.ts +3 -2
  860. package/src/change-proposal/create-change-proposal.test.ts +106 -0
  861. package/src/change-proposal/create-change-proposal.ts +71 -0
  862. package/src/change-proposal/database-schema.test.ts +180 -0
  863. package/src/change-proposal/database-schema.ts +32 -0
  864. package/src/change-proposal/index.ts +2 -0
  865. package/src/change-set/apply-change-set.test.ts +469 -0
  866. package/src/change-set/apply-change-set.ts +186 -0
  867. package/src/change-set/create-change-set.test.ts +126 -27
  868. package/src/change-set/create-change-set.ts +117 -41
  869. package/src/change-set/create-checkpoint.test.ts +387 -0
  870. package/src/change-set/create-checkpoint.ts +101 -0
  871. package/src/change-set/create-merge-change-set.test.ts +237 -0
  872. package/src/change-set/create-merge-change-set.ts +99 -0
  873. package/src/change-set/create-transition-change-set.test.ts +245 -0
  874. package/src/change-set/create-transition-change-set.ts +149 -0
  875. package/src/change-set/create-undo-change-set.test.ts +329 -0
  876. package/src/change-set/create-undo-change-set.ts +147 -0
  877. package/src/change-set/index.ts +17 -1
  878. package/src/change-set/schema.test.ts +981 -0
  879. package/src/change-set/schema.ts +207 -0
  880. package/src/database/execute-sync.test.ts +60 -72
  881. package/src/database/execute-sync.ts +26 -27
  882. package/src/database/graph-traversal-mode.ts +75 -0
  883. package/src/database/index.ts +3 -2
  884. package/src/database/init-db.ts +82 -66
  885. package/src/database/kysely-plugin/json-column-plugin.ts +215 -0
  886. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.ts +5 -10
  887. package/src/database/kysely-plugin/parse-jsonb-plugin-v2.ts +1 -1
  888. package/src/database/kysely-plugin/serialize-jsonb-plugin.test.ts +177 -2
  889. package/src/database/kysely-plugin/serialize-jsonb-plugin.ts +186 -87
  890. package/src/database/kysely-plugin/view-insert-returning-error-plugin.test.ts +62 -0
  891. package/src/database/kysely-plugin/view-insert-returning-error-plugin.ts +49 -0
  892. package/src/database/schema.ts +100 -267
  893. package/src/entity-views/entity-state-all.test.ts +445 -0
  894. package/src/entity-views/entity-state-all.ts +506 -0
  895. package/src/entity-views/entity-state-history.test.ts +325 -0
  896. package/src/entity-views/entity-state-history.ts +226 -0
  897. package/src/entity-views/entity-state.test.ts +592 -0
  898. package/src/entity-views/entity-state.ts +502 -0
  899. package/src/entity-views/entity-view-builder.test.ts +293 -0
  900. package/src/entity-views/entity-view-builder.ts +148 -0
  901. package/src/entity-views/index.ts +1 -0
  902. package/src/entity-views/types.test.ts +99 -0
  903. package/src/entity-views/types.ts +328 -0
  904. package/src/file/file-handlers.test.ts +174 -0
  905. package/src/file/file-handlers.ts +364 -0
  906. package/src/file/index.ts +5 -1
  907. package/src/file/materialize-file-data-at-changeset.ts +123 -0
  908. package/src/file/materialize-file-data.test.ts +107 -0
  909. package/src/file/materialize-file-data.ts +120 -0
  910. package/src/file/schema.test.ts +990 -0
  911. package/src/file/schema.ts +300 -0
  912. package/src/file/store-detected-change-schema.test.ts +248 -0
  913. package/src/file/store-detected-change-schema.ts +52 -0
  914. package/src/file/unknown-file-fallback-plugin.test.ts +368 -0
  915. package/src/file/unknown-file-fallback-plugin.ts +95 -0
  916. package/src/hooks/create-hooks.test.ts +125 -0
  917. package/src/hooks/create-hooks.ts +101 -0
  918. package/src/hooks/index.ts +1 -0
  919. package/src/index.ts +10 -6
  920. package/src/key-value/index.ts +1 -0
  921. package/src/key-value/schema.test.ts +179 -0
  922. package/src/key-value/schema.ts +37 -0
  923. package/src/label/create-label.test.ts +234 -0
  924. package/src/label/create-label.ts +61 -0
  925. package/src/label/index.ts +2 -0
  926. package/src/label/schema.test.ts +92 -0
  927. package/src/label/schema.ts +40 -0
  928. package/src/lix/index.ts +3 -5
  929. package/src/lix/new-lix.test.ts +213 -17
  930. package/src/lix/new-lix.ts +395 -8
  931. package/src/lix/open-lix.test.ts +65 -26
  932. package/src/lix/open-lix.ts +131 -22
  933. package/src/lix/storage/in-memory.test.ts +180 -0
  934. package/src/lix/storage/in-memory.ts +69 -0
  935. package/src/lix/storage/lix-storage-adapter.ts +16 -0
  936. package/src/lix/storage/opfs.test.ts +215 -0
  937. package/src/lix/storage/opfs.ts +175 -0
  938. package/src/log/create-lix-own-log.test.ts +119 -0
  939. package/src/log/create-lix-own-log.ts +124 -0
  940. package/src/log/create-log.ts +52 -0
  941. package/src/log/index.ts +2 -0
  942. package/src/log/schema.test.ts +140 -0
  943. package/src/log/schema.ts +55 -0
  944. package/src/observe/create-observe.test.ts +501 -0
  945. package/src/observe/create-observe.ts +146 -0
  946. package/src/observe/index.ts +1 -0
  947. package/src/observe/lix-observable.test.ts +247 -0
  948. package/src/observe/lix-observable.ts +92 -0
  949. package/src/plugin/index.ts +2 -2
  950. package/src/plugin/lix-plugin.test-d.ts +26 -15
  951. package/src/plugin/lix-plugin.ts +41 -50
  952. package/src/plugin/mock-json-plugin.flatten.ts +161 -0
  953. package/src/plugin/mock-json-plugin.test.ts +214 -0
  954. package/src/plugin/mock-json-plugin.ts +113 -0
  955. package/src/query-filter/change-has-label.test.ts +38 -11
  956. package/src/query-filter/change-has-label.ts +8 -4
  957. package/src/query-filter/change-set-element-in-ancestry-of.test.ts +354 -0
  958. package/src/query-filter/change-set-element-in-ancestry-of.ts +64 -0
  959. package/src/query-filter/change-set-element-in-symmetric-difference.test.ts +410 -0
  960. package/src/{change-set → query-filter}/change-set-element-in-symmetric-difference.ts +2 -1
  961. package/src/query-filter/change-set-element-is-leaf-of.test.ts +564 -0
  962. package/src/query-filter/change-set-element-is-leaf-of.ts +110 -0
  963. package/src/query-filter/change-set-has-label.test.ts +13 -21
  964. package/src/query-filter/change-set-has-label.ts +18 -4
  965. package/src/query-filter/change-set-is-ancestor-of.test.ts +178 -0
  966. package/src/query-filter/change-set-is-ancestor-of.ts +77 -0
  967. package/src/query-filter/change-set-is-descendant-of.test.ts +169 -0
  968. package/src/query-filter/change-set-is-descendant-of.ts +70 -0
  969. package/src/query-filter/index.ts +5 -6
  970. package/src/schema-definition/definition.test-d.ts +253 -0
  971. package/src/schema-definition/definition.test.ts +377 -0
  972. package/src/schema-definition/definition.ts +445 -0
  973. package/src/schema-definition/index.ts +13 -0
  974. package/src/schema-definition/json-type.test.ts +30 -0
  975. package/src/schema-definition/json-type.ts +53 -0
  976. package/src/schema-definition/validate-lix-schema.test.ts +85 -0
  977. package/src/schema-definition/validate-lix-schema.ts +108 -0
  978. package/src/server-protocol-handler/create-server-protocol-handler.ts +0 -4
  979. package/src/server-protocol-handler/environment/create-in-memory-environment.test.ts +13 -14
  980. package/src/server-protocol-handler/environment/create-in-memory-environment.ts +5 -24
  981. package/src/server-protocol-handler/environment/environment.ts +0 -5
  982. package/src/server-protocol-handler/routes/get-v1.test.ts +11 -12
  983. package/src/server-protocol-handler/routes/get-v1.ts +3 -1
  984. package/src/server-protocol-handler/routes/new-v1.test.ts +7 -8
  985. package/src/server-protocol-handler/routes/new-v1.ts +3 -5
  986. package/src/server-protocol-handler/routes/pull-v1.test.ts +49 -33
  987. package/src/server-protocol-handler/routes/pull-v1.ts +1 -1
  988. package/src/server-protocol-handler/routes/push-v1.test.ts +26 -27
  989. package/src/server-protocol-handler/routes/push-v1.ts +4 -1
  990. package/src/snapshot/schema.test.ts +155 -0
  991. package/src/snapshot/schema.ts +21 -0
  992. package/src/state/create-changeset-for-transaction.ts +321 -0
  993. package/src/state/get-version-record-by-id-or-throw.ts +51 -0
  994. package/src/state/handle-state-mutation.test.ts +761 -0
  995. package/src/state/handle-state-mutation.ts +418 -0
  996. package/src/state/schema.bench.ts +43 -0
  997. package/src/state/schema.test.ts +2416 -0
  998. package/src/state/schema.ts +1288 -0
  999. package/src/state/validate-state-mutation.test.ts +2353 -0
  1000. package/src/state/validate-state-mutation.ts +664 -0
  1001. package/src/state-history/schema.test.ts +827 -0
  1002. package/src/state-history/schema.ts +198 -0
  1003. package/src/stored-schema/index.ts +1 -0
  1004. package/src/stored-schema/schema.test.ts +240 -0
  1005. package/src/stored-schema/schema.ts +67 -0
  1006. package/src/sync/get-diffing-rows.ts +16 -0
  1007. package/src/sync/merge-state.ts +7 -4
  1008. package/src/sync/pull-from-server.test.ts +33 -28
  1009. package/src/sync/pull-from-server.ts +4 -2
  1010. package/src/sync/push-to-server.test.ts +77 -81
  1011. package/src/sync/push-to-server.ts +11 -2
  1012. package/src/sync/sync-process.test.ts +21 -18
  1013. package/src/sync/sync-process.ts +2 -3
  1014. package/src/thread/create-thread-comment.test.ts +63 -0
  1015. package/src/thread/create-thread-comment.ts +56 -0
  1016. package/src/thread/create-thread.test.ts +32 -0
  1017. package/src/thread/create-thread.ts +83 -0
  1018. package/src/thread/index.ts +8 -0
  1019. package/src/thread/schema.test.ts +76 -0
  1020. package/src/thread/schema.ts +85 -0
  1021. package/src/version/create-version.test.ts +78 -125
  1022. package/src/version/create-version.ts +37 -64
  1023. package/src/version/index.ts +5 -6
  1024. package/src/version/schema.test.ts +794 -0
  1025. package/src/version/schema.ts +149 -0
  1026. package/src/version/switch-version.test.ts +14 -275
  1027. package/src/version/switch-version.ts +8 -78
  1028. package/src/zettel-ast/index.ts +10 -0
  1029. package/src/account/database-schema.test.ts +0 -184
  1030. package/src/account/database-schema.ts +0 -54
  1031. package/src/change/apply-changes.test.ts +0 -268
  1032. package/src/change/apply-changes.ts +0 -114
  1033. package/src/change/create-change.test.ts +0 -296
  1034. package/src/change/create-change.ts +0 -129
  1035. package/src/change/mock-change.ts +0 -21
  1036. package/src/change-schema/README.md +0 -3
  1037. package/src/change-schema/index.ts +0 -4
  1038. package/src/change-schema/types.test-d.ts +0 -52
  1039. package/src/change-schema/types.ts +0 -53
  1040. package/src/change-set/change-set-element-in-symmetric-difference.test.ts +0 -128
  1041. package/src/database/apply-schema.ts +0 -272
  1042. package/src/database/init-db.test.ts +0 -626
  1043. package/src/database/mutation-log/database-schema.ts +0 -128
  1044. package/src/database/mutation-log/lix-session.ts +0 -19
  1045. package/src/discussion/create-comment.ts +0 -18
  1046. package/src/discussion/create-discussion.test.ts +0 -45
  1047. package/src/discussion/create-discussion.ts +0 -48
  1048. package/src/discussion/index.ts +0 -2
  1049. package/src/file/validate-file-path.test.ts +0 -44
  1050. package/src/file/validate-file-path.ts +0 -60
  1051. package/src/file-queue/file-handlers.ts +0 -267
  1052. package/src/file-queue/file-queue-process.test.ts +0 -456
  1053. package/src/file-queue/file-queue-process.ts +0 -108
  1054. package/src/file-queue/file-queue-settled.test.ts +0 -56
  1055. package/src/file-queue/file-queue-settled.ts +0 -31
  1056. package/src/file-queue/index.ts +0 -1
  1057. package/src/file-queue/with-skip-file-queue.test.ts +0 -158
  1058. package/src/file-queue/with-skip-file-queue.ts +0 -33
  1059. package/src/key-value/database-schema.test.ts +0 -140
  1060. package/src/key-value/database-schema.ts +0 -66
  1061. package/src/lix/close-lix.ts +0 -8
  1062. package/src/lix/merge.get-leaf-changes-only-in-source.test.ts +0 -143
  1063. package/src/lix/merge.get-leaf-changes-only-in-source.ts +0 -46
  1064. package/src/lix/merge.test.ts +0 -858
  1065. package/src/lix/merge.ts +0 -244
  1066. package/src/lix/open-lix-in-memory.test.ts +0 -34
  1067. package/src/lix/open-lix-in-memory.ts +0 -28
  1068. package/src/lix/to-blob.ts +0 -14
  1069. package/src/own-change-control/apply-own-change.test.ts +0 -361
  1070. package/src/own-change-control/apply-own-change.ts +0 -110
  1071. package/src/own-change-control/change-controlled-tables.test.ts +0 -69
  1072. package/src/own-change-control/change-controlled-tables.ts +0 -102
  1073. package/src/own-change-control/database-triggers.test.ts +0 -259
  1074. package/src/own-change-control/database-triggers.ts +0 -189
  1075. package/src/own-change-control/index.ts +0 -1
  1076. package/src/own-change-control/with-skip-own-change-control.test.ts +0 -57
  1077. package/src/own-change-control/with-skip-own-change-control.ts +0 -34
  1078. package/src/plugin/load-plugin.ts +0 -37
  1079. package/src/plugin/with-transaction.ts +0 -22
  1080. package/src/query-filter/change-conflict-in-version.test.ts +0 -62
  1081. package/src/query-filter/change-conflict-in-version.ts +0 -25
  1082. package/src/query-filter/change-in-version.test.ts +0 -82
  1083. package/src/query-filter/change-in-version.ts +0 -31
  1084. package/src/query-filter/change-is-leaf-in-version.test.ts +0 -77
  1085. package/src/query-filter/change-is-leaf-in-version.ts +0 -36
  1086. package/src/query-filter/change-is-leaf-of.bench.ts +0 -175
  1087. package/src/query-filter/change-is-leaf-of.test.ts +0 -84
  1088. package/src/query-filter/change-is-leaf-of.ts +0 -46
  1089. package/src/query-filter/change-is-leaf.test.ts +0 -140
  1090. package/src/query-filter/change-is-leaf.ts +0 -25
  1091. package/src/query-filter/change-is-lowest-common-ancestor-of.test.ts +0 -173
  1092. package/src/query-filter/change-is-lowest-common-ancestor-of.ts +0 -57
  1093. package/src/query-filter/version-change-in-difference.test.ts +0 -105
  1094. package/src/query-filter/version-change-in-difference.ts +0 -37
  1095. package/src/query-filter/version-change-in-symmetric-difference.test.ts +0 -104
  1096. package/src/query-filter/version-change-in-symmetric-difference.ts +0 -52
  1097. package/src/snapshot/create-snapshot.test.ts +0 -68
  1098. package/src/snapshot/create-snapshot.ts +0 -40
  1099. package/src/snapshot/index.ts +0 -2
  1100. package/src/snapshot/json-sha-256.test.ts +0 -12
  1101. package/src/snapshot/json-sha-256.ts +0 -35
  1102. package/src/snapshot/mock-json-snapshot.ts +0 -14
  1103. package/src/version/merge-version.test.ts +0 -530
  1104. package/src/version/merge-version.ts +0 -88
  1105. package/src/version/update-changes-in-version.test.ts +0 -371
  1106. package/src/version/update-changes-in-version.ts +0 -47
@@ -0,0 +1,1052 @@
1
+ import { validateStateMutation } from "./validate-state-mutation.js";
2
+ import { handleStateMutation } from "./handle-state-mutation.js";
3
+ import { createLixOwnLogSync } from "../log/create-lix-own-log.js";
4
+ import { createChangesetForTransaction } from "./create-changeset-for-transaction.js";
5
+ export function applyStateDatabaseSchema(sqlite, db, hooks) {
6
+ sqlite.createFunction({
7
+ name: "validate_snapshot_content",
8
+ deterministic: true,
9
+ arity: 5,
10
+ // @ts-expect-error - type mismatch
11
+ xFunc: (_ctxPtr, ...args) => {
12
+ return validateStateMutation({
13
+ lix: { sqlite, db: db },
14
+ schema: args[0] ? JSON.parse(args[0]) : null,
15
+ snapshot_content: JSON.parse(args[1]),
16
+ operation: args[2] || undefined,
17
+ entity_id: args[3] || undefined,
18
+ version_id: args[4],
19
+ });
20
+ },
21
+ });
22
+ // Create virtual table using the proper SQLite WASM API (following vtab-experiment pattern)
23
+ const capi = sqlite.sqlite3.capi;
24
+ const module = new capi.sqlite3_module();
25
+ // Store cursor state
26
+ const cursorStates = new Map();
27
+ // Cache initialization state to avoid repeated table existence checks
28
+ let loggingInitialized = null;
29
+ const canLog = () => {
30
+ if (loggingInitialized === null) {
31
+ try {
32
+ const tableExists = sqlite.exec({
33
+ sql: "SELECT 1 FROM sqlite_master WHERE type='table' AND name='key_value'",
34
+ returnValue: "resultRows",
35
+ });
36
+ loggingInitialized = tableExists && tableExists.length > 0;
37
+ }
38
+ catch {
39
+ loggingInitialized = false;
40
+ }
41
+ }
42
+ return loggingInitialized;
43
+ };
44
+ const create_temp_change_table_sql = `
45
+ -- add a table we use within the transaction
46
+ CREATE TEMP TABLE IF NOT EXISTS internal_change_in_transaction (
47
+ id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
48
+ entity_id TEXT NOT NULL,
49
+ schema_key TEXT NOT NULL,
50
+ schema_version TEXT NOT NULL,
51
+ file_id TEXT NOT NULL,
52
+ plugin_key TEXT NOT NULL,
53
+ version_id TEXT NOT NULL,
54
+ snapshot_content BLOB,
55
+ created_at TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL CHECK (created_at LIKE '%Z'),
56
+ --- NOTE schena_key must be unique per entity_id and file_id
57
+ UNIQUE(entity_id, file_id, schema_key, version_id)
58
+ ) STRICT;
59
+
60
+ `;
61
+ sqlite.exec(create_temp_change_table_sql);
62
+ module.installMethods({
63
+ xCreate: (db, _pAux, _argc, _argv, pVTab) => {
64
+ const sql = `CREATE TABLE x(
65
+ entity_id TEXT,
66
+ schema_key TEXT,
67
+ file_id TEXT,
68
+ version_id TEXT,
69
+ plugin_key TEXT,
70
+ snapshot_content TEXT,
71
+ schema_version TEXT,
72
+ created_at TEXT,
73
+ updated_at TEXT,
74
+ inherited_from_version_id TEXT,
75
+ change_id TEXT,
76
+ untracked INTEGER
77
+ )`;
78
+ const result = capi.sqlite3_declare_vtab(db, sql);
79
+ if (result !== capi.SQLITE_OK) {
80
+ return result;
81
+ }
82
+ sqlite.sqlite3.vtab.xVtab.create(pVTab);
83
+ return capi.SQLITE_OK;
84
+ },
85
+ xConnect: (db, _pAux, _argc, _argv, pVTab) => {
86
+ const sql = `CREATE TABLE x(
87
+ entity_id TEXT,
88
+ schema_key TEXT,
89
+ file_id TEXT,
90
+ version_id TEXT,
91
+ plugin_key TEXT,
92
+ snapshot_content TEXT,
93
+ schema_version TEXT,
94
+ created_at TEXT,
95
+ updated_at TEXT,
96
+ inherited_from_version_id TEXT,
97
+ change_id TEXT,
98
+ untracked INTEGER
99
+ )`;
100
+ const result = capi.sqlite3_declare_vtab(db, sql);
101
+ if (result !== capi.SQLITE_OK) {
102
+ return result;
103
+ }
104
+ sqlite.sqlite3.vtab.xVtab.create(pVTab);
105
+ return capi.SQLITE_OK;
106
+ },
107
+ xBegin: () => {
108
+ // assert that we are not already in a transaction (the internal_change_in_transaction table is empty)
109
+ if (sqlite.exec({
110
+ sql: "SELECT * FROM internal_change_in_transaction",
111
+ returnValue: "resultRows",
112
+ }).length > 0) {
113
+ const errorMessage = "Transaction already in progress";
114
+ if (canLog()) {
115
+ createLixOwnLogSync({
116
+ lix: { sqlite, db: db },
117
+ key: "lix_state_xbegin_error",
118
+ level: "error",
119
+ message: `xBegin error: ${errorMessage}`,
120
+ });
121
+ }
122
+ throw new Error(errorMessage);
123
+ }
124
+ },
125
+ xCommit: () => {
126
+ const currentTime = new Date().toISOString();
127
+ // Insert each row from internal_change_in_transaction into internal_snapshot and internal_change,
128
+ // using the same id for snapshot_id in internal_change as in internal_snapshot.
129
+ const changesWithoutChangeSets = sqlite.exec({
130
+ sql: `
131
+ SELECT
132
+ id,
133
+ entity_id,
134
+ schema_key,
135
+ schema_version,
136
+ file_id,
137
+ plugin_key,
138
+ version_id,
139
+ CASE
140
+ WHEN snapshot_content IS NOT NULL THEN json(snapshot_content)
141
+ ELSE NULL
142
+ END as snapshot_content,
143
+ created_at
144
+ FROM internal_change_in_transaction
145
+ ORDER BY version_id
146
+ `,
147
+ returnValue: "resultRows",
148
+ });
149
+ // Group changes by version_id
150
+ const changesByVersion = new Map();
151
+ for (const changeWithoutChangeset of changesWithoutChangeSets) {
152
+ const version_id = changeWithoutChangeset[6];
153
+ if (!changesByVersion.has(version_id)) {
154
+ changesByVersion.set(version_id, []);
155
+ }
156
+ changesByVersion.get(version_id).push({
157
+ id: changeWithoutChangeset[0],
158
+ entity_id: changeWithoutChangeset[1],
159
+ schema_key: changeWithoutChangeset[2],
160
+ schema_version: changeWithoutChangeset[3],
161
+ file_id: changeWithoutChangeset[4],
162
+ plugin_key: changeWithoutChangeset[5],
163
+ snapshot_content: changeWithoutChangeset[7],
164
+ created_at: changeWithoutChangeset[8],
165
+ });
166
+ }
167
+ // Process each version's changes to create changesets
168
+ for (const [version_id, versionChanges] of changesByVersion) {
169
+ // Create changeset and edges for this version's transaction
170
+ createChangesetForTransaction(sqlite, db, currentTime, version_id, versionChanges);
171
+ }
172
+ const changesToRealize = sqlite.exec({
173
+ sql: "SELECT id, entity_id, schema_key, schema_version, file_id, plugin_key, version_id, snapshot_content, created_at FROM internal_change_in_transaction ORDER BY version_id",
174
+ returnValue: "resultRows",
175
+ });
176
+ for (const changeToRealize of changesToRealize) {
177
+ const [id, entity_id, schema_key, schema_version, file_id, plugin_key,
178
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
179
+ version_id, snapshot_content, created_at,] = changeToRealize;
180
+ let snapshot_id = "no-content";
181
+ if (snapshot_content) {
182
+ // Insert into internal_snapshot
183
+ const result = sqlite.exec({
184
+ sql: `INSERT OR IGNORE INTO internal_snapshot (content) VALUES (?) RETURNING id`,
185
+ bind: [snapshot_content],
186
+ returnValue: "resultRows",
187
+ });
188
+ // Get the 'id' column of the newly created row
189
+ if (result && result.length > 0) {
190
+ snapshot_id = result[0][0]; // assuming 'id' is the first column
191
+ }
192
+ }
193
+ // Insert into internal_change
194
+ sqlite.exec({
195
+ sql: `INSERT INTO internal_change (id, entity_id, schema_key, schema_version, file_id, plugin_key, snapshot_id, created_at)
196
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
197
+ bind: [
198
+ id,
199
+ entity_id,
200
+ schema_key,
201
+ schema_version,
202
+ file_id,
203
+ plugin_key,
204
+ snapshot_id,
205
+ created_at,
206
+ ],
207
+ returnValue: "resultRows",
208
+ });
209
+ }
210
+ sqlite.exec({
211
+ sql: "DELETE FROM internal_change_in_transaction",
212
+ returnValue: "resultRows",
213
+ });
214
+ // Emit state commit hook after transaction is successfully committed
215
+ hooks._emit("state_commit");
216
+ return capi.SQLITE_OK;
217
+ },
218
+ xRollback: () => {
219
+ sqlite.exec({
220
+ sql: "DELETE FROM internal_change_in_transaction",
221
+ returnValue: "resultRows",
222
+ });
223
+ },
224
+ xBestIndex: () => {
225
+ return capi.SQLITE_OK;
226
+ },
227
+ xDisconnect: () => {
228
+ return capi.SQLITE_OK;
229
+ },
230
+ xDestroy: () => {
231
+ return capi.SQLITE_OK;
232
+ },
233
+ xOpen: (_pVTab, pCursor) => {
234
+ const cursor = sqlite.sqlite3.vtab.xCursor.create(pCursor);
235
+ cursorStates.set(cursor.pointer, {
236
+ results: [],
237
+ rowIndex: 0,
238
+ });
239
+ return capi.SQLITE_OK;
240
+ },
241
+ xClose: (pCursor) => {
242
+ cursorStates.delete(pCursor);
243
+ return capi.SQLITE_OK;
244
+ },
245
+ xFilter: (pCursor) => {
246
+ const cursorState = cursorStates.get(pCursor);
247
+ // Try cache first - UNION with priority: untracked > tracked > inherited
248
+ const cacheResults = sqlite.exec({
249
+ sql: `
250
+ -- 1. Untracked state (highest priority)
251
+ SELECT entity_id, schema_key, file_id, version_id, plugin_key,
252
+ snapshot_content, schema_version, created_at, updated_at,
253
+ NULL as inherited_from_version_id, 'untracked' as change_id, 1 as untracked
254
+ FROM internal_state_all_untracked
255
+
256
+ UNION ALL
257
+
258
+ -- 2. Tracked state (second priority) - only if no untracked exists
259
+ SELECT entity_id, schema_key, file_id, version_id, plugin_key,
260
+ snapshot_content, schema_version, created_at, updated_at,
261
+ inherited_from_version_id, change_id, 0 as untracked
262
+ FROM internal_state_cache
263
+ WHERE inheritance_delete_marker = 0 -- Hide copy-on-write deletions
264
+ AND NOT EXISTS (
265
+ SELECT 1 FROM internal_state_all_untracked unt
266
+ WHERE unt.entity_id = internal_state_cache.entity_id
267
+ AND unt.schema_key = internal_state_cache.schema_key
268
+ AND unt.file_id = internal_state_cache.file_id
269
+ AND unt.version_id = internal_state_cache.version_id
270
+ )
271
+
272
+ UNION ALL
273
+
274
+ -- 3. Inherited state (lowest priority) - only if no untracked or tracked exists
275
+ SELECT isc.entity_id, isc.schema_key, isc.file_id,
276
+ vi.version_id, -- Return child version_id
277
+ isc.plugin_key, isc.snapshot_content, isc.schema_version,
278
+ isc.created_at, isc.updated_at,
279
+ vi.parent_version_id as inherited_from_version_id, isc.change_id, 0 as untracked
280
+ FROM (
281
+ -- Get version inheritance relationships from cache
282
+ SELECT
283
+ json_extract(isc_v.snapshot_content, '$.id') AS version_id,
284
+ json_extract(isc_v.snapshot_content, '$.inherits_from_version_id') AS parent_version_id
285
+ FROM internal_state_cache isc_v
286
+ WHERE isc_v.schema_key = 'lix_version'
287
+ ) vi
288
+ JOIN internal_state_cache isc ON isc.version_id = vi.parent_version_id
289
+ WHERE vi.parent_version_id IS NOT NULL
290
+ -- Only inherit entities that exist (not deleted) in parent
291
+ AND isc.inheritance_delete_marker = 0
292
+ -- Don't inherit if child has tracked state
293
+ AND NOT EXISTS (
294
+ SELECT 1 FROM internal_state_cache child_isc
295
+ WHERE child_isc.version_id = vi.version_id
296
+ AND child_isc.entity_id = isc.entity_id
297
+ AND child_isc.schema_key = isc.schema_key
298
+ AND child_isc.file_id = isc.file_id
299
+ )
300
+ -- Don't inherit if child has untracked state
301
+ AND NOT EXISTS (
302
+ SELECT 1 FROM internal_state_all_untracked unt
303
+ WHERE unt.version_id = vi.version_id
304
+ AND unt.entity_id = isc.entity_id
305
+ AND unt.schema_key = isc.schema_key
306
+ AND unt.file_id = isc.file_id
307
+ )
308
+ `,
309
+ returnValue: "resultRows",
310
+ });
311
+ cursorState.results = cacheResults || [];
312
+ cursorState.rowIndex = 0;
313
+ // Cache miss - populate cache with actual recursive state query
314
+ if (cursorState.results.length === 0) {
315
+ if (canLog()) {
316
+ createLixOwnLogSync({
317
+ lix: { sqlite, db: db },
318
+ key: "lix_state_cache_miss",
319
+ level: "debug",
320
+ message: `Cache miss detected - materializing state from CTE`,
321
+ });
322
+ }
323
+ // Run the expensive recursive CTE to materialize state
324
+ // Include deletions when populating cache so inheritance blocking works
325
+ const stateResults = selectStateViaCTE(sqlite, {}, true);
326
+ // Populate cache with materialized state results
327
+ if (stateResults && stateResults.length > 0) {
328
+ let cachePopulated = false;
329
+ for (const row of stateResults) {
330
+ // CTE returns rows as arrays, so access by index
331
+ const entity_id = Array.isArray(row) ? row[0] : row.entity_id;
332
+ const schema_key = Array.isArray(row) ? row[1] : row.schema_key;
333
+ const file_id = Array.isArray(row) ? row[2] : row.file_id;
334
+ const plugin_key = Array.isArray(row) ? row[3] : row.plugin_key;
335
+ const snapshot_content = Array.isArray(row)
336
+ ? row[4]
337
+ : row.snapshot_content;
338
+ const schema_version = Array.isArray(row)
339
+ ? row[5]
340
+ : row.schema_version;
341
+ const version_id = Array.isArray(row) ? row[6] : row.version_id;
342
+ const created_at = Array.isArray(row) ? row[7] : row.created_at;
343
+ const updated_at = Array.isArray(row) ? row[8] : row.updated_at;
344
+ const inherited_from_version_id = Array.isArray(row)
345
+ ? row[9]
346
+ : row.inherited_from_version_id;
347
+ const change_id = Array.isArray(row) ? row[10] : row.change_id;
348
+ // Skip rows with null entity_id (no actual state data found)
349
+ if (!entity_id) {
350
+ continue;
351
+ }
352
+ const isDeletion = snapshot_content === null;
353
+ // TODO the CTE should not return inherited entities (optimization for later)
354
+ // Skip inherited entities - they should be resolved via inheritance logic, not stored as duplicates
355
+ if (inherited_from_version_id !== null &&
356
+ inherited_from_version_id !== undefined) {
357
+ continue;
358
+ }
359
+ sqlite.exec({
360
+ sql: `INSERT OR REPLACE INTO internal_state_cache
361
+ (entity_id, schema_key, file_id, version_id, plugin_key, snapshot_content, schema_version, created_at, updated_at, inherited_from_version_id, inheritance_delete_marker, change_id)
362
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
363
+ bind: [
364
+ entity_id,
365
+ schema_key,
366
+ file_id,
367
+ version_id,
368
+ plugin_key,
369
+ isDeletion
370
+ ? null
371
+ : typeof snapshot_content === "string"
372
+ ? snapshot_content
373
+ : JSON.stringify(snapshot_content),
374
+ schema_version,
375
+ created_at,
376
+ updated_at,
377
+ inherited_from_version_id === null ||
378
+ inherited_from_version_id === undefined
379
+ ? null
380
+ : inherited_from_version_id,
381
+ isDeletion ? 1 : 0,
382
+ change_id || "unknown-change-id",
383
+ ],
384
+ });
385
+ cachePopulated = true;
386
+ }
387
+ if (cachePopulated && canLog()) {
388
+ createLixOwnLogSync({
389
+ lix: { sqlite, db: db },
390
+ key: "lix_state_cache_populated",
391
+ level: "debug",
392
+ message: `Cache populated with ${stateResults?.length || 0} rows from CTE`,
393
+ });
394
+ }
395
+ }
396
+ // Re-query cache after population
397
+ // Re-query after population with priority: untracked > tracked > inherited
398
+ const newResults = sqlite.exec({
399
+ sql: `
400
+ -- 1. Untracked state (highest priority)
401
+ SELECT entity_id, schema_key, file_id, version_id, plugin_key,
402
+ snapshot_content, schema_version, created_at, updated_at,
403
+ NULL as inherited_from_version_id, 'untracked' as change_id, 1 as untracked
404
+ FROM internal_state_all_untracked
405
+
406
+ UNION ALL
407
+
408
+ -- 2. Tracked state (second priority) - only if no untracked exists
409
+ SELECT entity_id, schema_key, file_id, version_id, plugin_key,
410
+ snapshot_content, schema_version, created_at, updated_at,
411
+ inherited_from_version_id, change_id, 0 as untracked
412
+ FROM internal_state_cache
413
+ WHERE inheritance_delete_marker = 0 -- Hide copy-on-write deletions
414
+ AND NOT EXISTS (
415
+ SELECT 1 FROM internal_state_all_untracked unt
416
+ WHERE unt.entity_id = internal_state_cache.entity_id
417
+ AND unt.schema_key = internal_state_cache.schema_key
418
+ AND unt.file_id = internal_state_cache.file_id
419
+ AND unt.version_id = internal_state_cache.version_id
420
+ )
421
+
422
+ UNION ALL
423
+
424
+ -- 3. Inherited state (lowest priority) - only if no untracked or tracked exists
425
+ SELECT isc.entity_id, isc.schema_key, isc.file_id,
426
+ vi.version_id, -- Return child version_id
427
+ isc.plugin_key, isc.snapshot_content, isc.schema_version,
428
+ isc.created_at, isc.updated_at,
429
+ vi.parent_version_id as inherited_from_version_id, isc.change_id, 0 as untracked
430
+ FROM (
431
+ -- Get version inheritance relationships from cache
432
+ SELECT
433
+ json_extract(isc_v.snapshot_content, '$.id') AS version_id,
434
+ json_extract(isc_v.snapshot_content, '$.inherits_from_version_id') AS parent_version_id
435
+ FROM internal_state_cache isc_v
436
+ WHERE isc_v.schema_key = 'lix_version'
437
+ ) vi
438
+ JOIN internal_state_cache isc ON isc.version_id = vi.parent_version_id
439
+ WHERE vi.parent_version_id IS NOT NULL
440
+ -- Only inherit entities that exist (not deleted) in parent
441
+ AND isc.inheritance_delete_marker = 0
442
+ -- Don't inherit if child has tracked state
443
+ AND NOT EXISTS (
444
+ SELECT 1 FROM internal_state_cache child_isc
445
+ WHERE child_isc.version_id = vi.version_id
446
+ AND child_isc.entity_id = isc.entity_id
447
+ AND child_isc.schema_key = isc.schema_key
448
+ AND child_isc.file_id = isc.file_id
449
+ )
450
+ -- Don't inherit if child has untracked state
451
+ AND NOT EXISTS (
452
+ SELECT 1 FROM internal_state_all_untracked unt
453
+ WHERE unt.version_id = vi.version_id
454
+ AND unt.entity_id = isc.entity_id
455
+ AND unt.schema_key = isc.schema_key
456
+ AND unt.file_id = isc.file_id
457
+ )
458
+ `,
459
+ returnValue: "resultRows",
460
+ });
461
+ cursorState.results = newResults || [];
462
+ }
463
+ else {
464
+ if (canLog()) {
465
+ createLixOwnLogSync({
466
+ lix: { sqlite, db: db },
467
+ key: "lix_state_cache_hit",
468
+ level: "debug",
469
+ message: `Cache hit - returning ${cursorState.results.length} cached rows`,
470
+ });
471
+ }
472
+ }
473
+ return capi.SQLITE_OK;
474
+ },
475
+ xNext: (pCursor) => {
476
+ const cursorState = cursorStates.get(pCursor);
477
+ cursorState.rowIndex++;
478
+ return capi.SQLITE_OK;
479
+ },
480
+ xEof: (pCursor) => {
481
+ const cursorState = cursorStates.get(pCursor);
482
+ return cursorState.rowIndex >= cursorState.results.length ? 1 : 0;
483
+ },
484
+ xColumn: (pCursor, pContext, iCol) => {
485
+ const cursorState = cursorStates.get(pCursor);
486
+ const row = cursorState.results[cursorState.rowIndex];
487
+ if (!row) {
488
+ capi.sqlite3_result_null(pContext);
489
+ return capi.SQLITE_OK;
490
+ }
491
+ // Handle array-style results from SQLite exec
492
+ let value;
493
+ if (Array.isArray(row)) {
494
+ value = row[iCol];
495
+ }
496
+ else {
497
+ const columnName = getColumnName(iCol);
498
+ value = row[columnName];
499
+ }
500
+ // Handle special cases for null values that might be stored as strings
501
+ if (value === "null" &&
502
+ getColumnName(iCol) === "inherited_from_version_id") {
503
+ capi.sqlite3_result_null(pContext);
504
+ return capi.SQLITE_OK;
505
+ }
506
+ if (value === null || value === undefined) {
507
+ capi.sqlite3_result_null(pContext);
508
+ }
509
+ else if (typeof value === "object") {
510
+ capi.sqlite3_result_js(pContext, JSON.stringify(value));
511
+ }
512
+ else {
513
+ capi.sqlite3_result_js(pContext, value);
514
+ }
515
+ return capi.SQLITE_OK;
516
+ },
517
+ xRowid: (pCursor, pRowid) => {
518
+ const cursorState = cursorStates.get(pCursor);
519
+ sqlite.sqlite3.vtab.xRowid(pRowid, cursorState.rowIndex);
520
+ return capi.SQLITE_OK;
521
+ },
522
+ xUpdate: (_pVTab, nArg, ppArgv) => {
523
+ try {
524
+ // Extract arguments using the proper SQLite WASM API
525
+ const args = sqlite.sqlite3.capi.sqlite3_values_to_js(nArg, ppArgv);
526
+ // DELETE operation: nArg = 1, args[0] = old rowid
527
+ if (nArg === 1) {
528
+ // For DELETE, we need the old row data to pass to handleStateMutation
529
+ // We can't get this from the virtual table directly, so we'll need to
530
+ // handle DELETE differently:
531
+ // we query the row by rowid and pass it to handleStateMutation
532
+ handleStateDelete(sqlite, args[0], db);
533
+ return capi.SQLITE_OK;
534
+ }
535
+ // INSERT operation: nArg = N+2, args[0] = NULL, args[1] = new rowid
536
+ // UPDATE operation: nArg = N+2, args[0] = old rowid, args[1] = new rowid
537
+ const isInsert = args[0] === null || args[0] === undefined;
538
+ const isUpdate = args[0] !== null && args[0] !== undefined;
539
+ if (!isInsert && !isUpdate) {
540
+ throw new Error("Invalid xUpdate operation");
541
+ }
542
+ // Extract column values (args[2] through args[N+1])
543
+ // Column order: entity_id, schema_key, file_id, version_id, plugin_key,
544
+ // snapshot_content, schema_version, created_at, updated_at, inherited_from_version_id, change_id, untracked
545
+ const entity_id = args[2];
546
+ const schema_key = args[3];
547
+ const file_id = args[4];
548
+ const version_id = args[5];
549
+ const plugin_key = args[6];
550
+ const snapshot_content = args[7];
551
+ const schema_version = args[8];
552
+ // Skip created_at (args[9]), updated_at (args[10]), inherited_from_version_id (args[11]), change_id (args[12])
553
+ const untracked = args[13] ?? false;
554
+ // assert required fields
555
+ if (!entity_id || !schema_key || !file_id || !plugin_key) {
556
+ throw new Error("Missing required fields for state mutation");
557
+ }
558
+ if (!version_id) {
559
+ throw new Error("version_id is required for state mutation");
560
+ }
561
+ // Ensure snapshot_content is a string
562
+ const snapshotStr = typeof snapshot_content === "string"
563
+ ? snapshot_content
564
+ : JSON.stringify(snapshot_content);
565
+ // Call validation function (same logic as triggers)
566
+ const storedSchemaResult = sqlite.exec({
567
+ sql: "SELECT value FROM stored_schema WHERE key = ?",
568
+ bind: [String(schema_key)],
569
+ returnValue: "resultRows",
570
+ });
571
+ const storedSchema = storedSchemaResult && storedSchemaResult.length > 0
572
+ ? storedSchemaResult[0][0]
573
+ : null;
574
+ validateStateMutation({
575
+ lix: { sqlite, db: db },
576
+ schema: storedSchema ? JSON.parse(storedSchema) : null,
577
+ snapshot_content: JSON.parse(snapshotStr),
578
+ operation: isInsert ? "insert" : "update",
579
+ entity_id: String(entity_id),
580
+ version_id: String(version_id),
581
+ untracked: Boolean(untracked),
582
+ });
583
+ // Route based on untracked flag
584
+ if (untracked) {
585
+ // Handle untracked mutation - write directly to untracked table
586
+ sqlite.exec({
587
+ sql: `INSERT OR REPLACE INTO internal_state_all_untracked
588
+ (entity_id, schema_key, file_id, version_id, plugin_key, snapshot_content, schema_version)
589
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,
590
+ bind: [
591
+ String(entity_id),
592
+ String(schema_key),
593
+ String(file_id),
594
+ String(version_id),
595
+ String(plugin_key),
596
+ snapshotStr,
597
+ String(schema_version),
598
+ ],
599
+ });
600
+ }
601
+ else {
602
+ // Handle tracked mutation - normal change control
603
+ // If there's existing untracked state, delete it first (tracked overrides untracked)
604
+ sqlite.exec({
605
+ sql: `DELETE FROM internal_state_all_untracked
606
+ WHERE entity_id = ? AND schema_key = ? AND file_id = ? AND version_id = ?`,
607
+ bind: [
608
+ String(entity_id),
609
+ String(schema_key),
610
+ String(file_id),
611
+ String(version_id),
612
+ ],
613
+ });
614
+ // Call handleStateMutation (same logic as triggers)
615
+ handleStateMutation(sqlite, db, String(entity_id), String(schema_key), String(file_id), String(plugin_key), snapshotStr, String(version_id), String(schema_version));
616
+ }
617
+ // TODO: This cache copying logic is a temporary workaround for shared change sets.
618
+ // The proper solution requires improving cache miss logic to handle change set sharing
619
+ // without duplicating entries. See: https://github.com/opral/lix-sdk/issues/309
620
+ //
621
+ // Handle cache copying for new versions that share change sets
622
+ if (isInsert && String(schema_key) === "lix_version") {
623
+ const versionData = JSON.parse(snapshotStr);
624
+ const newVersionId = versionData.id;
625
+ const changeSetId = versionData.change_set_id;
626
+ if (newVersionId && changeSetId) {
627
+ // Find other versions that already use this change set
628
+ const existingVersionsWithSameChangeSet = sqlite.exec({
629
+ sql: `
630
+ SELECT json_extract(snapshot_content, '$.id') as version_id
631
+ FROM internal_state_cache
632
+ WHERE schema_key = 'lix_version'
633
+ AND json_extract(snapshot_content, '$.change_set_id') = ?
634
+ AND json_extract(snapshot_content, '$.id') != ?
635
+ `,
636
+ bind: [changeSetId, newVersionId],
637
+ returnValue: "resultRows",
638
+ });
639
+ // If there are existing versions with the same change set, copy their cache entries
640
+ if (existingVersionsWithSameChangeSet &&
641
+ existingVersionsWithSameChangeSet.length > 0) {
642
+ const sourceVersionId = existingVersionsWithSameChangeSet[0][0]; // Take first existing version
643
+ // Copy cache entries from source version to new version
644
+ sqlite.exec({
645
+ sql: `
646
+ INSERT OR IGNORE INTO internal_state_cache
647
+ (entity_id, schema_key, file_id, version_id, plugin_key, snapshot_content, schema_version, created_at, updated_at, inherited_from_version_id, inheritance_delete_marker, change_id)
648
+ SELECT
649
+ entity_id, schema_key, file_id, ?, plugin_key, snapshot_content, schema_version, created_at, updated_at, inherited_from_version_id, inheritance_delete_marker, change_id
650
+ FROM internal_state_cache
651
+ WHERE version_id = ? AND schema_key != 'lix_version'
652
+ `,
653
+ bind: [newVersionId, sourceVersionId],
654
+ });
655
+ }
656
+ }
657
+ }
658
+ return capi.SQLITE_OK;
659
+ }
660
+ catch (error) {
661
+ const errorMessage = error instanceof Error ? error.message : String(error);
662
+ // Log error for debugging
663
+ if (canLog()) {
664
+ createLixOwnLogSync({
665
+ lix: { sqlite, db: db },
666
+ key: "lix_state_xupdate_error",
667
+ level: "error",
668
+ message: `xUpdate error: ${errorMessage}`,
669
+ });
670
+ }
671
+ throw error; //new Error("test");
672
+ // const vtab = sqlite.sqlite3.vtab.xVtab.get(_pVTab);
673
+ // // Set proper error message on the virtual table
674
+ // if (vtab) {
675
+ // // Free any existing error message first
676
+ // if (vtab.zErrMsg) {
677
+ // capi.sqlite3_free(vtab.zErrMsg);
678
+ // }
679
+ // // Allocate new error message using sqlite3_malloc
680
+ // const errorBytes = new TextEncoder().encode(errorMessage + "\0");
681
+ // const errorPtr = capi.sqlite3_malloc(errorBytes.length);
682
+ // if (errorPtr) {
683
+ // sqlite.sqlite3.wasm.heap8u().set(errorBytes, errorPtr);
684
+ // vtab.zErrMsg = errorPtr;
685
+ // }
686
+ // }
687
+ // return capi.SQLITE_ERROR;
688
+ }
689
+ },
690
+ }, false);
691
+ capi.sqlite3_create_module(sqlite.pointer, "state_vtab", module, 0);
692
+ // Create the virtual table as 'state' directly (no more _impl suffix or view layer)
693
+ sqlite.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS state_all USING state_vtab();`);
694
+ // Create state view that filters to active version only
695
+ sqlite.exec(`
696
+ CREATE VIEW IF NOT EXISTS state AS
697
+ SELECT *
698
+ FROM state_all
699
+ WHERE version_id IN (SELECT version_id FROM active_version);
700
+
701
+ -- Add INSTEAD OF triggers for state that forward to state virtual table
702
+ CREATE TRIGGER IF NOT EXISTS state_insert
703
+ INSTEAD OF INSERT ON state
704
+ BEGIN
705
+ INSERT INTO state_all (
706
+ entity_id, schema_key, file_id, version_id, plugin_key,
707
+ snapshot_content, schema_version, created_at, updated_at, inherited_from_version_id, change_id, untracked
708
+ ) VALUES (
709
+ NEW.entity_id, NEW.schema_key, NEW.file_id, NEW.version_id, NEW.plugin_key,
710
+ NEW.snapshot_content, NEW.schema_version, NEW.created_at, NEW.updated_at, NEW.inherited_from_version_id, NEW.change_id, NEW.untracked
711
+ );
712
+ END;
713
+
714
+ CREATE TRIGGER IF NOT EXISTS state_update
715
+ INSTEAD OF UPDATE ON state
716
+ BEGIN
717
+ UPDATE state_all
718
+ SET
719
+ entity_id = NEW.entity_id,
720
+ schema_key = NEW.schema_key,
721
+ file_id = NEW.file_id,
722
+ version_id = NEW.version_id,
723
+ plugin_key = NEW.plugin_key,
724
+ snapshot_content = NEW.snapshot_content,
725
+ schema_version = NEW.schema_version,
726
+ created_at = NEW.created_at,
727
+ updated_at = NEW.updated_at,
728
+ inherited_from_version_id = NEW.inherited_from_version_id,
729
+ change_id = NEW.change_id,
730
+ untracked = NEW.untracked
731
+ WHERE
732
+ entity_id = OLD.entity_id
733
+ AND schema_key = OLD.schema_key
734
+ AND file_id = OLD.file_id
735
+ AND version_id = OLD.version_id;
736
+ END;
737
+
738
+ CREATE TRIGGER IF NOT EXISTS state_delete
739
+ INSTEAD OF DELETE ON state
740
+ BEGIN
741
+ DELETE FROM state_all
742
+ WHERE entity_id = OLD.entity_id
743
+ AND schema_key = OLD.schema_key
744
+ AND file_id = OLD.file_id
745
+ AND version_id = OLD.version_id;
746
+ END;
747
+ `);
748
+ // Create the cache table for performance optimization and the untracked state table
749
+ const sql = `
750
+ CREATE TABLE IF NOT EXISTS internal_state_cache (
751
+ entity_id TEXT NOT NULL,
752
+ schema_key TEXT NOT NULL,
753
+ file_id TEXT NOT NULL,
754
+ version_id TEXT NOT NULL,
755
+ plugin_key TEXT NOT NULL,
756
+ snapshot_content TEXT, -- Allow NULL for deletions
757
+ schema_version TEXT NOT NULL,
758
+ created_at TEXT NOT NULL,
759
+ updated_at TEXT NOT NULL,
760
+ inherited_from_version_id TEXT,
761
+ inheritance_delete_marker INTEGER DEFAULT 0, -- Flag for copy-on-write deletion markers
762
+ change_id TEXT, -- Allow NULL during migration and for deletion markers
763
+ PRIMARY KEY (entity_id, schema_key, file_id, version_id)
764
+ );
765
+
766
+ -- Table for untracked state that bypasses change control
767
+ CREATE TABLE IF NOT EXISTS internal_state_all_untracked (
768
+ entity_id TEXT NOT NULL,
769
+ schema_key TEXT NOT NULL,
770
+ file_id TEXT NOT NULL,
771
+ version_id TEXT NOT NULL,
772
+ plugin_key TEXT NOT NULL,
773
+ snapshot_content TEXT NOT NULL, -- JSON content
774
+ schema_version TEXT NOT NULL,
775
+ created_at TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL CHECK (created_at LIKE '%Z'),
776
+ updated_at TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL CHECK (updated_at LIKE '%Z'),
777
+ PRIMARY KEY (entity_id, schema_key, file_id, version_id)
778
+ ) STRICT;
779
+
780
+ -- Trigger to update updated_at on untracked state changes
781
+ CREATE TRIGGER IF NOT EXISTS internal_state_all_untracked_update_timestamp
782
+ AFTER UPDATE ON internal_state_all_untracked
783
+ BEGIN
784
+ UPDATE internal_state_all_untracked
785
+ SET updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
786
+ WHERE entity_id = NEW.entity_id
787
+ AND schema_key = NEW.schema_key
788
+ AND file_id = NEW.file_id
789
+ AND version_id = NEW.version_id;
790
+ END;
791
+ `;
792
+ return sqlite.exec(sql);
793
+ }
794
+ export function handleStateDelete(sqlite, rowId, db) {
795
+ const rowToDelete = sqlite.exec({
796
+ sql: "SELECT * FROM state_all WHERE rowid = ?",
797
+ bind: [rowId],
798
+ returnValue: "resultRows",
799
+ })[0];
800
+ const entity_id = rowToDelete[0];
801
+ const schema_key = rowToDelete[1];
802
+ const file_id = rowToDelete[2];
803
+ const version_id = rowToDelete[3];
804
+ const plugin_key = rowToDelete[4];
805
+ const snapshot_content = rowToDelete[5];
806
+ const schema_version = rowToDelete[6];
807
+ // Column indices: created_at[7], updated_at[8], inherited_from_version_id[9], change_id[10], untracked[11]
808
+ const untracked = rowToDelete[11];
809
+ // If entity is untracked, just delete it without creating changes
810
+ if (untracked) {
811
+ // Delete from untracked table
812
+ sqlite.exec({
813
+ sql: `DELETE FROM internal_state_all_untracked
814
+ WHERE entity_id = ? AND schema_key = ? AND file_id = ? AND version_id = ?`,
815
+ bind: [
816
+ String(entity_id),
817
+ String(schema_key),
818
+ String(file_id),
819
+ String(version_id),
820
+ ],
821
+ });
822
+ return;
823
+ }
824
+ const storedSchemaResult = sqlite.exec({
825
+ sql: "SELECT value FROM stored_schema WHERE key = ?",
826
+ bind: [String(schema_key)],
827
+ returnValue: "resultRows",
828
+ });
829
+ const storedSchema = storedSchemaResult && storedSchemaResult.length > 0
830
+ ? storedSchemaResult[0][0]
831
+ : null;
832
+ validateStateMutation({
833
+ lix: { sqlite, db: db },
834
+ schema: storedSchema ? JSON.parse(storedSchema) : null,
835
+ snapshot_content: JSON.parse(snapshot_content),
836
+ operation: "delete",
837
+ entity_id: String(entity_id),
838
+ version_id: String(version_id),
839
+ });
840
+ handleStateMutation(sqlite, db, String(entity_id), String(schema_key), String(file_id), String(plugin_key), null, // No snapshot content for DELETE
841
+ String(version_id), String(schema_version));
842
+ }
843
+ // Helper functions for the virtual table
844
+ function getColumnName(columnIndex) {
845
+ const columns = [
846
+ "entity_id",
847
+ "schema_key",
848
+ "file_id",
849
+ "version_id",
850
+ "plugin_key",
851
+ "snapshot_content",
852
+ "schema_version",
853
+ "created_at",
854
+ "updated_at",
855
+ "inherited_from_version_id",
856
+ "change_id",
857
+ "untracked",
858
+ ];
859
+ return columns[columnIndex] || "unknown";
860
+ }
861
+ function selectStateViaCTE(sqlite, filters, includeDeletions = false) {
862
+ let sql = `
863
+ WITH
864
+ all_changes_with_snapshots AS (
865
+ -- Include committed changes
866
+ SELECT ic.id, ic.entity_id, ic.schema_key, ic.file_id, ic.plugin_key,
867
+ ic.schema_version,
868
+ CASE
869
+ WHEN ic.snapshot_id = 'no-content' THEN NULL
870
+ ELSE json(s.content)
871
+ END AS snapshot_content
872
+ FROM internal_change ic
873
+ LEFT JOIN internal_snapshot s ON ic.snapshot_id = s.id
874
+
875
+ UNION ALL
876
+
877
+ -- Include changes from current transaction
878
+ SELECT ict.id, ict.entity_id, ict.schema_key, ict.file_id, ict.plugin_key,
879
+ ict.schema_version, ict.snapshot_content
880
+ FROM internal_change_in_transaction ict
881
+
882
+ UNION ALL
883
+
884
+ -- Include untracked state (pseudo-changes with special change_id)
885
+ SELECT 'untracked-' || unt.entity_id || '-' || unt.schema_key AS id,
886
+ unt.entity_id, unt.schema_key, unt.file_id, unt.plugin_key,
887
+ unt.schema_version, json(unt.snapshot_content) AS snapshot_content
888
+ FROM internal_state_all_untracked unt
889
+ ),
890
+ root_cs_of_all_versions AS (
891
+ SELECT json_extract(v.snapshot_content, '$.change_set_id') AS version_change_set_id,
892
+ v.entity_id AS version_id
893
+ FROM all_changes_with_snapshots v
894
+ WHERE v.schema_key = 'lix_version'
895
+ ),
896
+ reachable_cs_from_roots(id, version_id) AS (
897
+ SELECT version_change_set_id, version_id FROM root_cs_of_all_versions
898
+ UNION
899
+ SELECT json_extract(e.snapshot_content, '$.parent_id'), r.version_id
900
+ FROM all_changes_with_snapshots e
901
+ JOIN reachable_cs_from_roots r ON json_extract(e.snapshot_content, '$.child_id') = r.id
902
+ WHERE e.schema_key = 'lix_change_set_edge'
903
+ ),
904
+ cse_in_reachable_cs AS (
905
+ SELECT json_extract(ias.snapshot_content, '$.entity_id') AS target_entity_id,
906
+ json_extract(ias.snapshot_content, '$.file_id') AS target_file_id,
907
+ json_extract(ias.snapshot_content, '$.schema_key') AS target_schema_key,
908
+ json_extract(ias.snapshot_content, '$.change_id') AS target_change_id,
909
+ json_extract(ias.snapshot_content, '$.change_set_id') AS cse_origin_change_set_id,
910
+ rcs.version_id
911
+ FROM all_changes_with_snapshots ias
912
+ JOIN reachable_cs_from_roots rcs ON json_extract(ias.snapshot_content, '$.change_set_id') = rcs.id
913
+ WHERE ias.schema_key = 'lix_change_set_element'
914
+ ),
915
+ leaf_target_snapshots AS (
916
+ SELECT target_change.entity_id, target_change.schema_key, target_change.file_id,
917
+ target_change.plugin_key, target_change.snapshot_content AS snapshot_content,
918
+ target_change.schema_version, r.version_id, target_change.id as change_id
919
+ FROM cse_in_reachable_cs r
920
+ INNER JOIN all_changes_with_snapshots target_change ON r.target_change_id = target_change.id
921
+ WHERE NOT EXISTS (
922
+ WITH RECURSIVE descendants_of_current_cs(id) AS (
923
+ SELECT r.cse_origin_change_set_id
924
+ UNION
925
+ SELECT json_extract(edge.snapshot_content, '$.child_id')
926
+ FROM all_changes_with_snapshots edge
927
+ JOIN descendants_of_current_cs d ON json_extract(edge.snapshot_content, '$.parent_id') = d.id
928
+ WHERE edge.schema_key = 'lix_change_set_edge'
929
+ AND json_extract(edge.snapshot_content, '$.child_id') IN (
930
+ SELECT id FROM reachable_cs_from_roots WHERE version_id = r.version_id
931
+ )
932
+ )
933
+ SELECT 1 FROM cse_in_reachable_cs newer_r
934
+ WHERE newer_r.target_entity_id = r.target_entity_id
935
+ AND newer_r.target_file_id = r.target_file_id
936
+ AND newer_r.target_schema_key = r.target_schema_key
937
+ AND newer_r.version_id = r.version_id
938
+ AND (newer_r.cse_origin_change_set_id != r.cse_origin_change_set_id OR newer_r.target_change_id != r.target_change_id)
939
+ AND newer_r.cse_origin_change_set_id IN descendants_of_current_cs
940
+ )
941
+ ),
942
+ -- Get version inheritance relationships
943
+ version_inheritance AS (
944
+ SELECT DISTINCT
945
+ v.entity_id AS version_id,
946
+ json_extract(v.snapshot_content, '$.inherits_from_version_id') AS parent_version_id
947
+ FROM all_changes_with_snapshots v
948
+ WHERE v.schema_key = 'lix_version'
949
+ ),
950
+ -- Combine direct entities with inherited entities
951
+ all_entities AS (
952
+ -- Direct entities from leaf_target_snapshots
953
+ SELECT
954
+ entity_id, schema_key, file_id, plugin_key, snapshot_content, schema_version,
955
+ version_id, version_id as visible_in_version, NULL as inherited_from_version_id, change_id
956
+ FROM leaf_target_snapshots
957
+
958
+ UNION ALL
959
+
960
+ -- Inherited entities from parent versions
961
+ SELECT
962
+ ls.entity_id, ls.schema_key, ls.file_id, ls.plugin_key, ls.snapshot_content, ls.schema_version,
963
+ vi.version_id, -- Use child version_id for testing
964
+ vi.version_id as visible_in_version, -- Make visible in child version
965
+ vi.parent_version_id as inherited_from_version_id, ls.change_id
966
+ FROM version_inheritance vi
967
+ JOIN leaf_target_snapshots ls ON ls.version_id = vi.parent_version_id
968
+ WHERE vi.parent_version_id IS NOT NULL
969
+ AND ls.snapshot_content IS NOT NULL -- Don't inherit deleted entities
970
+ -- Don't inherit if child already has this entity (including deletion markers)
971
+ -- Use a more comprehensive check that includes both leaf snapshots and direct inheritance blocking
972
+ AND NOT EXISTS (
973
+ -- Check if there's ANY change for this entity in the child version
974
+ -- This includes creation, update, AND deletion changes
975
+ SELECT 1 FROM leaf_target_snapshots child_ls
976
+ WHERE child_ls.version_id = vi.version_id
977
+ AND child_ls.entity_id = ls.entity_id
978
+ AND child_ls.schema_key = ls.schema_key
979
+ AND child_ls.file_id = ls.file_id
980
+ )
981
+ -- Additional safeguard: check that no change set element exists for this entity in child
982
+ AND NOT EXISTS (
983
+ SELECT 1 FROM cse_in_reachable_cs cse
984
+ JOIN all_changes_with_snapshots target_change ON cse.target_change_id = target_change.id
985
+ WHERE cse.version_id = vi.version_id
986
+ AND target_change.entity_id = ls.entity_id
987
+ AND target_change.schema_key = ls.schema_key
988
+ AND target_change.file_id = ls.file_id
989
+ )
990
+ ),
991
+ -- Prioritize direct entities over inherited ones, then deduplicate
992
+ prioritized_entities AS (
993
+ SELECT *,
994
+ -- Priority: direct entities (inherited_from_version_id IS NULL) over inherited
995
+ CASE WHEN inherited_from_version_id IS NULL THEN 1 ELSE 2 END as priority,
996
+ -- Row number for deduplication within same priority
997
+ ROW_NUMBER() OVER (
998
+ PARTITION BY entity_id, schema_key, file_id, visible_in_version
999
+ ORDER BY CASE WHEN inherited_from_version_id IS NULL THEN 1 ELSE 2 END,
1000
+ -- Among inherited entities, prefer those with earlier timestamps
1001
+ version_id
1002
+ ) as rn
1003
+ FROM all_entities ae
1004
+ -- Don't filter out entities with null snapshot_content here
1005
+ -- We need deletion markers to be included for proper inheritance blocking
1006
+ )
1007
+ SELECT DISTINCT
1008
+ pe.entity_id,
1009
+ pe.schema_key,
1010
+ pe.file_id,
1011
+ pe.plugin_key,
1012
+ pe.snapshot_content,
1013
+ pe.schema_version,
1014
+ pe.version_id,
1015
+ (SELECT MIN(ic.created_at) FROM internal_change ic
1016
+ WHERE ic.entity_id = pe.entity_id AND ic.schema_key = pe.schema_key AND ic.file_id = pe.file_id) AS created_at,
1017
+ COALESCE(
1018
+ (SELECT MAX(ic.created_at) FROM internal_change ic
1019
+ WHERE ic.entity_id = pe.entity_id AND ic.schema_key = pe.schema_key AND ic.file_id = pe.file_id
1020
+ AND ic.id IN (SELECT cse.target_change_id FROM cse_in_reachable_cs cse WHERE cse.version_id = pe.version_id)),
1021
+ (SELECT MIN(ic.created_at) FROM internal_change ic
1022
+ WHERE ic.entity_id = pe.entity_id AND ic.schema_key = pe.schema_key AND ic.file_id = pe.file_id)
1023
+ ) AS updated_at,
1024
+ pe.inherited_from_version_id,
1025
+ pe.change_id
1026
+ FROM prioritized_entities pe
1027
+ WHERE pe.rn = 1
1028
+ ${includeDeletions ? "" : "-- Filter out deletion markers from final results\n AND pe.snapshot_content IS NOT NULL"}
1029
+ `;
1030
+ const bindings = [];
1031
+ const conditions = [];
1032
+ Object.entries(filters).forEach(([key, value]) => {
1033
+ if (key === "version_id") {
1034
+ // For version_id filter, use visible_in_version
1035
+ conditions.push(`ae.visible_in_version = ?`);
1036
+ }
1037
+ else {
1038
+ conditions.push(`ae.${key} = ?`);
1039
+ }
1040
+ bindings.push(value);
1041
+ });
1042
+ if (conditions.length > 0) {
1043
+ sql += " AND " + conditions.join(" AND ");
1044
+ }
1045
+ const result = sqlite.exec({
1046
+ sql,
1047
+ bind: bindings,
1048
+ returnValue: "resultRows",
1049
+ });
1050
+ return result || [];
1051
+ }
1052
+ //# sourceMappingURL=schema.js.map