tinybase 5.0.0-beta.5 → 5.0.0-beta.7
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/cjs/mergeable-store.cjs +1 -1
- package/lib/cjs/mergeable-store.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 -1
- 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-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/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
- package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
- package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
- package/lib/cjs/synchronizers.cjs +1 -0
- package/lib/cjs/synchronizers.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/mergeable-store.cjs +1 -1
- package/lib/cjs-es6/mergeable-store.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 -1
- 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-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/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers.cjs +1 -0
- package/lib/cjs-es6/synchronizers.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/mergeable-store.js +287 -130
- package/lib/debug/persisters/persister-automerge.js +39 -46
- package/lib/debug/persisters/persister-browser.js +39 -46
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +64 -60
- package/lib/debug/persisters/persister-electric-sql.js +64 -60
- package/lib/debug/persisters/persister-expo-sqlite-next.js +64 -60
- package/lib/debug/persisters/persister-expo-sqlite.js +64 -60
- package/lib/debug/persisters/persister-file.js +39 -46
- package/lib/debug/persisters/persister-indexed-db.js +39 -46
- package/lib/debug/persisters/persister-libsql.js +64 -60
- package/lib/debug/persisters/persister-partykit-client.js +39 -46
- package/lib/debug/persisters/persister-powersync.js +917 -0
- package/lib/debug/persisters/persister-remote.js +39 -46
- package/lib/debug/persisters/persister-sqlite-wasm.js +64 -60
- package/lib/debug/persisters/persister-sqlite3.js +64 -60
- package/lib/debug/persisters/persister-yjs.js +41 -48
- package/lib/debug/persisters.js +38 -45
- package/lib/debug/store.js +44 -32
- package/lib/debug/synchronizers/synchronizer-local.js +502 -0
- package/lib/debug/synchronizers/synchronizer-ws-client.js +525 -0
- package/lib/debug/synchronizers/synchronizer-ws-server.js +57 -0
- package/lib/debug/synchronizers.js +466 -0
- package/lib/debug/tinybase.js +569 -250
- package/lib/debug/tools.js +2 -2
- package/lib/debug/ui-react-dom.js +81 -76
- package/lib/debug/ui-react.js +1 -1
- package/lib/es6/mergeable-store.js +1 -1
- package/lib/es6/mergeable-store.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 -1
- 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-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/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-local.js +1 -0
- package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/es6/synchronizers.js +1 -0
- package/lib/es6/synchronizers.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/mergeable-store.js +1 -1
- package/lib/mergeable-store.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 -1
- 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-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/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/synchronizers/synchronizer-local.js +1 -0
- package/lib/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/synchronizers.js +1 -0
- package/lib/synchronizers.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 +121 -59
- 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 +3 -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-yjs.d.ts +5 -2
- package/lib/types/persisters.d.ts +68 -19
- 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/synchronizers/synchronizer-local.d.ts +27 -0
- package/lib/types/synchronizers/synchronizer-ws-client.d.ts +30 -0
- package/lib/types/synchronizers/synchronizer-ws-server.d.ts +24 -0
- package/lib/types/synchronizers.d.ts +131 -0
- package/lib/types/tinybase.d.ts +10 -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 +185 -87
- 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 +4 -1
- 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-yjs.d.ts +6 -3
- package/lib/types/with-schemas/persisters.d.ts +90 -62
- 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 +100 -3
- package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +32 -0
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +24 -0
- package/lib/types/with-schemas/synchronizers.d.ts +146 -0
- 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/mergeable-store.js +1 -1
- package/lib/umd/mergeable-store.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 -1
- 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-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/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-local.js +1 -0
- package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/umd/synchronizers.js +1 -0
- package/lib/umd/synchronizers.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/mergeable-store.js +1 -1
- package/lib/umd-es6/mergeable-store.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 -1
- 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-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/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
- package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/umd-es6/synchronizers.js +1 -0
- package/lib/umd-es6/synchronizers.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 +37 -26
- package/readme.md +2 -2
|
@@ -41,8 +41,6 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
41
41
|
const object = Object;
|
|
42
42
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
43
43
|
const objEntries = object.entries;
|
|
44
|
-
const objIds = object.keys;
|
|
45
|
-
const objFreeze = object.freeze;
|
|
46
44
|
const isObject = (obj) =>
|
|
47
45
|
!isUndefined(obj) &&
|
|
48
46
|
ifNotUndefined(
|
|
@@ -53,6 +51,8 @@ const isObject = (obj) =>
|
|
|
53
51
|
/* istanbul ignore next */
|
|
54
52
|
() => true,
|
|
55
53
|
);
|
|
54
|
+
const objIds = object.keys;
|
|
55
|
+
const objFreeze = object.freeze;
|
|
56
56
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
57
57
|
const objMerge = (...objs) => object.assign({}, ...objs);
|
|
58
58
|
const objHas = (obj, id) => id in obj;
|
|
@@ -97,6 +97,9 @@ const setNew = (entryOrEntries) =>
|
|
|
97
97
|
);
|
|
98
98
|
const setAdd = (set, value) => set?.add(value);
|
|
99
99
|
|
|
100
|
+
const TABLE = 'TABLE';
|
|
101
|
+
const ALTER_TABLE = 'ALTER ' + TABLE;
|
|
102
|
+
const DELETE_FROM = 'DELETE FROM';
|
|
100
103
|
const SELECT_STAR_FROM = SELECT + '*FROM';
|
|
101
104
|
const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
|
|
102
105
|
const WHERE = 'WHERE';
|
|
@@ -191,15 +194,20 @@ const getCommandFunctions = (
|
|
|
191
194
|
arrayIsEmpty(tableColumnNames) &&
|
|
192
195
|
collHas(schemaMap, tableName)
|
|
193
196
|
) {
|
|
194
|
-
await cmd('DROP
|
|
197
|
+
await cmd('DROP ' + TABLE + escapeId(tableName));
|
|
195
198
|
mapSet(schemaMap, tableName);
|
|
196
199
|
return;
|
|
197
200
|
}
|
|
198
201
|
if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
|
|
199
202
|
await cmd(
|
|
200
|
-
`CREATE
|
|
201
|
-
|
|
202
|
-
|
|
203
|
+
`CREATE ` +
|
|
204
|
+
TABLE +
|
|
205
|
+
escapeId(tableName) +
|
|
206
|
+
'(' +
|
|
207
|
+
escapeId(rowIdColumnName) +
|
|
208
|
+
` PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
|
|
209
|
+
arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
|
|
210
|
+
)});`,
|
|
203
211
|
);
|
|
204
212
|
mapSet(
|
|
205
213
|
schemaMap,
|
|
@@ -219,7 +227,7 @@ const getCommandFunctions = (
|
|
|
219
227
|
...arrayMap(tableColumnNames, async (columnName) => {
|
|
220
228
|
if (!collDel(columnNamesAccountedFor, columnName)) {
|
|
221
229
|
await cmd(
|
|
222
|
-
|
|
230
|
+
ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
|
|
223
231
|
);
|
|
224
232
|
mapSet(tableSchemaMap, columnName, EMPTY_STRING);
|
|
225
233
|
}
|
|
@@ -230,9 +238,10 @@ const getCommandFunctions = (
|
|
|
230
238
|
async (columnName) => {
|
|
231
239
|
if (columnName != rowIdColumnName) {
|
|
232
240
|
await cmd(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
241
|
+
ALTER_TABLE +
|
|
242
|
+
escapeId(tableName) +
|
|
243
|
+
'DROP' +
|
|
244
|
+
escapeId(columnName),
|
|
236
245
|
);
|
|
237
246
|
mapSet(tableSchemaMap, columnName);
|
|
238
247
|
}
|
|
@@ -243,13 +252,13 @@ const getCommandFunctions = (
|
|
|
243
252
|
}
|
|
244
253
|
if (partial) {
|
|
245
254
|
if (isUndefined(content)) {
|
|
246
|
-
await cmd(
|
|
255
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
247
256
|
} else {
|
|
248
257
|
await promiseAll(
|
|
249
258
|
objToArray(content, async (row, rowId) => {
|
|
250
259
|
if (isUndefined(row)) {
|
|
251
260
|
await cmd(
|
|
252
|
-
|
|
261
|
+
DELETE_FROM +
|
|
253
262
|
escapeId(tableName) +
|
|
254
263
|
WHERE +
|
|
255
264
|
escapeId(rowIdColumnName) +
|
|
@@ -291,9 +300,10 @@ const getCommandFunctions = (
|
|
|
291
300
|
rowIdColumnName,
|
|
292
301
|
changingColumnNames,
|
|
293
302
|
args,
|
|
303
|
+
useOnConflict,
|
|
294
304
|
);
|
|
295
305
|
await cmd(
|
|
296
|
-
|
|
306
|
+
DELETE_FROM +
|
|
297
307
|
escapeId(tableName) +
|
|
298
308
|
WHERE +
|
|
299
309
|
escapeId(rowIdColumnName) +
|
|
@@ -303,7 +313,7 @@ const getCommandFunctions = (
|
|
|
303
313
|
deleteRowIds,
|
|
304
314
|
);
|
|
305
315
|
} else if (collHas(schemaMap, tableName)) {
|
|
306
|
-
await cmd(
|
|
316
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
307
317
|
}
|
|
308
318
|
}
|
|
309
319
|
};
|
|
@@ -378,7 +388,6 @@ const jsonParse = JSON.parse;
|
|
|
378
388
|
|
|
379
389
|
const scheduleRunning = mapNew();
|
|
380
390
|
const scheduleActions = mapNew();
|
|
381
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
382
391
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
383
392
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
384
393
|
? [
|
|
@@ -403,16 +412,15 @@ const createCustomPersister = (
|
|
|
403
412
|
delPersisterListener,
|
|
404
413
|
onIgnoredError,
|
|
405
414
|
supportsMergeableStore,
|
|
406
|
-
|
|
415
|
+
extra = {},
|
|
407
416
|
scheduleId = [],
|
|
408
417
|
) => {
|
|
409
|
-
let listenerId;
|
|
410
418
|
let loadSave = 0;
|
|
411
419
|
let loads = 0;
|
|
412
420
|
let saves = 0;
|
|
413
|
-
let listening = 0;
|
|
414
421
|
let action;
|
|
415
|
-
let
|
|
422
|
+
let autoLoadHandle;
|
|
423
|
+
let autoSaveListenerId;
|
|
416
424
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
417
425
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
418
426
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -448,55 +456,51 @@ const createCustomPersister = (
|
|
|
448
456
|
}
|
|
449
457
|
return persister;
|
|
450
458
|
};
|
|
459
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
460
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
461
|
+
? contentOrChanges?.[1][2] === 1
|
|
462
|
+
? store.applyMergeableChanges
|
|
463
|
+
: store.setMergeableContent
|
|
464
|
+
: contentOrChanges?.[2] === 1
|
|
465
|
+
? store.applyChanges
|
|
466
|
+
: store.setContent)(contentOrChanges);
|
|
467
|
+
};
|
|
451
468
|
const persister = {
|
|
452
469
|
load: async (initialTables, initialValues) =>
|
|
453
470
|
await loadLock(async () => {
|
|
454
471
|
try {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
: store.setContent)(content);
|
|
459
|
-
} catch {
|
|
472
|
+
setContentOrChanges(await getPersisted());
|
|
473
|
+
} catch (error) {
|
|
474
|
+
onIgnoredError?.(error);
|
|
460
475
|
store.setContent([initialTables, initialValues]);
|
|
461
476
|
}
|
|
462
477
|
}),
|
|
463
478
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
464
|
-
persister.stopAutoLoad();
|
|
465
|
-
|
|
466
|
-
listening = 1;
|
|
467
|
-
listeningHandle = addPersisterListener(
|
|
479
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
480
|
+
autoLoadHandle = addPersisterListener(
|
|
468
481
|
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
|
-
}
|
|
482
|
+
const changes = getChanges2?.();
|
|
483
|
+
await loadLock(async () => {
|
|
484
|
+
try {
|
|
485
|
+
setContentOrChanges(
|
|
486
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
487
|
+
);
|
|
488
|
+
} catch (error) {
|
|
489
|
+
onIgnoredError?.(error);
|
|
490
|
+
}
|
|
491
|
+
});
|
|
488
492
|
},
|
|
489
493
|
);
|
|
490
494
|
return persister;
|
|
491
495
|
},
|
|
492
496
|
stopAutoLoad: () => {
|
|
493
|
-
if (
|
|
494
|
-
delPersisterListener(
|
|
495
|
-
|
|
496
|
-
listening = 0;
|
|
497
|
+
if (autoLoadHandle) {
|
|
498
|
+
delPersisterListener(autoLoadHandle);
|
|
499
|
+
autoLoadHandle = void 0;
|
|
497
500
|
}
|
|
498
501
|
return persister;
|
|
499
502
|
},
|
|
503
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
500
504
|
save: async (getChanges2) => {
|
|
501
505
|
/* istanbul ignore else */
|
|
502
506
|
if (loadSave != 1) {
|
|
@@ -518,7 +522,7 @@ const createCustomPersister = (
|
|
|
518
522
|
},
|
|
519
523
|
startAutoSave: async () => {
|
|
520
524
|
await persister.stopAutoSave().save();
|
|
521
|
-
|
|
525
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
522
526
|
const changes = getChanges();
|
|
523
527
|
if (hasChanges(changes)) {
|
|
524
528
|
persister.save(() => changes);
|
|
@@ -527,10 +531,11 @@ const createCustomPersister = (
|
|
|
527
531
|
return persister;
|
|
528
532
|
},
|
|
529
533
|
stopAutoSave: () => {
|
|
530
|
-
ifNotUndefined(
|
|
531
|
-
|
|
534
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
535
|
+
autoSaveListenerId = void 0;
|
|
532
536
|
return persister;
|
|
533
537
|
},
|
|
538
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
534
539
|
schedule: async (...actions) => {
|
|
535
540
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
536
541
|
await run();
|
|
@@ -539,10 +544,8 @@ const createCustomPersister = (
|
|
|
539
544
|
getStore: () => store,
|
|
540
545
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
541
546
|
getStats: () => ({loads, saves}),
|
|
547
|
+
...extra,
|
|
542
548
|
};
|
|
543
|
-
if (getThing) {
|
|
544
|
-
persister[getThing] = () => thing;
|
|
545
|
-
}
|
|
546
549
|
return objFreeze(persister);
|
|
547
550
|
};
|
|
548
551
|
|
|
@@ -557,9 +560,10 @@ const createJsonSqlitePersister = (
|
|
|
557
560
|
managedTableNames,
|
|
558
561
|
db,
|
|
559
562
|
getThing,
|
|
563
|
+
useOnConflict,
|
|
560
564
|
) => {
|
|
561
565
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
562
|
-
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
566
|
+
getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
|
|
563
567
|
const getPersisted = async () =>
|
|
564
568
|
await transaction(async () => {
|
|
565
569
|
await refreshSchema();
|
|
@@ -590,7 +594,7 @@ const createJsonSqlitePersister = (
|
|
|
590
594
|
delPersisterListener,
|
|
591
595
|
onIgnoredError,
|
|
592
596
|
false,
|
|
593
|
-
[getThing
|
|
597
|
+
{[getThing]: () => db},
|
|
594
598
|
db,
|
|
595
599
|
);
|
|
596
600
|
return persister;
|
|
@@ -697,7 +701,7 @@ const createTabularSqlitePersister = (
|
|
|
697
701
|
delPersisterListener,
|
|
698
702
|
onIgnoredError,
|
|
699
703
|
false,
|
|
700
|
-
[getThing
|
|
704
|
+
{[getThing]: () => db},
|
|
701
705
|
db,
|
|
702
706
|
);
|
|
703
707
|
return persister;
|
|
@@ -18,8 +18,6 @@ const arrayShift = (array) => array.shift();
|
|
|
18
18
|
|
|
19
19
|
const object = Object;
|
|
20
20
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
21
|
-
const objIds = object.keys;
|
|
22
|
-
const objFreeze = object.freeze;
|
|
23
21
|
const isObject = (obj) =>
|
|
24
22
|
!isUndefined(obj) &&
|
|
25
23
|
ifNotUndefined(
|
|
@@ -30,6 +28,8 @@ const isObject = (obj) =>
|
|
|
30
28
|
/* istanbul ignore next */
|
|
31
29
|
() => true,
|
|
32
30
|
);
|
|
31
|
+
const objIds = object.keys;
|
|
32
|
+
const objFreeze = object.freeze;
|
|
33
33
|
const objSize = (obj) => size(objIds(obj));
|
|
34
34
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
35
35
|
|
|
@@ -57,7 +57,6 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
57
57
|
|
|
58
58
|
const scheduleRunning = mapNew();
|
|
59
59
|
const scheduleActions = mapNew();
|
|
60
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
61
60
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
62
61
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
63
62
|
? [
|
|
@@ -82,16 +81,15 @@ const createCustomPersister = (
|
|
|
82
81
|
delPersisterListener,
|
|
83
82
|
onIgnoredError,
|
|
84
83
|
supportsMergeableStore,
|
|
85
|
-
|
|
84
|
+
extra = {},
|
|
86
85
|
scheduleId = [],
|
|
87
86
|
) => {
|
|
88
|
-
let listenerId;
|
|
89
87
|
let loadSave = 0;
|
|
90
88
|
let loads = 0;
|
|
91
89
|
let saves = 0;
|
|
92
|
-
let listening = 0;
|
|
93
90
|
let action;
|
|
94
|
-
let
|
|
91
|
+
let autoLoadHandle;
|
|
92
|
+
let autoSaveListenerId;
|
|
95
93
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
96
94
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
97
95
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -127,55 +125,51 @@ const createCustomPersister = (
|
|
|
127
125
|
}
|
|
128
126
|
return persister;
|
|
129
127
|
};
|
|
128
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
129
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
130
|
+
? contentOrChanges?.[1][2] === 1
|
|
131
|
+
? store.applyMergeableChanges
|
|
132
|
+
: store.setMergeableContent
|
|
133
|
+
: contentOrChanges?.[2] === 1
|
|
134
|
+
? store.applyChanges
|
|
135
|
+
: store.setContent)(contentOrChanges);
|
|
136
|
+
};
|
|
130
137
|
const persister = {
|
|
131
138
|
load: async (initialTables, initialValues) =>
|
|
132
139
|
await loadLock(async () => {
|
|
133
140
|
try {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
: store.setContent)(content);
|
|
138
|
-
} catch {
|
|
141
|
+
setContentOrChanges(await getPersisted());
|
|
142
|
+
} catch (error) {
|
|
143
|
+
onIgnoredError?.(error);
|
|
139
144
|
store.setContent([initialTables, initialValues]);
|
|
140
145
|
}
|
|
141
146
|
}),
|
|
142
147
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
143
|
-
persister.stopAutoLoad();
|
|
144
|
-
|
|
145
|
-
listening = 1;
|
|
146
|
-
listeningHandle = addPersisterListener(
|
|
148
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
149
|
+
autoLoadHandle = addPersisterListener(
|
|
147
150
|
async (getContent2, getChanges2) => {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
159
|
-
(isMergeableStore && isMergeable(content)
|
|
160
|
-
? store.setMergeableContent
|
|
161
|
-
: store.setContent)(content);
|
|
162
|
-
} catch (error) {
|
|
163
|
-
onIgnoredError?.(error);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
}
|
|
151
|
+
const changes = getChanges2?.();
|
|
152
|
+
await loadLock(async () => {
|
|
153
|
+
try {
|
|
154
|
+
setContentOrChanges(
|
|
155
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
156
|
+
);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
onIgnoredError?.(error);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
167
161
|
},
|
|
168
162
|
);
|
|
169
163
|
return persister;
|
|
170
164
|
},
|
|
171
165
|
stopAutoLoad: () => {
|
|
172
|
-
if (
|
|
173
|
-
delPersisterListener(
|
|
174
|
-
|
|
175
|
-
listening = 0;
|
|
166
|
+
if (autoLoadHandle) {
|
|
167
|
+
delPersisterListener(autoLoadHandle);
|
|
168
|
+
autoLoadHandle = void 0;
|
|
176
169
|
}
|
|
177
170
|
return persister;
|
|
178
171
|
},
|
|
172
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
179
173
|
save: async (getChanges2) => {
|
|
180
174
|
/* istanbul ignore else */
|
|
181
175
|
if (loadSave != 1) {
|
|
@@ -197,7 +191,7 @@ const createCustomPersister = (
|
|
|
197
191
|
},
|
|
198
192
|
startAutoSave: async () => {
|
|
199
193
|
await persister.stopAutoSave().save();
|
|
200
|
-
|
|
194
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
201
195
|
const changes = getChanges();
|
|
202
196
|
if (hasChanges(changes)) {
|
|
203
197
|
persister.save(() => changes);
|
|
@@ -206,10 +200,11 @@ const createCustomPersister = (
|
|
|
206
200
|
return persister;
|
|
207
201
|
},
|
|
208
202
|
stopAutoSave: () => {
|
|
209
|
-
ifNotUndefined(
|
|
210
|
-
|
|
203
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
204
|
+
autoSaveListenerId = void 0;
|
|
211
205
|
return persister;
|
|
212
206
|
},
|
|
207
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
213
208
|
schedule: async (...actions) => {
|
|
214
209
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
215
210
|
await run();
|
|
@@ -218,10 +213,8 @@ const createCustomPersister = (
|
|
|
218
213
|
getStore: () => store,
|
|
219
214
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
220
215
|
getStats: () => ({loads, saves}),
|
|
216
|
+
...extra,
|
|
221
217
|
};
|
|
222
|
-
if (getThing) {
|
|
223
|
-
persister[getThing] = () => thing;
|
|
224
|
-
}
|
|
225
218
|
return objFreeze(persister);
|
|
226
219
|
};
|
|
227
220
|
|
|
@@ -239,7 +232,7 @@ const createFilePersister = (store, filePath, onIgnoredError) => {
|
|
|
239
232
|
delPersisterListener,
|
|
240
233
|
onIgnoredError,
|
|
241
234
|
true,
|
|
242
|
-
|
|
235
|
+
{getFilePath: () => filePath},
|
|
243
236
|
);
|
|
244
237
|
};
|
|
245
238
|
|
|
@@ -25,8 +25,6 @@ const arrayShift = (array) => array.shift();
|
|
|
25
25
|
const object = Object;
|
|
26
26
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
27
27
|
const objEntries = object.entries;
|
|
28
|
-
const objIds = object.keys;
|
|
29
|
-
const objFreeze = object.freeze;
|
|
30
28
|
const isObject = (obj) =>
|
|
31
29
|
!isUndefined(obj) &&
|
|
32
30
|
ifNotUndefined(
|
|
@@ -37,6 +35,8 @@ const isObject = (obj) =>
|
|
|
37
35
|
/* istanbul ignore next */
|
|
38
36
|
() => true,
|
|
39
37
|
);
|
|
38
|
+
const objIds = object.keys;
|
|
39
|
+
const objFreeze = object.freeze;
|
|
40
40
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
41
41
|
const objHas = (obj, id) => id in obj;
|
|
42
42
|
const objToArray = (obj, cb) =>
|
|
@@ -62,7 +62,6 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
62
62
|
|
|
63
63
|
const scheduleRunning = mapNew();
|
|
64
64
|
const scheduleActions = mapNew();
|
|
65
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
66
65
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
67
66
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
68
67
|
? [
|
|
@@ -87,16 +86,15 @@ const createCustomPersister = (
|
|
|
87
86
|
delPersisterListener,
|
|
88
87
|
onIgnoredError,
|
|
89
88
|
supportsMergeableStore,
|
|
90
|
-
|
|
89
|
+
extra = {},
|
|
91
90
|
scheduleId = [],
|
|
92
91
|
) => {
|
|
93
|
-
let listenerId;
|
|
94
92
|
let loadSave = 0;
|
|
95
93
|
let loads = 0;
|
|
96
94
|
let saves = 0;
|
|
97
|
-
let listening = 0;
|
|
98
95
|
let action;
|
|
99
|
-
let
|
|
96
|
+
let autoLoadHandle;
|
|
97
|
+
let autoSaveListenerId;
|
|
100
98
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
101
99
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
102
100
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -132,55 +130,51 @@ const createCustomPersister = (
|
|
|
132
130
|
}
|
|
133
131
|
return persister;
|
|
134
132
|
};
|
|
133
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
134
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
135
|
+
? contentOrChanges?.[1][2] === 1
|
|
136
|
+
? store.applyMergeableChanges
|
|
137
|
+
: store.setMergeableContent
|
|
138
|
+
: contentOrChanges?.[2] === 1
|
|
139
|
+
? store.applyChanges
|
|
140
|
+
: store.setContent)(contentOrChanges);
|
|
141
|
+
};
|
|
135
142
|
const persister = {
|
|
136
143
|
load: async (initialTables, initialValues) =>
|
|
137
144
|
await loadLock(async () => {
|
|
138
145
|
try {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
: store.setContent)(content);
|
|
143
|
-
} catch {
|
|
146
|
+
setContentOrChanges(await getPersisted());
|
|
147
|
+
} catch (error) {
|
|
148
|
+
onIgnoredError?.(error);
|
|
144
149
|
store.setContent([initialTables, initialValues]);
|
|
145
150
|
}
|
|
146
151
|
}),
|
|
147
152
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
148
|
-
persister.stopAutoLoad();
|
|
149
|
-
|
|
150
|
-
listening = 1;
|
|
151
|
-
listeningHandle = addPersisterListener(
|
|
153
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
154
|
+
autoLoadHandle = addPersisterListener(
|
|
152
155
|
async (getContent2, getChanges2) => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
)
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
164
|
-
(isMergeableStore && isMergeable(content)
|
|
165
|
-
? store.setMergeableContent
|
|
166
|
-
: store.setContent)(content);
|
|
167
|
-
} catch (error) {
|
|
168
|
-
onIgnoredError?.(error);
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
}
|
|
156
|
+
const changes = getChanges2?.();
|
|
157
|
+
await loadLock(async () => {
|
|
158
|
+
try {
|
|
159
|
+
setContentOrChanges(
|
|
160
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
161
|
+
);
|
|
162
|
+
} catch (error) {
|
|
163
|
+
onIgnoredError?.(error);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
172
166
|
},
|
|
173
167
|
);
|
|
174
168
|
return persister;
|
|
175
169
|
},
|
|
176
170
|
stopAutoLoad: () => {
|
|
177
|
-
if (
|
|
178
|
-
delPersisterListener(
|
|
179
|
-
|
|
180
|
-
listening = 0;
|
|
171
|
+
if (autoLoadHandle) {
|
|
172
|
+
delPersisterListener(autoLoadHandle);
|
|
173
|
+
autoLoadHandle = void 0;
|
|
181
174
|
}
|
|
182
175
|
return persister;
|
|
183
176
|
},
|
|
177
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
184
178
|
save: async (getChanges2) => {
|
|
185
179
|
/* istanbul ignore else */
|
|
186
180
|
if (loadSave != 1) {
|
|
@@ -202,7 +196,7 @@ const createCustomPersister = (
|
|
|
202
196
|
},
|
|
203
197
|
startAutoSave: async () => {
|
|
204
198
|
await persister.stopAutoSave().save();
|
|
205
|
-
|
|
199
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
206
200
|
const changes = getChanges();
|
|
207
201
|
if (hasChanges(changes)) {
|
|
208
202
|
persister.save(() => changes);
|
|
@@ -211,10 +205,11 @@ const createCustomPersister = (
|
|
|
211
205
|
return persister;
|
|
212
206
|
},
|
|
213
207
|
stopAutoSave: () => {
|
|
214
|
-
ifNotUndefined(
|
|
215
|
-
|
|
208
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
209
|
+
autoSaveListenerId = void 0;
|
|
216
210
|
return persister;
|
|
217
211
|
},
|
|
212
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
218
213
|
schedule: async (...actions) => {
|
|
219
214
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
220
215
|
await run();
|
|
@@ -223,10 +218,8 @@ const createCustomPersister = (
|
|
|
223
218
|
getStore: () => store,
|
|
224
219
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
225
220
|
getStats: () => ({loads, saves}),
|
|
221
|
+
...extra,
|
|
226
222
|
};
|
|
227
|
-
if (getThing) {
|
|
228
|
-
persister[getThing] = () => thing;
|
|
229
|
-
}
|
|
230
223
|
return objFreeze(persister);
|
|
231
224
|
};
|
|
232
225
|
|
|
@@ -321,7 +314,7 @@ const createIndexedDbPersister = (
|
|
|
321
314
|
delPersisterListener,
|
|
322
315
|
onIgnoredError,
|
|
323
316
|
false,
|
|
324
|
-
|
|
317
|
+
{getDbName: () => dbName},
|
|
325
318
|
);
|
|
326
319
|
};
|
|
327
320
|
|