@lix-js/sdk 0.0.1 → 0.2.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 (359) hide show
  1. package/LICENSE +21 -0
  2. package/dist/account/database-schema.d.ts.map +1 -1
  3. package/dist/account/database-schema.js +2 -6
  4. package/dist/account/database-schema.js.map +1 -1
  5. package/dist/account/database-schema.test.js +4 -8
  6. package/dist/account/database-schema.test.js.map +1 -1
  7. package/dist/change/apply-changes.js +9 -9
  8. package/dist/change/apply-changes.js.map +1 -1
  9. package/dist/change/apply-changes.test.js +5 -5
  10. package/dist/change/apply-changes.test.js.map +1 -1
  11. package/dist/database/apply-schema.d.ts.map +1 -1
  12. package/dist/database/apply-schema.js +20 -72
  13. package/dist/database/apply-schema.js.map +1 -1
  14. package/dist/database/execute-sync.test.js +3 -3
  15. package/dist/database/execute-sync.test.js.map +1 -1
  16. package/dist/database/init-db.d.ts.map +1 -1
  17. package/dist/database/init-db.js +18 -3
  18. package/dist/database/init-db.js.map +1 -1
  19. package/dist/database/init-db.test.js +128 -17
  20. package/dist/database/init-db.test.js.map +1 -1
  21. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts.map +1 -1
  22. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js +5 -2
  23. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js.map +1 -1
  24. package/dist/database/mutation-log/database-schema.d.ts.map +1 -1
  25. package/dist/database/mutation-log/database-schema.js +1 -3
  26. package/dist/database/mutation-log/database-schema.js.map +1 -1
  27. package/dist/database/nano-id.d.ts +21 -0
  28. package/dist/database/nano-id.d.ts.map +1 -0
  29. package/dist/database/nano-id.js +58 -0
  30. package/dist/database/nano-id.js.map +1 -0
  31. package/dist/database/nano-id.test.d.ts +2 -0
  32. package/dist/database/nano-id.test.d.ts.map +1 -0
  33. package/dist/database/nano-id.test.js +13 -0
  34. package/dist/database/nano-id.test.js.map +1 -0
  35. package/dist/database/schema.d.ts +15 -23
  36. package/dist/database/schema.d.ts.map +1 -1
  37. package/dist/discussion/create-comment.d.ts +0 -2
  38. package/dist/discussion/create-comment.d.ts.map +1 -1
  39. package/dist/discussion/create-comment.js +0 -1
  40. package/dist/discussion/create-comment.js.map +1 -1
  41. package/dist/discussion/create-discussion.d.ts +3 -5
  42. package/dist/discussion/create-discussion.d.ts.map +1 -1
  43. package/dist/discussion/create-discussion.js +4 -5
  44. package/dist/discussion/create-discussion.js.map +1 -1
  45. package/dist/discussion/create-discussion.test.js +8 -34
  46. package/dist/discussion/create-discussion.test.js.map +1 -1
  47. package/dist/file-queue/file-handlers.d.ts +24 -0
  48. package/dist/file-queue/file-handlers.d.ts.map +1 -0
  49. package/dist/file-queue/file-handlers.js +209 -0
  50. package/dist/file-queue/file-handlers.js.map +1 -0
  51. package/dist/file-queue/file-queue-process.d.ts +5 -0
  52. package/dist/file-queue/file-queue-process.d.ts.map +1 -0
  53. package/dist/file-queue/file-queue-process.js +88 -0
  54. package/dist/file-queue/file-queue-process.js.map +1 -0
  55. package/dist/file-queue/file-queue-process.test.d.ts +2 -0
  56. package/dist/file-queue/file-queue-process.test.d.ts.map +1 -0
  57. package/dist/file-queue/file-queue-process.test.js +372 -0
  58. package/dist/file-queue/file-queue-process.test.js.map +1 -0
  59. package/dist/file-queue/file-queue-settled.d.ts +13 -0
  60. package/dist/file-queue/file-queue-settled.d.ts.map +1 -0
  61. package/dist/file-queue/file-queue-settled.js +25 -0
  62. package/dist/file-queue/file-queue-settled.js.map +1 -0
  63. package/dist/file-queue/file-queue-settled.test.d.ts +2 -0
  64. package/dist/file-queue/file-queue-settled.test.d.ts.map +1 -0
  65. package/dist/file-queue/file-queue-settled.test.js +47 -0
  66. package/dist/file-queue/file-queue-settled.test.js.map +1 -0
  67. package/dist/file-queue/index.d.ts +2 -0
  68. package/dist/file-queue/index.d.ts.map +1 -0
  69. package/dist/file-queue/index.js +2 -0
  70. package/dist/file-queue/index.js.map +1 -0
  71. package/dist/file-queue/with-skip-file-queue.d.ts +3 -0
  72. package/dist/file-queue/with-skip-file-queue.d.ts.map +1 -0
  73. package/dist/file-queue/with-skip-file-queue.js +26 -0
  74. package/dist/file-queue/with-skip-file-queue.js.map +1 -0
  75. package/dist/file-queue/with-skip-file-queue.test.d.ts +2 -0
  76. package/dist/file-queue/with-skip-file-queue.test.d.ts.map +1 -0
  77. package/dist/file-queue/with-skip-file-queue.test.js +138 -0
  78. package/dist/file-queue/with-skip-file-queue.test.js.map +1 -0
  79. package/dist/index.d.ts +2 -2
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +2 -2
  82. package/dist/index.js.map +1 -1
  83. package/dist/key-value/database-schema.d.ts +11 -2
  84. package/dist/key-value/database-schema.d.ts.map +1 -1
  85. package/dist/key-value/database-schema.js +7 -4
  86. package/dist/key-value/database-schema.js.map +1 -1
  87. package/dist/key-value/database-schema.test.js +21 -5
  88. package/dist/key-value/database-schema.test.js.map +1 -1
  89. package/dist/lix/close-lix.d.ts +8 -0
  90. package/dist/lix/close-lix.d.ts.map +1 -0
  91. package/dist/lix/close-lix.js +7 -0
  92. package/dist/lix/close-lix.js.map +1 -0
  93. package/dist/lix/index.d.ts +1 -0
  94. package/dist/lix/index.d.ts.map +1 -1
  95. package/dist/lix/index.js +1 -0
  96. package/dist/lix/index.js.map +1 -1
  97. package/dist/lix/merge.js +3 -3
  98. package/dist/lix/merge.js.map +1 -1
  99. package/dist/lix/merge.test.js +7 -18
  100. package/dist/lix/merge.test.js.map +1 -1
  101. package/dist/lix/new-lix.d.ts.map +1 -1
  102. package/dist/lix/new-lix.js +2 -3
  103. package/dist/lix/new-lix.js.map +1 -1
  104. package/dist/lix/open-lix-in-memory.test.js +2 -1
  105. package/dist/lix/open-lix-in-memory.test.js.map +1 -1
  106. package/dist/lix/open-lix.d.ts +19 -6
  107. package/dist/lix/open-lix.d.ts.map +1 -1
  108. package/dist/lix/open-lix.js +80 -18
  109. package/dist/lix/open-lix.js.map +1 -1
  110. package/dist/lix/open-lix.test.js +70 -7
  111. package/dist/lix/open-lix.test.js.map +1 -1
  112. package/dist/lix/to-blob.d.ts +11 -0
  113. package/dist/lix/to-blob.d.ts.map +1 -0
  114. package/dist/lix/to-blob.js +11 -0
  115. package/dist/lix/to-blob.js.map +1 -0
  116. package/dist/own-change-control/apply-own-change.d.ts +10 -0
  117. package/dist/own-change-control/apply-own-change.d.ts.map +1 -0
  118. package/dist/own-change-control/apply-own-change.js +69 -0
  119. package/dist/own-change-control/apply-own-change.js.map +1 -0
  120. package/dist/own-change-control/apply-own-change.test.d.ts +2 -0
  121. package/dist/own-change-control/apply-own-change.test.d.ts.map +1 -0
  122. package/dist/own-change-control/apply-own-change.test.js +297 -0
  123. package/dist/own-change-control/apply-own-change.test.js.map +1 -0
  124. package/dist/own-change-control/change-controlled-tables.d.ts +60 -0
  125. package/dist/own-change-control/change-controlled-tables.d.ts.map +1 -0
  126. package/dist/own-change-control/change-controlled-tables.js +70 -0
  127. package/dist/own-change-control/change-controlled-tables.js.map +1 -0
  128. package/dist/own-change-control/change-controlled-tables.test.d.ts +2 -0
  129. package/dist/own-change-control/change-controlled-tables.test.d.ts.map +1 -0
  130. package/dist/own-change-control/change-controlled-tables.test.js +48 -0
  131. package/dist/own-change-control/change-controlled-tables.test.js.map +1 -0
  132. package/dist/own-change-control/database-triggers.d.ts +5 -0
  133. package/dist/own-change-control/database-triggers.d.ts.map +1 -0
  134. package/dist/own-change-control/database-triggers.js +135 -0
  135. package/dist/own-change-control/database-triggers.js.map +1 -0
  136. package/dist/own-change-control/database-triggers.test.d.ts +2 -0
  137. package/dist/own-change-control/database-triggers.test.d.ts.map +1 -0
  138. package/dist/own-change-control/database-triggers.test.js +214 -0
  139. package/dist/own-change-control/database-triggers.test.js.map +1 -0
  140. package/dist/own-change-control/index.d.ts +2 -0
  141. package/dist/own-change-control/index.d.ts.map +1 -0
  142. package/dist/own-change-control/index.js +2 -0
  143. package/dist/own-change-control/index.js.map +1 -0
  144. package/dist/own-change-control/with-skip-own-change-control.d.ts +3 -0
  145. package/dist/own-change-control/with-skip-own-change-control.d.ts.map +1 -0
  146. package/dist/own-change-control/with-skip-own-change-control.js +28 -0
  147. package/dist/own-change-control/with-skip-own-change-control.js.map +1 -0
  148. package/dist/own-change-control/with-skip-own-change-control.test.d.ts +2 -0
  149. package/dist/own-change-control/with-skip-own-change-control.test.d.ts.map +1 -0
  150. package/dist/own-change-control/with-skip-own-change-control.test.js +49 -0
  151. package/dist/own-change-control/with-skip-own-change-control.test.js.map +1 -0
  152. package/dist/own-entity-change-control/apply-own-entity-change.js +2 -2
  153. package/dist/own-entity-change-control/apply-own-entity-change.js.map +1 -1
  154. package/dist/own-entity-change-control/apply-own-entity-change.test.js +9 -9
  155. package/dist/own-entity-change-control/apply-own-entity-change.test.js.map +1 -1
  156. package/dist/own-entity-change-control/database-triggers.js +6 -6
  157. package/dist/own-entity-change-control/database-triggers.js.map +1 -1
  158. package/dist/own-entity-change-control/database-triggers.test.js +1 -1
  159. package/dist/own-entity-change-control/database-triggers.test.js.map +1 -1
  160. package/dist/query-filter/version-change-in-difference.test.js +37 -29
  161. package/dist/query-filter/version-change-in-difference.test.js.map +1 -1
  162. package/dist/query-filter/version-change-in-symmetric-difference.test.js +37 -39
  163. package/dist/query-filter/version-change-in-symmetric-difference.test.js.map +1 -1
  164. package/dist/server-api-handler/environment/create-in-memory-environment.d.ts.map +1 -1
  165. package/dist/server-api-handler/environment/create-in-memory-environment.js +7 -3
  166. package/dist/server-api-handler/environment/create-in-memory-environment.js.map +1 -1
  167. package/dist/server-api-handler/environment/create-in-memory-environment.test.js +8 -7
  168. package/dist/server-api-handler/environment/create-in-memory-environment.test.js.map +1 -1
  169. package/dist/server-api-handler/routes/get-v1.d.ts.map +1 -1
  170. package/dist/server-api-handler/routes/get-v1.js +1 -2
  171. package/dist/server-api-handler/routes/get-v1.js.map +1 -1
  172. package/dist/server-api-handler/routes/get-v1.test.js +6 -5
  173. package/dist/server-api-handler/routes/get-v1.test.js.map +1 -1
  174. package/dist/server-api-handler/routes/new-v1.d.ts.map +1 -1
  175. package/dist/server-api-handler/routes/new-v1.js +3 -1
  176. package/dist/server-api-handler/routes/new-v1.js.map +1 -1
  177. package/dist/server-api-handler/routes/new-v1.test.js +2 -1
  178. package/dist/server-api-handler/routes/new-v1.test.js.map +1 -1
  179. package/dist/server-api-handler/routes/pull-v1.test.js +4 -3
  180. package/dist/server-api-handler/routes/pull-v1.test.js.map +1 -1
  181. package/dist/server-api-handler/routes/push-v1.test.js +5 -4
  182. package/dist/server-api-handler/routes/push-v1.test.js.map +1 -1
  183. package/dist/services/env-variables/index.d.ts +5 -0
  184. package/dist/services/env-variables/index.d.ts.map +1 -0
  185. package/dist/services/env-variables/index.js +5 -0
  186. package/dist/services/env-variables/index.js.map +1 -0
  187. package/dist/services/telemetry/capture.d.ts +30 -0
  188. package/dist/services/telemetry/capture.d.ts.map +1 -0
  189. package/dist/services/telemetry/capture.js +71 -0
  190. package/dist/services/telemetry/capture.js.map +1 -0
  191. package/dist/services/telemetry/capture.test.d.ts +2 -0
  192. package/dist/services/telemetry/capture.test.d.ts.map +1 -0
  193. package/dist/services/telemetry/capture.test.js +37 -0
  194. package/dist/services/telemetry/capture.test.js.map +1 -0
  195. package/dist/sync/pull-from-server.d.ts.map +1 -1
  196. package/dist/sync/pull-from-server.js +0 -2
  197. package/dist/sync/pull-from-server.js.map +1 -1
  198. package/dist/sync/pull-from-server.test.js +29 -14
  199. package/dist/sync/pull-from-server.test.js.map +1 -1
  200. package/dist/sync/push-to-server.test.js +17 -13
  201. package/dist/sync/push-to-server.test.js.map +1 -1
  202. package/dist/sync/sync-process.d.ts +2 -4
  203. package/dist/sync/sync-process.d.ts.map +1 -1
  204. package/dist/sync/sync-process.js +14 -13
  205. package/dist/sync/sync-process.js.map +1 -1
  206. package/dist/sync/sync-process.test.js +26 -38
  207. package/dist/sync/sync-process.test.js.map +1 -1
  208. package/dist/version/create-version.d.ts +5 -5
  209. package/dist/version/create-version.d.ts.map +1 -1
  210. package/dist/version/create-version.js +23 -11
  211. package/dist/version/create-version.js.map +1 -1
  212. package/dist/version/create-version.test.js +2 -2
  213. package/dist/version/create-version.test.js.map +1 -1
  214. package/dist/version/merge-version.d.ts.map +1 -1
  215. package/dist/version/merge-version.js +16 -26
  216. package/dist/version/merge-version.js.map +1 -1
  217. package/dist/version/switch-version.js +3 -3
  218. package/dist/version/switch-version.js.map +1 -1
  219. package/dist/version/switch-version.test.js +12 -15
  220. package/dist/version/switch-version.test.js.map +1 -1
  221. package/dist/version/update-changes-in-version.d.ts.map +1 -1
  222. package/dist/version/update-changes-in-version.js +11 -31
  223. package/dist/version/update-changes-in-version.js.map +1 -1
  224. package/package.json +7 -9
  225. package/src/account/database-schema.test.ts +6 -9
  226. package/src/account/database-schema.ts +2 -6
  227. package/src/change/apply-changes.test.ts +7 -7
  228. package/src/change/apply-changes.ts +9 -9
  229. package/src/database/apply-schema.ts +20 -73
  230. package/src/database/execute-sync.test.ts +3 -3
  231. package/src/database/init-db.test.ts +163 -19
  232. package/src/database/init-db.ts +20 -3
  233. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.ts +9 -2
  234. package/src/database/mutation-log/database-schema.ts +1 -3
  235. package/src/database/nano-id.test.ts +15 -0
  236. package/src/database/nano-id.ts +72 -0
  237. package/src/database/schema.ts +15 -24
  238. package/src/discussion/create-comment.ts +0 -3
  239. package/src/discussion/create-discussion.test.ts +8 -39
  240. package/src/discussion/create-discussion.ts +6 -9
  241. package/src/{change-queue → file-queue}/file-handlers.ts +27 -27
  242. package/src/{change-queue/init-change-queue.test.ts → file-queue/file-queue-process.test.ts} +28 -29
  243. package/src/{change-queue/init-change-queue.ts → file-queue/file-queue-process.ts} +21 -16
  244. package/src/{change-queue/change-queue-settled.test.ts → file-queue/file-queue-settled.test.ts} +12 -12
  245. package/src/{change-queue/change-queue-settled.ts → file-queue/file-queue-settled.ts} +4 -4
  246. package/src/file-queue/index.ts +1 -0
  247. package/src/{change-queue/with-skip-change-queue.test.ts → file-queue/with-skip-file-queue.test.ts} +9 -9
  248. package/src/{change-queue/with-skip-change-queue.ts → file-queue/with-skip-file-queue.ts} +3 -3
  249. package/src/index.ts +2 -2
  250. package/src/key-value/database-schema.test.ts +26 -5
  251. package/src/key-value/database-schema.ts +18 -6
  252. package/src/lix/close-lix.ts +8 -0
  253. package/src/lix/index.ts +1 -0
  254. package/src/lix/merge.test.ts +7 -19
  255. package/src/lix/merge.ts +4 -4
  256. package/src/lix/new-lix.ts +2 -3
  257. package/src/lix/open-lix-in-memory.test.ts +5 -1
  258. package/src/lix/open-lix.test.ts +82 -7
  259. package/src/lix/open-lix.ts +104 -24
  260. package/src/lix/to-blob.ts +14 -0
  261. package/src/{own-entity-change-control/apply-own-entity-change.test.ts → own-change-control/apply-own-change.test.ts} +27 -31
  262. package/src/{own-entity-change-control/apply-own-entity-change.ts → own-change-control/apply-own-change.ts} +3 -3
  263. package/src/{own-entity-change-control → own-change-control}/change-controlled-tables.ts +0 -1
  264. package/src/{own-entity-change-control → own-change-control}/database-triggers.test.ts +7 -7
  265. package/src/{own-entity-change-control → own-change-control}/database-triggers.ts +11 -11
  266. package/src/{own-entity-change-control → own-change-control}/with-skip-own-change-control.ts +6 -2
  267. package/src/query-filter/version-change-in-difference.test.ts +41 -32
  268. package/src/query-filter/version-change-in-symmetric-difference.test.ts +41 -42
  269. package/src/server-api-handler/environment/create-in-memory-environment.test.ts +8 -7
  270. package/src/server-api-handler/environment/create-in-memory-environment.ts +7 -3
  271. package/src/server-api-handler/routes/get-v1.test.ts +6 -5
  272. package/src/server-api-handler/routes/get-v1.ts +1 -3
  273. package/src/server-api-handler/routes/new-v1.test.ts +2 -1
  274. package/src/server-api-handler/routes/new-v1.ts +3 -1
  275. package/src/server-api-handler/routes/pull-v1.test.ts +4 -3
  276. package/src/server-api-handler/routes/push-v1.test.ts +5 -4
  277. package/src/services/env-variables/create-index-file.js +35 -0
  278. package/src/services/env-variables/index.d.ts +15 -0
  279. package/src/services/telemetry/capture.test.ts +44 -0
  280. package/src/services/telemetry/capture.ts +99 -0
  281. package/src/sync/pull-from-server.test.ts +29 -14
  282. package/src/sync/pull-from-server.ts +0 -2
  283. package/src/sync/push-to-server.test.ts +19 -15
  284. package/src/sync/sync-process.test.ts +37 -43
  285. package/src/sync/sync-process.ts +16 -23
  286. package/src/version/create-version.test.ts +2 -2
  287. package/src/version/create-version.ts +24 -12
  288. package/src/version/merge-version.ts +18 -26
  289. package/src/version/switch-version.test.ts +12 -15
  290. package/src/version/switch-version.ts +3 -3
  291. package/src/version/update-changes-in-version.ts +11 -30
  292. package/node_modules/@lix-js/server-api-schema/.prettierrc.json +0 -3
  293. package/node_modules/@lix-js/server-api-schema/.vscode/extensions.json +0 -3
  294. package/node_modules/@lix-js/server-api-schema/dist/schema.d.ts +0 -384
  295. package/node_modules/@lix-js/server-api-schema/package.json +0 -21
  296. package/node_modules/@lix-js/server-api-schema/src/schema.yaml +0 -290
  297. package/node_modules/@lix-js/server-api-schema/tsconfig.json +0 -20
  298. package/node_modules/sqlite-wasm-kysely/README.md +0 -11
  299. package/node_modules/sqlite-wasm-kysely/dist/dialect.d.ts +0 -11
  300. package/node_modules/sqlite-wasm-kysely/dist/dialect.js +0 -13
  301. package/node_modules/sqlite-wasm-kysely/dist/dialect.js.map +0 -1
  302. package/node_modules/sqlite-wasm-kysely/dist/index.d.ts +0 -2
  303. package/node_modules/sqlite-wasm-kysely/dist/index.js +0 -3
  304. package/node_modules/sqlite-wasm-kysely/dist/index.js.map +0 -1
  305. package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.d.ts +0 -5
  306. package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.js +0 -34
  307. package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.js.map +0 -1
  308. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.d.ts +0 -8
  309. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.js +0 -57
  310. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.js.map +0 -1
  311. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.d.ts +0 -18
  312. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.js +0 -2
  313. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.js.map +0 -1
  314. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.d.ts +0 -13
  315. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.js +0 -57
  316. package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.js.map +0 -1
  317. package/node_modules/sqlite-wasm-kysely/dist/kysely/index.d.ts +0 -4
  318. package/node_modules/sqlite-wasm-kysely/dist/kysely/index.js +0 -4
  319. package/node_modules/sqlite-wasm-kysely/dist/kysely/index.js.map +0 -1
  320. package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.d.ts +0 -3
  321. package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.js +0 -5
  322. package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.js.map +0 -1
  323. package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.d.ts +0 -9
  324. package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.js +0 -12
  325. package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.js.map +0 -1
  326. package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.d.ts +0 -3
  327. package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.js +0 -22
  328. package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.js.map +0 -1
  329. package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.d.ts +0 -7
  330. package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.js +0 -15
  331. package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.js.map +0 -1
  332. package/node_modules/sqlite-wasm-kysely/dist/util/index.d.ts +0 -5
  333. package/node_modules/sqlite-wasm-kysely/dist/util/index.js +0 -5
  334. package/node_modules/sqlite-wasm-kysely/dist/util/index.js.map +0 -1
  335. package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.d.ts +0 -1
  336. package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.js +0 -13
  337. package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.js.map +0 -1
  338. package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.d.ts +0 -7
  339. package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.js +0 -17
  340. package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.js.map +0 -1
  341. package/node_modules/sqlite-wasm-kysely/package.json +0 -34
  342. package/node_modules/sqlite-wasm-kysely/src/dialect.ts +0 -15
  343. package/node_modules/sqlite-wasm-kysely/src/index.ts +0 -2
  344. package/node_modules/sqlite-wasm-kysely/src/kysely/ConnectionMutex.ts +0 -23
  345. package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmConnection.ts +0 -57
  346. package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmDialectConfig.ts +0 -19
  347. package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmDriver.ts +0 -58
  348. package/node_modules/sqlite-wasm-kysely/src/kysely/index.ts +0 -4
  349. package/node_modules/sqlite-wasm-kysely/src/kysely/sqliteModule.ts +0 -7
  350. package/node_modules/sqlite-wasm-kysely/src/util/contentFromDatabase.ts +0 -13
  351. package/node_modules/sqlite-wasm-kysely/src/util/createInMemoryDatabase.ts +0 -30
  352. package/node_modules/sqlite-wasm-kysely/src/util/importDatabase.ts +0 -34
  353. package/node_modules/sqlite-wasm-kysely/src/util/index.ts +0 -5
  354. package/node_modules/sqlite-wasm-kysely/src/util/loadDatabaseInMemory.ts +0 -13
  355. package/node_modules/sqlite-wasm-kysely/src/util/sqliteWasmBinary.ts +0 -20
  356. package/src/change-queue/index.ts +0 -1
  357. /package/src/{own-entity-change-control → own-change-control}/change-controlled-tables.test.ts +0 -0
  358. /package/src/{own-entity-change-control → own-change-control}/index.ts +0 -0
  359. /package/src/{own-entity-change-control → own-change-control}/with-skip-own-change-control.test.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  import { createInMemoryDatabase, contentFromDatabase, } from "sqlite-wasm-kysely";
