@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.
- package/README.md +68 -0
- package/dist/account/create-account.d.ts +7 -0
- package/dist/account/create-account.d.ts.map +1 -0
- package/dist/account/create-account.js +20 -0
- package/dist/account/create-account.js.map +1 -0
- package/dist/account/create-account.test.d.ts +2 -0
- package/dist/account/create-account.test.d.ts.map +1 -0
- package/dist/account/create-account.test.js +22 -0
- package/dist/account/create-account.test.js.map +1 -0
- package/dist/account/database-schema.d.ts +18 -0
- package/dist/account/database-schema.d.ts.map +1 -0
- package/dist/account/database-schema.js +36 -0
- package/dist/account/database-schema.js.map +1 -0
- package/dist/account/database-schema.test.d.ts +2 -0
- package/dist/account/database-schema.test.d.ts.map +1 -0
- package/dist/account/database-schema.test.js +139 -0
- package/dist/account/database-schema.test.js.map +1 -0
- package/dist/account/index.d.ts +4 -0
- package/dist/account/index.d.ts.map +1 -0
- package/dist/account/index.js +4 -0
- package/dist/account/index.js.map +1 -0
- package/dist/account/switch-account.d.ts +26 -0
- package/dist/account/switch-account.d.ts.map +1 -0
- package/dist/account/switch-account.js +34 -0
- package/dist/account/switch-account.js.map +1 -0
- package/dist/account/switch-account.test.d.ts +2 -0
- package/dist/account/switch-account.test.d.ts.map +1 -0
- package/dist/account/switch-account.test.js +48 -0
- package/dist/account/switch-account.test.js.map +1 -0
- package/dist/change/apply-changes.d.ts +25 -0
- package/dist/change/apply-changes.d.ts.map +1 -0
- package/dist/change/apply-changes.js +98 -0
- package/dist/change/apply-changes.js.map +1 -0
- package/dist/change/apply-changes.test.d.ts +2 -0
- package/dist/change/apply-changes.test.d.ts.map +1 -0
- package/dist/change/apply-changes.test.js +222 -0
- package/dist/change/apply-changes.test.js.map +1 -0
- package/dist/change/create-change.d.ts +27 -0
- package/dist/change/create-change.d.ts.map +1 -0
- package/dist/change/create-change.js +97 -0
- package/dist/change/create-change.js.map +1 -0
- package/dist/change/create-change.test.d.ts +2 -0
- package/dist/change/create-change.test.d.ts.map +1 -0
- package/dist/change/create-change.test.js +235 -0
- package/dist/change/create-change.test.js.map +1 -0
- package/dist/change/index.d.ts +3 -0
- package/dist/change/index.d.ts.map +1 -0
- package/dist/change/index.js +3 -0
- package/dist/change/index.js.map +1 -0
- package/dist/change/mock-change.d.ts +10 -0
- package/dist/change/mock-change.d.ts.map +1 -0
- package/dist/change/mock-change.js +20 -0
- package/dist/change/mock-change.js.map +1 -0
- package/dist/change-conflict/create-change-conflict.d.ts +15 -0
- package/dist/change-conflict/create-change-conflict.d.ts.map +1 -0
- package/dist/change-conflict/create-change-conflict.js +67 -0
- package/dist/change-conflict/create-change-conflict.js.map +1 -0
- package/dist/change-conflict/create-change-conflict.test.d.ts +2 -0
- package/dist/change-conflict/create-change-conflict.test.d.ts.map +1 -0
- package/dist/change-conflict/create-change-conflict.test.js +145 -0
- package/dist/change-conflict/create-change-conflict.test.js.map +1 -0
- package/dist/change-conflict/detect-change-conflicts.d.ts +23 -0
- package/dist/change-conflict/detect-change-conflicts.d.ts.map +1 -0
- package/dist/change-conflict/detect-change-conflicts.js +50 -0
- package/dist/change-conflict/detect-change-conflicts.js.map +1 -0
- package/dist/change-conflict/detect-change-conflicts.test.d.ts +2 -0
- package/dist/change-conflict/detect-change-conflicts.test.d.ts.map +1 -0
- package/dist/change-conflict/detect-change-conflicts.test.js +182 -0
- package/dist/change-conflict/detect-change-conflicts.test.js.map +1 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.d.ts +32 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.d.ts.map +1 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.js +66 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.js.map +1 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.test.d.ts +2 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.test.d.ts.map +1 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.test.js +201 -0
- package/dist/change-conflict/detect-diverging-entity-conflict.test.js.map +1 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.d.ts +14 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.d.ts.map +1 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.js +67 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.js.map +1 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.test.d.ts +2 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.test.d.ts.map +1 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.test.js +182 -0
- package/dist/change-conflict/garbage-collect-change-conflicts.test.js.map +1 -0
- package/dist/change-conflict/index.d.ts +4 -0
- package/dist/change-conflict/index.d.ts.map +1 -0
- package/dist/change-conflict/index.js +4 -0
- package/dist/change-conflict/index.js.map +1 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.d.ts +12 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.d.ts.map +1 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.js +48 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.js.map +1 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.test.d.ts +2 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.test.d.ts.map +1 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.test.js +95 -0
- package/dist/change-conflict/resolve-conflict-by-selecting.test.js.map +1 -0
- package/dist/change-conflict/update-change-conflicts.d.ts +2 -0
- package/dist/change-conflict/update-change-conflicts.d.ts.map +1 -0
- package/dist/change-conflict/update-change-conflicts.js +72 -0
- package/dist/change-conflict/update-change-conflicts.js.map +1 -0
- package/dist/change-queue/change-queue-settled.d.ts +13 -0
- package/dist/change-queue/change-queue-settled.d.ts.map +1 -0
- package/dist/change-queue/change-queue-settled.js +25 -0
- package/dist/change-queue/change-queue-settled.js.map +1 -0
- package/dist/change-queue/change-queue-settled.test.d.ts +2 -0
- package/dist/change-queue/change-queue-settled.test.d.ts.map +1 -0
- package/dist/change-queue/change-queue-settled.test.js +47 -0
- package/dist/change-queue/change-queue-settled.test.js.map +1 -0
- package/dist/change-queue/file-handlers.d.ts +24 -0
- package/dist/change-queue/file-handlers.d.ts.map +1 -0
- package/dist/change-queue/file-handlers.js +209 -0
- package/dist/change-queue/file-handlers.js.map +1 -0
- package/dist/change-queue/index.d.ts +2 -0
- package/dist/change-queue/index.d.ts.map +1 -0
- package/dist/change-queue/index.js +2 -0
- package/dist/change-queue/index.js.map +1 -0
- package/dist/change-queue/init-change-queue.d.ts +7 -0
- package/dist/change-queue/init-change-queue.d.ts.map +1 -0
- package/dist/change-queue/init-change-queue.js +80 -0
- package/dist/change-queue/init-change-queue.js.map +1 -0
- package/dist/change-queue/init-change-queue.test.d.ts +2 -0
- package/dist/change-queue/init-change-queue.test.d.ts.map +1 -0
- package/dist/change-queue/init-change-queue.test.js +373 -0
- package/dist/change-queue/init-change-queue.test.js.map +1 -0
- package/dist/change-queue/with-skip-change-queue.d.ts +3 -0
- package/dist/change-queue/with-skip-change-queue.d.ts.map +1 -0
- package/dist/change-queue/with-skip-change-queue.js +26 -0
- package/dist/change-queue/with-skip-change-queue.js.map +1 -0
- package/dist/change-queue/with-skip-change-queue.test.d.ts +2 -0
- package/dist/change-queue/with-skip-change-queue.test.d.ts.map +1 -0
- package/dist/change-queue/with-skip-change-queue.test.js +138 -0
- package/dist/change-queue/with-skip-change-queue.test.js.map +1 -0
- package/dist/change-schema/index.d.ts +2 -0
- package/dist/change-schema/index.d.ts.map +1 -0
- package/dist/change-schema/index.js +2 -0
- package/dist/change-schema/index.js.map +1 -0
- package/dist/change-schema/types.d.ts +40 -0
- package/dist/change-schema/types.d.ts.map +1 -0
- package/dist/change-schema/types.js +2 -0
- package/dist/change-schema/types.js.map +1 -0
- package/dist/change-schema/types.test-d.d.ts +2 -0
- package/dist/change-schema/types.test-d.d.ts.map +1 -0
- package/dist/change-schema/types.test-d.js +34 -0
- package/dist/change-schema/types.test-d.js.map +1 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.d.ts +19 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.d.ts.map +1 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.js +36 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.js.map +1 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.test.d.ts +2 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.test.d.ts.map +1 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.test.js +106 -0
- package/dist/change-set/change-set-element-in-symmetric-difference.test.js.map +1 -0
- package/dist/change-set/create-change-set.d.ts +16 -0
- package/dist/change-set/create-change-set.d.ts.map +1 -0
- package/dist/change-set/create-change-set.js +33 -0
- package/dist/change-set/create-change-set.js.map +1 -0
- package/dist/change-set/create-change-set.test.d.ts +2 -0
- package/dist/change-set/create-change-set.test.d.ts.map +1 -0
- package/dist/change-set/create-change-set.test.js +37 -0
- package/dist/change-set/create-change-set.test.js.map +1 -0
- package/dist/change-set/index.d.ts +3 -0
- package/dist/change-set/index.d.ts.map +1 -0
- package/dist/change-set/index.js +3 -0
- package/dist/change-set/index.js.map +1 -0
- package/dist/database/apply-schema.d.ts +8 -0
- package/dist/database/apply-schema.d.ts.map +1 -0
- package/dist/database/apply-schema.js +318 -0
- package/dist/database/apply-schema.js.map +1 -0
- package/dist/database/execute-sync.d.ts +18 -0
- package/dist/database/execute-sync.d.ts.map +1 -0
- package/dist/database/execute-sync.js +36 -0
- package/dist/database/execute-sync.js.map +1 -0
- package/dist/database/execute-sync.test.d.ts +2 -0
- package/dist/database/execute-sync.test.d.ts.map +1 -0
- package/dist/database/execute-sync.test.js +118 -0
- package/dist/database/execute-sync.test.js.map +1 -0
- package/dist/database/index.d.ts +5 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +5 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/init-db.d.ts +7 -0
- package/dist/database/init-db.d.ts.map +1 -0
- package/dist/database/init-db.js +80 -0
- package/dist/database/init-db.js.map +1 -0
- package/dist/database/init-db.test.d.ts +2 -0
- package/dist/database/init-db.test.d.ts.map +1 -0
- package/dist/database/init-db.test.js +386 -0
- package/dist/database/init-db.test.js.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts +3 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js +41 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.d.ts +2 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.d.ts.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.js +162 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.js.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.d.ts +12 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.d.ts.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js +149 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.d.ts +2 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.d.ts.map +1 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.js +162 -0
- package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.js.map +1 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts +3 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts.map +1 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.js +100 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.js.map +1 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.d.ts +2 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.d.ts.map +1 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js +107 -0
- package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js.map +1 -0
- package/dist/database/mutation-log/database-schema.d.ts +16 -0
- package/dist/database/mutation-log/database-schema.d.ts.map +1 -0
- package/dist/database/mutation-log/database-schema.js +103 -0
- package/dist/database/mutation-log/database-schema.js.map +1 -0
- package/dist/database/mutation-log/lix-session.d.ts +8 -0
- package/dist/database/mutation-log/lix-session.d.ts.map +1 -0
- package/dist/database/mutation-log/lix-session.js +18 -0
- package/dist/database/mutation-log/lix-session.js.map +1 -0
- package/dist/database/schema.d.ts +220 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +2 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/discussion/create-comment.d.ts +10 -0
- package/dist/discussion/create-comment.d.ts.map +1 -0
- package/dist/discussion/create-comment.js +13 -0
- package/dist/discussion/create-comment.js.map +1 -0
- package/dist/discussion/create-discussion.d.ts +23 -0
- package/dist/discussion/create-discussion.d.ts.map +1 -0
- package/dist/discussion/create-discussion.js +41 -0
- package/dist/discussion/create-discussion.js.map +1 -0
- package/dist/discussion/create-discussion.test.d.ts +2 -0
- package/dist/discussion/create-discussion.test.d.ts.map +1 -0
- package/dist/discussion/create-discussion.test.js +64 -0
- package/dist/discussion/create-discussion.test.js.map +1 -0
- package/dist/discussion/index.d.ts +3 -0
- package/dist/discussion/index.d.ts.map +1 -0
- package/dist/discussion/index.js +3 -0
- package/dist/discussion/index.js.map +1 -0
- package/dist/file/index.d.ts +2 -0
- package/dist/file/index.d.ts.map +1 -0
- package/dist/file/index.js +2 -0
- package/dist/file/index.js.map +1 -0
- package/dist/file/validate-file-path.d.ts +16 -0
- package/dist/file/validate-file-path.d.ts.map +1 -0
- package/dist/file/validate-file-path.js +44 -0
- package/dist/file/validate-file-path.js.map +1 -0
- package/dist/file/validate-file-path.test.d.ts +2 -0
- package/dist/file/validate-file-path.test.d.ts.map +1 -0
- package/dist/file/validate-file-path.test.js +36 -0
- package/dist/file/validate-file-path.test.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/key-value/database-schema.d.ts +33 -0
- package/dist/key-value/database-schema.d.ts.map +1 -0
- package/dist/key-value/database-schema.js +18 -0
- package/dist/key-value/database-schema.js.map +1 -0
- package/dist/key-value/database-schema.test.d.ts +2 -0
- package/dist/key-value/database-schema.test.d.ts.map +1 -0
- package/dist/key-value/database-schema.test.js +98 -0
- package/dist/key-value/database-schema.test.js.map +1 -0
- package/dist/lix/index.d.ts +4 -0
- package/dist/lix/index.d.ts.map +1 -0
- package/dist/lix/index.js +7 -0
- package/dist/lix/index.js.map +1 -0
- package/dist/lix/merge.d.ts +9 -0
- package/dist/lix/merge.d.ts.map +1 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.d.ts +15 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.d.ts.map +1 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.js +34 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.js.map +1 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.test.d.ts +2 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.test.d.ts.map +1 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.test.js +121 -0
- package/dist/lix/merge.get-leaf-changes-only-in-source.test.js.map +1 -0
- package/dist/lix/merge.js +195 -0
- package/dist/lix/merge.js.map +1 -0
- package/dist/lix/merge.test.d.ts +2 -0
- package/dist/lix/merge.test.d.ts.map +1 -0
- package/dist/lix/merge.test.js +700 -0
- package/dist/lix/merge.test.js.map +1 -0
- package/dist/lix/new-lix.d.ts +8 -0
- package/dist/lix/new-lix.d.ts.map +1 -0
- package/dist/lix/new-lix.js +27 -0
- package/dist/lix/new-lix.js.map +1 -0
- package/dist/lix/new-lix.test.d.ts +2 -0
- package/dist/lix/new-lix.test.d.ts.map +1 -0
- package/dist/lix/new-lix.test.js +21 -0
- package/dist/lix/new-lix.test.js.map +1 -0
- package/dist/lix/open-lix-in-memory.d.ts +12 -0
- package/dist/lix/open-lix-in-memory.d.ts.map +1 -0
- package/dist/lix/open-lix-in-memory.js +19 -0
- package/dist/lix/open-lix-in-memory.js.map +1 -0
- package/dist/lix/open-lix-in-memory.test.d.ts +2 -0
- package/dist/lix/open-lix-in-memory.test.d.ts.map +1 -0
- package/dist/lix/open-lix-in-memory.test.js +29 -0
- package/dist/lix/open-lix-in-memory.test.js.map +1 -0
- package/dist/lix/open-lix.d.ts +52 -0
- package/dist/lix/open-lix.d.ts.map +1 -0
- package/dist/lix/open-lix.js +47 -0
- package/dist/lix/open-lix.js.map +1 -0
- package/dist/lix/open-lix.test.d.ts +2 -0
- package/dist/lix/open-lix.test.d.ts.map +1 -0
- package/dist/lix/open-lix.test.js +29 -0
- package/dist/lix/open-lix.test.js.map +1 -0
- package/dist/own-entity-change-control/apply-own-entity-change.d.ts +10 -0
- package/dist/own-entity-change-control/apply-own-entity-change.d.ts.map +1 -0
- package/dist/own-entity-change-control/apply-own-entity-change.js +69 -0
- package/dist/own-entity-change-control/apply-own-entity-change.js.map +1 -0
- package/dist/own-entity-change-control/apply-own-entity-change.test.d.ts +2 -0
- package/dist/own-entity-change-control/apply-own-entity-change.test.d.ts.map +1 -0
- package/dist/own-entity-change-control/apply-own-entity-change.test.js +297 -0
- package/dist/own-entity-change-control/apply-own-entity-change.test.js.map +1 -0
- package/dist/own-entity-change-control/change-controlled-tables.d.ts +61 -0
- package/dist/own-entity-change-control/change-controlled-tables.d.ts.map +1 -0
- package/dist/own-entity-change-control/change-controlled-tables.js +71 -0
- package/dist/own-entity-change-control/change-controlled-tables.js.map +1 -0
- package/dist/own-entity-change-control/change-controlled-tables.test.d.ts +2 -0
- package/dist/own-entity-change-control/change-controlled-tables.test.d.ts.map +1 -0
- package/dist/own-entity-change-control/change-controlled-tables.test.js +48 -0
- package/dist/own-entity-change-control/change-controlled-tables.test.js.map +1 -0
- package/dist/own-entity-change-control/database-triggers.d.ts +5 -0
- package/dist/own-entity-change-control/database-triggers.d.ts.map +1 -0
- package/dist/own-entity-change-control/database-triggers.js +135 -0
- package/dist/own-entity-change-control/database-triggers.js.map +1 -0
- package/dist/own-entity-change-control/database-triggers.test.d.ts +2 -0
- package/dist/own-entity-change-control/database-triggers.test.d.ts.map +1 -0
- package/dist/own-entity-change-control/database-triggers.test.js +214 -0
- package/dist/own-entity-change-control/database-triggers.test.js.map +1 -0
- package/dist/own-entity-change-control/index.d.ts +2 -0
- package/dist/own-entity-change-control/index.d.ts.map +1 -0
- package/dist/own-entity-change-control/index.js +2 -0
- package/dist/own-entity-change-control/index.js.map +1 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.d.ts +3 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.d.ts.map +1 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.js +24 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.js.map +1 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.test.d.ts +2 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.test.d.ts.map +1 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.test.js +49 -0
- package/dist/own-entity-change-control/with-skip-own-change-control.test.js.map +1 -0
- package/dist/plugin/index.d.ts +2 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +2 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/lix-plugin.d.ts +114 -0
- package/dist/plugin/lix-plugin.d.ts.map +1 -0
- package/dist/plugin/lix-plugin.js +2 -0
- package/dist/plugin/lix-plugin.js.map +1 -0
- package/dist/plugin/lix-plugin.test-d.d.ts +2 -0
- package/dist/plugin/lix-plugin.test-d.d.ts.map +1 -0
- package/dist/plugin/lix-plugin.test-d.js +40 -0
- package/dist/plugin/lix-plugin.test-d.js.map +1 -0
- package/dist/plugin/load-plugin.d.ts +5 -0
- package/dist/plugin/load-plugin.d.ts.map +1 -0
- package/dist/plugin/load-plugin.js +20 -0
- package/dist/plugin/load-plugin.js.map +1 -0
- package/dist/plugin/with-transaction.d.ts +11 -0
- package/dist/plugin/with-transaction.d.ts.map +1 -0
- package/dist/plugin/with-transaction.js +15 -0
- package/dist/plugin/with-transaction.js.map +1 -0
- package/dist/query-filter/change-conflict-in-version.d.ts +15 -0
- package/dist/query-filter/change-conflict-in-version.d.ts.map +1 -0
- package/dist/query-filter/change-conflict-in-version.js +18 -0
- package/dist/query-filter/change-conflict-in-version.js.map +1 -0
- package/dist/query-filter/change-conflict-in-version.test.d.ts +2 -0
- package/dist/query-filter/change-conflict-in-version.test.d.ts.map +1 -0
- package/dist/query-filter/change-conflict-in-version.test.js +55 -0
- package/dist/query-filter/change-conflict-in-version.test.js.map +1 -0
- package/dist/query-filter/change-has-label.d.ts +25 -0
- package/dist/query-filter/change-has-label.d.ts.map +1 -0
- package/dist/query-filter/change-has-label.js +30 -0
- package/dist/query-filter/change-has-label.js.map +1 -0
- package/dist/query-filter/change-has-label.test.d.ts +2 -0
- package/dist/query-filter/change-has-label.test.d.ts.map +1 -0
- package/dist/query-filter/change-has-label.test.js +46 -0
- package/dist/query-filter/change-has-label.test.js.map +1 -0
- package/dist/query-filter/change-in-version.d.ts +16 -0
- package/dist/query-filter/change-in-version.d.ts.map +1 -0
- package/dist/query-filter/change-in-version.js +29 -0
- package/dist/query-filter/change-in-version.js.map +1 -0
- package/dist/query-filter/change-in-version.test.d.ts +2 -0
- package/dist/query-filter/change-in-version.test.d.ts.map +1 -0
- package/dist/query-filter/change-in-version.test.js +75 -0
- package/dist/query-filter/change-in-version.test.js.map +1 -0
- package/dist/query-filter/change-is-leaf-in-version.d.ts +16 -0
- package/dist/query-filter/change-is-leaf-in-version.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf-in-version.js +35 -0
- package/dist/query-filter/change-is-leaf-in-version.js.map +1 -0
- package/dist/query-filter/change-is-leaf-in-version.test.d.ts +2 -0
- package/dist/query-filter/change-is-leaf-in-version.test.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf-in-version.test.js +70 -0
- package/dist/query-filter/change-is-leaf-in-version.test.js.map +1 -0
- package/dist/query-filter/change-is-leaf-of.bench.d.ts +2 -0
- package/dist/query-filter/change-is-leaf-of.bench.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf-of.bench.js +132 -0
- package/dist/query-filter/change-is-leaf-of.bench.js.map +1 -0
- package/dist/query-filter/change-is-leaf-of.d.ts +29 -0
- package/dist/query-filter/change-is-leaf-of.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf-of.js +44 -0
- package/dist/query-filter/change-is-leaf-of.js.map +1 -0
- package/dist/query-filter/change-is-leaf-of.test.d.ts +2 -0
- package/dist/query-filter/change-is-leaf-of.test.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf-of.test.js +71 -0
- package/dist/query-filter/change-is-leaf-of.test.js.map +1 -0
- package/dist/query-filter/change-is-leaf.d.ts +18 -0
- package/dist/query-filter/change-is-leaf.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf.js +18 -0
- package/dist/query-filter/change-is-leaf.js.map +1 -0
- package/dist/query-filter/change-is-leaf.test.d.ts +2 -0
- package/dist/query-filter/change-is-leaf.test.d.ts.map +1 -0
- package/dist/query-filter/change-is-leaf.test.js +122 -0
- package/dist/query-filter/change-is-leaf.test.js.map +1 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts +16 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts.map +1 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.js +55 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.js.map +1 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.test.d.ts +2 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.test.d.ts.map +1 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js +155 -0
- package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js.map +1 -0
- package/dist/query-filter/change-set-has-label.d.ts +25 -0
- package/dist/query-filter/change-set-has-label.d.ts.map +1 -0
- package/dist/query-filter/change-set-has-label.js +29 -0
- package/dist/query-filter/change-set-has-label.js.map +1 -0
- package/dist/query-filter/change-set-has-label.test.d.ts +2 -0
- package/dist/query-filter/change-set-has-label.test.d.ts.map +1 -0
- package/dist/query-filter/change-set-has-label.test.js +43 -0
- package/dist/query-filter/change-set-has-label.test.js.map +1 -0
- package/dist/query-filter/index.d.ts +9 -0
- package/dist/query-filter/index.d.ts.map +1 -0
- package/dist/query-filter/index.js +9 -0
- package/dist/query-filter/index.js.map +1 -0
- package/dist/query-filter/version-change-in-difference.d.ts +18 -0
- package/dist/query-filter/version-change-in-difference.d.ts.map +1 -0
- package/dist/query-filter/version-change-in-difference.js +25 -0
- package/dist/query-filter/version-change-in-difference.js.map +1 -0
- package/dist/query-filter/version-change-in-difference.test.d.ts +2 -0
- package/dist/query-filter/version-change-in-difference.test.d.ts.map +1 -0
- package/dist/query-filter/version-change-in-difference.test.js +77 -0
- package/dist/query-filter/version-change-in-difference.test.js.map +1 -0
- package/dist/query-filter/version-change-in-symmetric-difference.d.ts +19 -0
- package/dist/query-filter/version-change-in-symmetric-difference.d.ts.map +1 -0
- package/dist/query-filter/version-change-in-symmetric-difference.js +36 -0
- package/dist/query-filter/version-change-in-symmetric-difference.js.map +1 -0
- package/dist/query-filter/version-change-in-symmetric-difference.test.d.ts +2 -0
- package/dist/query-filter/version-change-in-symmetric-difference.test.d.ts.map +1 -0
- package/dist/query-filter/version-change-in-symmetric-difference.test.js +86 -0
- package/dist/query-filter/version-change-in-symmetric-difference.test.js.map +1 -0
- package/dist/server-api-handler/create-server-api-handler.d.ts +48 -0
- package/dist/server-api-handler/create-server-api-handler.d.ts.map +1 -0
- package/dist/server-api-handler/create-server-api-handler.js +68 -0
- package/dist/server-api-handler/create-server-api-handler.js.map +1 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.d.ts +8 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.d.ts.map +1 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.js +93 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.js.map +1 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.test.d.ts +2 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.test.d.ts.map +1 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.test.js +102 -0
- package/dist/server-api-handler/environment/create-in-memory-environment.test.js.map +1 -0
- package/dist/server-api-handler/environment/environment.d.ts +53 -0
- package/dist/server-api-handler/environment/environment.d.ts.map +1 -0
- package/dist/server-api-handler/environment/environment.js +2 -0
- package/dist/server-api-handler/environment/environment.js.map +1 -0
- package/dist/server-api-handler/index.d.ts +3 -0
- package/dist/server-api-handler/index.d.ts.map +1 -0
- package/dist/server-api-handler/index.js +3 -0
- package/dist/server-api-handler/index.js.map +1 -0
- package/dist/server-api-handler/routes/get-v1.d.ts +3 -0
- package/dist/server-api-handler/routes/get-v1.d.ts.map +1 -0
- package/dist/server-api-handler/routes/get-v1.js +45 -0
- package/dist/server-api-handler/routes/get-v1.js.map +1 -0
- package/dist/server-api-handler/routes/get-v1.test.d.ts +2 -0
- package/dist/server-api-handler/routes/get-v1.test.d.ts.map +1 -0
- package/dist/server-api-handler/routes/get-v1.test.js +107 -0
- package/dist/server-api-handler/routes/get-v1.test.js.map +1 -0
- package/dist/server-api-handler/routes/new-v1.d.ts +3 -0
- package/dist/server-api-handler/routes/new-v1.d.ts.map +1 -0
- package/dist/server-api-handler/routes/new-v1.js +36 -0
- package/dist/server-api-handler/routes/new-v1.js.map +1 -0
- package/dist/server-api-handler/routes/new-v1.test.d.ts +2 -0
- package/dist/server-api-handler/routes/new-v1.test.d.ts.map +1 -0
- package/dist/server-api-handler/routes/new-v1.test.js +71 -0
- package/dist/server-api-handler/routes/new-v1.test.js.map +1 -0
- package/dist/server-api-handler/routes/pull-v1.d.ts +3 -0
- package/dist/server-api-handler/routes/pull-v1.d.ts.map +1 -0
- package/dist/server-api-handler/routes/pull-v1.js +41 -0
- package/dist/server-api-handler/routes/pull-v1.js.map +1 -0
- package/dist/server-api-handler/routes/pull-v1.test.d.ts +2 -0
- package/dist/server-api-handler/routes/pull-v1.test.d.ts.map +1 -0
- package/dist/server-api-handler/routes/pull-v1.test.js +145 -0
- package/dist/server-api-handler/routes/pull-v1.test.js.map +1 -0
- package/dist/server-api-handler/routes/push-v1.d.ts +3 -0
- package/dist/server-api-handler/routes/push-v1.d.ts.map +1 -0
- package/dist/server-api-handler/routes/push-v1.js +142 -0
- package/dist/server-api-handler/routes/push-v1.js.map +1 -0
- package/dist/server-api-handler/routes/push-v1.test.d.ts +2 -0
- package/dist/server-api-handler/routes/push-v1.test.d.ts.map +1 -0
- package/dist/server-api-handler/routes/push-v1.test.js +230 -0
- package/dist/server-api-handler/routes/push-v1.test.js.map +1 -0
- package/dist/snapshot/create-snapshot.d.ts +18 -0
- package/dist/snapshot/create-snapshot.d.ts.map +1 -0
- package/dist/snapshot/create-snapshot.js +33 -0
- package/dist/snapshot/create-snapshot.js.map +1 -0
- package/dist/snapshot/create-snapshot.test.d.ts +2 -0
- package/dist/snapshot/create-snapshot.test.d.ts.map +1 -0
- package/dist/snapshot/create-snapshot.test.js +54 -0
- package/dist/snapshot/create-snapshot.test.js.map +1 -0
- package/dist/snapshot/index.d.ts +3 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/snapshot/index.js +3 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/snapshot/json-sha-256.d.ts +8 -0
- package/dist/snapshot/json-sha-256.d.ts.map +1 -0
- package/dist/snapshot/json-sha-256.js +29 -0
- package/dist/snapshot/json-sha-256.js.map +1 -0
- package/dist/snapshot/json-sha-256.test.d.ts +2 -0
- package/dist/snapshot/json-sha-256.test.d.ts.map +1 -0
- package/dist/snapshot/json-sha-256.test.js +10 -0
- package/dist/snapshot/json-sha-256.test.js.map +1 -0
- package/dist/snapshot/mock-json-snapshot.d.ts +8 -0
- package/dist/snapshot/mock-json-snapshot.d.ts.map +1 -0
- package/dist/snapshot/mock-json-snapshot.js +13 -0
- package/dist/snapshot/mock-json-snapshot.js.map +1 -0
- package/dist/sync/get-diffing-rows.d.ts +16 -0
- package/dist/sync/get-diffing-rows.d.ts.map +1 -0
- package/dist/sync/get-diffing-rows.js +62 -0
- package/dist/sync/get-diffing-rows.js.map +1 -0
- package/dist/sync/merge-state.d.ts +20 -0
- package/dist/sync/merge-state.d.ts.map +1 -0
- package/dist/sync/merge-state.js +237 -0
- package/dist/sync/merge-state.js.map +1 -0
- package/dist/sync/pull-from-server.d.ts +8 -0
- package/dist/sync/pull-from-server.d.ts.map +1 -0
- package/dist/sync/pull-from-server.js +115 -0
- package/dist/sync/pull-from-server.js.map +1 -0
- package/dist/sync/pull-from-server.test.d.ts +2 -0
- package/dist/sync/pull-from-server.test.d.ts.map +1 -0
- package/dist/sync/pull-from-server.test.js +325 -0
- package/dist/sync/pull-from-server.test.js.map +1 -0
- package/dist/sync/push-to-server.d.ts +12 -0
- package/dist/sync/push-to-server.d.ts.map +1 -0
- package/dist/sync/push-to-server.js +35 -0
- package/dist/sync/push-to-server.js.map +1 -0
- package/dist/sync/push-to-server.test.d.ts +2 -0
- package/dist/sync/push-to-server.test.d.ts.map +1 -0
- package/dist/sync/push-to-server.test.js +304 -0
- package/dist/sync/push-to-server.test.js.map +1 -0
- package/dist/sync/sync-process.d.ts +7 -0
- package/dist/sync/sync-process.d.ts.map +1 -0
- package/dist/sync/sync-process.js +79 -0
- package/dist/sync/sync-process.js.map +1 -0
- package/dist/sync/sync-process.test.d.ts +2 -0
- package/dist/sync/sync-process.test.d.ts.map +1 -0
- package/dist/sync/sync-process.test.js +255 -0
- package/dist/sync/sync-process.test.js.map +1 -0
- package/dist/version/create-version.d.ts +27 -0
- package/dist/version/create-version.d.ts.map +1 -0
- package/dist/version/create-version.js +62 -0
- package/dist/version/create-version.js.map +1 -0
- package/dist/version/create-version.test.d.ts +2 -0
- package/dist/version/create-version.test.d.ts.map +1 -0
- package/dist/version/create-version.test.js +126 -0
- package/dist/version/create-version.test.js.map +1 -0
- package/dist/version/index.d.ts +8 -0
- package/dist/version/index.d.ts.map +1 -0
- package/dist/version/index.js +8 -0
- package/dist/version/index.js.map +1 -0
- package/dist/version/merge-version.d.ts +8 -0
- package/dist/version/merge-version.d.ts.map +1 -0
- package/dist/version/merge-version.js +77 -0
- package/dist/version/merge-version.js.map +1 -0
- package/dist/version/merge-version.test.d.ts +2 -0
- package/dist/version/merge-version.test.d.ts.map +1 -0
- package/dist/version/merge-version.test.js +434 -0
- package/dist/version/merge-version.test.js.map +1 -0
- package/dist/version/switch-version.d.ts +27 -0
- package/dist/version/switch-version.d.ts.map +1 -0
- package/dist/version/switch-version.js +91 -0
- package/dist/version/switch-version.js.map +1 -0
- package/dist/version/switch-version.test.d.ts +2 -0
- package/dist/version/switch-version.test.d.ts.map +1 -0
- package/dist/version/switch-version.test.js +230 -0
- package/dist/version/switch-version.test.js.map +1 -0
- package/dist/version/update-changes-in-version.d.ts +13 -0
- package/dist/version/update-changes-in-version.d.ts.map +1 -0
- package/dist/version/update-changes-in-version.js +56 -0
- package/dist/version/update-changes-in-version.js.map +1 -0
- package/dist/version/update-changes-in-version.test.d.ts +2 -0
- package/dist/version/update-changes-in-version.test.d.ts.map +1 -0
- package/dist/version/update-changes-in-version.test.js +323 -0
- package/dist/version/update-changes-in-version.test.js.map +1 -0
- package/node_modules/@lix-js/server-api-schema/.prettierrc.json +3 -0
- package/node_modules/@lix-js/server-api-schema/.vscode/extensions.json +3 -0
- package/node_modules/@lix-js/server-api-schema/dist/schema.d.ts +384 -0
- package/node_modules/@lix-js/server-api-schema/package.json +21 -0
- package/node_modules/@lix-js/server-api-schema/src/schema.yaml +290 -0
- package/node_modules/@lix-js/server-api-schema/tsconfig.json +20 -0
- package/node_modules/sqlite-wasm-kysely/README.md +11 -0
- package/node_modules/sqlite-wasm-kysely/dist/dialect.d.ts +11 -0
- package/node_modules/sqlite-wasm-kysely/dist/dialect.js +13 -0
- package/node_modules/sqlite-wasm-kysely/dist/dialect.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/index.d.ts +2 -0
- package/node_modules/sqlite-wasm-kysely/dist/index.js +3 -0
- package/node_modules/sqlite-wasm-kysely/dist/index.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.d.ts +5 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.js +34 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/ConnectionMutex.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.d.ts +8 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.js +57 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmConnection.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.d.ts +18 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.js +2 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDialectConfig.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.d.ts +13 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.js +57 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/SqliteWasmDriver.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/index.d.ts +4 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/index.js +4 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/index.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.d.ts +3 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.js +5 -0
- package/node_modules/sqlite-wasm-kysely/dist/kysely/sqliteModule.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.d.ts +9 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.js +12 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/contentFromDatabase.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.d.ts +3 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.js +22 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/createInMemoryDatabase.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.d.ts +7 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.js +15 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/importDatabase.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/index.d.ts +5 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/index.js +5 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/index.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.d.ts +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.js +13 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/loadDatabaseInMemory.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.d.ts +7 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.js +17 -0
- package/node_modules/sqlite-wasm-kysely/dist/util/sqliteWasmBinary.js.map +1 -0
- package/node_modules/sqlite-wasm-kysely/package.json +34 -0
- package/node_modules/sqlite-wasm-kysely/src/dialect.ts +15 -0
- package/node_modules/sqlite-wasm-kysely/src/index.ts +2 -0
- package/node_modules/sqlite-wasm-kysely/src/kysely/ConnectionMutex.ts +23 -0
- package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmConnection.ts +57 -0
- package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmDialectConfig.ts +19 -0
- package/node_modules/sqlite-wasm-kysely/src/kysely/SqliteWasmDriver.ts +58 -0
- package/node_modules/sqlite-wasm-kysely/src/kysely/index.ts +4 -0
- package/node_modules/sqlite-wasm-kysely/src/kysely/sqliteModule.ts +7 -0
- package/node_modules/sqlite-wasm-kysely/src/util/contentFromDatabase.ts +13 -0
- package/node_modules/sqlite-wasm-kysely/src/util/createInMemoryDatabase.ts +30 -0
- package/node_modules/sqlite-wasm-kysely/src/util/importDatabase.ts +34 -0
- package/node_modules/sqlite-wasm-kysely/src/util/index.ts +5 -0
- package/node_modules/sqlite-wasm-kysely/src/util/loadDatabaseInMemory.ts +13 -0
- package/node_modules/sqlite-wasm-kysely/src/util/sqliteWasmBinary.ts +20 -0
- package/package.json +52 -0
- package/src/account/create-account.test.ts +26 -0
- package/src/account/create-account.ts +26 -0
- package/src/account/database-schema.test.ts +187 -0
- package/src/account/database-schema.ts +58 -0
- package/src/account/index.ts +3 -0
- package/src/account/switch-account.test.ts +63 -0
- package/src/account/switch-account.ts +39 -0
- package/src/change/apply-changes.test.ts +268 -0
- package/src/change/apply-changes.ts +114 -0
- package/src/change/create-change.test.ts +296 -0
- package/src/change/create-change.ts +129 -0
- package/src/change/index.ts +2 -0
- package/src/change/mock-change.ts +21 -0
- package/src/change-conflict/create-change-conflict.test.ts +173 -0
- package/src/change-conflict/create-change-conflict.ts +105 -0
- package/src/change-conflict/detect-change-conflicts.test.ts +215 -0
- package/src/change-conflict/detect-change-conflicts.ts +65 -0
- package/src/change-conflict/detect-diverging-entity-conflict.test.ts +228 -0
- package/src/change-conflict/detect-diverging-entity-conflict.ts +82 -0
- package/src/change-conflict/garbage-collect-change-conflicts.test.ts +219 -0
- package/src/change-conflict/garbage-collect-change-conflicts.ts +96 -0
- package/src/change-conflict/index.ts +3 -0
- package/src/change-conflict/resolve-conflict-by-selecting.test.ts +118 -0
- package/src/change-conflict/resolve-conflict-by-selecting.ts +66 -0
- package/src/change-conflict/update-change-conflicts.ts +79 -0
- package/src/change-queue/change-queue-settled.test.ts +56 -0
- package/src/change-queue/change-queue-settled.ts +31 -0
- package/src/change-queue/file-handlers.ts +273 -0
- package/src/change-queue/index.ts +1 -0
- package/src/change-queue/init-change-queue.test.ts +457 -0
- package/src/change-queue/init-change-queue.ts +99 -0
- package/src/change-queue/with-skip-change-queue.test.ts +158 -0
- package/src/change-queue/with-skip-change-queue.ts +33 -0
- package/src/change-schema/README.md +3 -0
- package/src/change-schema/index.ts +4 -0
- package/src/change-schema/types.test-d.ts +52 -0
- package/src/change-schema/types.ts +53 -0
- package/src/change-set/change-set-element-in-symmetric-difference.test.ts +128 -0
- package/src/change-set/change-set-element-in-symmetric-difference.ts +52 -0
- package/src/change-set/create-change-set.test.ts +43 -0
- package/src/change-set/create-change-set.ts +41 -0
- package/src/change-set/index.ts +2 -0
- package/src/database/apply-schema.ts +323 -0
- package/src/database/execute-sync.test.ts +152 -0
- package/src/database/execute-sync.ts +47 -0
- package/src/database/index.ts +4 -0
- package/src/database/init-db.test.ts +484 -0
- package/src/database/init-db.ts +94 -0
- package/src/database/kysely-plugin/parse-jsonb-plugin-v1.test.ts +204 -0
- package/src/database/kysely-plugin/parse-jsonb-plugin-v1.ts +48 -0
- package/src/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.ts +204 -0
- package/src/database/kysely-plugin/parse-jsonb-plugin-v2.ts +194 -0
- package/src/database/kysely-plugin/serialize-jsonb-plugin.test.ts +132 -0
- package/src/database/kysely-plugin/serialize-jsonb-plugin.ts +122 -0
- package/src/database/mutation-log/database-schema.ts +128 -0
- package/src/database/mutation-log/lix-session.ts +19 -0
- package/src/database/schema.ts +282 -0
- package/src/discussion/create-comment.ts +21 -0
- package/src/discussion/create-discussion.test.ts +76 -0
- package/src/discussion/create-discussion.ts +51 -0
- package/src/discussion/index.ts +2 -0
- package/src/file/index.ts +1 -0
- package/src/file/validate-file-path.test.ts +44 -0
- package/src/file/validate-file-path.ts +60 -0
- package/src/index.ts +16 -0
- package/src/key-value/database-schema.test.ts +119 -0
- package/src/key-value/database-schema.ts +54 -0
- package/src/lix/index.ts +6 -0
- package/src/lix/merge.get-leaf-changes-only-in-source.test.ts +143 -0
- package/src/lix/merge.get-leaf-changes-only-in-source.ts +46 -0
- package/src/lix/merge.test.ts +870 -0
- package/src/lix/merge.ts +244 -0
- package/src/lix/new-lix.test.ts +23 -0
- package/src/lix/new-lix.ts +30 -0
- package/src/lix/open-lix-in-memory.test.ts +30 -0
- package/src/lix/open-lix-in-memory.ts +28 -0
- package/src/lix/open-lix.test.ts +33 -0
- package/src/lix/open-lix.ts +103 -0
- package/src/own-entity-change-control/apply-own-entity-change.test.ts +365 -0
- package/src/own-entity-change-control/apply-own-entity-change.ts +110 -0
- package/src/own-entity-change-control/change-controlled-tables.test.ts +69 -0
- package/src/own-entity-change-control/change-controlled-tables.ts +103 -0
- package/src/own-entity-change-control/database-triggers.test.ts +259 -0
- package/src/own-entity-change-control/database-triggers.ts +189 -0
- package/src/own-entity-change-control/index.ts +1 -0
- package/src/own-entity-change-control/with-skip-own-change-control.test.ts +57 -0
- package/src/own-entity-change-control/with-skip-own-change-control.ts +30 -0
- package/src/plugin/index.ts +6 -0
- package/src/plugin/lix-plugin.test-d.ts +45 -0
- package/src/plugin/lix-plugin.ts +128 -0
- package/src/plugin/load-plugin.ts +28 -0
- package/src/plugin/with-transaction.ts +22 -0
- package/src/query-filter/change-conflict-in-version.test.ts +62 -0
- package/src/query-filter/change-conflict-in-version.ts +25 -0
- package/src/query-filter/change-has-label.test.ts +52 -0
- package/src/query-filter/change-has-label.ts +41 -0
- package/src/query-filter/change-in-version.test.ts +82 -0
- package/src/query-filter/change-in-version.ts +31 -0
- package/src/query-filter/change-is-leaf-in-version.test.ts +77 -0
- package/src/query-filter/change-is-leaf-in-version.ts +36 -0
- package/src/query-filter/change-is-leaf-of.bench.ts +175 -0
- package/src/query-filter/change-is-leaf-of.test.ts +84 -0
- package/src/query-filter/change-is-leaf-of.ts +46 -0
- package/src/query-filter/change-is-leaf.test.ts +140 -0
- package/src/query-filter/change-is-leaf.ts +25 -0
- package/src/query-filter/change-is-lowest-common-ancestor-of.test.ts +173 -0
- package/src/query-filter/change-is-lowest-common-ancestor-of.ts +57 -0
- package/src/query-filter/change-set-has-label.test.ts +50 -0
- package/src/query-filter/change-set-has-label.ts +36 -0
- package/src/query-filter/index.ts +8 -0
- package/src/query-filter/version-change-in-difference.test.ts +96 -0
- package/src/query-filter/version-change-in-difference.ts +37 -0
- package/src/query-filter/version-change-in-symmetric-difference.test.ts +105 -0
- package/src/query-filter/version-change-in-symmetric-difference.ts +52 -0
- package/src/server-api-handler/create-server-api-handler.ts +84 -0
- package/src/server-api-handler/environment/create-in-memory-environment.test.ts +130 -0
- package/src/server-api-handler/environment/create-in-memory-environment.ts +111 -0
- package/src/server-api-handler/environment/environment.ts +43 -0
- package/src/server-api-handler/index.ts +5 -0
- package/src/server-api-handler/routes/get-v1.test.ts +146 -0
- package/src/server-api-handler/routes/get-v1.ts +63 -0
- package/src/server-api-handler/routes/new-v1.test.ts +102 -0
- package/src/server-api-handler/routes/new-v1.ts +44 -0
- package/src/server-api-handler/routes/pull-v1.test.ts +200 -0
- package/src/server-api-handler/routes/pull-v1.ts +57 -0
- package/src/server-api-handler/routes/push-v1.test.ts +301 -0
- package/src/server-api-handler/routes/push-v1.ts +180 -0
- package/src/snapshot/create-snapshot.test.ts +68 -0
- package/src/snapshot/create-snapshot.ts +40 -0
- package/src/snapshot/index.ts +2 -0
- package/src/snapshot/json-sha-256.test.ts +12 -0
- package/src/snapshot/json-sha-256.ts +35 -0
- package/src/snapshot/mock-json-snapshot.ts +14 -0
- package/src/sync/get-diffing-rows.ts +96 -0
- package/src/sync/merge-state.ts +310 -0
- package/src/sync/pull-from-server.test.ts +410 -0
- package/src/sync/pull-from-server.ts +146 -0
- package/src/sync/push-to-server.test.ts +387 -0
- package/src/sync/push-to-server.ts +47 -0
- package/src/sync/sync-process.test.ts +327 -0
- package/src/sync/sync-process.ts +97 -0
- package/src/version/create-version.test.ts +149 -0
- package/src/version/create-version.ts +76 -0
- package/src/version/index.ts +8 -0
- package/src/version/merge-version.test.ts +530 -0
- package/src/version/merge-version.ts +96 -0
- package/src/version/switch-version.test.ts +295 -0
- package/src/version/switch-version.ts +110 -0
- package/src/version/update-changes-in-version.test.ts +371 -0
- package/src/version/update-changes-in-version.ts +66 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import type { SqliteDatabase } from "sqlite-wasm-kysely";
|
|
2
|
+
import { applyAccountDatabaseSchema } from "../account/database-schema.js";
|
|
3
|
+
import { applyKeyValueDatabaseSchema } from "../key-value/database-schema.js";
|
|
4
|
+
import { applyMutationLogDatabaseSchema } from "./mutation-log/database-schema.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Applies the database schema to the given sqlite database.
|
|
8
|
+
*/
|
|
9
|
+
export function applySchema(args: { sqlite: SqliteDatabase }): SqliteDatabase {
|
|
10
|
+
applyAccountDatabaseSchema(args.sqlite);
|
|
11
|
+
applyKeyValueDatabaseSchema(args.sqlite);
|
|
12
|
+
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
14
|
+
args.sqlite.exec`
|
|
15
|
+
|
|
16
|
+
PRAGMA foreign_keys = ON;
|
|
17
|
+
PRAGMA auto_vacuum = 2; -- incremental https://www.sqlite.org/pragma.html#pragma_auto_vacuum
|
|
18
|
+
|
|
19
|
+
-- file
|
|
20
|
+
|
|
21
|
+
CREATE TABLE IF NOT EXISTS file (
|
|
22
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
23
|
+
path TEXT NOT NULL UNIQUE,
|
|
24
|
+
data BLOB NOT NULL,
|
|
25
|
+
metadata BLOB,
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
CHECK (is_valid_file_path(path))
|
|
29
|
+
) STRICT;
|
|
30
|
+
|
|
31
|
+
CREATE TABLE IF NOT EXISTS change_queue (
|
|
32
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
33
|
+
file_id TEXT NOT NULL,
|
|
34
|
+
data_before BLOB,
|
|
35
|
+
data_after BLOB,
|
|
36
|
+
path_before TEXT,
|
|
37
|
+
path_after TEXT,
|
|
38
|
+
metadata_before BLOB,
|
|
39
|
+
metadata_after BLOB
|
|
40
|
+
) STRICT;
|
|
41
|
+
|
|
42
|
+
CREATE TRIGGER IF NOT EXISTS file_insert BEFORE INSERT ON file
|
|
43
|
+
BEGIN
|
|
44
|
+
INSERT INTO change_queue(
|
|
45
|
+
file_id, path_after, data_after, metadata_after
|
|
46
|
+
)
|
|
47
|
+
VALUES (
|
|
48
|
+
NEW.id, NEW.path, NEW.data, NEW.metadata
|
|
49
|
+
);
|
|
50
|
+
SELECT triggerChangeQueue();
|
|
51
|
+
END;
|
|
52
|
+
|
|
53
|
+
CREATE TRIGGER IF NOT EXISTS file_update BEFORE UPDATE ON file
|
|
54
|
+
BEGIN
|
|
55
|
+
INSERT INTO change_queue(
|
|
56
|
+
file_id,
|
|
57
|
+
path_before, data_before, metadata_before,
|
|
58
|
+
path_after, data_after, metadata_after
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
VALUES (
|
|
62
|
+
NEW.id,
|
|
63
|
+
OLD.path, OLD.data, OLD.metadata,
|
|
64
|
+
NEW.path, NEW.data, NEW.metadata
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
SELECT triggerChangeQueue();
|
|
68
|
+
END;
|
|
69
|
+
|
|
70
|
+
CREATE TRIGGER IF NOT EXISTS file_delete BEFORE DELETE ON file
|
|
71
|
+
BEGIN
|
|
72
|
+
INSERT INTO change_queue(file_id)
|
|
73
|
+
VALUES (OLD.id);
|
|
74
|
+
SELECT triggerChangeQueue();
|
|
75
|
+
END;
|
|
76
|
+
|
|
77
|
+
CREATE TABLE IF NOT EXISTS change (
|
|
78
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
79
|
+
entity_id TEXT NOT NULL,
|
|
80
|
+
schema_key TEXT NOT NULL,
|
|
81
|
+
file_id TEXT NOT NULL,
|
|
82
|
+
plugin_key TEXT NOT NULL,
|
|
83
|
+
snapshot_id TEXT NOT NULL,
|
|
84
|
+
created_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
85
|
+
|
|
86
|
+
UNIQUE (id, entity_id, file_id, schema_key),
|
|
87
|
+
FOREIGN KEY(snapshot_id) REFERENCES snapshot(id)
|
|
88
|
+
) STRICT;
|
|
89
|
+
|
|
90
|
+
CREATE TABLE IF NOT EXISTS change_author (
|
|
91
|
+
change_id TEXT NOT NULL,
|
|
92
|
+
account_id TEXT NOT NULL,
|
|
93
|
+
|
|
94
|
+
PRIMARY KEY (change_id, account_id),
|
|
95
|
+
FOREIGN KEY(change_id) REFERENCES change(id),
|
|
96
|
+
FOREIGN KEY(account_id) REFERENCES account(id)
|
|
97
|
+
) strict;
|
|
98
|
+
|
|
99
|
+
CREATE TABLE IF NOT EXISTS change_edge (
|
|
100
|
+
parent_id TEXT NOT NULL,
|
|
101
|
+
child_id TEXT NOT NULL,
|
|
102
|
+
|
|
103
|
+
PRIMARY KEY (parent_id, child_id),
|
|
104
|
+
FOREIGN KEY(parent_id) REFERENCES change(id),
|
|
105
|
+
FOREIGN KEY(child_id) REFERENCES change(id),
|
|
106
|
+
-- Prevent self referencing edges
|
|
107
|
+
CHECK (parent_id != child_id)
|
|
108
|
+
) STRICT;
|
|
109
|
+
|
|
110
|
+
CREATE TABLE IF NOT EXISTS snapshot (
|
|
111
|
+
id TEXT GENERATED ALWAYS AS (json_sha256(content)) STORED UNIQUE,
|
|
112
|
+
content BLOB
|
|
113
|
+
) STRICT;
|
|
114
|
+
|
|
115
|
+
-- Create the default 'no-content' snapshot
|
|
116
|
+
-- to avoid foreign key constraint violations in tests
|
|
117
|
+
INSERT OR IGNORE INTO snapshot (content) VALUES (NULL);
|
|
118
|
+
|
|
119
|
+
-- conflicts
|
|
120
|
+
|
|
121
|
+
CREATE INDEX IF NOT EXISTS idx_content_hash ON snapshot (id);
|
|
122
|
+
|
|
123
|
+
CREATE TABLE IF NOT EXISTS change_conflict (
|
|
124
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
125
|
+
|
|
126
|
+
key TEXT NOT NULL,
|
|
127
|
+
change_set_id TEXT NOT NULL,
|
|
128
|
+
FOREIGN KEY(change_set_id) REFERENCES change_set(id)
|
|
129
|
+
) STRICT;
|
|
130
|
+
|
|
131
|
+
CREATE TABLE IF NOT EXISTS change_conflict_resolution (
|
|
132
|
+
change_conflict_id TEXT NOT NULL,
|
|
133
|
+
resolved_change_id TEXT NOT NULL,
|
|
134
|
+
|
|
135
|
+
-- potential future columns
|
|
136
|
+
-- resolved_by <account_id>
|
|
137
|
+
-- resolved_at <timestamp>
|
|
138
|
+
|
|
139
|
+
PRIMARY KEY(change_conflict_id, resolved_change_id),
|
|
140
|
+
FOREIGN KEY(change_conflict_id) REFERENCES change_conflict(id),
|
|
141
|
+
FOREIGN KEY(resolved_change_id) REFERENCES change(id)
|
|
142
|
+
) STRICT;
|
|
143
|
+
|
|
144
|
+
-- change sets
|
|
145
|
+
|
|
146
|
+
CREATE TABLE IF NOT EXISTS change_set (
|
|
147
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7())
|
|
148
|
+
) STRICT;
|
|
149
|
+
|
|
150
|
+
CREATE TABLE IF NOT EXISTS change_set_element (
|
|
151
|
+
|
|
152
|
+
change_set_id TEXT NOT NULL,
|
|
153
|
+
change_id TEXT NOT NULL,
|
|
154
|
+
|
|
155
|
+
PRIMARY KEY(change_set_id, change_id),
|
|
156
|
+
FOREIGN KEY(change_set_id) REFERENCES change_set(id),
|
|
157
|
+
FOREIGN KEY(change_id) REFERENCES change(id)
|
|
158
|
+
) STRICT;
|
|
159
|
+
|
|
160
|
+
CREATE TABLE IF NOT EXISTS change_set_label (
|
|
161
|
+
label_id TEXT NOT NULL,
|
|
162
|
+
change_set_id TEXT NOT NULL,
|
|
163
|
+
PRIMARY KEY(label_id, change_set_id),
|
|
164
|
+
FOREIGN KEY(label_id) REFERENCES label(id),
|
|
165
|
+
FOREIGN KEY(change_set_id) REFERENCES change_set(id)
|
|
166
|
+
) STRICT;
|
|
167
|
+
|
|
168
|
+
CREATE TABLE IF NOT EXISTS change_set_label_author (
|
|
169
|
+
label_id TEXT NOT NULL,
|
|
170
|
+
change_set_id TEXT NOT NULL,
|
|
171
|
+
account_id TEXT NOT NULL,
|
|
172
|
+
|
|
173
|
+
PRIMARY KEY(label_id, change_set_id, account_id),
|
|
174
|
+
FOREIGN KEY(label_id, change_set_id) REFERENCES change_set_label(label_id, change_set_id),
|
|
175
|
+
FOREIGN KEY(account_id) REFERENCES account(id)
|
|
176
|
+
) STRICT;
|
|
177
|
+
|
|
178
|
+
-- discussions
|
|
179
|
+
|
|
180
|
+
CREATE TABLE IF NOT EXISTS discussion (
|
|
181
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
182
|
+
change_set_id TEXT NOT NULL,
|
|
183
|
+
|
|
184
|
+
FOREIGN KEY(change_set_id) REFERENCES change_set(id)
|
|
185
|
+
) STRICT;
|
|
186
|
+
|
|
187
|
+
CREATE TABLE IF NOT EXISTS comment (
|
|
188
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
189
|
+
parent_id TEXT,
|
|
190
|
+
discussion_id TEXT NULL,
|
|
191
|
+
created_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
192
|
+
content TEXT NOT NULL,
|
|
193
|
+
created_by TEXT NOT NULL,
|
|
194
|
+
|
|
195
|
+
FOREIGN KEY(created_by) REFERENCES account(id),
|
|
196
|
+
FOREIGN KEY(discussion_id) REFERENCES discussion(id),
|
|
197
|
+
FOREIGN KEY(parent_id) REFERENCES comment(id)
|
|
198
|
+
) STRICT;
|
|
199
|
+
|
|
200
|
+
-- labels
|
|
201
|
+
|
|
202
|
+
CREATE TABLE IF NOT EXISTS label (
|
|
203
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
204
|
+
|
|
205
|
+
name TEXT NOT NULL UNIQUE -- e.g., 'confirmed', 'reviewed'
|
|
206
|
+
|
|
207
|
+
) STRICT;
|
|
208
|
+
|
|
209
|
+
INSERT OR IGNORE INTO label (name) VALUES ('confirmed');
|
|
210
|
+
INSERT OR IGNORE INTO label (name) VALUES ('grouped');
|
|
211
|
+
|
|
212
|
+
-- versions
|
|
213
|
+
|
|
214
|
+
CREATE TABLE IF NOT EXISTS version (
|
|
215
|
+
id TEXT PRIMARY KEY DEFAULT (uuid_v7()),
|
|
216
|
+
|
|
217
|
+
-- name is optional.
|
|
218
|
+
--
|
|
219
|
+
-- "anonymous" versiones can ease workflows.
|
|
220
|
+
-- For example, a user can create a version
|
|
221
|
+
-- without a name to experiment with
|
|
222
|
+
-- changes with no mental overhead of
|
|
223
|
+
-- naming the version.
|
|
224
|
+
name TEXT
|
|
225
|
+
) STRICT;
|
|
226
|
+
|
|
227
|
+
CREATE TABLE IF NOT EXISTS version_change (
|
|
228
|
+
version_id TEXT NOT NULL,
|
|
229
|
+
change_id TEXT NOT NULL,
|
|
230
|
+
|
|
231
|
+
PRIMARY KEY (version_id, change_id),
|
|
232
|
+
FOREIGN KEY (version_id) REFERENCES version(id) ON DELETE CASCADE,
|
|
233
|
+
FOREIGN KEY (change_id) REFERENCES change(id) ON DELETE CASCADE
|
|
234
|
+
) STRICT;
|
|
235
|
+
|
|
236
|
+
CREATE TABLE IF NOT EXISTS version_change_conflict (
|
|
237
|
+
version_id TEXT NOT NULL,
|
|
238
|
+
change_conflict_id TEXT NOT NULL,
|
|
239
|
+
|
|
240
|
+
PRIMARY KEY (version_id, change_conflict_id),
|
|
241
|
+
FOREIGN KEY (version_id) REFERENCES version(id),
|
|
242
|
+
FOREIGN KEY (change_conflict_id) REFERENCES change_conflict(id)
|
|
243
|
+
) STRICT;
|
|
244
|
+
|
|
245
|
+
-- only one version can be active at a time
|
|
246
|
+
-- hence, the table has only one row
|
|
247
|
+
CREATE TABLE IF NOT EXISTS current_version (
|
|
248
|
+
id TEXT NOT NULL PRIMARY KEY,
|
|
249
|
+
|
|
250
|
+
FOREIGN KEY(id) REFERENCES version(id)
|
|
251
|
+
) STRICT;
|
|
252
|
+
|
|
253
|
+
-- Insert the default version if missing
|
|
254
|
+
-- (this is a workaround for not having a separata creation and migration schema's)
|
|
255
|
+
|
|
256
|
+
INSERT INTO version (id, name)
|
|
257
|
+
SELECT '019328cc-ccb0-7f51-96e8-524df4597ac6', 'main'
|
|
258
|
+
WHERE NOT EXISTS (SELECT 1 FROM version);
|
|
259
|
+
|
|
260
|
+
-- Set the default current version to 'main' if both tables are empty
|
|
261
|
+
-- (this is a workaround for not having a separata creation and migration schema's)
|
|
262
|
+
INSERT INTO current_version (id)
|
|
263
|
+
SELECT '019328cc-ccb0-7f51-96e8-524df4597ac6'
|
|
264
|
+
WHERE NOT EXISTS (SELECT 1 FROM current_version);
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
CREATE TEMP TRIGGER IF NOT EXISTS insert_account_if_not_exists_on_change_author
|
|
268
|
+
BEFORE INSERT ON change_author
|
|
269
|
+
FOR EACH ROW
|
|
270
|
+
WHEN NEW.account_id NOT IN (SELECT id FROM account) AND NEW.account_id IN (SELECT id FROM temp.active_account)
|
|
271
|
+
BEGIN
|
|
272
|
+
INSERT OR IGNORE INTO account
|
|
273
|
+
SELECT
|
|
274
|
+
*
|
|
275
|
+
FROM active_account
|
|
276
|
+
WHERE id = NEW.account_id;
|
|
277
|
+
END;
|
|
278
|
+
|
|
279
|
+
CREATE TEMP TRIGGER IF NOT EXISTS insert_account_if_not_exists_on_change_set_label_author
|
|
280
|
+
BEFORE INSERT ON change_set_label_author
|
|
281
|
+
FOR EACH ROW
|
|
282
|
+
WHEN NEW.account_id NOT IN (SELECT id FROM account) AND NEW.account_id IN (SELECT id FROM temp.active_account)
|
|
283
|
+
BEGIN
|
|
284
|
+
INSERT OR IGNORE INTO account
|
|
285
|
+
SELECT
|
|
286
|
+
*
|
|
287
|
+
FROM active_account
|
|
288
|
+
WHERE id = NEW.account_id;
|
|
289
|
+
END;
|
|
290
|
+
|
|
291
|
+
CREATE TEMP TRIGGER IF NOT EXISTS insert_account_if_not_exists_on_comment
|
|
292
|
+
BEFORE INSERT ON comment
|
|
293
|
+
FOR EACH ROW
|
|
294
|
+
WHEN NEW.created_by NOT IN (SELECT id FROM account) AND NEW.created_by IN (SELECT id FROM temp.active_account)
|
|
295
|
+
BEGIN
|
|
296
|
+
INSERT OR IGNORE INTO account
|
|
297
|
+
SELECT
|
|
298
|
+
*
|
|
299
|
+
FROM active_account
|
|
300
|
+
WHERE id = NEW.created_by;
|
|
301
|
+
END;
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
`;
|
|
305
|
+
|
|
306
|
+
// CREATE TRIGGER IF NOT EXISTS insert_account_if_not_exists_on_change_set_label_author
|
|
307
|
+
// BEFORE INSERT ON change_set_label_author
|
|
308
|
+
// FOR EACH ROW
|
|
309
|
+
// BEGIN
|
|
310
|
+
// INSERT OR IGNORE INTO account (id, name)
|
|
311
|
+
// VALUES (
|
|
312
|
+
// NEW.account_id,
|
|
313
|
+
// CASE
|
|
314
|
+
// WHEN NEW.account_id LIKE 'anonymous_%' THEN 'anonymous'
|
|
315
|
+
// ELSE NEW.account_id
|
|
316
|
+
// END
|
|
317
|
+
// );
|
|
318
|
+
// END;
|
|
319
|
+
|
|
320
|
+
applyMutationLogDatabaseSchema(args.sqlite);
|
|
321
|
+
|
|
322
|
+
return args.sqlite;
|
|
323
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
import { openLixInMemory } from "../lix/open-lix-in-memory.js";
|
|
3
|
+
import { executeSync } from "./execute-sync.js";
|
|
4
|
+
import type { Lix } from "../lix/open-lix.js";
|
|
5
|
+
import { mockChange } from "../change/mock-change.js";
|
|
6
|
+
import type { LixFile } from "./schema.js";
|
|
7
|
+
import { sql } from "kysely";
|
|
8
|
+
|
|
9
|
+
test("executeSync yields the same result as async execute for an insert", async () => {
|
|
10
|
+
const lix1 = await openLixInMemory({});
|
|
11
|
+
const lix2 = await openLixInMemory({});
|
|
12
|
+
|
|
13
|
+
const query = (lix: Lix) =>
|
|
14
|
+
lix.db
|
|
15
|
+
.insertInto("key_value")
|
|
16
|
+
.values({ key: "foo", value: "bar" })
|
|
17
|
+
.returningAll();
|
|
18
|
+
|
|
19
|
+
const result = executeSync({ lix: lix1, query: query(lix1) });
|
|
20
|
+
const result2 = await query(lix2).execute();
|
|
21
|
+
|
|
22
|
+
expect(result).toEqual(result2);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test("handles joins", async () => {
|
|
26
|
+
const lix = await openLixInMemory({});
|
|
27
|
+
|
|
28
|
+
const mockFile0: LixFile = {
|
|
29
|
+
id: "file-0",
|
|
30
|
+
path: "/file-0",
|
|
31
|
+
data: new ArrayBuffer(0),
|
|
32
|
+
metadata: {},
|
|
33
|
+
};
|
|
34
|
+
const mockChange0 = mockChange({ id: "change-0", file_id: "file-0" });
|
|
35
|
+
|
|
36
|
+
await lix.db.insertInto("change").values(mockChange0).execute();
|
|
37
|
+
await lix.db.insertInto("file").values(mockFile0).execute();
|
|
38
|
+
|
|
39
|
+
const query = lix.db
|
|
40
|
+
.selectFrom("file")
|
|
41
|
+
.innerJoin("change", "change.file_id", "file.id")
|
|
42
|
+
.where("file.id", "=", "file-0")
|
|
43
|
+
.selectAll("change")
|
|
44
|
+
.select("file.path as file_path");
|
|
45
|
+
|
|
46
|
+
const result = executeSync({ lix, query });
|
|
47
|
+
const result2 = await query.execute();
|
|
48
|
+
|
|
49
|
+
expect(result).toEqual(result2);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test("does not transform the query or results (json parsing)", async () => {
|
|
53
|
+
const lix1 = await openLixInMemory({});
|
|
54
|
+
const lix2 = await openLixInMemory({});
|
|
55
|
+
|
|
56
|
+
const mockFile0: LixFile = {
|
|
57
|
+
id: "file-0",
|
|
58
|
+
path: "/file-0",
|
|
59
|
+
data: new ArrayBuffer(0),
|
|
60
|
+
metadata: {
|
|
61
|
+
foo: "bar",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const insertQuery = (lix: Lix) =>
|
|
66
|
+
lix.db.insertInto("file").values(mockFile0).returningAll();
|
|
67
|
+
|
|
68
|
+
const result1 = await insertQuery(lix1).execute();
|
|
69
|
+
const result2 = executeSync({ lix: lix2, query: insertQuery(lix2) });
|
|
70
|
+
|
|
71
|
+
expect(result1).not.toEqual(result2);
|
|
72
|
+
|
|
73
|
+
const withManualJson = executeSync({
|
|
74
|
+
lix: lix2,
|
|
75
|
+
query: lix2.db
|
|
76
|
+
.selectFrom("file")
|
|
77
|
+
.selectAll()
|
|
78
|
+
.select(sql`json(metadata)`.as("metadata")),
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
for (const row of withManualJson) {
|
|
82
|
+
row.metadata = JSON.parse(row.metadata as string);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
expect(result1).toEqual(withManualJson);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// important for function like `createQuery` which are used in triggers and need to be sync
|
|
89
|
+
// but are also used by users where the API is async
|
|
90
|
+
test("using executeSync with a 'fake async' function should work", async () => {
|
|
91
|
+
const lix = await openLixInMemory({});
|
|
92
|
+
|
|
93
|
+
async function fakeAyncQuery(lix: Lix): Promise<any> {
|
|
94
|
+
const query = lix.db
|
|
95
|
+
.insertInto("key_value")
|
|
96
|
+
.values({ key: "foo", value: "bar" })
|
|
97
|
+
.returningAll();
|
|
98
|
+
return executeSync({ lix, query }) as any;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const result = await fakeAyncQuery(lix);
|
|
102
|
+
|
|
103
|
+
expect(result).toEqual([{ key: "foo", value: "bar" }]);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test("it works with kysely transactions", async () => {
|
|
107
|
+
const lix = await openLixInMemory({});
|
|
108
|
+
|
|
109
|
+
// transaction that fails
|
|
110
|
+
try {
|
|
111
|
+
await lix.db.transaction().execute(async (trx) => {
|
|
112
|
+
await trx
|
|
113
|
+
.insertInto("key_value")
|
|
114
|
+
.values({ key: "foo", value: "bar" })
|
|
115
|
+
.execute();
|
|
116
|
+
|
|
117
|
+
executeSync({
|
|
118
|
+
lix,
|
|
119
|
+
query: trx
|
|
120
|
+
.insertInto("key_value")
|
|
121
|
+
.values({ key: "foo2", value: "bar2" }),
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
throw new Error("rollback");
|
|
125
|
+
});
|
|
126
|
+
} catch {
|
|
127
|
+
// ignore;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const keyValues = await lix.db.selectFrom("key_value").selectAll().execute();
|
|
131
|
+
|
|
132
|
+
expect(keyValues.find((kv) => kv.key === "foo")).toBeUndefined();
|
|
133
|
+
expect(keyValues.find((kv) => kv.key === "foo2")).toBeUndefined();
|
|
134
|
+
|
|
135
|
+
// transaction that succeeds
|
|
136
|
+
await lix.db.transaction().execute(async (trx) => {
|
|
137
|
+
await trx
|
|
138
|
+
.insertInto("key_value")
|
|
139
|
+
.values({ key: "foo", value: "bar" })
|
|
140
|
+
.execute();
|
|
141
|
+
|
|
142
|
+
executeSync({
|
|
143
|
+
lix,
|
|
144
|
+
query: trx.insertInto("key_value").values({ key: "foo2", value: "bar2" }),
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
const keyValues2 = await lix.db.selectFrom("key_value").selectAll().execute();
|
|
149
|
+
|
|
150
|
+
expect(keyValues2.find((kv) => kv.key === "foo")).toBeDefined();
|
|
151
|
+
expect(keyValues2.find((kv) => kv.key === "foo2")).toBeDefined();
|
|
152
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Lix } from "../lix/open-lix.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Execute a query synchronously.
|
|
5
|
+
*
|
|
6
|
+
* WARNING: This function is not recommended for general use.
|
|
7
|
+
* Only if you need sync queries, like in a trigger for exmaple,
|
|
8
|
+
* you should use this function. The function is not transforming
|
|
9
|
+
* the query or the result as the db API does. You get raw SQL.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const query = lix.db.selectFrom("key_value").selectAll();
|
|
13
|
+
* const result = executeSync({ lix, query }) as KeyValue[];
|
|
14
|
+
*/
|
|
15
|
+
export function executeSync(args: {
|
|
16
|
+
lix: Pick<Lix, "sqlite">;
|
|
17
|
+
query: any;
|
|
18
|
+
}): Array<any> {
|
|
19
|
+
const compiledQuery = args.query.compile();
|
|
20
|
+
|
|
21
|
+
const columnNames: string[] = [];
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const result = args.lix.sqlite.exec({
|
|
25
|
+
sql: compiledQuery.sql,
|
|
26
|
+
bind: compiledQuery.parameters as any[],
|
|
27
|
+
returnValue: "resultRows",
|
|
28
|
+
columnNames,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
return result.map((row) => {
|
|
32
|
+
const obj: any = {};
|
|
33
|
+
|
|
34
|
+
columnNames.forEach((columnName, index) => {
|
|
35
|
+
obj[columnName] = row[index];
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
return obj;
|
|
39
|
+
});
|
|
40
|
+
} catch (e) {
|
|
41
|
+
console.error(
|
|
42
|
+
`Error in executeSync for query:\n\n${compiledQuery.sql}\n\n`,
|
|
43
|
+
e
|
|
44
|
+
);
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
}
|