@lix-js/sdk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (812) hide show
  1. package/README.md +68 -0
  2. package/dist/account/create-account.d.ts +7 -0
  3. package/dist/account/create-account.d.ts.map +1 -0
  4. package/dist/account/create-account.js +20 -0
  5. package/dist/account/create-account.js.map +1 -0
  6. package/dist/account/create-account.test.d.ts +2 -0
  7. package/dist/account/create-account.test.d.ts.map +1 -0
  8. package/dist/account/create-account.test.js +22 -0
  9. package/dist/account/create-account.test.js.map +1 -0
  10. package/dist/account/database-schema.d.ts +18 -0
  11. package/dist/account/database-schema.d.ts.map +1 -0
  12. package/dist/account/database-schema.js +36 -0
  13. package/dist/account/database-schema.js.map +1 -0
  14. package/dist/account/database-schema.test.d.ts +2 -0
  15. package/dist/account/database-schema.test.d.ts.map +1 -0
  16. package/dist/account/database-schema.test.js +139 -0
  17. package/dist/account/database-schema.test.js.map +1 -0
  18. package/dist/account/index.d.ts +4 -0
  19. package/dist/account/index.d.ts.map +1 -0
  20. package/dist/account/index.js +4 -0
  21. package/dist/account/index.js.map +1 -0
  22. package/dist/account/switch-account.d.ts +26 -0
  23. package/dist/account/switch-account.d.ts.map +1 -0
  24. package/dist/account/switch-account.js +34 -0
  25. package/dist/account/switch-account.js.map +1 -0
  26. package/dist/account/switch-account.test.d.ts +2 -0
  27. package/dist/account/switch-account.test.d.ts.map +1 -0
  28. package/dist/account/switch-account.test.js +48 -0
  29. package/dist/account/switch-account.test.js.map +1 -0
  30. package/dist/change/apply-changes.d.ts +25 -0
  31. package/dist/change/apply-changes.d.ts.map +1 -0
  32. package/dist/change/apply-changes.js +98 -0
  33. package/dist/change/apply-changes.js.map +1 -0
  34. package/dist/change/apply-changes.test.d.ts +2 -0
  35. package/dist/change/apply-changes.test.d.ts.map +1 -0
  36. package/dist/change/apply-changes.test.js +222 -0
  37. package/dist/change/apply-changes.test.js.map +1 -0
  38. package/dist/change/create-change.d.ts +27 -0
  39. package/dist/change/create-change.d.ts.map +1 -0
  40. package/dist/change/create-change.js +97 -0
  41. package/dist/change/create-change.js.map +1 -0
  42. package/dist/change/create-change.test.d.ts +2 -0
  43. package/dist/change/create-change.test.d.ts.map +1 -0
  44. package/dist/change/create-change.test.js +235 -0
  45. package/dist/change/create-change.test.js.map +1 -0
  46. package/dist/change/index.d.ts +3 -0
  47. package/dist/change/index.d.ts.map +1 -0
  48. package/dist/change/index.js +3 -0
  49. package/dist/change/index.js.map +1 -0
  50. package/dist/change/mock-change.d.ts +10 -0
  51. package/dist/change/mock-change.d.ts.map +1 -0
  52. package/dist/change/mock-change.js +20 -0
  53. package/dist/change/mock-change.js.map +1 -0
  54. package/dist/change-conflict/create-change-conflict.d.ts +15 -0
  55. package/dist/change-conflict/create-change-conflict.d.ts.map +1 -0
  56. package/dist/change-conflict/create-change-conflict.js +67 -0
  57. package/dist/change-conflict/create-change-conflict.js.map +1 -0
  58. package/dist/change-conflict/create-change-conflict.test.d.ts +2 -0
  59. package/dist/change-conflict/create-change-conflict.test.d.ts.map +1 -0
  60. package/dist/change-conflict/create-change-conflict.test.js +145 -0
  61. package/dist/change-conflict/create-change-conflict.test.js.map +1 -0
  62. package/dist/change-conflict/detect-change-conflicts.d.ts +23 -0
  63. package/dist/change-conflict/detect-change-conflicts.d.ts.map +1 -0
  64. package/dist/change-conflict/detect-change-conflicts.js +50 -0
  65. package/dist/change-conflict/detect-change-conflicts.js.map +1 -0
  66. package/dist/change-conflict/detect-change-conflicts.test.d.ts +2 -0
  67. package/dist/change-conflict/detect-change-conflicts.test.d.ts.map +1 -0
  68. package/dist/change-conflict/detect-change-conflicts.test.js +182 -0
  69. package/dist/change-conflict/detect-change-conflicts.test.js.map +1 -0
  70. package/dist/change-conflict/detect-diverging-entity-conflict.d.ts +32 -0
  71. package/dist/change-conflict/detect-diverging-entity-conflict.d.ts.map +1 -0
  72. package/dist/change-conflict/detect-diverging-entity-conflict.js +66 -0
  73. package/dist/change-conflict/detect-diverging-entity-conflict.js.map +1 -0
  74. package/dist/change-conflict/detect-diverging-entity-conflict.test.d.ts +2 -0
  75. package/dist/change-conflict/detect-diverging-entity-conflict.test.d.ts.map +1 -0
  76. package/dist/change-conflict/detect-diverging-entity-conflict.test.js +201 -0
  77. package/dist/change-conflict/detect-diverging-entity-conflict.test.js.map +1 -0
  78. package/dist/change-conflict/garbage-collect-change-conflicts.d.ts +14 -0
  79. package/dist/change-conflict/garbage-collect-change-conflicts.d.ts.map +1 -0
  80. package/dist/change-conflict/garbage-collect-change-conflicts.js +67 -0
  81. package/dist/change-conflict/garbage-collect-change-conflicts.js.map +1 -0
  82. package/dist/change-conflict/garbage-collect-change-conflicts.test.d.ts +2 -0
  83. package/dist/change-conflict/garbage-collect-change-conflicts.test.d.ts.map +1 -0
  84. package/dist/change-conflict/garbage-collect-change-conflicts.test.js +182 -0
  85. package/dist/change-conflict/garbage-collect-change-conflicts.test.js.map +1 -0
  86. package/dist/change-conflict/index.d.ts +4 -0
  87. package/dist/change-conflict/index.d.ts.map +1 -0
  88. package/dist/change-conflict/index.js +4 -0
  89. package/dist/change-conflict/index.js.map +1 -0
  90. package/dist/change-conflict/resolve-conflict-by-selecting.d.ts +12 -0
  91. package/dist/change-conflict/resolve-conflict-by-selecting.d.ts.map +1 -0
  92. package/dist/change-conflict/resolve-conflict-by-selecting.js +48 -0
  93. package/dist/change-conflict/resolve-conflict-by-selecting.js.map +1 -0
  94. package/dist/change-conflict/resolve-conflict-by-selecting.test.d.ts +2 -0
  95. package/dist/change-conflict/resolve-conflict-by-selecting.test.d.ts.map +1 -0
  96. package/dist/change-conflict/resolve-conflict-by-selecting.test.js +95 -0
  97. package/dist/change-conflict/resolve-conflict-by-selecting.test.js.map +1 -0
  98. package/dist/change-conflict/update-change-conflicts.d.ts +2 -0
  99. package/dist/change-conflict/update-change-conflicts.d.ts.map +1 -0
  100. package/dist/change-conflict/update-change-conflicts.js +72 -0
  101. package/dist/change-conflict/update-change-conflicts.js.map +1 -0
  102. package/dist/change-queue/change-queue-settled.d.ts +13 -0
  103. package/dist/change-queue/change-queue-settled.d.ts.map +1 -0
  104. package/dist/change-queue/change-queue-settled.js +25 -0
  105. package/dist/change-queue/change-queue-settled.js.map +1 -0
  106. package/dist/change-queue/change-queue-settled.test.d.ts +2 -0
  107. package/dist/change-queue/change-queue-settled.test.d.ts.map +1 -0
  108. package/dist/change-queue/change-queue-settled.test.js +47 -0
  109. package/dist/change-queue/change-queue-settled.test.js.map +1 -0
  110. package/dist/change-queue/file-handlers.d.ts +24 -0
  111. package/dist/change-queue/file-handlers.d.ts.map +1 -0
  112. package/dist/change-queue/file-handlers.js +209 -0
  113. package/dist/change-queue/file-handlers.js.map +1 -0
  114. package/dist/change-queue/index.d.ts +2 -0
  115. package/dist/change-queue/index.d.ts.map +1 -0
  116. package/dist/change-queue/index.js +2 -0
  117. package/dist/change-queue/index.js.map +1 -0
  118. package/dist/change-queue/init-change-queue.d.ts +7 -0
  119. package/dist/change-queue/init-change-queue.d.ts.map +1 -0
  120. package/dist/change-queue/init-change-queue.js +80 -0
  121. package/dist/change-queue/init-change-queue.js.map +1 -0
  122. package/dist/change-queue/init-change-queue.test.d.ts +2 -0
  123. package/dist/change-queue/init-change-queue.test.d.ts.map +1 -0
  124. package/dist/change-queue/init-change-queue.test.js +373 -0
  125. package/dist/change-queue/init-change-queue.test.js.map +1 -0
  126. package/dist/change-queue/with-skip-change-queue.d.ts +3 -0
  127. package/dist/change-queue/with-skip-change-queue.d.ts.map +1 -0
  128. package/dist/change-queue/with-skip-change-queue.js +26 -0
  129. package/dist/change-queue/with-skip-change-queue.js.map +1 -0
  130. package/dist/change-queue/with-skip-change-queue.test.d.ts +2 -0
  131. package/dist/change-queue/with-skip-change-queue.test.d.ts.map +1 -0
  132. package/dist/change-queue/with-skip-change-queue.test.js +138 -0
  133. package/dist/change-queue/with-skip-change-queue.test.js.map +1 -0
  134. package/dist/change-schema/index.d.ts +2 -0
  135. package/dist/change-schema/index.d.ts.map +1 -0
  136. package/dist/change-schema/index.js +2 -0
  137. package/dist/change-schema/index.js.map +1 -0
  138. package/dist/change-schema/types.d.ts +40 -0
  139. package/dist/change-schema/types.d.ts.map +1 -0
  140. package/dist/change-schema/types.js +2 -0
  141. package/dist/change-schema/types.js.map +1 -0
  142. package/dist/change-schema/types.test-d.d.ts +2 -0
  143. package/dist/change-schema/types.test-d.d.ts.map +1 -0
  144. package/dist/change-schema/types.test-d.js +34 -0
  145. package/dist/change-schema/types.test-d.js.map +1 -0
  146. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts +19 -0
  147. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts.map +1 -0
  148. package/dist/change-set/change-set-element-in-symmetric-difference.js +36 -0
  149. package/dist/change-set/change-set-element-in-symmetric-difference.js.map +1 -0
  150. package/dist/change-set/change-set-element-in-symmetric-difference.test.d.ts +2 -0
  151. package/dist/change-set/change-set-element-in-symmetric-difference.test.d.ts.map +1 -0
  152. package/dist/change-set/change-set-element-in-symmetric-difference.test.js +106 -0
  153. package/dist/change-set/change-set-element-in-symmetric-difference.test.js.map +1 -0
  154. package/dist/change-set/create-change-set.d.ts +16 -0
  155. package/dist/change-set/create-change-set.d.ts.map +1 -0
  156. package/dist/change-set/create-change-set.js +33 -0
  157. package/dist/change-set/create-change-set.js.map +1 -0
  158. package/dist/change-set/create-change-set.test.d.ts +2 -0
  159. package/dist/change-set/create-change-set.test.d.ts.map +1 -0
  160. package/dist/change-set/create-change-set.test.js +37 -0
  161. package/dist/change-set/create-change-set.test.js.map +1 -0
  162. package/dist/change-set/index.d.ts +3 -0
  163. package/dist/change-set/index.d.ts.map +1 -0
  164. package/dist/change-set/index.js +3 -0
  165. package/dist/change-set/index.js.map +1 -0
  166. package/dist/database/apply-schema.d.ts +8 -0
  167. package/dist/database/apply-schema.d.ts.map +1 -0
  168. package/dist/database/apply-schema.js +318 -0
  169. package/dist/database/apply-schema.js.map +1 -0
  170. package/dist/database/execute-sync.d.ts +18 -0
  171. package/dist/database/execute-sync.d.ts.map +1 -0
  172. package/dist/database/execute-sync.js +36 -0
  173. package/dist/database/execute-sync.js.map +1 -0
  174. package/dist/database/execute-sync.test.d.ts +2 -0
  175. package/dist/database/execute-sync.test.d.ts.map +1 -0
  176. package/dist/database/execute-sync.test.js +118 -0
  177. package/dist/database/execute-sync.test.js.map +1 -0
  178. package/dist/database/index.d.ts +5 -0
  179. package/dist/database/index.d.ts.map +1 -0
  180. package/dist/database/index.js +5 -0
  181. package/dist/database/index.js.map +1 -0
  182. package/dist/database/init-db.d.ts +7 -0
  183. package/dist/database/init-db.d.ts.map +1 -0
  184. package/dist/database/init-db.js +80 -0
  185. package/dist/database/init-db.js.map +1 -0
  186. package/dist/database/init-db.test.d.ts +2 -0
  187. package/dist/database/init-db.test.d.ts.map +1 -0
  188. package/dist/database/init-db.test.js +386 -0
  189. package/dist/database/init-db.test.js.map +1 -0
  190. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts +3 -0
  191. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts.map +1 -0
  192. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js +41 -0
  193. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js.map +1 -0
  194. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.d.ts +2 -0
  195. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.d.ts.map +1 -0
  196. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.js +162 -0
  197. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.js.map +1 -0
  198. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.d.ts +12 -0
  199. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.d.ts.map +1 -0
  200. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js +149 -0
  201. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js.map +1 -0
  202. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.d.ts +2 -0
  203. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.d.ts.map +1 -0
  204. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.js +162 -0
  205. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.js.map +1 -0
  206. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts +3 -0
  207. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts.map +1 -0
  208. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js +100 -0
  209. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js.map +1 -0
  210. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.d.ts +2 -0
  211. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.d.ts.map +1 -0
  212. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js +107 -0
  213. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js.map +1 -0
  214. package/dist/database/mutation-log/database-schema.d.ts +16 -0
  215. package/dist/database/mutation-log/database-schema.d.ts.map +1 -0
  216. package/dist/database/mutation-log/database-schema.js +103 -0
  217. package/dist/database/mutation-log/database-schema.js.map +1 -0
  218. package/dist/database/mutation-log/lix-session.d.ts +8 -0
  219. package/dist/database/mutation-log/lix-session.d.ts.map +1 -0
  220. package/dist/database/mutation-log/lix-session.js +18 -0
  221. package/dist/database/mutation-log/lix-session.js.map +1 -0
  222. package/dist/database/schema.d.ts +220 -0
  223. package/dist/database/schema.d.ts.map +1 -0
  224. package/dist/database/schema.js +2 -0
  225. package/dist/database/schema.js.map +1 -0
  226. package/dist/discussion/create-comment.d.ts +10 -0
  227. package/dist/discussion/create-comment.d.ts.map +1 -0
  228. package/dist/discussion/create-comment.js +13 -0
  229. package/dist/discussion/create-comment.js.map +1 -0
  230. package/dist/discussion/create-discussion.d.ts +23 -0
  231. package/dist/discussion/create-discussion.d.ts.map +1 -0
  232. package/dist/discussion/create-discussion.js +41 -0
  233. package/dist/discussion/create-discussion.js.map +1 -0
  234. package/dist/discussion/create-discussion.test.d.ts +2 -0
  235. package/dist/discussion/create-discussion.test.d.ts.map +1 -0
  236. package/dist/discussion/create-discussion.test.js +64 -0
  237. package/dist/discussion/create-discussion.test.js.map +1 -0
  238. package/dist/discussion/index.d.ts +3 -0
  239. package/dist/discussion/index.d.ts.map +1 -0
  240. package/dist/discussion/index.js +3 -0
  241. package/dist/discussion/index.js.map +1 -0
  242. package/dist/file/index.d.ts +2 -0
  243. package/dist/file/index.d.ts.map +1 -0
  244. package/dist/file/index.js +2 -0
  245. package/dist/file/index.js.map +1 -0
  246. package/dist/file/validate-file-path.d.ts +16 -0
  247. package/dist/file/validate-file-path.d.ts.map +1 -0
  248. package/dist/file/validate-file-path.js +44 -0
  249. package/dist/file/validate-file-path.js.map +1 -0
  250. package/dist/file/validate-file-path.test.d.ts +2 -0
  251. package/dist/file/validate-file-path.test.d.ts.map +1 -0
  252. package/dist/file/validate-file-path.test.js +36 -0
  253. package/dist/file/validate-file-path.test.js.map +1 -0
  254. package/dist/index.d.ts +17 -0
  255. package/dist/index.d.ts.map +1 -0
  256. package/dist/index.js +17 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/key-value/database-schema.d.ts +33 -0
  259. package/dist/key-value/database-schema.d.ts.map +1 -0
  260. package/dist/key-value/database-schema.js +18 -0
  261. package/dist/key-value/database-schema.js.map +1 -0
  262. package/dist/key-value/database-schema.test.d.ts +2 -0
  263. package/dist/key-value/database-schema.test.d.ts.map +1 -0
  264. package/dist/key-value/database-schema.test.js +98 -0
  265. package/dist/key-value/database-schema.test.js.map +1 -0
  266. package/dist/lix/index.d.ts +4 -0
  267. package/dist/lix/index.d.ts.map +1 -0
  268. package/dist/lix/index.js +7 -0
  269. package/dist/lix/index.js.map +1 -0
  270. package/dist/lix/merge.d.ts +9 -0
  271. package/dist/lix/merge.d.ts.map +1 -0
  272. package/dist/lix/merge.get-leaf-changes-only-in-source.d.ts +15 -0
  273. package/dist/lix/merge.get-leaf-changes-only-in-source.d.ts.map +1 -0
  274. package/dist/lix/merge.get-leaf-changes-only-in-source.js +34 -0
  275. package/dist/lix/merge.get-leaf-changes-only-in-source.js.map +1 -0
  276. package/dist/lix/merge.get-leaf-changes-only-in-source.test.d.ts +2 -0
  277. package/dist/lix/merge.get-leaf-changes-only-in-source.test.d.ts.map +1 -0
  278. package/dist/lix/merge.get-leaf-changes-only-in-source.test.js +121 -0
  279. package/dist/lix/merge.get-leaf-changes-only-in-source.test.js.map +1 -0
  280. package/dist/lix/merge.js +195 -0
  281. package/dist/lix/merge.js.map +1 -0
  282. package/dist/lix/merge.test.d.ts +2 -0
  283. package/dist/lix/merge.test.d.ts.map +1 -0
  284. package/dist/lix/merge.test.js +700 -0
  285. package/dist/lix/merge.test.js.map +1 -0
  286. package/dist/lix/new-lix.d.ts +8 -0
  287. package/dist/lix/new-lix.d.ts.map +1 -0
  288. package/dist/lix/new-lix.js +27 -0
  289. package/dist/lix/new-lix.js.map +1 -0
  290. package/dist/lix/new-lix.test.d.ts +2 -0
  291. package/dist/lix/new-lix.test.d.ts.map +1 -0
  292. package/dist/lix/new-lix.test.js +21 -0
  293. package/dist/lix/new-lix.test.js.map +1 -0
  294. package/dist/lix/open-lix-in-memory.d.ts +12 -0
  295. package/dist/lix/open-lix-in-memory.d.ts.map +1 -0
  296. package/dist/lix/open-lix-in-memory.js +19 -0
  297. package/dist/lix/open-lix-in-memory.js.map +1 -0
  298. package/dist/lix/open-lix-in-memory.test.d.ts +2 -0
  299. package/dist/lix/open-lix-in-memory.test.d.ts.map +1 -0
  300. package/dist/lix/open-lix-in-memory.test.js +29 -0
  301. package/dist/lix/open-lix-in-memory.test.js.map +1 -0
  302. package/dist/lix/open-lix.d.ts +52 -0
  303. package/dist/lix/open-lix.d.ts.map +1 -0
  304. package/dist/lix/open-lix.js +47 -0
  305. package/dist/lix/open-lix.js.map +1 -0
  306. package/dist/lix/open-lix.test.d.ts +2 -0
  307. package/dist/lix/open-lix.test.d.ts.map +1 -0
  308. package/dist/lix/open-lix.test.js +29 -0
  309. package/dist/lix/open-lix.test.js.map +1 -0
  310. package/dist/own-entity-change-control/apply-own-entity-change.d.ts +10 -0
  311. package/dist/own-entity-change-control/apply-own-entity-change.d.ts.map +1 -0
  312. package/dist/own-entity-change-control/apply-own-entity-change.js +69 -0
  313. package/dist/own-entity-change-control/apply-own-entity-change.js.map +1 -0
  314. package/dist/own-entity-change-control/apply-own-entity-change.test.d.ts +2 -0
  315. package/dist/own-entity-change-control/apply-own-entity-change.test.d.ts.map +1 -0
  316. package/dist/own-entity-change-control/apply-own-entity-change.test.js +297 -0
  317. package/dist/own-entity-change-control/apply-own-entity-change.test.js.map +1 -0
  318. package/dist/own-entity-change-control/change-controlled-tables.d.ts +61 -0
  319. package/dist/own-entity-change-control/change-controlled-tables.d.ts.map +1 -0
  320. package/dist/own-entity-change-control/change-controlled-tables.js +71 -0
  321. package/dist/own-entity-change-control/change-controlled-tables.js.map +1 -0
  322. package/dist/own-entity-change-control/change-controlled-tables.test.d.ts +2 -0
  323. package/dist/own-entity-change-control/change-controlled-tables.test.d.ts.map +1 -0
  324. package/dist/own-entity-change-control/change-controlled-tables.test.js +48 -0
  325. package/dist/own-entity-change-control/change-controlled-tables.test.js.map +1 -0
  326. package/dist/own-entity-change-control/database-triggers.d.ts +5 -0
  327. package/dist/own-entity-change-control/database-triggers.d.ts.map +1 -0
  328. package/dist/own-entity-change-control/database-triggers.js +135 -0
  329. package/dist/own-entity-change-control/database-triggers.js.map +1 -0
  330. package/dist/own-entity-change-control/database-triggers.test.d.ts +2 -0
  331. package/dist/own-entity-change-control/database-triggers.test.d.ts.map +1 -0
  332. package/dist/own-entity-change-control/database-triggers.test.js +214 -0
  333. package/dist/own-entity-change-control/database-triggers.test.js.map +1 -0
  334. package/dist/own-entity-change-control/index.d.ts +2 -0
  335. package/dist/own-entity-change-control/index.d.ts.map +1 -0
  336. package/dist/own-entity-change-control/index.js +2 -0
  337. package/dist/own-entity-change-control/index.js.map +1 -0
  338. package/dist/own-entity-change-control/with-skip-own-change-control.d.ts +3 -0
  339. package/dist/own-entity-change-control/with-skip-own-change-control.d.ts.map +1 -0
  340. package/dist/own-entity-change-control/with-skip-own-change-control.js +24 -0
  341. package/dist/own-entity-change-control/with-skip-own-change-control.js.map +1 -0
  342. package/dist/own-entity-change-control/with-skip-own-change-control.test.d.ts +2 -0
  343. package/dist/own-entity-change-control/with-skip-own-change-control.test.d.ts.map +1 -0
  344. package/dist/own-entity-change-control/with-skip-own-change-control.test.js +49 -0
  345. package/dist/own-entity-change-control/with-skip-own-change-control.test.js.map +1 -0
  346. package/dist/plugin/index.d.ts +2 -0
  347. package/dist/plugin/index.d.ts.map +1 -0
  348. package/dist/plugin/index.js +2 -0
  349. package/dist/plugin/index.js.map +1 -0
  350. package/dist/plugin/lix-plugin.d.ts +114 -0
  351. package/dist/plugin/lix-plugin.d.ts.map +1 -0
  352. package/dist/plugin/lix-plugin.js +2 -0
  353. package/dist/plugin/lix-plugin.js.map +1 -0
  354. package/dist/plugin/lix-plugin.test-d.d.ts +2 -0
  355. package/dist/plugin/lix-plugin.test-d.d.ts.map +1 -0
  356. package/dist/plugin/lix-plugin.test-d.js +40 -0
  357. package/dist/plugin/lix-plugin.test-d.js.map +1 -0
  358. package/dist/plugin/load-plugin.d.ts +5 -0
  359. package/dist/plugin/load-plugin.d.ts.map +1 -0
  360. package/dist/plugin/load-plugin.js +20 -0
  361. package/dist/plugin/load-plugin.js.map +1 -0
  362. package/dist/plugin/with-transaction.d.ts +11 -0
  363. package/dist/plugin/with-transaction.d.ts.map +1 -0
  364. package/dist/plugin/with-transaction.js +15 -0
  365. package/dist/plugin/with-transaction.js.map +1 -0
  366. package/dist/query-filter/change-conflict-in-version.d.ts +15 -0
  367. package/dist/query-filter/change-conflict-in-version.d.ts.map +1 -0
  368. package/dist/query-filter/change-conflict-in-version.js +18 -0
  369. package/dist/query-filter/change-conflict-in-version.js.map +1 -0
  370. package/dist/query-filter/change-conflict-in-version.test.d.ts +2 -0
  371. package/dist/query-filter/change-conflict-in-version.test.d.ts.map +1 -0
  372. package/dist/query-filter/change-conflict-in-version.test.js +55 -0
  373. package/dist/query-filter/change-conflict-in-version.test.js.map +1 -0
  374. package/dist/query-filter/change-has-label.d.ts +25 -0
  375. package/dist/query-filter/change-has-label.d.ts.map +1 -0
  376. package/dist/query-filter/change-has-label.js +30 -0
  377. package/dist/query-filter/change-has-label.js.map +1 -0
  378. package/dist/query-filter/change-has-label.test.d.ts +2 -0
  379. package/dist/query-filter/change-has-label.test.d.ts.map +1 -0
  380. package/dist/query-filter/change-has-label.test.js +46 -0
  381. package/dist/query-filter/change-has-label.test.js.map +1 -0
  382. package/dist/query-filter/change-in-version.d.ts +16 -0
  383. package/dist/query-filter/change-in-version.d.ts.map +1 -0
  384. package/dist/query-filter/change-in-version.js +29 -0
  385. package/dist/query-filter/change-in-version.js.map +1 -0
  386. package/dist/query-filter/change-in-version.test.d.ts +2 -0
  387. package/dist/query-filter/change-in-version.test.d.ts.map +1 -0
  388. package/dist/query-filter/change-in-version.test.js +75 -0
  389. package/dist/query-filter/change-in-version.test.js.map +1 -0
  390. package/dist/query-filter/change-is-leaf-in-version.d.ts +16 -0
  391. package/dist/query-filter/change-is-leaf-in-version.d.ts.map +1 -0
  392. package/dist/query-filter/change-is-leaf-in-version.js +35 -0
  393. package/dist/query-filter/change-is-leaf-in-version.js.map +1 -0
  394. package/dist/query-filter/change-is-leaf-in-version.test.d.ts +2 -0
  395. package/dist/query-filter/change-is-leaf-in-version.test.d.ts.map +1 -0
  396. package/dist/query-filter/change-is-leaf-in-version.test.js +70 -0
  397. package/dist/query-filter/change-is-leaf-in-version.test.js.map +1 -0
  398. package/dist/query-filter/change-is-leaf-of.bench.d.ts +2 -0
  399. package/dist/query-filter/change-is-leaf-of.bench.d.ts.map +1 -0
  400. package/dist/query-filter/change-is-leaf-of.bench.js +132 -0
  401. package/dist/query-filter/change-is-leaf-of.bench.js.map +1 -0
  402. package/dist/query-filter/change-is-leaf-of.d.ts +29 -0
  403. package/dist/query-filter/change-is-leaf-of.d.ts.map +1 -0
  404. package/dist/query-filter/change-is-leaf-of.js +44 -0
  405. package/dist/query-filter/change-is-leaf-of.js.map +1 -0
  406. package/dist/query-filter/change-is-leaf-of.test.d.ts +2 -0
  407. package/dist/query-filter/change-is-leaf-of.test.d.ts.map +1 -0
  408. package/dist/query-filter/change-is-leaf-of.test.js +71 -0
  409. package/dist/query-filter/change-is-leaf-of.test.js.map +1 -0
  410. package/dist/query-filter/change-is-leaf.d.ts +18 -0
  411. package/dist/query-filter/change-is-leaf.d.ts.map +1 -0
  412. package/dist/query-filter/change-is-leaf.js +18 -0
  413. package/dist/query-filter/change-is-leaf.js.map +1 -0
  414. package/dist/query-filter/change-is-leaf.test.d.ts +2 -0
  415. package/dist/query-filter/change-is-leaf.test.d.ts.map +1 -0
  416. package/dist/query-filter/change-is-leaf.test.js +122 -0
  417. package/dist/query-filter/change-is-leaf.test.js.map +1 -0
  418. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts +16 -0
  419. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts.map +1 -0
  420. package/dist/query-filter/change-is-lowest-common-ancestor-of.js +55 -0
  421. package/dist/query-filter/change-is-lowest-common-ancestor-of.js.map +1 -0
  422. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.d.ts +2 -0
  423. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.d.ts.map +1 -0
  424. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js +155 -0
  425. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js.map +1 -0
  426. package/dist/query-filter/change-set-has-label.d.ts +25 -0
  427. package/dist/query-filter/change-set-has-label.d.ts.map +1 -0
  428. package/dist/query-filter/change-set-has-label.js +29 -0
  429. package/dist/query-filter/change-set-has-label.js.map +1 -0
  430. package/dist/query-filter/change-set-has-label.test.d.ts +2 -0
  431. package/dist/query-filter/change-set-has-label.test.d.ts.map +1 -0
  432. package/dist/query-filter/change-set-has-label.test.js +43 -0
  433. package/dist/query-filter/change-set-has-label.test.js.map +1 -0
  434. package/dist/query-filter/index.d.ts +9 -0
  435. package/dist/query-filter/index.d.ts.map +1 -0
  436. package/dist/query-filter/index.js +9 -0
  437. package/dist/query-filter/index.js.map +1 -0
  438. package/dist/query-filter/version-change-in-difference.d.ts +18 -0
  439. package/dist/query-filter/version-change-in-difference.d.ts.map +1 -0
  440. package/dist/query-filter/version-change-in-difference.js +25 -0
  441. package/dist/query-filter/version-change-in-difference.js.map +1 -0
  442. package/dist/query-filter/version-change-in-difference.test.d.ts +2 -0
  443. package/dist/query-filter/version-change-in-difference.test.d.ts.map +1 -0
  444. package/dist/query-filter/version-change-in-difference.test.js +77 -0
  445. package/dist/query-filter/version-change-in-difference.test.js.map +1 -0
  446. package/dist/query-filter/version-change-in-symmetric-difference.d.ts +19 -0
  447. package/dist/query-filter/version-change-in-symmetric-difference.d.ts.map +1 -0
  448. package/dist/query-filter/version-change-in-symmetric-difference.js +36 -0
  449. package/dist/query-filter/version-change-in-symmetric-difference.js.map +1 -0
  450. package/dist/query-filter/version-change-in-symmetric-difference.test.d.ts +2 -0
  451. package/dist/query-filter/version-change-in-symmetric-difference.test.d.ts.map +1 -0
  452. package/dist/query-filter/version-change-in-symmetric-difference.test.js +86 -0
  453. package/dist/query-filter/version-change-in-symmetric-difference.test.js.map +1 -0
  454. package/dist/server-api-handler/create-server-api-handler.d.ts +48 -0
  455. package/dist/server-api-handler/create-server-api-handler.d.ts.map +1 -0
  456. package/dist/server-api-handler/create-server-api-handler.js +68 -0
  457. package/dist/server-api-handler/create-server-api-handler.js.map +1 -0
  458. package/dist/server-api-handler/environment/create-in-memory-environment.d.ts +8 -0
  459. package/dist/server-api-handler/environment/create-in-memory-environment.d.ts.map +1 -0
  460. package/dist/server-api-handler/environment/create-in-memory-environment.js +93 -0
  461. package/dist/server-api-handler/environment/create-in-memory-environment.js.map +1 -0
  462. package/dist/server-api-handler/environment/create-in-memory-environment.test.d.ts +2 -0
  463. package/dist/server-api-handler/environment/create-in-memory-environment.test.d.ts.map +1 -0
  464. package/dist/server-api-handler/environment/create-in-memory-environment.test.js +102 -0
  465. package/dist/server-api-handler/environment/create-in-memory-environment.test.js.map +1 -0
  466. package/dist/server-api-handler/environment/environment.d.ts +53 -0
  467. package/dist/server-api-handler/environment/environment.d.ts.map +1 -0
  468. package/dist/server-api-handler/environment/environment.js +2 -0
  469. package/dist/server-api-handler/environment/environment.js.map +1 -0
  470. package/dist/server-api-handler/index.d.ts +3 -0
  471. package/dist/server-api-handler/index.d.ts.map +1 -0
  472. package/dist/server-api-handler/index.js +3 -0
  473. package/dist/server-api-handler/index.js.map +1 -0
  474. package/dist/server-api-handler/routes/get-v1.d.ts +3 -0
  475. package/dist/server-api-handler/routes/get-v1.d.ts.map +1 -0
  476. package/dist/server-api-handler/routes/get-v1.js +45 -0
  477. package/dist/server-api-handler/routes/get-v1.js.map +1 -0
  478. package/dist/server-api-handler/routes/get-v1.test.d.ts +2 -0
  479. package/dist/server-api-handler/routes/get-v1.test.d.ts.map +1 -0
  480. package/dist/server-api-handler/routes/get-v1.test.js +107 -0
  481. package/dist/server-api-handler/routes/get-v1.test.js.map +1 -0
  482. package/dist/server-api-handler/routes/new-v1.d.ts +3 -0
  483. package/dist/server-api-handler/routes/new-v1.d.ts.map +1 -0
  484. package/dist/server-api-handler/routes/new-v1.js +36 -0
  485. package/dist/server-api-handler/routes/new-v1.js.map +1 -0
  486. package/dist/server-api-handler/routes/new-v1.test.d.ts +2 -0
  487. package/dist/server-api-handler/routes/new-v1.test.d.ts.map +1 -0
  488. package/dist/server-api-handler/routes/new-v1.test.js +71 -0
  489. package/dist/server-api-handler/routes/new-v1.test.js.map +1 -0
  490. package/dist/server-api-handler/routes/pull-v1.d.ts +3 -0
  491. package/dist/server-api-handler/routes/pull-v1.d.ts.map +1 -0
  492. package/dist/server-api-handler/routes/pull-v1.js +41 -0
  493. package/dist/server-api-handler/routes/pull-v1.js.map +1 -0
  494. package/dist/server-api-handler/routes/pull-v1.test.d.ts +2 -0
  495. package/dist/server-api-handler/routes/pull-v1.test.d.ts.map +1 -0
  496. package/dist/server-api-handler/routes/pull-v1.test.js +145 -0
  497. package/dist/server-api-handler/routes/pull-v1.test.js.map +1 -0
  498. package/dist/server-api-handler/routes/push-v1.d.ts +3 -0
  499. package/dist/server-api-handler/routes/push-v1.d.ts.map +1 -0
  500. package/dist/server-api-handler/routes/push-v1.js +142 -0
  501. package/dist/server-api-handler/routes/push-v1.js.map +1 -0
  502. package/dist/server-api-handler/routes/push-v1.test.d.ts +2 -0
  503. package/dist/server-api-handler/routes/push-v1.test.d.ts.map +1 -0
  504. package/dist/server-api-handler/routes/push-v1.test.js +230 -0
  505. package/dist/server-api-handler/routes/push-v1.test.js.map +1 -0
  506. package/dist/snapshot/create-snapshot.d.ts +18 -0
  507. package/dist/snapshot/create-snapshot.d.ts.map +1 -0
  508. package/dist/snapshot/create-snapshot.js +33 -0
  509. package/dist/snapshot/create-snapshot.js.map +1 -0
  510. package/dist/snapshot/create-snapshot.test.d.ts +2 -0
  511. package/dist/snapshot/create-snapshot.test.d.ts.map +1 -0
  512. package/dist/snapshot/create-snapshot.test.js +54 -0
  513. package/dist/snapshot/create-snapshot.test.js.map +1 -0
  514. package/dist/snapshot/index.d.ts +3 -0
  515. package/dist/snapshot/index.d.ts.map +1 -0
  516. package/dist/snapshot/index.js +3 -0
  517. package/dist/snapshot/index.js.map +1 -0
  518. package/dist/snapshot/json-sha-256.d.ts +8 -0
  519. package/dist/snapshot/json-sha-256.d.ts.map +1 -0
  520. package/dist/snapshot/json-sha-256.js +29 -0
  521. package/dist/snapshot/json-sha-256.js.map +1 -0
  522. package/dist/snapshot/json-sha-256.test.d.ts +2 -0
  523. package/dist/snapshot/json-sha-256.test.d.ts.map +1 -0
  524. package/dist/snapshot/json-sha-256.test.js +10 -0
  525. package/dist/snapshot/json-sha-256.test.js.map +1 -0
  526. package/dist/snapshot/mock-json-snapshot.d.ts +8 -0
  527. package/dist/snapshot/mock-json-snapshot.d.ts.map +1 -0
  528. package/dist/snapshot/mock-json-snapshot.js +13 -0
  529. package/dist/snapshot/mock-json-snapshot.js.map +1 -0
  530. package/dist/sync/get-diffing-rows.d.ts +16 -0
  531. package/dist/sync/get-diffing-rows.d.ts.map +1 -0
  532. package/dist/sync/get-diffing-rows.js +62 -0
  533. package/dist/sync/get-diffing-rows.js.map +1 -0
  534. package/dist/sync/merge-state.d.ts +20 -0
  535. package/dist/sync/merge-state.d.ts.map +1 -0
  536. package/dist/sync/merge-state.js +237 -0
  537. package/dist/sync/merge-state.js.map +1 -0
  538. package/dist/sync/pull-from-server.d.ts +8 -0
  539. package/dist/sync/pull-from-server.d.ts.map +1 -0
  540. package/dist/sync/pull-from-server.js +115 -0
  541. package/dist/sync/pull-from-server.js.map +1 -0
  542. package/dist/sync/pull-from-server.test.d.ts +2 -0
  543. package/dist/sync/pull-from-server.test.d.ts.map +1 -0
  544. package/dist/sync/pull-from-server.test.js +325 -0
  545. package/dist/sync/pull-from-server.test.js.map +1 -0
  546. package/dist/sync/push-to-server.d.ts +12 -0
  547. package/dist/sync/push-to-server.d.ts.map +1 -0
  548. package/dist/sync/push-to-server.js +35 -0
  549. package/dist/sync/push-to-server.js.map +1 -0
  550. package/dist/sync/push-to-server.test.d.ts +2 -0
  551. package/dist/sync/push-to-server.test.d.ts.map +1 -0
  552. package/dist/sync/push-to-server.test.js +304 -0
  553. package/dist/sync/push-to-server.test.js.map +1 -0
  554. package/dist/sync/sync-process.d.ts +7 -0
  555. package/dist/sync/sync-process.d.ts.map +1 -0
  556. package/dist/sync/sync-process.js +79 -0
  557. package/dist/sync/sync-process.js.map +1 -0
  558. package/dist/sync/sync-process.test.d.ts +2 -0
  559. package/dist/sync/sync-process.test.d.ts.map +1 -0
  560. package/dist/sync/sync-process.test.js +255 -0
  561. package/dist/sync/sync-process.test.js.map +1 -0
  562. package/dist/version/create-version.d.ts +27 -0
  563. package/dist/version/create-version.d.ts.map +1 -0
  564. package/dist/version/create-version.js +62 -0
  565. package/dist/version/create-version.js.map +1 -0
  566. package/dist/version/create-version.test.d.ts +2 -0
  567. package/dist/version/create-version.test.d.ts.map +1 -0
  568. package/dist/version/create-version.test.js +126 -0
  569. package/dist/version/create-version.test.js.map +1 -0
  570. package/dist/version/index.d.ts +8 -0
  571. package/dist/version/index.d.ts.map +1 -0
  572. package/dist/version/index.js +8 -0
  573. package/dist/version/index.js.map +1 -0
  574. package/dist/version/merge-version.d.ts +8 -0
  575. package/dist/version/merge-version.d.ts.map +1 -0
  576. package/dist/version/merge-version.js +77 -0
  577. package/dist/version/merge-version.js.map +1 -0
  578. package/dist/version/merge-version.test.d.ts +2 -0
  579. package/dist/version/merge-version.test.d.ts.map +1 -0
  580. package/dist/version/merge-version.test.js +434 -0
  581. package/dist/version/merge-version.test.js.map +1 -0
  582. package/dist/version/switch-version.d.ts +27 -0
  583. package/dist/version/switch-version.d.ts.map +1 -0
  584. package/dist/version/switch-version.js +91 -0
  585. package/dist/version/switch-version.js.map +1 -0
  586. package/dist/version/switch-version.test.d.ts +2 -0
  587. package/dist/version/switch-version.test.d.ts.map +1 -0
  588. package/dist/version/switch-version.test.js +230 -0
  589. package/dist/version/switch-version.test.js.map +1 -0
  590. package/dist/version/update-changes-in-version.d.ts +13 -0
  591. package/dist/version/update-changes-in-version.d.ts.map +1 -0
  592. package/dist/version/update-changes-in-version.js +56 -0
  593. package/dist/version/update-changes-in-version.js.map +1 -0
  594. package/dist/version/update-changes-in-version.test.d.ts +2 -0
  595. package/dist/version/update-changes-in-version.test.d.ts.map +1 -0
  596. package/dist/version/update-changes-in-version.test.js +323 -0
  597. package/dist/version/update-changes-in-version.test.js.map +1 -0
  598. package/node_modules/@lix-js/server-api-schema/.prettierrc.json +3 -0
  599. package/node_modules/@lix-js/server-api-schema/.vscode/extensions.json +3 -0
  600. package/node_modules/@lix-js/server-api-schema/dist/schema.d.ts +384 -0
  601. package/node_modules/@lix-js/server-api-schema/package.json +21 -0
  602. package/node_modules/@lix-js/server-api-schema/src/schema.yaml +290 -0
  603. package/node_modules/@lix-js/server-api-schema/tsconfig.json +20 -0
  604. package/node_modules/sqlite-wasm-kysely/README.md +11 -0
  605. package/node_modules/sqlite-wasm-kysely/dist/dialect.d.ts +11 -0
  606. package/node_modules/sqlite-wasm-kysely/dist/dialect.js +13 -0
  607. package/node_modules/sqlite-wasm-kysely/dist/dialect.js.map +1 -0
  608. package/node_modules/sqlite-wasm-kysely/dist/index.d.ts +2 -0
  609. package/node_modules/sqlite-wasm-kysely/dist/index.js +3 -0
  610. package/node_modules/sqlite-wasm-kysely/dist/index.js.map +1 -0
  611. package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.d.ts +5 -0
  612. package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.js +34 -0
  613. package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.js.map +1 -0
  614. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.d.ts +8 -0
  615. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.js +57 -0
  616. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.js.map +1 -0
  617. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.d.ts +18 -0
  618. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.js +2 -0
  619. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.js.map +1 -0
  620. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.d.ts +13 -0
  621. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.js +57 -0
  622. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.js.map +1 -0
  623. package/node_modules/sqlite-wasm-kysely/dist/kysely/index.d.ts +4 -0
  624. package/node_modules/sqlite-wasm-kysely/dist/kysely/index.js +4 -0
  625. package/node_modules/sqlite-wasm-kysely/dist/kysely/index.js.map +1 -0
  626. package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.d.ts +3 -0
  627. package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.js +5 -0
  628. package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.js.map +1 -0
  629. package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.d.ts +9 -0
  630. package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.js +12 -0
  631. package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.js.map +1 -0
  632. package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.d.ts +3 -0
  633. package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.js +22 -0
  634. package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.js.map +1 -0
  635. package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.d.ts +7 -0
  636. package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.js +15 -0
  637. package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.js.map +1 -0
  638. package/node_modules/sqlite-wasm-kysely/dist/util/index.d.ts +5 -0
  639. package/node_modules/sqlite-wasm-kysely/dist/util/index.js +5 -0
  640. package/node_modules/sqlite-wasm-kysely/dist/util/index.js.map +1 -0
  641. package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.d.ts +1 -0
  642. package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.js +13 -0
  643. package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.js.map +1 -0
  644. package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.d.ts +7 -0
  645. package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.js +17 -0
  646. package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.js.map +1 -0
  647. package/node_modules/sqlite-wasm-kysely/package.json +34 -0
  648. package/node_modules/sqlite-wasm-kysely/src/dialect.ts +15 -0
  649. package/node_modules/sqlite-wasm-kysely/src/index.ts +2 -0
  650. package/node_modules/sqlite-wasm-kysely/src/kysely/ConnectionMutex.ts +23 -0
  651. package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmConnection.ts +57 -0
  652. package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmDialectConfig.ts +19 -0
  653. package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmDriver.ts +58 -0
  654. package/node_modules/sqlite-wasm-kysely/src/kysely/index.ts +4 -0
  655. package/node_modules/sqlite-wasm-kysely/src/kysely/sqliteModule.ts +7 -0
  656. package/node_modules/sqlite-wasm-kysely/src/util/contentFromDatabase.ts +13 -0
  657. package/node_modules/sqlite-wasm-kysely/src/util/createInMemoryDatabase.ts +30 -0
  658. package/node_modules/sqlite-wasm-kysely/src/util/importDatabase.ts +34 -0
  659. package/node_modules/sqlite-wasm-kysely/src/util/index.ts +5 -0
  660. package/node_modules/sqlite-wasm-kysely/src/util/loadDatabaseInMemory.ts +13 -0
  661. package/node_modules/sqlite-wasm-kysely/src/util/sqliteWasmBinary.ts +20 -0
  662. package/package.json +52 -0
  663. package/src/account/create-account.test.ts +26 -0
  664. package/src/account/create-account.ts +26 -0
  665. package/src/account/database-schema.test.ts +187 -0
  666. package/src/account/database-schema.ts +58 -0
  667. package/src/account/index.ts +3 -0
  668. package/src/account/switch-account.test.ts +63 -0
  669. package/src/account/switch-account.ts +39 -0
  670. package/src/change/apply-changes.test.ts +268 -0
  671. package/src/change/apply-changes.ts +114 -0
  672. package/src/change/create-change.test.ts +296 -0
  673. package/src/change/create-change.ts +129 -0
  674. package/src/change/index.ts +2 -0
  675. package/src/change/mock-change.ts +21 -0
  676. package/src/change-conflict/create-change-conflict.test.ts +173 -0
  677. package/src/change-conflict/create-change-conflict.ts +105 -0
  678. package/src/change-conflict/detect-change-conflicts.test.ts +215 -0
  679. package/src/change-conflict/detect-change-conflicts.ts +65 -0
  680. package/src/change-conflict/detect-diverging-entity-conflict.test.ts +228 -0
  681. package/src/change-conflict/detect-diverging-entity-conflict.ts +82 -0
  682. package/src/change-conflict/garbage-collect-change-conflicts.test.ts +219 -0
  683. package/src/change-conflict/garbage-collect-change-conflicts.ts +96 -0
  684. package/src/change-conflict/index.ts +3 -0
  685. package/src/change-conflict/resolve-conflict-by-selecting.test.ts +118 -0
  686. package/src/change-conflict/resolve-conflict-by-selecting.ts +66 -0
  687. package/src/change-conflict/update-change-conflicts.ts +79 -0
  688. package/src/change-queue/change-queue-settled.test.ts +56 -0
  689. package/src/change-queue/change-queue-settled.ts +31 -0
  690. package/src/change-queue/file-handlers.ts +273 -0
  691. package/src/change-queue/index.ts +1 -0
  692. package/src/change-queue/init-change-queue.test.ts +457 -0
  693. package/src/change-queue/init-change-queue.ts +99 -0
  694. package/src/change-queue/with-skip-change-queue.test.ts +158 -0
  695. package/src/change-queue/with-skip-change-queue.ts +33 -0
  696. package/src/change-schema/README.md +3 -0
  697. package/src/change-schema/index.ts +4 -0
  698. package/src/change-schema/types.test-d.ts +52 -0
  699. package/src/change-schema/types.ts +53 -0
  700. package/src/change-set/change-set-element-in-symmetric-difference.test.ts +128 -0
  701. package/src/change-set/change-set-element-in-symmetric-difference.ts +52 -0
  702. package/src/change-set/create-change-set.test.ts +43 -0
  703. package/src/change-set/create-change-set.ts +41 -0
  704. package/src/change-set/index.ts +2 -0
  705. package/src/database/apply-schema.ts +323 -0
  706. package/src/database/execute-sync.test.ts +152 -0
  707. package/src/database/execute-sync.ts +47 -0
  708. package/src/database/index.ts +4 -0
  709. package/src/database/init-db.test.ts +484 -0
  710. package/src/database/init-db.ts +94 -0
  711. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.test.ts +204 -0
  712. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.ts +48 -0
  713. package/src/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.ts +204 -0
  714. package/src/database/kysely-plugin/parse-jsonb-plugin-v2.ts +194 -0
  715. package/src/database/kysely-plugin/serialize-jsonb-plugin.test.ts +132 -0
  716. package/src/database/kysely-plugin/serialize-jsonb-plugin.ts +122 -0
  717. package/src/database/mutation-log/database-schema.ts +128 -0
  718. package/src/database/mutation-log/lix-session.ts +19 -0
  719. package/src/database/schema.ts +282 -0
  720. package/src/discussion/create-comment.ts +21 -0
  721. package/src/discussion/create-discussion.test.ts +76 -0
  722. package/src/discussion/create-discussion.ts +51 -0
  723. package/src/discussion/index.ts +2 -0
  724. package/src/file/index.ts +1 -0
  725. package/src/file/validate-file-path.test.ts +44 -0
  726. package/src/file/validate-file-path.ts +60 -0
  727. package/src/index.ts +16 -0
  728. package/src/key-value/database-schema.test.ts +119 -0
  729. package/src/key-value/database-schema.ts +54 -0
  730. package/src/lix/index.ts +6 -0
  731. package/src/lix/merge.get-leaf-changes-only-in-source.test.ts +143 -0
  732. package/src/lix/merge.get-leaf-changes-only-in-source.ts +46 -0
  733. package/src/lix/merge.test.ts +870 -0
  734. package/src/lix/merge.ts +244 -0
  735. package/src/lix/new-lix.test.ts +23 -0
  736. package/src/lix/new-lix.ts +30 -0
  737. package/src/lix/open-lix-in-memory.test.ts +30 -0
  738. package/src/lix/open-lix-in-memory.ts +28 -0
  739. package/src/lix/open-lix.test.ts +33 -0
  740. package/src/lix/open-lix.ts +103 -0
  741. package/src/own-entity-change-control/apply-own-entity-change.test.ts +365 -0
  742. package/src/own-entity-change-control/apply-own-entity-change.ts +110 -0
  743. package/src/own-entity-change-control/change-controlled-tables.test.ts +69 -0
  744. package/src/own-entity-change-control/change-controlled-tables.ts +103 -0
  745. package/src/own-entity-change-control/database-triggers.test.ts +259 -0
  746. package/src/own-entity-change-control/database-triggers.ts +189 -0
  747. package/src/own-entity-change-control/index.ts +1 -0
  748. package/src/own-entity-change-control/with-skip-own-change-control.test.ts +57 -0
  749. package/src/own-entity-change-control/with-skip-own-change-control.ts +30 -0
  750. package/src/plugin/index.ts +6 -0
  751. package/src/plugin/lix-plugin.test-d.ts +45 -0
  752. package/src/plugin/lix-plugin.ts +128 -0
  753. package/src/plugin/load-plugin.ts +28 -0
  754. package/src/plugin/with-transaction.ts +22 -0
  755. package/src/query-filter/change-conflict-in-version.test.ts +62 -0
  756. package/src/query-filter/change-conflict-in-version.ts +25 -0
  757. package/src/query-filter/change-has-label.test.ts +52 -0
  758. package/src/query-filter/change-has-label.ts +41 -0
  759. package/src/query-filter/change-in-version.test.ts +82 -0
  760. package/src/query-filter/change-in-version.ts +31 -0
  761. package/src/query-filter/change-is-leaf-in-version.test.ts +77 -0
  762. package/src/query-filter/change-is-leaf-in-version.ts +36 -0
  763. package/src/query-filter/change-is-leaf-of.bench.ts +175 -0
  764. package/src/query-filter/change-is-leaf-of.test.ts +84 -0
  765. package/src/query-filter/change-is-leaf-of.ts +46 -0
  766. package/src/query-filter/change-is-leaf.test.ts +140 -0
  767. package/src/query-filter/change-is-leaf.ts +25 -0
  768. package/src/query-filter/change-is-lowest-common-ancestor-of.test.ts +173 -0
  769. package/src/query-filter/change-is-lowest-common-ancestor-of.ts +57 -0
  770. package/src/query-filter/change-set-has-label.test.ts +50 -0
  771. package/src/query-filter/change-set-has-label.ts +36 -0
  772. package/src/query-filter/index.ts +8 -0
  773. package/src/query-filter/version-change-in-difference.test.ts +96 -0
  774. package/src/query-filter/version-change-in-difference.ts +37 -0
  775. package/src/query-filter/version-change-in-symmetric-difference.test.ts +105 -0
  776. package/src/query-filter/version-change-in-symmetric-difference.ts +52 -0
  777. package/src/server-api-handler/create-server-api-handler.ts +84 -0
  778. package/src/server-api-handler/environment/create-in-memory-environment.test.ts +130 -0
  779. package/src/server-api-handler/environment/create-in-memory-environment.ts +111 -0
  780. package/src/server-api-handler/environment/environment.ts +43 -0
  781. package/src/server-api-handler/index.ts +5 -0
  782. package/src/server-api-handler/routes/get-v1.test.ts +146 -0
  783. package/src/server-api-handler/routes/get-v1.ts +63 -0
  784. package/src/server-api-handler/routes/new-v1.test.ts +102 -0
  785. package/src/server-api-handler/routes/new-v1.ts +44 -0
  786. package/src/server-api-handler/routes/pull-v1.test.ts +200 -0
  787. package/src/server-api-handler/routes/pull-v1.ts +57 -0
  788. package/src/server-api-handler/routes/push-v1.test.ts +301 -0
  789. package/src/server-api-handler/routes/push-v1.ts +180 -0
  790. package/src/snapshot/create-snapshot.test.ts +68 -0
  791. package/src/snapshot/create-snapshot.ts +40 -0
  792. package/src/snapshot/index.ts +2 -0
  793. package/src/snapshot/json-sha-256.test.ts +12 -0
  794. package/src/snapshot/json-sha-256.ts +35 -0
  795. package/src/snapshot/mock-json-snapshot.ts +14 -0
  796. package/src/sync/get-diffing-rows.ts +96 -0
  797. package/src/sync/merge-state.ts +310 -0
  798. package/src/sync/pull-from-server.test.ts +410 -0
  799. package/src/sync/pull-from-server.ts +146 -0
  800. package/src/sync/push-to-server.test.ts +387 -0
  801. package/src/sync/push-to-server.ts +47 -0
  802. package/src/sync/sync-process.test.ts +327 -0
  803. package/src/sync/sync-process.ts +97 -0
  804. package/src/version/create-version.test.ts +149 -0
  805. package/src/version/create-version.ts +76 -0
  806. package/src/version/index.ts +8 -0
  807. package/src/version/merge-version.test.ts +530 -0
  808. package/src/version/merge-version.ts +96 -0
  809. package/src/version/switch-version.test.ts +295 -0
  810. package/src/version/switch-version.ts +110 -0
  811. package/src/version/update-changes-in-version.test.ts +371 -0
  812. package/src/version/update-changes-in-version.ts +66 -0