2
2
  import { initDb } from "../database/init-db.js";
3
+ import { closeLix } from "./close-lix.js";
3
4
  /**
4
5
  * Creates a new lix file.
5
6
  *
@@ -19,9 +20,7 @@ export async function newLixFile() {
19
20
  throw new Error(`Failed to create new Lix file: ${e}`, { cause: e });
20
21
  }
21
22
  finally {
22
- // in any case destroy the memory db
23
- sqlite.close();
24
- await db.destroy();
23
+ closeLix({ lix: { db } });
25
24
  }
26
25
  }
27
26
  //# sourceMappingURL=new-lix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new-lix.js","sourceRoot":"","sources":["../../src/lix/new-lix.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC/B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;QAC3C,QAAQ,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9B,IAAI,CAAC;QACJ,OAAO,IAAI,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;YAAS,CAAC;QACV,oCAAoC;QACpC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"new-lix.js","sourceRoot":"","sources":["../../src/lix/new-lix.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC/B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;QAC3C,QAAQ,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9B,IAAI,CAAC;QACJ,OAAO,IAAI,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;YAAS,CAAC;QACV,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;AACF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { test, expect } from "vitest";
2
2
  import { openLixInMemory } from "./open-lix-in-memory.js";
3
+ import { toBlob } from "./to-blob.js";
3
4
  test("it should open a lix in memory", async () => {
4
5
  const lix = await openLixInMemory({});
5
6
  // querying a table to see if the schema is applied
@@ -16,7 +17,7 @@ test("it should open a lix in memory from a blob", async () => {
16
17
  data: new TextEncoder().encode("hello"),
17
18
  })
18
19
  .execute();
19
- const lix2 = await openLixInMemory({ blob: await lix1.toBlob() });
20
+ const lix2 = await openLixInMemory({ blob: await toBlob({ lix: lix1 }) });
20
21
  const files = await lix2.db.selectFrom("file").selectAll().execute();
21
22
  expect(files).toEqual([
22
23
  expect.objectContaining({
@@ -1 +1 @@
1
- {"version":3,"file":"open-lix-in-memory.test.js","sourceRoot":"","sources":["../../src/lix/open-lix-in-memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IACtC,mDAAmD;IACnD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;IACxE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,CAAC,EAAE;SACX,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC;QACP,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;KACvC,CAAC;SACD,OAAO,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACrB,MAAM,CAAC,gBAAgB,CAAC;YACvB,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SACvC,CAAC;KACF,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"open-lix-in-memory.test.js","sourceRoot":"","sources":["../../src/lix/open-lix-in-memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IACtC,mDAAmD;IACnD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;IACxE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,IAAI,CAAC,EAAE;SACX,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC;QACP,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;KACvC,CAAC;SACD,OAAO,EAAE,CAAC;IAEZ,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;IAErE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACrB,MAAM,CAAC,gBAAgB,CAAC;YACvB,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SACvC,CAAC;KACF,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { LixPlugin } from "../plugin/lix-plugin.js";
2
2
  import { type SqliteDatabase } from "sqlite-wasm-kysely";
3
- import type { Kysely } from "kysely";
3
+ import { type Kysely } from "kysely";
4
4
  import type { LixDatabaseSchema } from "../database/schema.js";
5
- import type { KeyValue } from "../key-value/database-schema.js";
5
+ import type { NewKeyValue } from "../key-value/database-schema.js";
6
+ import type { Account } from "../account/database-schema.js";
6
7
  export type Lix = {
7
8
  /**
8
9
  * The raw SQLite instance.
@@ -16,16 +17,24 @@ export type Lix = {
16
17
  */
