tinybase 5.0.0-beta.4 → 5.0.0-beta.6
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/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/cjs/checkpoints.cjs +1 -1
- package/lib/cjs/checkpoints.cjs.gz +0 -0
- package/lib/cjs/indexes.cjs +1 -1
- package/lib/cjs/indexes.cjs.gz +0 -0
- package/lib/cjs/mergeable-store.cjs +1 -1
- package/lib/cjs/mergeable-store.cjs.gz +0 -0
- package/lib/cjs/metrics.cjs +1 -1
- package/lib/cjs/metrics.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-libsql.cjs +1 -0
- package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-powersync.cjs +1 -0
- package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sync.cjs +1 -0
- package/lib/cjs/persisters/persister-sync.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/relationships.cjs +1 -1
- package/lib/cjs/relationships.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/checkpoints.cjs +1 -1
- package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
- package/lib/cjs-es6/indexes.cjs +1 -1
- package/lib/cjs-es6/indexes.cjs.gz +0 -0
- package/lib/cjs-es6/mergeable-store.cjs +1 -1
- package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
- package/lib/cjs-es6/metrics.cjs +1 -1
- package/lib/cjs-es6/metrics.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sync.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-sync.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/relationships.cjs +1 -1
- package/lib/cjs-es6/relationships.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/checkpoints.js +3 -1
- package/lib/debug/indexes.js +3 -1
- package/lib/debug/mergeable-store.js +403 -179
- package/lib/debug/metrics.js +3 -1
- package/lib/debug/persisters/persister-automerge.js +42 -47
- package/lib/debug/persisters/persister-browser.js +42 -47
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +67 -61
- package/lib/debug/persisters/persister-electric-sql.js +67 -61
- package/lib/debug/persisters/persister-expo-sqlite-next.js +67 -61
- package/lib/debug/persisters/persister-expo-sqlite.js +67 -61
- package/lib/debug/persisters/persister-file.js +42 -47
- package/lib/debug/persisters/persister-indexed-db.js +42 -47
- package/lib/debug/persisters/persister-libsql.js +902 -0
- package/lib/debug/persisters/persister-partykit-client.js +42 -47
- package/lib/debug/persisters/persister-powersync.js +917 -0
- package/lib/debug/persisters/persister-remote.js +42 -47
- package/lib/debug/persisters/persister-sqlite-wasm.js +67 -61
- package/lib/debug/persisters/persister-sqlite3.js +67 -61
- package/lib/debug/persisters/persister-sync.js +594 -0
- package/lib/debug/persisters/persister-yjs.js +44 -49
- package/lib/debug/persisters.js +41 -46
- package/lib/debug/queries.js +7 -4
- package/lib/debug/relationships.js +3 -1
- package/lib/debug/store.js +51 -36
- package/lib/debug/tinybase.js +439 -223
- package/lib/debug/tools.js +9 -6
- package/lib/debug/ui-react-dom.js +88 -80
- package/lib/debug/ui-react.js +1 -1
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/mergeable-store.js +1 -1
- package/lib/es6/mergeable-store.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-libsql.js +1 -0
- package/lib/es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-powersync.js +1 -0
- package/lib/es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-sync.js +1 -0
- package/lib/es6/persisters/persister-sync.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/mergeable-store.js +1 -1
- package/lib/mergeable-store.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-libsql.js +1 -0
- package/lib/persisters/persister-libsql.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-powersync.js +1 -0
- package/lib/persisters/persister-powersync.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-sync.js +1 -0
- package/lib/persisters/persister-sync.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/checkpoints.d.ts +2 -2
- package/lib/types/indexes.d.ts +2 -2
- package/lib/types/mergeable-store.d.ts +143 -20
- package/lib/types/metrics.d.ts +2 -2
- package/lib/types/persisters/persister-automerge.d.ts +3 -0
- package/lib/types/persisters/persister-browser.d.ts +9 -2
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +3 -0
- package/lib/types/persisters/persister-electric-sql.d.ts +3 -0
- package/lib/types/persisters/persister-expo-sqlite-next.d.ts +3 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +3 -0
- package/lib/types/persisters/persister-file.d.ts +5 -1
- package/lib/types/persisters/persister-indexed-db.d.ts +3 -0
- package/lib/types/persisters/persister-libsql.d.ts +142 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +3 -0
- package/lib/types/persisters/persister-powersync.d.ts +157 -0
- package/lib/types/persisters/persister-remote.d.ts +3 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +3 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +3 -0
- package/lib/types/persisters/persister-sync.d.ts +182 -0
- package/lib/types/persisters/persister-yjs.d.ts +5 -2
- package/lib/types/persisters.d.ts +61 -3
- package/lib/types/queries.d.ts +2 -2
- package/lib/types/relationships.d.ts +2 -2
- package/lib/types/store.d.ts +36 -3
- package/lib/types/tinybase.d.ts +9 -9
- package/lib/types/tools.d.ts +2 -2
- package/lib/types/ui-react.d.ts +8 -8
- package/lib/types/with-schemas/checkpoints.d.ts +2 -2
- package/lib/types/with-schemas/indexes.d.ts +2 -2
- package/lib/types/with-schemas/mergeable-store.d.ts +415 -40
- package/lib/types/with-schemas/metrics.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +13 -6
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-file.d.ts +7 -3
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-sync.d.ts +195 -0
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +6 -3
- package/lib/types/with-schemas/persisters.d.ts +80 -7
- package/lib/types/with-schemas/queries.d.ts +3 -3
- package/lib/types/with-schemas/relationships.d.ts +2 -2
- package/lib/types/with-schemas/store.d.ts +136 -89
- package/lib/types/with-schemas/tinybase.d.ts +9 -9
- package/lib/types/with-schemas/tools.d.ts +2 -2
- package/lib/types/with-schemas/ui-react.d.ts +8 -8
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/mergeable-store.js +1 -1
- package/lib/umd/mergeable-store.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-libsql.js +1 -0
- package/lib/umd/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-powersync.js +1 -0
- package/lib/umd/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-sync.js +1 -0
- package/lib/umd/persisters/persister-sync.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/mergeable-store.js +1 -1
- package/lib/umd-es6/mergeable-store.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-libsql.js +1 -0
- package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-powersync.js +1 -0
- package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sync.js +1 -0
- package/lib/umd-es6/persisters/persister-sync.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +51 -35
- package/readme.md +2 -2
|
@@ -42,8 +42,6 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
42
42
|
const object = Object;
|
|
43
43
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
44
44
|
const objEntries = object.entries;
|
|
45
|
-
const objIds = object.keys;
|
|
46
|
-
const objFreeze = object.freeze;
|
|
47
45
|
const isObject = (obj) =>
|
|
48
46
|
!isUndefined(obj) &&
|
|
49
47
|
ifNotUndefined(
|
|
@@ -54,6 +52,8 @@ const isObject = (obj) =>
|
|
|
54
52
|
/* istanbul ignore next */
|
|
55
53
|
() => true,
|
|
56
54
|
);
|
|
55
|
+
const objIds = object.keys;
|
|
56
|
+
const objFreeze = object.freeze;
|
|
57
57
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
58
58
|
const objMerge = (...objs) => object.assign({}, ...objs);
|
|
59
59
|
const objHas = (obj, id) => id in obj;
|
|
@@ -76,9 +76,11 @@ const mapMap = (coll, cb) =>
|
|
|
76
76
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
77
77
|
const mapSet = (map, key, value) =>
|
|
78
78
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
79
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
79
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
80
80
|
if (!collHas(map, key)) {
|
|
81
81
|
mapSet(map, key, getDefaultValue());
|
|
82
|
+
} else {
|
|
83
|
+
hadExistingValue?.(mapGet(map, key));
|
|
82
84
|
}
|
|
83
85
|
return mapGet(map, key);
|
|
84
86
|
};
|
|
@@ -96,6 +98,9 @@ const setNew = (entryOrEntries) =>
|
|
|
96
98
|
);
|
|
97
99
|
const setAdd = (set, value) => set?.add(value);
|
|
98
100
|
|
|
101
|
+
const TABLE = 'TABLE';
|
|
102
|
+
const ALTER_TABLE = 'ALTER ' + TABLE;
|
|
103
|
+
const DELETE_FROM = 'DELETE FROM';
|
|
99
104
|
const SELECT_STAR_FROM = SELECT + '*FROM';
|
|
100
105
|
const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
|
|
101
106
|
const WHERE = 'WHERE';
|
|
@@ -190,15 +195,20 @@ const getCommandFunctions = (
|
|
|
190
195
|
arrayIsEmpty(tableColumnNames) &&
|
|
191
196
|
collHas(schemaMap, tableName)
|
|
192
197
|
) {
|
|
193
|
-
await cmd('DROP
|
|
198
|
+
await cmd('DROP ' + TABLE + escapeId(tableName));
|
|
194
199
|
mapSet(schemaMap, tableName);
|
|
195
200
|
return;
|
|
196
201
|
}
|
|
197
202
|
if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
|
|
198
203
|
await cmd(
|
|
199
|
-
`CREATE
|
|
200
|
-
|
|
201
|
-
|
|
204
|
+
`CREATE ` +
|
|
205
|
+
TABLE +
|
|
206
|
+
escapeId(tableName) +
|
|
207
|
+
'(' +
|
|
208
|
+
escapeId(rowIdColumnName) +
|
|
209
|
+
` PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
|
|
210
|
+
arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
|
|
211
|
+
)});`,
|
|
202
212
|
);
|
|
203
213
|
mapSet(
|
|
204
214
|
schemaMap,
|
|
@@ -218,7 +228,7 @@ const getCommandFunctions = (
|
|
|
218
228
|
...arrayMap(tableColumnNames, async (columnName) => {
|
|
219
229
|
if (!collDel(columnNamesAccountedFor, columnName)) {
|
|
220
230
|
await cmd(
|
|
221
|
-
|
|
231
|
+
ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
|
|
222
232
|
);
|
|
223
233
|
mapSet(tableSchemaMap, columnName, EMPTY_STRING);
|
|
224
234
|
}
|
|
@@ -229,9 +239,10 @@ const getCommandFunctions = (
|
|
|
229
239
|
async (columnName) => {
|
|
230
240
|
if (columnName != rowIdColumnName) {
|
|
231
241
|
await cmd(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
242
|
+
ALTER_TABLE +
|
|
243
|
+
escapeId(tableName) +
|
|
244
|
+
'DROP' +
|
|
245
|
+
escapeId(columnName),
|
|
235
246
|
);
|
|
236
247
|
mapSet(tableSchemaMap, columnName);
|
|
237
248
|
}
|
|
@@ -242,13 +253,13 @@ const getCommandFunctions = (
|
|
|
242
253
|
}
|
|
243
254
|
if (partial) {
|
|
244
255
|
if (isUndefined(content)) {
|
|
245
|
-
await cmd(
|
|
256
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
246
257
|
} else {
|
|
247
258
|
await promiseAll(
|
|
248
259
|
objToArray(content, async (row, rowId) => {
|
|
249
260
|
if (isUndefined(row)) {
|
|
250
261
|
await cmd(
|
|
251
|
-
|
|
262
|
+
DELETE_FROM +
|
|
252
263
|
escapeId(tableName) +
|
|
253
264
|
WHERE +
|
|
254
265
|
escapeId(rowIdColumnName) +
|
|
@@ -290,9 +301,10 @@ const getCommandFunctions = (
|
|
|
290
301
|
rowIdColumnName,
|
|
291
302
|
changingColumnNames,
|
|
292
303
|
args,
|
|
304
|
+
useOnConflict,
|
|
293
305
|
);
|
|
294
306
|
await cmd(
|
|
295
|
-
|
|
307
|
+
DELETE_FROM +
|
|
296
308
|
escapeId(tableName) +
|
|
297
309
|
WHERE +
|
|
298
310
|
escapeId(rowIdColumnName) +
|
|
@@ -302,7 +314,7 @@ const getCommandFunctions = (
|
|
|
302
314
|
deleteRowIds,
|
|
303
315
|
);
|
|
304
316
|
} else if (collHas(schemaMap, tableName)) {
|
|
305
|
-
await cmd(
|
|
317
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
306
318
|
}
|
|
307
319
|
}
|
|
308
320
|
};
|
|
@@ -377,7 +389,6 @@ const jsonParse = JSON.parse;
|
|
|
377
389
|
|
|
378
390
|
const scheduleRunning = mapNew();
|
|
379
391
|
const scheduleActions = mapNew();
|
|
380
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
381
392
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
382
393
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
383
394
|
? [
|
|
@@ -402,16 +413,15 @@ const createCustomPersister = (
|
|
|
402
413
|
delPersisterListener,
|
|
403
414
|
onIgnoredError,
|
|
404
415
|
supportsMergeableStore,
|
|
405
|
-
|
|
416
|
+
extra = {},
|
|
406
417
|
scheduleId = [],
|
|
407
418
|
) => {
|
|
408
|
-
let listenerId;
|
|
409
419
|
let loadSave = 0;
|
|
410
420
|
let loads = 0;
|
|
411
421
|
let saves = 0;
|
|
412
|
-
let listening = 0;
|
|
413
422
|
let action;
|
|
414
|
-
let
|
|
423
|
+
let autoLoadHandle;
|
|
424
|
+
let autoSaveListenerId;
|
|
415
425
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
416
426
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
417
427
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -447,55 +457,51 @@ const createCustomPersister = (
|
|
|
447
457
|
}
|
|
448
458
|
return persister;
|
|
449
459
|
};
|
|
460
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
461
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
462
|
+
? contentOrChanges?.[1][2] === 1
|
|
463
|
+
? store.applyMergeableChanges
|
|
464
|
+
: store.setMergeableContent
|
|
465
|
+
: contentOrChanges?.[2] === 1
|
|
466
|
+
? store.applyChanges
|
|
467
|
+
: store.setContent)(contentOrChanges);
|
|
468
|
+
};
|
|
450
469
|
const persister = {
|
|
451
470
|
load: async (initialTables, initialValues) =>
|
|
452
471
|
await loadLock(async () => {
|
|
453
472
|
try {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
: store.setContent)(content);
|
|
458
|
-
} catch {
|
|
473
|
+
setContentOrChanges(await getPersisted());
|
|
474
|
+
} catch (error) {
|
|
475
|
+
onIgnoredError?.(error);
|
|
459
476
|
store.setContent([initialTables, initialValues]);
|
|
460
477
|
}
|
|
461
478
|
}),
|
|
462
479
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
463
|
-
persister.stopAutoLoad();
|
|
464
|
-
|
|
465
|
-
listening = 1;
|
|
466
|
-
listeningHandle = addPersisterListener(
|
|
480
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
481
|
+
autoLoadHandle = addPersisterListener(
|
|
467
482
|
async (getContent2, getChanges2) => {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
(
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
)
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
479
|
-
(isMergeableStore && isMergeable(content)
|
|
480
|
-
? store.setMergeableContent
|
|
481
|
-
: store.setContent)(content);
|
|
482
|
-
} catch (error) {
|
|
483
|
-
onIgnoredError?.(error);
|
|
484
|
-
}
|
|
485
|
-
});
|
|
486
|
-
}
|
|
483
|
+
const changes = getChanges2?.();
|
|
484
|
+
await loadLock(async () => {
|
|
485
|
+
try {
|
|
486
|
+
setContentOrChanges(
|
|
487
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
488
|
+
);
|
|
489
|
+
} catch (error) {
|
|
490
|
+
onIgnoredError?.(error);
|
|
491
|
+
}
|
|
492
|
+
});
|
|
487
493
|
},
|
|
488
494
|
);
|
|
489
495
|
return persister;
|
|
490
496
|
},
|
|
491
497
|
stopAutoLoad: () => {
|
|
492
|
-
if (
|
|
493
|
-
delPersisterListener(
|
|
494
|
-
|
|
495
|
-
listening = 0;
|
|
498
|
+
if (autoLoadHandle) {
|
|
499
|
+
delPersisterListener(autoLoadHandle);
|
|
500
|
+
autoLoadHandle = void 0;
|
|
496
501
|
}
|
|
497
502
|
return persister;
|
|
498
503
|
},
|
|
504
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
499
505
|
save: async (getChanges2) => {
|
|
500
506
|
/* istanbul ignore else */
|
|
501
507
|
if (loadSave != 1) {
|
|
@@ -517,7 +523,7 @@ const createCustomPersister = (
|
|
|
517
523
|
},
|
|
518
524
|
startAutoSave: async () => {
|
|
519
525
|
await persister.stopAutoSave().save();
|
|
520
|
-
|
|
526
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
521
527
|
const changes = getChanges();
|
|
522
528
|
if (hasChanges(changes)) {
|
|
523
529
|
persister.save(() => changes);
|
|
@@ -526,10 +532,11 @@ const createCustomPersister = (
|
|
|
526
532
|
return persister;
|
|
527
533
|
},
|
|
528
534
|
stopAutoSave: () => {
|
|
529
|
-
ifNotUndefined(
|
|
530
|
-
|
|
535
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
536
|
+
autoSaveListenerId = void 0;
|
|
531
537
|
return persister;
|
|
532
538
|
},
|
|
539
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
533
540
|
schedule: async (...actions) => {
|
|
534
541
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
535
542
|
await run();
|
|
@@ -538,10 +545,8 @@ const createCustomPersister = (
|
|
|
538
545
|
getStore: () => store,
|
|
539
546
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
540
547
|
getStats: () => ({loads, saves}),
|
|
548
|
+
...extra,
|
|
541
549
|
};
|
|
542
|
-
if (getThing) {
|
|
543
|
-
persister[getThing] = () => thing;
|
|
544
|
-
}
|
|
545
550
|
return objFreeze(persister);
|
|
546
551
|
};
|
|
547
552
|
|
|
@@ -556,9 +561,10 @@ const createJsonSqlitePersister = (
|
|
|
556
561
|
managedTableNames,
|
|
557
562
|
db,
|
|
558
563
|
getThing,
|
|
564
|
+
useOnConflict,
|
|
559
565
|
) => {
|
|
560
566
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
561
|
-
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
567
|
+
getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
|
|
562
568
|
const getPersisted = async () =>
|
|
563
569
|
await transaction(async () => {
|
|
564
570
|
await refreshSchema();
|
|
@@ -589,7 +595,7 @@ const createJsonSqlitePersister = (
|
|
|
589
595
|
delPersisterListener,
|
|
590
596
|
onIgnoredError,
|
|
591
597
|
false,
|
|
592
|
-
[getThing
|
|
598
|
+
{[getThing]: () => db},
|
|
593
599
|
db,
|
|
594
600
|
);
|
|
595
601
|
return persister;
|
|
@@ -696,7 +702,7 @@ const createTabularSqlitePersister = (
|
|
|
696
702
|
delPersisterListener,
|
|
697
703
|
onIgnoredError,
|
|
698
704
|
false,
|
|
699
|
-
[getThing
|
|
705
|
+
{[getThing]: () => db},
|
|
700
706
|
db,
|
|
701
707
|
);
|
|
702
708
|
return persister;
|
|
@@ -43,8 +43,6 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
43
43
|
const object = Object;
|
|
44
44
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
45
45
|
const objEntries = object.entries;
|
|
46
|
-
const objIds = object.keys;
|
|
47
|
-
const objFreeze = object.freeze;
|
|
48
46
|
const isObject = (obj) =>
|
|
49
47
|
!isUndefined(obj) &&
|
|
50
48
|
ifNotUndefined(
|
|
@@ -55,6 +53,8 @@ const isObject = (obj) =>
|
|
|
55
53
|
/* istanbul ignore next */
|
|
56
54
|
() => true,
|
|
57
55
|
);
|
|
56
|
+
const objIds = object.keys;
|
|
57
|
+
const objFreeze = object.freeze;
|
|
58
58
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
59
59
|
const objMerge = (...objs) => object.assign({}, ...objs);
|
|
60
60
|
const objHas = (obj, id) => id in obj;
|
|
@@ -77,9 +77,11 @@ const mapMap = (coll, cb) =>
|
|
|
77
77
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
78
78
|
const mapSet = (map, key, value) =>
|
|
79
79
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
80
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
80
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
81
81
|
if (!collHas(map, key)) {
|
|
82
82
|
mapSet(map, key, getDefaultValue());
|
|
83
|
+
} else {
|
|
84
|
+
hadExistingValue?.(mapGet(map, key));
|
|
83
85
|
}
|
|
84
86
|
return mapGet(map, key);
|
|
85
87
|
};
|
|
@@ -97,6 +99,9 @@ const setNew = (entryOrEntries) =>
|
|
|
97
99
|
);
|
|
98
100
|
const setAdd = (set, value) => set?.add(value);
|
|
99
101
|
|
|
102
|
+
const TABLE = 'TABLE';
|
|
103
|
+
const ALTER_TABLE = 'ALTER ' + TABLE;
|
|
104
|
+
const DELETE_FROM = 'DELETE FROM';
|
|
100
105
|
const SELECT_STAR_FROM = SELECT + '*FROM';
|
|
101
106
|
const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
|
|
102
107
|
const WHERE = 'WHERE';
|
|
@@ -191,15 +196,20 @@ const getCommandFunctions = (
|
|
|
191
196
|
arrayIsEmpty(tableColumnNames) &&
|
|
192
197
|
collHas(schemaMap, tableName)
|
|
193
198
|
) {
|
|
194
|
-
await cmd('DROP
|
|
199
|
+
await cmd('DROP ' + TABLE + escapeId(tableName));
|
|
195
200
|
mapSet(schemaMap, tableName);
|
|
196
201
|
return;
|
|
197
202
|
}
|
|
198
203
|
if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
|
|
199
204
|
await cmd(
|
|
200
|
-
`CREATE
|
|
201
|
-
|
|
202
|
-
|
|
205
|
+
`CREATE ` +
|
|
206
|
+
TABLE +
|
|
207
|
+
escapeId(tableName) +
|
|
208
|
+
'(' +
|
|
209
|
+
escapeId(rowIdColumnName) +
|
|
210
|
+
` PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
|
|
211
|
+
arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
|
|
212
|
+
)});`,
|
|
203
213
|
);
|
|
204
214
|
mapSet(
|
|
205
215
|
schemaMap,
|
|
@@ -219,7 +229,7 @@ const getCommandFunctions = (
|
|
|
219
229
|
...arrayMap(tableColumnNames, async (columnName) => {
|
|
220
230
|
if (!collDel(columnNamesAccountedFor, columnName)) {
|
|
221
231
|
await cmd(
|
|
222
|
-
|
|
232
|
+
ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
|
|
223
233
|
);
|
|
224
234
|
mapSet(tableSchemaMap, columnName, EMPTY_STRING);
|
|
225
235
|
}
|
|
@@ -230,9 +240,10 @@ const getCommandFunctions = (
|
|
|
230
240
|
async (columnName) => {
|
|
231
241
|
if (columnName != rowIdColumnName) {
|
|
232
242
|
await cmd(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
243
|
+
ALTER_TABLE +
|
|
244
|
+
escapeId(tableName) +
|
|
245
|
+
'DROP' +
|
|
246
|
+
escapeId(columnName),
|
|
236
247
|
);
|
|
237
248
|
mapSet(tableSchemaMap, columnName);
|
|
238
249
|
}
|
|
@@ -243,13 +254,13 @@ const getCommandFunctions = (
|
|
|
243
254
|
}
|
|
244
255
|
if (partial) {
|
|
245
256
|
if (isUndefined(content)) {
|
|
246
|
-
await cmd(
|
|
257
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
247
258
|
} else {
|
|
248
259
|
await promiseAll(
|
|
249
260
|
objToArray(content, async (row, rowId) => {
|
|
250
261
|
if (isUndefined(row)) {
|
|
251
262
|
await cmd(
|
|
252
|
-
|
|
263
|
+
DELETE_FROM +
|
|
253
264
|
escapeId(tableName) +
|
|
254
265
|
WHERE +
|
|
255
266
|
escapeId(rowIdColumnName) +
|
|
@@ -291,9 +302,10 @@ const getCommandFunctions = (
|
|
|
291
302
|
rowIdColumnName,
|
|
292
303
|
changingColumnNames,
|
|
293
304
|
args,
|
|
305
|
+
useOnConflict,
|
|
294
306
|
);
|
|
295
307
|
await cmd(
|
|
296
|
-
|
|
308
|
+
DELETE_FROM +
|
|
297
309
|
escapeId(tableName) +
|
|
298
310
|
WHERE +
|
|
299
311
|
escapeId(rowIdColumnName) +
|
|
@@ -303,7 +315,7 @@ const getCommandFunctions = (
|
|
|
303
315
|
deleteRowIds,
|
|
304
316
|
);
|
|
305
317
|
} else if (collHas(schemaMap, tableName)) {
|
|
306
|
-
await cmd(
|
|
318
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
307
319
|
}
|
|
308
320
|
}
|
|
309
321
|
};
|
|
@@ -378,7 +390,6 @@ const jsonParse = JSON.parse;
|
|
|
378
390
|
|
|
379
391
|
const scheduleRunning = mapNew();
|
|
380
392
|
const scheduleActions = mapNew();
|
|
381
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
382
393
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
383
394
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
384
395
|
? [
|
|
@@ -403,16 +414,15 @@ const createCustomPersister = (
|
|
|
403
414
|
delPersisterListener,
|
|
404
415
|
onIgnoredError,
|
|
405
416
|
supportsMergeableStore,
|
|
406
|
-
|
|
417
|
+
extra = {},
|
|
407
418
|
scheduleId = [],
|
|
408
419
|
) => {
|
|
409
|
-
let listenerId;
|
|
410
420
|
let loadSave = 0;
|
|
411
421
|
let loads = 0;
|
|
412
422
|
let saves = 0;
|
|
413
|
-
let listening = 0;
|
|
414
423
|
let action;
|
|
415
|
-
let
|
|
424
|
+
let autoLoadHandle;
|
|
425
|
+
let autoSaveListenerId;
|
|
416
426
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
417
427
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
418
428
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -448,55 +458,51 @@ const createCustomPersister = (
|
|
|
448
458
|
}
|
|
449
459
|
return persister;
|
|
450
460
|
};
|
|
461
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
462
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
463
|
+
? contentOrChanges?.[1][2] === 1
|
|
464
|
+
? store.applyMergeableChanges
|
|
465
|
+
: store.setMergeableContent
|
|
466
|
+
: contentOrChanges?.[2] === 1
|
|
467
|
+
? store.applyChanges
|
|
468
|
+
: store.setContent)(contentOrChanges);
|
|
469
|
+
};
|
|
451
470
|
const persister = {
|
|
452
471
|
load: async (initialTables, initialValues) =>
|
|
453
472
|
await loadLock(async () => {
|
|
454
473
|
try {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
: store.setContent)(content);
|
|
459
|
-
} catch {
|
|
474
|
+
setContentOrChanges(await getPersisted());
|
|
475
|
+
} catch (error) {
|
|
476
|
+
onIgnoredError?.(error);
|
|
460
477
|
store.setContent([initialTables, initialValues]);
|
|
461
478
|
}
|
|
462
479
|
}),
|
|
463
480
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
464
|
-
persister.stopAutoLoad();
|
|
465
|
-
|
|
466
|
-
listening = 1;
|
|
467
|
-
listeningHandle = addPersisterListener(
|
|
481
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
482
|
+
autoLoadHandle = addPersisterListener(
|
|
468
483
|
async (getContent2, getChanges2) => {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
(
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
)
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
480
|
-
(isMergeableStore && isMergeable(content)
|
|
481
|
-
? store.setMergeableContent
|
|
482
|
-
: store.setContent)(content);
|
|
483
|
-
} catch (error) {
|
|
484
|
-
onIgnoredError?.(error);
|
|
485
|
-
}
|
|
486
|
-
});
|
|
487
|
-
}
|
|
484
|
+
const changes = getChanges2?.();
|
|
485
|
+
await loadLock(async () => {
|
|
486
|
+
try {
|
|
487
|
+
setContentOrChanges(
|
|
488
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
489
|
+
);
|
|
490
|
+
} catch (error) {
|
|
491
|
+
onIgnoredError?.(error);
|
|
492
|
+
}
|
|
493
|
+
});
|
|
488
494
|
},
|
|
489
495
|
);
|
|
490
496
|
return persister;
|
|
491
497
|
},
|
|
492
498
|
stopAutoLoad: () => {
|
|
493
|
-
if (
|
|
494
|
-
delPersisterListener(
|
|
495
|
-
|
|
496
|
-
listening = 0;
|
|
499
|
+
if (autoLoadHandle) {
|
|
500
|
+
delPersisterListener(autoLoadHandle);
|
|
501
|
+
autoLoadHandle = void 0;
|
|
497
502
|
}
|
|
498
503
|
return persister;
|
|
499
504
|
},
|
|
505
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
500
506
|
save: async (getChanges2) => {
|
|
501
507
|
/* istanbul ignore else */
|
|
502
508
|
if (loadSave != 1) {
|
|
@@ -518,7 +524,7 @@ const createCustomPersister = (
|
|
|
518
524
|
},
|
|
519
525
|
startAutoSave: async () => {
|
|
520
526
|
await persister.stopAutoSave().save();
|
|
521
|
-
|
|
527
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
522
528
|
const changes = getChanges();
|
|
523
529
|
if (hasChanges(changes)) {
|
|
524
530
|
persister.save(() => changes);
|
|
@@ -527,10 +533,11 @@ const createCustomPersister = (
|
|
|
527
533
|
return persister;
|
|
528
534
|
},
|
|
529
535
|
stopAutoSave: () => {
|
|
530
|
-
ifNotUndefined(
|
|
531
|
-
|
|
536
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
537
|
+
autoSaveListenerId = void 0;
|
|
532
538
|
return persister;
|
|
533
539
|
},
|
|
540
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
534
541
|
schedule: async (...actions) => {
|
|
535
542
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
536
543
|
await run();
|
|
@@ -539,10 +546,8 @@ const createCustomPersister = (
|
|
|
539
546
|
getStore: () => store,
|
|
540
547
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
541
548
|
getStats: () => ({loads, saves}),
|
|
549
|
+
...extra,
|
|
542
550
|
};
|
|
543
|
-
if (getThing) {
|
|
544
|
-
persister[getThing] = () => thing;
|
|
545
|
-
}
|
|
546
551
|
return objFreeze(persister);
|
|
547
552
|
};
|
|
548
553
|
|
|
@@ -557,9 +562,10 @@ const createJsonSqlitePersister = (
|
|
|
557
562
|
managedTableNames,
|
|
558
563
|
db,
|
|
559
564
|
getThing,
|
|
565
|
+
useOnConflict,
|
|
560
566
|
) => {
|
|
561
567
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
562
|
-
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
568
|
+
getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
|
|
563
569
|
const getPersisted = async () =>
|
|
564
570
|
await transaction(async () => {
|
|
565
571
|
await refreshSchema();
|
|
@@ -590,7 +596,7 @@ const createJsonSqlitePersister = (
|
|
|
590
596
|
delPersisterListener,
|
|
591
597
|
onIgnoredError,
|
|
592
598
|
false,
|
|
593
|
-
[getThing
|
|
599
|
+
{[getThing]: () => db},
|
|
594
600
|
db,
|
|
595
601
|
);
|
|
596
602
|
return persister;
|
|
@@ -697,7 +703,7 @@ const createTabularSqlitePersister = (
|
|
|
697
703
|
delPersisterListener,
|
|
698
704
|
onIgnoredError,
|
|
699
705
|
false,
|
|
700
|
-
[getThing
|
|
706
|
+
{[getThing]: () => db},
|
|
701
707
|
db,
|
|
702
708
|
);
|
|
703
709
|
return persister;
|