@@ -0,0 +1,870 @@
1
+ import { test, expect, vi } from "vitest";
2
+ import { openLixInMemory } from "./open-lix-in-memory.js";
3
+ import { newLixFile } from "./new-lix.js";
4
+ import { merge } from "./merge.js";
5
+ import type {
6
+ ChangeEdge,
7
+ NewChange,
8
+ NewSnapshot,
9
+ Snapshot,
10
+ } from "../database/schema.js";
11
+ import type { LixPlugin } from "../plugin/lix-plugin.js";
12
+ import { mockJsonSnapshot } from "../snapshot/mock-json-snapshot.js";
13
+ import { createChangeSet } from "../change-set/create-change-set.js";
14
+ import { createDiscussion } from "../discussion/create-discussion.js";
15
+ import { createComment } from "../discussion/create-comment.js";
16
+ import { changeQueueSettled } from "../change-queue/change-queue-settled.js";
17
+
18
+ test("it should copy changes from the sourceLix into the targetLix that do not exist in targetLix yet", async () => {
19
+ const mockSnapshots = [
20
+ mockJsonSnapshot({ id: "mock-id", color: "red" }),
21
+ mockJsonSnapshot({ id: "mock-id", color: "blue" }),
22
+ mockJsonSnapshot({ id: "mock-id", color: "green" }),
23
+ ];
24
+
25
+ const mockChanges: NewChange[] = [
26
+ {
27
+ id: "1",
28
+ entity_id: "value1",
29
+ schema_key: "mock",
30
+ snapshot_id: mockSnapshots[0]!.id,
31
+ file_id: "mock-file",
32
+ plugin_key: "mock-plugin",
33
+ },
34
+ {
35
+ id: "2",
36
+ entity_id: "value1",
37
+ schema_key: "mock",
38
+ snapshot_id: mockSnapshots[1]!.id,
39
+ file_id: "mock-file",
40
+ plugin_key: "mock-plugin",
41
+ },
42
+ {
43
+ id: "3",
44
+ entity_id: "value1",
45
+ schema_key: "mock",
46
+ snapshot_id: mockSnapshots[2]!.id,
47
+ file_id: "mock-file",
48
+ plugin_key: "mock-plugin",
49
+ },
50
+ ];
51
+
52
+ const mockEdges: ChangeEdge[] = [{ parent_id: "2", child_id: "3" }];
53
+
54
+ const mockPlugin: LixPlugin = {
55
+ key: "mock-plugin",
56
+ detectConflicts: vi.fn().mockResolvedValue([]),
57
+ applyChanges: vi.fn().mockResolvedValue({ fileData: new Uint8Array() }),
58
+ };
59
+
60
+ const sourceLix = await openLixInMemory({
61
+ blob: await newLixFile(),
62
+ providePlugins: [mockPlugin],
63
+ });
64
+
65
+ const targetLix = await openLixInMemory({
66
+ blob: await newLixFile(),
67
+ providePlugins: [mockPlugin],
68
+ });
69
+
70
+ await sourceLix.db
71
+ .insertInto("snapshot")
72
+ .values(
73
+ [mockSnapshots[0]!, mockSnapshots[1]!, mockSnapshots[2]!].map((s) => ({
74
+ content: s.content,
75
+ }))
76
+ )
77
+ .execute();
78
+
79
+ await sourceLix.db
80
+ .insertInto("change")
81
+ .values([mockChanges[0]!, mockChanges[1]!, mockChanges[2]!])
82
+ .execute();
83
+
84
+ await sourceLix.db
85
+ .insertInto("change_edge")
86
+ .values([mockEdges[0]!])
87
+ .execute();
88
+
89
+ await targetLix.db
90
+ .insertInto("snapshot")
91
+ .values(
92
+ [mockSnapshots[0]!].map((s) => {
93
+ return { content: s.content };
94
+ })
95
+ )
96
+ .execute();
97
+ await targetLix.db.insertInto("change").values([mockChanges[0]!]).execute();
98
+
99
+ await targetLix.db
100
+ .insertInto("file")
101
+ .values({
102
+ id: "mock-file",
103
+ path: "/mock-file.json",
104
+ data: new TextEncoder().encode(JSON.stringify({})),
105
+ })
106
+ .execute();
107
+
108
+ await merge({ sourceLix, targetLix });
109
+
110
+ const changes = await targetLix.db
111
+ .selectFrom("change")
112
+ .select("id")
113
+ .where("schema_key", "=", "mock")
114
+ .execute();
115
+
116
+ expect(changes.map((c) => c.id)).toStrictEqual([
117
+ mockChanges[0]?.id,
118
+ mockChanges[1]?.id,
119
+ mockChanges[2]?.id,
120
+ ]);
121
+
122
+ const snapshots = await targetLix.db
123
+ .selectFrom("snapshot")
124
+ .select("id")
125
+ .execute();
126
+
127
+ expect(snapshots.map((c) => c.id)).toStrictEqual(
128
+ expect.arrayContaining([
129
+ "no-content",
130
+ mockSnapshots[0]?.id,
131
+ mockSnapshots[1]?.id,
132
+ mockSnapshots[2]?.id,
133
+ ])
134
+ );
135
+
136
+ const edges = await targetLix.db
137
+ .selectFrom("change_edge")
138
+ .selectAll()
139
+ .execute();
140
+
141
+ expect(edges).toEqual(
142
+ expect.arrayContaining([expect.objectContaining(mockEdges[0])])
143
+ );
144
+
145
+ expect(mockPlugin.applyChanges).toHaveBeenCalledTimes(1);
146
+ // expect(mockPlugin.detectConflicts).toHaveBeenCalledTimes(1);
147
+ });
148
+
149
+ test.todo("it should save change conflicts", async () => {
150
+ const mockSnapshots = [
151
+ mockJsonSnapshot({ id: "mock-id", color: "red" }),
152
+ mockJsonSnapshot({ id: "mock-id", color: "blue" }),
153
+ mockJsonSnapshot({ id: "mock-id", color: "green" }),
154
+ ];
155
+
156
+ const mockChanges: NewChange[] = [
157
+ {
158
+ id: "1",
159
+ schema_key: "mock",
160
+ entity_id: "value1",
161
+ snapshot_id: mockSnapshots[0]!.id,
162
+ file_id: "mock-file",
163
+ plugin_key: "mock-plugin",
164
+ },
165
+ {
166
+ id: "2",
167
+ schema_key: "mock",
168
+ entity_id: "value1",
169
+ snapshot_id: mockSnapshots[1]!.id,
170
+ file_id: "mock-file",
171
+ plugin_key: "mock-plugin",
172
+ },
173
+ {
174
+ id: "3",
175
+ schema_key: "mock",
176
+ entity_id: "value1",
177
+ snapshot_id: mockSnapshots[2]!.id,
178
+ file_id: "mock-file",
179
+ plugin_key: "mock-plugin",
180
+ },
181
+ ];
182
+
183
+ const mockPlugin: LixPlugin = {
184
+ key: "mock-plugin",
185
+ detectConflicts: vi.fn().mockResolvedValue([
186
+ {
187
+ change_id: mockChanges[1]!.id!,
188
+ conflicting_change_id: mockChanges[2]!.id!,
189
+ },
190
+ ]),
191
+ applyChanges: vi.fn().mockResolvedValue({ fileData: new Uint8Array() }),
192
+ };
193
+
194
+ const sourceLix = await openLixInMemory({
195
+ blob: await newLixFile(),
196
+ providePlugins: [mockPlugin],
197
+ });
198
+ const targetLix = await openLixInMemory({
199
+ blob: await newLixFile(),
200
+ providePlugins: [mockPlugin],
201
+ });
202
+
203
+ await sourceLix.db
204
+ .insertInto("change")
205
+ .values([mockChanges[0]!, mockChanges[2]!])
206
+ .execute();
207
+
208
+ await sourceLix.db
209
+ .insertInto("snapshot")
210
+ .values(
211
+ [mockSnapshots[0]!, mockSnapshots[2]!].map((s) => {
212
+ return { content: s.content };
213
+ })
214
+ )
215
+ .execute();
216
+
217
+ await targetLix.db
218
+ .insertInto("change")
219
+ .values([mockChanges[0]!, mockChanges[1]!])
220
+ .execute();
221
+
222
+ await targetLix.db
223
+ .insertInto("snapshot")
224
+ .values(
225
+ [mockSnapshots[0]!, mockSnapshots[2]!].map((s) => {
226
+ return { content: s.content };
227
+ })
228
+ )
229
+ .execute();
230
+
231
+ await targetLix.db
232
+ .insertInto("file")
233
+ .values({
234
+ id: "mock-file",
235
+ path: "/mock-file.json",
236
+ data: new TextEncoder().encode(JSON.stringify({})),
237
+ })
238
+ .execute();
239
+
240
+ await merge({ sourceLix, targetLix });
241
+
242
+ // const conflicts = await targetLix.db
243
+ // .selectFrom("conflict")
244
+ // .select(["change_id", "conflicting_change_id"])
245
+ // .execute();
246
+
247
+ // expect(conflicts.length).toBe(1);
248
+ // expect(conflicts[0]).toEqual({
249
+ // change_id: mockChanges[1]!.id,
250
+ // conflicting_change_id: mockChanges[2]!.id,
251
+ // });
252
+ });
253
+
254
+ test("diffing should not be invoked to prevent the generation of duplicate changes", async () => {
255
+ const commonSnapshots = [mockJsonSnapshot({ id: "mock-id", color: "red" })];
256
+
257
+ const commonChanges: NewChange[] = [
258
+ {
259
+ id: "1",
260
+ schema_key: "mock",
261
+ snapshot_id: commonSnapshots[0]!.id,
262
+ entity_id: "value1",
263
+ file_id: "mock-file",
264
+ plugin_key: "mock-plugin",
265
+ },
266
+ ];
267
+
268
+ const snapshotsOnlyInTargetLix: NewSnapshot[] = [];
269
+ const changesOnlyInTargetLix: NewChange[] = [];
270
+
271
+ const snapshotsOnlyInSourceLix: Snapshot[] = [
272
+ mockJsonSnapshot({ id: "mock-id", color: "blue" }),
273
+ ];
274
+ const changesOnlyInSourceLix: NewChange[] = [
275
+ {
276
+ id: "2",
277
+ schema_key: "mock",
278
+ entity_id: "value1",
279
+ snapshot_id: snapshotsOnlyInSourceLix[0]!.id,
280
+ file_id: "mock-file",
281
+ plugin_key: "mock-plugin",
282
+ },
283
+ ];
284
+
285
+ const mockPluginInSourceLix: LixPlugin = {
286
+ key: "mock-plugin",
287
+ detectChanges: vi.fn().mockResolvedValue([]),
288
+ detectConflicts: vi.fn().mockResolvedValue([]),
289
+ applyChanges: vi.fn().mockResolvedValue({ fileData: new Uint8Array() }),
290
+ };
291
+
292
+ const mockPluginInTargetLix: LixPlugin = {
293
+ key: "mock-plugin",
294
+ detectChangesGlob: "*",
295
+ detectChanges: vi.fn().mockResolvedValue([]),
296
+ detectConflicts: vi.fn().mockResolvedValue([]),
297
+ applyChanges: vi.fn().mockResolvedValue({ fileData: new Uint8Array() }),
298
+ };
299
+
300
+ const sourceLix = await openLixInMemory({
301
+ blob: await newLixFile(),
302
+ providePlugins: [mockPluginInSourceLix],
303
+ });
304
+
305
+ const targetLix = await openLixInMemory({
306
+ blob: await newLixFile(),
307
+ providePlugins: [mockPluginInTargetLix],
308
+ });
309
+
310
+ await sourceLix.db
311
+ .insertInto("snapshot")
312
+ .values(
313
+ [...commonSnapshots, ...snapshotsOnlyInSourceLix].map((s) => {
314
+ return { content: s.content };
315
+ })
316
+ )
317
+ .execute();
318
+
319
+ await sourceLix.db
320
+ .insertInto("change")
321
+ .values([...commonChanges, ...changesOnlyInSourceLix])
322
+ .execute();
323
+
324
+ await targetLix.db
325
+ .insertInto("snapshot")
326
+ .values(
327
+ [...commonSnapshots, ...snapshotsOnlyInTargetLix].map((s) => {
328
+ return { content: s.content };
329
+ })
330
+ )
331
+ .execute();
332
+
333
+ await targetLix.db
334
+ .insertInto("change")
335
+ .values([...commonChanges, ...changesOnlyInTargetLix])
336
+ .execute();
337
+
338
+ await targetLix.db
339
+ .insertInto("file")
340
+ .values({
341
+ id: "mock-file",
342
+ path: "/mock-file.json",
343
+ data: new TextEncoder().encode(JSON.stringify({})),
344
+ })
345
+ .execute();
346
+
347
+ await merge({ sourceLix, targetLix });
348
+
349
+ expect(mockPluginInSourceLix.detectChanges).toHaveBeenCalledTimes(0);
350
+ // once for the mock file insert
351
+ expect(mockPluginInTargetLix.detectChanges).toHaveBeenCalledTimes(1);
352
+ });
353
+
354
+ // https://github.com/opral/lix-sdk/issues/126
355
+ test.todo("it should apply changes that are not conflicting", async () => {
356
+ const mockSnapshots: Snapshot[] = [
357
+ mockJsonSnapshot({ color: "red" }),
358
+ mockJsonSnapshot({ color: "blue" }),
359
+ ];
360
+
361
+ const mockChanges: NewChange[] = [
362
+ {
363
+ id: "1",
364
+ schema_key: "mock",
365
+ entity_id: "value1",
366
+ snapshot_id: mockSnapshots[0]!.id,
367
+ file_id: "mock-file",
368
+ plugin_key: "mock-plugin",
369
+ },
370
+ {
371
+ id: "2",
372
+ entity_id: "value1",
373
+ schema_key: "mock",
374
+ snapshot_id: mockSnapshots[1]!.id,
375
+ file_id: "mock-file",
376
+ plugin_key: "mock-plugin",
377
+ },
378
+ ];
379
+
380
+ const edges: ChangeEdge[] = [{ parent_id: "1", child_id: "2" }];
381
+
382
+ const mockPlugin: LixPlugin = {
383
+ key: "mock-plugin",
384
+ applyChanges: async ({ lix, changes }) => {
385
+ const lastChange = changes[changes.length - 1];
386
+ const snapshot = await lix.db
387
+ .selectFrom("snapshot")
388
+ .where("id", "=", lastChange!.snapshot_id)
389
+ .selectAll()
390
+ .executeTakeFirstOrThrow();
391
+ const fileData = new TextEncoder().encode(
392
+ JSON.stringify(snapshot.content ?? {})
393
+ );
394
+ return { fileData };
395
+ },
396
+ };
397
+
398
+ const sourceLix = await openLixInMemory({
399
+ blob: await newLixFile(),
400
+ providePlugins: [mockPlugin],
401
+ });
402
+
403
+ const targetLix = await openLixInMemory({
404
+ blob: await newLixFile(),
405
+ providePlugins: [mockPlugin],
406
+ });
407
+
408
+ await sourceLix.db
409
+ .insertInto("snapshot")
410
+ .values(
411
+ [mockSnapshots[0]!, mockSnapshots[1]!].map((s) => ({
412
+ content: s.content,
413
+ }))
414
+ )
415
+ .execute();
416
+
417
+ await sourceLix.db
418
+ .insertInto("change")
419
+ .values([mockChanges[0]!, mockChanges[1]!])
420
+ .execute();
421
+
422
+ await sourceLix.db.insertInto("change_edge").values([edges[0]!]).execute();
423
+
424
+ await targetLix.db
425
+ .insertInto("snapshot")
426
+ .values(
427
+ [mockSnapshots[0]!].map((s) => {
428
+ return { content: s.content };
429
+ })
430
+ )
431
+ .execute();
432
+
433
+ await targetLix.db.insertInto("change").values([mockChanges[0]!]).execute();
434
+
435
+ await targetLix.db
436
+ .insertInto("file")
437
+ .values({
438
+ id: "mock-file",
439
+ path: "/mock-file.json",
440
+ data: new TextEncoder().encode(JSON.stringify({})),
441
+ })
442
+ .execute();
443
+
444
+ await changeQueueSettled({ lix: targetLix });
445
+
446
+ await merge({ sourceLix, targetLix });
447
+ const changes = await targetLix.db
448
+ .selectFrom("change")
449
+ .innerJoin("snapshot", "snapshot.id", "change.snapshot_id")
450
+ .selectAll("change")
451
+ .select("snapshot.content")
452
+ .execute();
453
+
454
+ // const conflicts = await targetLix.db
455
+ // .selectFrom("conflict")
456
+ // .selectAll()
457
+ // .execute();
458
+
459
+ const file = await targetLix.db
460
+ .selectFrom("file")
461
+ .selectAll()
462
+ .executeTakeFirstOrThrow();
463
+
464
+ expect(changes.length).toBe(2);
465
+ // expect(conflicts.length).toBe(0);
466
+ expect(file.data).toEqual(
467
+ new TextEncoder().encode(JSON.stringify(mockSnapshots[1]!.content!))
468
+ );
469
+ });
470
+
471
+ test.todo(
472
+ "subsequent merges should not lead to duplicate changes and/or conflicts",
473
+ async () => {
474
+ const commonSnapshots = [mockJsonSnapshot({ id: "mock-id", color: "red" })];
475
+ const commonChanges: NewChange[] = [
476
+ {
477
+ id: "1",
478
+ schema_key: "mock",
479
+ entity_id: "value1",
480
+ snapshot_id: commonSnapshots[0]!.id,
481
+ file_id: "mock-file",
482
+ plugin_key: "mock-plugin",
483
+ },
484
+ ];
485
+ const snapshotsOnlyInTargetLix: NewSnapshot[] = [];
486
+ const changesOnlyInTargetLix: NewChange[] = [];
487
+
488
+ const snapshotsOnlyInSourceLix: Snapshot[] = [
489
+ mockJsonSnapshot({ id: "mock-id", color: "blue" }),
490
+ ];
491
+ const changesOnlyInSourceLix: NewChange[] = [
492
+ {
493
+ id: "2",
494
+ schema_key: "mock",
495
+ entity_id: "value1",
496
+ snapshot_id: snapshotsOnlyInSourceLix[0]!.id,
497
+ file_id: "mock-file",
498
+ plugin_key: "mock-plugin",
499
+ },
500
+ ];
501
+
502
+ const mockPlugin: LixPlugin = {
503
+ key: "mock-plugin",
504
+ detectConflicts: vi.fn().mockResolvedValue([
505
+ {
506
+ change_id: commonChanges[0]!.id!,
507
+ conflicting_change_id: changesOnlyInSourceLix[0]!.id!,
508
+ },
509
+ ]),
510
+ applyChanges: vi.fn().mockResolvedValue({ fileData: new Uint8Array() }),
511
+ };
512
+
513
+ const sourceLix = await openLixInMemory({
514
+ blob: await newLixFile(),
515
+ providePlugins: [mockPlugin],
516
+ });
517
+
518
+ const targetLix = await openLixInMemory({
519
+ blob: await newLixFile(),
520
+ providePlugins: [mockPlugin],
521
+ });
522
+
523
+ await sourceLix.db
524
+ .insertInto("snapshot")
525
+ .values(
526
+ [...commonSnapshots, ...snapshotsOnlyInSourceLix].map((s) => {
527
+ return { content: s.content };
528
+ })
529
+ )
530
+ .execute();
531
+
532
+ await sourceLix.db
533
+ .insertInto("change")
534
+ .values([...commonChanges, ...changesOnlyInSourceLix])
535
+ .execute();
536
+
537
+ await targetLix.db
538
+ .insertInto("snapshot")
539
+ .values(
540
+ [...commonSnapshots, ...snapshotsOnlyInTargetLix].map((s) => {
541
+ return { content: s.content };
542
+ })
543
+ )
544
+ .execute();
545
+
546
+ await targetLix.db
547
+ .insertInto("change")
548
+ .values([...commonChanges, ...changesOnlyInTargetLix])
549
+ .execute();
550
+
551
+ await targetLix.db
552
+ .insertInto("file")
553
+ .values({
554
+ id: "mock-file",
555
+ path: "/mock-file.json",
556
+ data: new TextEncoder().encode(JSON.stringify({})),
557
+ })
558
+ .execute();
559
+
560
+ await merge({ sourceLix, targetLix });
561
+
562
+ const changes = await targetLix.db
563
+ .selectFrom("change")
564
+ .selectAll()
565
+ .execute();
566
+
567
+ // const conflicts = await targetLix.db
568
+ // .selectFrom("conflict")
569
+ // .selectAll()
570
+ // .execute();
571
+
572
+ expect(changes.length).toBe(2);
573
+ // expect(conflicts.length).toBe(1);
574
+
575
+ await merge({ sourceLix, targetLix });
576
+
577
+ const changesAfterSecondMerge = await targetLix.db
578
+ .selectFrom("change")
579
+ .selectAll()
580
+ .execute();
581
+
582
+ // const conflictsAfterSecondMerge = await targetLix.db
583
+ // .selectFrom("conflict")
584
+ // .selectAll()
585
+ // .execute();
586
+
587
+ expect(changesAfterSecondMerge.length).toBe(2);
588
+ // expect(conflictsAfterSecondMerge.length).toBe(1);
589
+ }
590
+ );
591
+
592
+ test("it should naively copy changes from the sourceLix into the targetLix that do not exist in targetLix yet", async () => {
593
+ const snapshotsOnlyInSourceLix: Snapshot[] = [
594
+ mockJsonSnapshot({ id: "mock-id", color: "blue" }),
595
+ ];
596
+ const changesOnlyInSourceLix: NewChange[] = [
597
+ {
598
+ id: "2",
599
+ entity_id: "value1",
600
+ schema_key: "mock",
601
+ snapshot_id: snapshotsOnlyInSourceLix[0]!.id,
602
+ file_id: "mock-file",
603
+ plugin_key: "mock-plugin",
604
+ },
605
+ ];
606
+
607
+ const mockPlugin: LixPlugin = {
608
+ key: "mock-plugin",
609
+ detectConflicts: vi.fn().mockResolvedValue([]),
610
+ applyChanges: vi.fn().mockResolvedValue({ fileData: new Uint8Array() }),
611
+ };
612
+
613
+ const sourceLix = await openLixInMemory({
614
+ blob: await newLixFile(),
615
+ providePlugins: [mockPlugin],
616
+ });
617
+
618
+ const targetLix = await openLixInMemory({
619
+ blob: await newLixFile(),
620
+ providePlugins: [mockPlugin],
621
+ });
622
+
623
+ await targetLix.db
624
+ .insertInto("file")
625
+ .values({ id: "mock-file", path: "/mock", data: new Uint8Array() })
626
+ .execute();
627
+
628
+ await sourceLix.db
629
+ .insertInto("snapshot")
630
+ .values(
631
+ snapshotsOnlyInSourceLix.map((s) => {
632
+ return { content: s.content };
633
+ })
634
+ )
635
+ .execute();
636
+
637
+ await sourceLix.db
638
+ .insertInto("change")
639
+ .values(changesOnlyInSourceLix)
640
+ .execute();
641
+
642
+ await merge({ sourceLix, targetLix });
643
+
644
+ const changes = await targetLix.db
645
+ .selectFrom("change")
646
+ .where("schema_key", "=", "mock")
647
+ .selectAll()
648
+ .execute();
649
+
650
+ expect(changes.length).toBe(1);
651
+ });
652
+
653
+ test("it should copy discussion and related comments and mappings", async () => {
654
+ const mockPlugin: LixPlugin = {
655
+ key: "mock-plugin",
656
+ detectChangesGlob: "*",
657
+ detectChanges: async ({ after }) => {
658
+ return [
659
+ {
660
+ schema: {
661
+ key: "text",
662
+ type: "json",
663
+ },
664
+ entity_id: "test",
665
+ snapshot: after
666
+ ? { text: new TextDecoder().decode(after?.data) }
667
+ : undefined,
668
+ },
669
+ ];
670
+ },
671
+ applyChanges: async () => ({ fileData: new Uint8Array() }),
672
+ };
673
+
674
+ const lix1 = await openLixInMemory({
675
+ blob: await newLixFile(),
676
+ providePlugins: [mockPlugin],
677
+ });
678
+
679
+ const enc = new TextEncoder();
680
+
681
+ await lix1.db
682
+ .insertInto("file")
683
+ .values({
684
+ id: "test",
685
+ path: "/test.txt",
686
+ data: enc.encode("inserted text"),
687
+ })
688
+ .execute();
689
+
690
+ await changeQueueSettled({ lix: lix1 });
691
+
692
+ // The files have to be there before we merge
693
+ const lix2 = await openLixInMemory({
694
+ blob: await lix1.toBlob(),
695
+ providePlugins: [mockPlugin],
696
+ });
697
+
698
+ const changes = await lix1.db
699
+ .selectFrom("change")
700
+ .innerJoin("snapshot", "snapshot.id", "change.snapshot_id")
701
+ .selectAll("change")
702
+ .where("schema_key", "=", "text")
703
+ .select("snapshot.content")
704
+ .execute();
705
+
706
+ expect(changes).toEqual(
707
+ expect.arrayContaining([
708
+ expect.objectContaining({
709
+ id: changes[0]?.id,
710
+ created_at: changes[0]?.created_at,
711
+ snapshot_id: changes[0]?.snapshot_id,
712
+ schema_key: "text",
713
+ file_id: "test",
714
+ entity_id: "test",
715
+ plugin_key: "mock-plugin",
716
+ content: {
717
+ text: "inserted text",
718
+ },
719
+ }),
720
+ ])
721
+ );
722
+
723
+ // TODO how do know which author to use for the discussion - we can have multiple active accounts?
724
+ const currentAuthorLix1 = await lix1.db
725
+ .selectFrom("active_account")
726
+ .selectAll()
727
+ .executeTakeFirstOrThrow();
728
+
729
+ await createDiscussion({
730
+ lix: lix1,
731
+ changeSet: await createChangeSet({ lix: lix1, changes: [changes[0]!] }),
732
+ content: "comment on a change",
733
+ createdBy: { id: currentAuthorLix1.id },
734
+ });
735
+
736
+ await merge({ sourceLix: lix1, targetLix: lix2 });
737
+
738
+ const commentsLix2AfterMerge = await lix2.db
739
+ .selectFrom("comment")
740
+ .selectAll()
741
+ .execute();
742
+ const commentsLix1 = await lix1.db
743
+ .selectFrom("comment")
744
+ .selectAll()
745
+ .execute();
746
+
747
+ // lix 2 has no comments yet so after lix 1 into 2 we should be in sync
748
+ expect(commentsLix1).toEqual(commentsLix2AfterMerge);
749
+
750
+ const currentAuthorLix2 = await lix1.db
751
+ .selectFrom("active_account")
752
+ .selectAll()
753
+ .executeTakeFirstOrThrow();
754
+ await createComment({
755
+ lix: lix2,
756
+ parentComment: commentsLix2AfterMerge[0]!,
757
+ content: "wrote in lix 2",
758
+ createdBy: { id: currentAuthorLix2.id },
759
+ });
760
+ await createComment({
761
+ lix: lix1,
762
+ parentComment: commentsLix2AfterMerge[0]!,
763
+ content: "wrote in lix 1",
764
+ createdBy: { id: currentAuthorLix1.id },
765
+ });
766
+
767
+ const commentsLix1OnSecondMerge = await lix1.db
768
+ .selectFrom("comment")
769
+ .selectAll()
770
+ .execute();
771
+
772
+ await merge({ sourceLix: lix1, targetLix: lix2 });
773
+
774
+ const commentsLix2AfterSecondMerge = await lix2.db
775
+ .selectFrom("comment")
776
+ .selectAll()
777
+ .execute();
778
+
779
+ // lix should know the ne comment from lix 1 but lix 1 should miss the new comment in lix2
780
+ expect(commentsLix2AfterSecondMerge.length).toBe(
781
+ commentsLix1OnSecondMerge.length + 1
782
+ );
783
+
784
+ await merge({ sourceLix: lix1, targetLix: lix2 });
785
+
786
+ // TODO add test for discussions and discussion maps
787
+ });
788
+
789
+ test.skip("it should copy change sets and merge memberships", async () => {
790
+ const targetLix = await openLixInMemory({});
791
+
792
+ const mockChanges = await targetLix.db
793
+ .insertInto("change")
794
+ .values([
795
+ {
796
+ schema_key: "file",
797
+ entity_id: "value1",
798
+ file_id: "mock",
799
+ plugin_key: "mock-plugin",
800
+ snapshot_id: "no-content",
801
+ },
802
+ {
803
+ schema_key: "file",
804
+ entity_id: "value2",
805
+ file_id: "mock",
806
+ plugin_key: "mock-plugin",
807
+ snapshot_id: "no-content",
808
+ },
809
+ ])
810
+ .returningAll()
811
+ .execute();
812
+
813
+ const changeSet1 = await createChangeSet({
814
+ lix: targetLix,
815
+ changes: [mockChanges[0]!],
816
+ });
817
+
818
+ const sourceLix = await openLixInMemory({
819
+ blob: await targetLix.toBlob(),
820
+ });
821
+
822
+ // expand the change set to contain another change
823
+ // to test if the sets are merged
824
+ await targetLix.db
825
+ .insertInto("change_set_element")
826
+ .values({
827
+ change_set_id: changeSet1.id,
828
+ change_id: mockChanges[1]!.id,
829
+ })
830
+ .execute();
831
+
832
+ // create a new set just for change [1]
833
+ const changeSet2 = await createChangeSet({
834
+ lix: targetLix,
835
+ changes: [mockChanges[1]!],
836
+ });
837
+
838
+ await merge({ sourceLix, targetLix });
839
+
840
+ const changeSets = await targetLix.db
841
+ .selectFrom("change_set")
842
+ .selectAll()
843
+ // the initial change set for a version
844
+ .where("id", "is not", "00000000-0000-0000-0000-000000000000")
845
+ .execute();
846
+
847
+ const changeSet1Items = await targetLix.db
848
+ .selectFrom("change_set_element")
849
+ .selectAll()
850
+ .where("change_set_id", "=", changeSet1.id)
851
+ .execute();
852
+ const changeSet2Items = await targetLix.db
853
+ .selectFrom("change_set_element")
854
+ .selectAll()
855
+ .where("change_set_id", "=", changeSet2.id)
856
+ .execute();
857
+
858
+ // expect two change sets (exluding the current versiones change set)
859
+ expect(changeSets.length).toBe(2);
860
+
861
+ // expect merger of the change set to contain both changes
862
+ expect(changeSet1Items.map((item) => item.change_id)).toEqual(
863
+ expect.arrayContaining([mockChanges[0]?.id, mockChanges[1]?.id])
864
+ );
865
+
866
+ // expect the second change set to contain only the second change
867
+ expect(changeSet2Items.map((item) => item.change_id)).toEqual(
868
+ expect.arrayContaining([mockChanges[1]?.id])
869
+ );
870
+ });