17
18
  sqlite: SqliteDatabase;
18
19
  db: Kysely<LixDatabaseSchema>;
19
- toBlob: () => Promise<Blob>;
20
20
  plugin: {
21
21
  getAll: () => Promise<LixPlugin[]>;
22
22
  };
23
- close: () => Promise<void>;
24
23
  };
25
24
  /**
26
25
  * Common setup between different lix environments.
27
26
  */
28
27
  export declare function openLix(args: {
28
+ /**
29
+ * The account that is opening this lix.
30
+ *
31
+ * Lix will automatically set the active account to the provided account.
32
+ *
33
+ * @example
34
+ * const account = localStorage.getItem("account")
35
+ * const lix = await openLix({ account })
36
+ */
37
+ account?: Account;
29
38
  database: SqliteDatabase;
30
39
  /**
31
40
  * Usecase are lix apps that define their own file format,
@@ -45,8 +54,12 @@ export declare function openLix(args: {
45
54
  * Set the key values when opening the lix.
46
55
  *
47
56
  * @example
48
- * const lix = await openLix({ keyValues: [{ key: "#lix_sync", value: "false" }] })
57
+ * const lix = await openLix({ keyValues: [{ key: "lix_sync", value: "false" }] })
49
58
  */
50
- keyValues?: KeyValue[];
59
+ keyValues?: NewKeyValue[];
51
60
  }): Promise<Lix>;
61
+ /**
62
+ * Get all used file extensions.
63
+ */
64
+ export declare function usedFileExtensions(db: Kysely<LixDatabaseSchema>): Promise<any>;
52
65
  //# sourceMappingURL=open-lix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-lix.d.ts","sourceRoot":"","sources":["../../src/lix/open-lix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,MAAM,GAAG,GAAG;IACjB;;;;;;;;;OASG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,EAAE;QACP,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;KACnC,CAAC;IACF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB,GAAG,OAAO,CAAC,GAAG,CAAC,CA6Cf"}
1
+ {"version":3,"file":"open-lix.d.ts","sourceRoot":"","sources":["../../src/lix/open-lix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,MAAM,GAAG,GAAG;IACjB;;;;;;;;;OASG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC9B,MAAM,EAAE;QACP,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;KACnC,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE;IACnC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B,GAAG,OAAO,CAAC,GAAG,CAAC,CA6Cf;AAyCD;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAC3B,OAAO,CAAC,GAAG,CAAC,CAwBd"}
@@ -1,9 +1,11 @@
1
1
  import { loadPlugins } from "../plugin/load-plugin.js";
2
- import { contentFromDatabase } from "sqlite-wasm-kysely";
2
+ import {} from "sqlite-wasm-kysely";
3
3
  import { initDb } from "../database/init-db.js";
4
- import { initChangeQueue } from "../change-queue/init-change-queue.js";
5
- import { changeQueueSettled } from "../change-queue/change-queue-settled.js";
4
+ import { initFileQueueProcess } from "../file-queue/file-queue-process.js";
5
+ import { sql } from "kysely";
6
6
  import { initSyncProcess } from "../sync/sync-process.js";
7
+ import { capture } from "../services/telemetry/capture.js";
8
+ import { ENV_VARIABLES } from "../services/env-variables/index.js";
7
9
  /**
8
10
  * Common setup between different lix environments.
9
11
  */
@@ -16,6 +18,17 @@ export async function openLix(args) {
16
18
  .onConflict((oc) => oc.doUpdateSet((eb) => ({ value: eb.ref("excluded.value") })))
17
19
  .execute();
18
20
  }
21
+ if (args.account) {
22
+ await db.transaction().execute(async (trx) => {
23
+ // delete the default inserted active account from `initDb`
24
+ await trx.deleteFrom("active_account").execute();
25
+ await trx
26
+ .insertInto("active_account")
27
+ .values(args.account)
28
+ .onConflict((oc) => oc.doUpdateSet(() => ({ ...args.account })))
29
+ .execute();
30
+ });
31
+ }
19
32
  const plugins = await loadPlugins(db);
20
33
  if (args.providePlugins && args.providePlugins.length > 0) {
21
34
  plugins.push(...args.providePlugins);
@@ -23,25 +36,74 @@ export async function openLix(args) {
23
36
  const plugin = {
24
37
  getAll: async () => plugins,
25
38
  };
26
- const toBlob = async () => {
27
- await changeQueueSettled({ lix: { db } });
28
- return new Blob([contentFromDatabase(args.database)]);
29
- };
30
- initChangeQueue({
31
- lix: { db, plugin, sqlite: args.database },
32
- rawDatabase: args.database,
33
- });
34
- initSyncProcess({ lix: { db, plugin, toBlob } });
39
+ initFileQueueProcess({ lix: { db, plugin, sqlite: args.database } });
40
+ initSyncProcess({ lix: { db, plugin, sqlite: args.database } });
41
+ captureOpened({ db });
35
42
  return {
36
43
  db,
37
44
  sqlite: args.database,
38
- toBlob,
39
45
  plugin,
40
- close: async () => {
41
- await changeQueueSettled({ lix: { db } });
42
- // args.database.close();
43
- // await db.destroy();
44
- },
45
46
  };
46
47
  }
48
+ async function captureOpened(args) {
49
+ try {
50
+ const telemetry = await args.db
51
+ .selectFrom("key_value")
52
+ .select("value")
53
+ .where("key", "=", "lix_telemetry")
54
+ .executeTakeFirst();
55
+ if (telemetry?.value === "off") {
56
+ return;
57
+ }
58
+ const activeAccount = await args.db
59
+ .selectFrom("active_account")
60
+ .select("id")
61
+ .executeTakeFirstOrThrow();
62
+ const lixId = await args.db
63
+ .selectFrom("key_value")
64
+ .select("value")
65
+ .where("key", "=", "lix_id")
66
+ .executeTakeFirstOrThrow();
67
+ const fileExtensions = await usedFileExtensions(args.db);
68
+ await capture("LIX-SDK lix opened", {
69
+ accountId: activeAccount.id,
70
+ lixId: lixId.value,
71
+ telemetryKeyValue: telemetry?.value ?? "on",
72
+ properties: {
73
+ lix_sdk_version: ENV_VARIABLES.LIX_SDK_VERSION,
74
+ stored_file_extensions: fileExtensions,
75
+ },
76
+ });
77
+ }
78
+ catch {
79
+ // ignore
80
+ }
81
+ }
82
+ /**
83
+ * Get all used file extensions.
84
+ */
85
+ export async function usedFileExtensions(db) {
86
+ const result = await sql `
87
+ WITH RECURSIVE numbers(i) AS (
88
+ SELECT 1
89
+ UNION ALL
90
+ SELECT i + 1 FROM numbers WHERE i < 1000 -- Limit to 1000 characters for path length
91
+ ),
92
+ REVERSED AS (
93
+ SELECT id,
94
+ GROUP_CONCAT(SUBSTR(path, LENGTH(path) - i + 1, 1), '') AS reversed_path
95
+ FROM file, numbers
96
+ WHERE i <= LENGTH(path)
97
+ GROUP BY id, path
98
+ ),
99
+ EXTENSIONS AS (
100
+ SELECT DISTINCT SUBSTR(path, LENGTH(path) - INSTR(reversed_path, '.') + 2) AS extension
101
+ FROM file
102
+ JOIN REVERSED ON file.id = REVERSED.id
103
+ WHERE INSTR(reversed_path, '.') > 0
104
+ )
105
+ SELECT extension FROM EXTENSIONS;
106
+ `.execute(db);
107
+ return result.rows.map((row) => row.extension);
108
+ }
47
109
  //# sourceMappingURL=open-lix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-lix.js","sourceRoot":"","sources":["../../src/lix/open-lix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAuB1D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAuB7B;IACA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,EAAE;aACN,UAAU,CAAC,WAAW,CAAC;aACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACtB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAClB,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAC7D;aACA,OAAO,EAAE,CAAC;IACb,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG;QACd,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;KAC3B,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,IAAI,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,eAAe,CAAC;QACf,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;QAC1C,WAAW,EAAE,IAAI,CAAC,QAAQ;KAC1B,CAAC,CAAC;IAEH,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAEjD,OAAO;QACN,EAAE;QACF,MAAM,EAAE,IAAI,CAAC,QAAQ;QACrB,MAAM;QACN,MAAM;QACN,KAAK,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,yBAAyB;YACzB,sBAAsB;QACvB,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"open-lix.js","sourceRoot":"","sources":["../../src/lix/open-lix.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { expect, test } from "vitest";
2
2
  import { openLixInMemory } from "./open-lix-in-memory.js";
3
3
  import { newLixFile } from "./new-lix.js";
4
+ import { toBlob } from "./to-blob.js";
5
+ import { usedFileExtensions } from "./open-lix.js";
4
6
  test("providing plugins should be possible", async () => {
5
7
  const mockPlugin = {
6
8
  key: "mock-plugin",
@@ -14,16 +16,77 @@ test("providing plugins should be possible", async () => {
14
16
  test("providing key values should be possible", async () => {
15
17
  const lix = await openLixInMemory({
16
18
  blob: await newLixFile(),
17
- keyValues: [{ key: "key", value: "value" }],
19
+ keyValues: [{ key: "mock_key", value: "value" }],
18
20
  });
19
- const value = await lix.db.selectFrom("key_value").selectAll().execute();
20
- expect(value).toContainEqual({ key: "key", value: "value" });
21
+ const value = await lix.db
22
+ .selectFrom("key_value")
23
+ .selectAll()
24
+ .where("key", "=", "mock_key")
25
+ .executeTakeFirstOrThrow();
26
+ expect(value).toMatchObject({ key: "mock_key", value: "value" });
21
27
  // testing overwriting key values
22
28
  const lix1 = await openLixInMemory({
23
- blob: await lix.toBlob(),
24
- keyValues: [{ key: "key", value: "value2" }],
29
+ blob: await toBlob({ lix }),
30
+ keyValues: [{ key: "mock_key", value: "value2" }],
25
31
  });
26
- const value1 = await lix1.db.selectFrom("key_value").selectAll().execute();
27
- expect(value1).toContainEqual({ key: "key", value: "value2" });
32
+ const value1 = await lix1.db
33
+ .selectFrom("key_value")
34
+ .selectAll()
35
+ .where("key", "=", "mock_key")
36
+ .executeTakeFirstOrThrow();
37
+ expect(value1).toMatchObject({ key: "mock_key", value: "value2" });
38
+ });
39
+ test("providing an account should be possible", async () => {
40
+ const mockAccount = {
41
+ id: "mock-account",
42
+ name: "peter",
43
+ };
44
+ const lix = await openLixInMemory({
45
+ account: mockAccount,
46
+ blob: await newLixFile(),
47
+ });
48
+ const accounts = await lix.db
49
+ .selectFrom("active_account")
50
+ .selectAll()
51
+ .execute();
52
+ expect(accounts, "to be the provided account").toContainEqual(mockAccount);
53
+ expect(accounts, "no other active account is inserted").lengthOf(1);
54
+ await lix.db
55
+ .insertInto("key_value")
56
+ .values([{ key: "mock_key", value: "something" }])
57
+ .execute();
58
+ // lix automatically handles inserting the active account into the account table
59
+ const change = await lix.db
60
+ .selectFrom("change")
61
+ .innerJoin("change_author", "change_author.change_id", "change.id")
62
+ .where("schema_key", "=", "lix_key_value_table")
63
+ .where("entity_id", "=", "mock_key")
64
+ .select("change_author.account_id")
65
+ .executeTakeFirstOrThrow();
66
+ expect(change.account_id).toBe(mockAccount.id);
67
+ });
68
+ test("usedFileExtensions", async () => {
69
+ const lix = await openLixInMemory({
70
+ blob: await newLixFile(),
71
+ });
72
+ await lix.db
73
+ .insertInto("file")
74
+ .values([
75
+ {
76
+ path: "/test.txt",
77
+ data: new Uint8Array(),
78
+ },
79
+ {
80
+ path: "/test2.txt",
81
+ data: new Uint8Array(),
82
+ },
83
+ {
84
+ path: "/folder/folderwithdot./doc.pdf",
85
+ data: new Uint8Array(),
86
+ },
87
+ ])
88
+ .execute();
89
+ const extensions = await usedFileExtensions(lix.db);
90
+ expect(new Set(extensions)).toEqual(new Set(["txt", "pdf"]));
28
91
  });
29
92
  //# sourceMappingURL=open-lix.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-lix.test.js","sourceRoot":"","sources":["../../src/lix/open-lix.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;IACvD,MAAM,UAAU,GAAc;QAC7B,GAAG,EAAE,aAAa;KAClB,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC;QACjC,IAAI,EAAE,MAAM,UAAU,EAAE;QACxB,cAAc,EAAE,CAAC,UAAU,CAAC;KAC5B,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC;QACjC,IAAI,EAAE,MAAM,UAAU,EAAE;QACxB,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAE7D,iCAAiC;IACjC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;QAClC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"open-lix.test.js","sourceRoot":"","sources":["../../src/lix/open-lix.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Lix } from "./open-lix.js";
2
+ /**
3
+ * Convert the lix to a blob.
4
+ *
5
+ * @example
6
+ * const blob = await toBlob({ lix })
7
+ */
8
+ export declare function toBlob(args: {
9
+ lix: Pick<Lix, "db" | "sqlite">;
10
+ }): Promise<Blob>;
11
+ //# sourceMappingURL=to-blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-blob.d.ts","sourceRoot":"","sources":["../../src/lix/to-blob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE;IAClC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB"}
@@ -0,0 +1,11 @@
1
+ import { contentFromDatabase } from "sqlite-wasm-kysely";
2
+ /**
3
+ * Convert the lix to a blob.
4
+ *
5
+ * @example
6
+ * const blob = await toBlob({ lix })
7
+ */
8
+ export async function toBlob(args) {
9
+ return new Blob([contentFromDatabase(args.lix.sqlite)]);
10
+ }
11
+ //# sourceMappingURL=to-blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-blob.js","sourceRoot":"","sources":["../../src/lix/to-blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAE5B;IACA,OAAO,IAAI,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Change } from "../database/schema.js";
2
+ import type { Lix } from "../lix/open-lix.js";
3
+ /**
4
+ * Applies own changes to lix itself.
5
+ */
6
+ export declare function applyOwnChanges(args: {
7
+ lix: Pick<Lix, "db">;
8
+ changes: Change[];
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=apply-own-change.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-own-change.d.ts","sourceRoot":"","sources":["../../src/own-change-control/apply-own-change.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAO9C;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC3C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFhB"}
@@ -0,0 +1,69 @@
1
+ import { CompiledQuery, } from "kysely";
2
+ import { changeControlledTableIds, primaryKeysForEntityId, } from "./change-controlled-tables.js";
3
+ import { withSkipOwnChangeControl } from "./with-skip-own-change-control.js";
4
+ /**
5
+ * Applies own changes to lix itself.
6
+ */
7
+ export async function applyOwnChanges(args) {
8
+ const executeInTransaction = async (trx) => {
9
+ await withSkipOwnChangeControl(trx, async (trx) => {
10
+ // defer foreign keys to avoid constraint violations
11
+ // until the end of the transaction. otherwise, we would
12
+ // need to apply the changes in the correct order.
13
+ await trx.executeQuery(CompiledQuery.raw("PRAGMA defer_foreign_keys = ON;"));
14
+ await Promise.all(args.changes.map(async (change) => {
15
+ if (change.plugin_key !== "lix_own_change_control") {
16
+ throw new Error("Expected 'lix_own_change_control' as plugin key but received " +
17
+ change.plugin_key);
18
+ }
19
+ const snapshot = await trx
20
+ .selectFrom("snapshot")
21
+ .where("id", "=", change.snapshot_id)
22
+ .select("content")
23
+ .executeTakeFirstOrThrow();
24
+ // remove the prefix and suffix from the schema key
25
+ // `lix_key_value_table` -> `key_value`
26
+ const tableName = change.schema_key
27
+ .replace(/^lix_/, "")
28
+ .replace(/_table$/, "");
29
+ const primaryKeys = primaryKeysForEntityId(tableName, change.entity_id);
30
+ let query;
31
+ // deletion
32
+ if (snapshot.content === null) {
33
+ query = trx.deleteFrom(tableName);
34
+ for (const [key, value] of primaryKeys) {
35
+ query = query.where(key, "=", value);
36
+ }
37
+ }
38
+ // upsert
39
+ else {
40
+ // take the current file data if the table is `file`
41
+ // (can be optimized later to adjust the query instead)
42
+ if (tableName === "file") {
43
+ const data = await trx
44
+ .selectFrom("file")
45
+ .where("id", "=", change.entity_id)
46
+ .select("data")
47
+ .executeTakeFirst();
48
+ snapshot.content.data =
49
+ data?.data ??
50
+ // empty uint8array will trigger applyChanges() to pass an empty file to the plugin
51
+ new Uint8Array();
52
+ }
53
+ query = trx
54
+ .insertInto(tableName)
55
+ .values(snapshot.content)
56
+ .onConflict((oc) => oc.doUpdateSet(snapshot.content));
57
+ }
58
+ await query.execute();
59
+ }));
60
+ });
61
+ };
62
+ if (args.lix.db.isTransaction) {
63
+ return await executeInTransaction(args.lix.db);
64
+ }
65
+ else {
66
+ return await args.lix.db.transaction().execute(executeInTransaction);
67
+ }
68
+ }
69
+ //# sourceMappingURL=apply-own-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-own-change.js","sourceRoot":"","sources":["../../src/own-change-control/apply-own-change.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apply-own-change.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-own-change.test.d.ts","sourceRoot":"","sources":["../../src/own-change-control/apply-own-change.test.ts"],"names":[],"mappings":""}