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
|
@@ -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;
|
|
@@ -98,6 +98,9 @@ const setNew = (entryOrEntries) =>
|
|
|
98
98
|
);
|
|
99
99
|
const setAdd = (set, value) => set?.add(value);
|
|
100
100
|
|
|
101
|
+
const TABLE = 'TABLE';
|
|
102
|
+
const ALTER_TABLE = 'ALTER ' + TABLE;
|
|
103
|
+
const DELETE_FROM = 'DELETE FROM';
|
|
101
104
|
const SELECT_STAR_FROM = SELECT + '*FROM';
|
|
102
105
|
const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
|
|
103
106
|
const WHERE = 'WHERE';
|
|
@@ -192,15 +195,20 @@ const getCommandFunctions = (
|
|
|
192
195
|
arrayIsEmpty(tableColumnNames) &&
|
|
193
196
|
collHas(schemaMap, tableName)
|
|
194
197
|
) {
|
|
195
|
-
await cmd('DROP
|
|
198
|
+
await cmd('DROP ' + TABLE + escapeId(tableName));
|
|
196
199
|
mapSet(schemaMap, tableName);
|
|
197
200
|
return;
|
|
198
201
|
}
|
|
199
202
|
if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
|
|
200
203
|
await cmd(
|
|
201
|
-
`CREATE
|
|
202
|
-
|
|
203
|
-
|
|
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
|
+
)});`,
|
|
204
212
|
);
|
|
205
213
|
mapSet(
|
|
206
214
|
schemaMap,
|
|
@@ -220,7 +228,7 @@ const getCommandFunctions = (
|
|
|
220
228
|
...arrayMap(tableColumnNames, async (columnName) => {
|
|
221
229
|
if (!collDel(columnNamesAccountedFor, columnName)) {
|
|
222
230
|
await cmd(
|
|
223
|
-
|
|
231
|
+
ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
|
|
224
232
|
);
|
|
225
233
|
mapSet(tableSchemaMap, columnName, EMPTY_STRING);
|
|
226
234
|
}
|
|
@@ -231,9 +239,10 @@ const getCommandFunctions = (
|
|
|
231
239
|
async (columnName) => {
|
|
232
240
|
if (columnName != rowIdColumnName) {
|
|
233
241
|
await cmd(
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
242
|
+
ALTER_TABLE +
|
|
243
|
+
escapeId(tableName) +
|
|
244
|
+
'DROP' +
|
|
245
|
+
escapeId(columnName),
|
|
237
246
|
);
|
|
238
247
|
mapSet(tableSchemaMap, columnName);
|
|
239
248
|
}
|
|
@@ -244,13 +253,13 @@ const getCommandFunctions = (
|
|
|
244
253
|
}
|
|
245
254
|
if (partial) {
|
|
246
255
|
if (isUndefined(content)) {
|
|
247
|
-
await cmd(
|
|
256
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
248
257
|
} else {
|
|
249
258
|
await promiseAll(
|
|
250
259
|
objToArray(content, async (row, rowId) => {
|
|
251
260
|
if (isUndefined(row)) {
|
|
252
261
|
await cmd(
|
|
253
|
-
|
|
262
|
+
DELETE_FROM +
|
|
254
263
|
escapeId(tableName) +
|
|
255
264
|
WHERE +
|
|
256
265
|
escapeId(rowIdColumnName) +
|
|
@@ -292,9 +301,10 @@ const getCommandFunctions = (
|
|
|
292
301
|
rowIdColumnName,
|
|
293
302
|
changingColumnNames,
|
|
294
303
|
args,
|
|
304
|
+
useOnConflict,
|
|
295
305
|
);
|
|
296
306
|
await cmd(
|
|
297
|
-
|
|
307
|
+
DELETE_FROM +
|
|
298
308
|
escapeId(tableName) +
|
|
299
309
|
WHERE +
|
|
300
310
|
escapeId(rowIdColumnName) +
|
|
@@ -304,7 +314,7 @@ const getCommandFunctions = (
|
|
|
304
314
|
deleteRowIds,
|
|
305
315
|
);
|
|
306
316
|
} else if (collHas(schemaMap, tableName)) {
|
|
307
|
-
await cmd(
|
|
317
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
308
318
|
}
|
|
309
319
|
}
|
|
310
320
|
};
|
|
@@ -379,7 +389,6 @@ const jsonParse = JSON.parse;
|
|
|
379
389
|
|
|
380
390
|
const scheduleRunning = mapNew();
|
|
381
391
|
const scheduleActions = mapNew();
|
|
382
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
383
392
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
384
393
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
385
394
|
? [
|
|
@@ -404,16 +413,15 @@ const createCustomPersister = (
|
|
|
404
413
|
delPersisterListener,
|
|
405
414
|
onIgnoredError,
|
|
406
415
|
supportsMergeableStore,
|
|
407
|
-
|
|
416
|
+
extra = {},
|
|
408
417
|
scheduleId = [],
|
|
409
418
|
) => {
|
|
410
|
-
let listenerId;
|
|
411
419
|
let loadSave = 0;
|
|
412
420
|
let loads = 0;
|
|
413
421
|
let saves = 0;
|
|
414
|
-
let listening = 0;
|
|
415
422
|
let action;
|
|
416
|
-
let
|
|
423
|
+
let autoLoadHandle;
|
|
424
|
+
let autoSaveListenerId;
|
|
417
425
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
418
426
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
419
427
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -449,55 +457,51 @@ const createCustomPersister = (
|
|
|
449
457
|
}
|
|
450
458
|
return persister;
|
|
451
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
|
+
};
|
|
452
469
|
const persister = {
|
|
453
470
|
load: async (initialTables, initialValues) =>
|
|
454
471
|
await loadLock(async () => {
|
|
455
472
|
try {
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
: store.setContent)(content);
|
|
460
|
-
} catch {
|
|
473
|
+
setContentOrChanges(await getPersisted());
|
|
474
|
+
} catch (error) {
|
|
475
|
+
onIgnoredError?.(error);
|
|
461
476
|
store.setContent([initialTables, initialValues]);
|
|
462
477
|
}
|
|
463
478
|
}),
|
|
464
479
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
465
|
-
persister.stopAutoLoad();
|
|
466
|
-
|
|
467
|
-
listening = 1;
|
|
468
|
-
listeningHandle = addPersisterListener(
|
|
480
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
481
|
+
autoLoadHandle = addPersisterListener(
|
|
469
482
|
async (getContent2, getChanges2) => {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
(
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
)
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
481
|
-
(isMergeableStore && isMergeable(content)
|
|
482
|
-
? store.setMergeableContent
|
|
483
|
-
: store.setContent)(content);
|
|
484
|
-
} catch (error) {
|
|
485
|
-
onIgnoredError?.(error);
|
|
486
|
-
}
|
|
487
|
-
});
|
|
488
|
-
}
|
|
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
|
+
});
|
|
489
493
|
},
|
|
490
494
|
);
|
|
491
495
|
return persister;
|
|
492
496
|
},
|
|
493
497
|
stopAutoLoad: () => {
|
|
494
|
-
if (
|
|
495
|
-
delPersisterListener(
|
|
496
|
-
|
|
497
|
-
listening = 0;
|
|
498
|
+
if (autoLoadHandle) {
|
|
499
|
+
delPersisterListener(autoLoadHandle);
|
|
500
|
+
autoLoadHandle = void 0;
|
|
498
501
|
}
|
|
499
502
|
return persister;
|
|
500
503
|
},
|
|
504
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
501
505
|
save: async (getChanges2) => {
|
|
502
506
|
/* istanbul ignore else */
|
|
503
507
|
if (loadSave != 1) {
|
|
@@ -519,7 +523,7 @@ const createCustomPersister = (
|
|
|
519
523
|
},
|
|
520
524
|
startAutoSave: async () => {
|
|
521
525
|
await persister.stopAutoSave().save();
|
|
522
|
-
|
|
526
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
523
527
|
const changes = getChanges();
|
|
524
528
|
if (hasChanges(changes)) {
|
|
525
529
|
persister.save(() => changes);
|
|
@@ -528,10 +532,11 @@ const createCustomPersister = (
|
|
|
528
532
|
return persister;
|
|
529
533
|
},
|
|
530
534
|
stopAutoSave: () => {
|
|
531
|
-
ifNotUndefined(
|
|
532
|
-
|
|
535
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
536
|
+
autoSaveListenerId = void 0;
|
|
533
537
|
return persister;
|
|
534
538
|
},
|
|
539
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
535
540
|
schedule: async (...actions) => {
|
|
536
541
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
537
542
|
await run();
|
|
@@ -540,10 +545,8 @@ const createCustomPersister = (
|
|
|
540
545
|
getStore: () => store,
|
|
541
546
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
542
547
|
getStats: () => ({loads, saves}),
|
|
548
|
+
...extra,
|
|
543
549
|
};
|
|
544
|
-
if (getThing) {
|
|
545
|
-
persister[getThing] = () => thing;
|
|
546
|
-
}
|
|
547
550
|
return objFreeze(persister);
|
|
548
551
|
};
|
|
549
552
|
|
|
@@ -558,9 +561,10 @@ const createJsonSqlitePersister = (
|
|
|
558
561
|
managedTableNames,
|
|
559
562
|
db,
|
|
560
563
|
getThing,
|
|
564
|
+
useOnConflict,
|
|
561
565
|
) => {
|
|
562
566
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
563
|
-
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
567
|
+
getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
|
|
564
568
|
const getPersisted = async () =>
|
|
565
569
|
await transaction(async () => {
|
|
566
570
|
await refreshSchema();
|
|
@@ -591,7 +595,7 @@ const createJsonSqlitePersister = (
|
|
|
591
595
|
delPersisterListener,
|
|
592
596
|
onIgnoredError,
|
|
593
597
|
false,
|
|
594
|
-
[getThing
|
|
598
|
+
{[getThing]: () => db},
|
|
595
599
|
db,
|
|
596
600
|
);
|
|
597
601
|
return persister;
|
|
@@ -698,7 +702,7 @@ const createTabularSqlitePersister = (
|
|
|
698
702
|
delPersisterListener,
|
|
699
703
|
onIgnoredError,
|
|
700
704
|
false,
|
|
701
|
-
[getThing
|
|
705
|
+
{[getThing]: () => db},
|
|
702
706
|
db,
|
|
703
707
|
);
|
|
704
708
|
return persister;
|
|
@@ -22,8 +22,6 @@ const arrayShift = (array) => array.shift();
|
|
|
22
22
|
const object = Object;
|
|
23
23
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
24
24
|
const objEntries = object.entries;
|
|
25
|
-
const objIds = object.keys;
|
|
26
|
-
const objFreeze = object.freeze;
|
|
27
25
|
const isObject = (obj) =>
|
|
28
26
|
!isUndefined(obj) &&
|
|
29
27
|
ifNotUndefined(
|
|
@@ -34,6 +32,8 @@ const isObject = (obj) =>
|
|
|
34
32
|
/* istanbul ignore next */
|
|
35
33
|
() => true,
|
|
36
34
|
);
|
|
35
|
+
const objIds = object.keys;
|
|
36
|
+
const objFreeze = object.freeze;
|
|
37
37
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
38
38
|
const objHas = (obj, id) => id in obj;
|
|
39
39
|
const objToArray = (obj, cb) =>
|
|
@@ -68,7 +68,6 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
68
68
|
|
|
69
69
|
const scheduleRunning = mapNew();
|
|
70
70
|
const scheduleActions = mapNew();
|
|
71
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
72
71
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
73
72
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
74
73
|
? [
|
|
@@ -93,16 +92,15 @@ const createCustomPersister = (
|
|
|
93
92
|
delPersisterListener,
|
|
94
93
|
onIgnoredError,
|
|
95
94
|
supportsMergeableStore,
|
|
96
|
-
|
|
95
|
+
extra = {},
|
|
97
96
|
scheduleId = [],
|
|
98
97
|
) => {
|
|
99
|
-
let listenerId;
|
|
100
98
|
let loadSave = 0;
|
|
101
99
|
let loads = 0;
|
|
102
100
|
let saves = 0;
|
|
103
|
-
let listening = 0;
|
|
104
101
|
let action;
|
|
105
|
-
let
|
|
102
|
+
let autoLoadHandle;
|
|
103
|
+
let autoSaveListenerId;
|
|
106
104
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
107
105
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
108
106
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -138,55 +136,51 @@ const createCustomPersister = (
|
|
|
138
136
|
}
|
|
139
137
|
return persister;
|
|
140
138
|
};
|
|
139
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
140
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
141
|
+
? contentOrChanges?.[1][2] === 1
|
|
142
|
+
? store.applyMergeableChanges
|
|
143
|
+
: store.setMergeableContent
|
|
144
|
+
: contentOrChanges?.[2] === 1
|
|
145
|
+
? store.applyChanges
|
|
146
|
+
: store.setContent)(contentOrChanges);
|
|
147
|
+
};
|
|
141
148
|
const persister = {
|
|
142
149
|
load: async (initialTables, initialValues) =>
|
|
143
150
|
await loadLock(async () => {
|
|
144
151
|
try {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
: store.setContent)(content);
|
|
149
|
-
} catch {
|
|
152
|
+
setContentOrChanges(await getPersisted());
|
|
153
|
+
} catch (error) {
|
|
154
|
+
onIgnoredError?.(error);
|
|
150
155
|
store.setContent([initialTables, initialValues]);
|
|
151
156
|
}
|
|
152
157
|
}),
|
|
153
158
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
154
|
-
persister.stopAutoLoad();
|
|
155
|
-
|
|
156
|
-
listening = 1;
|
|
157
|
-
listeningHandle = addPersisterListener(
|
|
159
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
160
|
+
autoLoadHandle = addPersisterListener(
|
|
158
161
|
async (getContent2, getChanges2) => {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
170
|
-
(isMergeableStore && isMergeable(content)
|
|
171
|
-
? store.setMergeableContent
|
|
172
|
-
: store.setContent)(content);
|
|
173
|
-
} catch (error) {
|
|
174
|
-
onIgnoredError?.(error);
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
}
|
|
162
|
+
const changes = getChanges2?.();
|
|
163
|
+
await loadLock(async () => {
|
|
164
|
+
try {
|
|
165
|
+
setContentOrChanges(
|
|
166
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
167
|
+
);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
onIgnoredError?.(error);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
178
172
|
},
|
|
179
173
|
);
|
|
180
174
|
return persister;
|
|
181
175
|
},
|
|
182
176
|
stopAutoLoad: () => {
|
|
183
|
-
if (
|
|
184
|
-
delPersisterListener(
|
|
185
|
-
|
|
186
|
-
listening = 0;
|
|
177
|
+
if (autoLoadHandle) {
|
|
178
|
+
delPersisterListener(autoLoadHandle);
|
|
179
|
+
autoLoadHandle = void 0;
|
|
187
180
|
}
|
|
188
181
|
return persister;
|
|
189
182
|
},
|
|
183
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
190
184
|
save: async (getChanges2) => {
|
|
191
185
|
/* istanbul ignore else */
|
|
192
186
|
if (loadSave != 1) {
|
|
@@ -208,7 +202,7 @@ const createCustomPersister = (
|
|
|
208
202
|
},
|
|
209
203
|
startAutoSave: async () => {
|
|
210
204
|
await persister.stopAutoSave().save();
|
|
211
|
-
|
|
205
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
212
206
|
const changes = getChanges();
|
|
213
207
|
if (hasChanges(changes)) {
|
|
214
208
|
persister.save(() => changes);
|
|
@@ -217,10 +211,11 @@ const createCustomPersister = (
|
|
|
217
211
|
return persister;
|
|
218
212
|
},
|
|
219
213
|
stopAutoSave: () => {
|
|
220
|
-
ifNotUndefined(
|
|
221
|
-
|
|
214
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
215
|
+
autoSaveListenerId = void 0;
|
|
222
216
|
return persister;
|
|
223
217
|
},
|
|
218
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
224
219
|
schedule: async (...actions) => {
|
|
225
220
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
226
221
|
await run();
|
|
@@ -229,10 +224,8 @@ const createCustomPersister = (
|
|
|
229
224
|
getStore: () => store,
|
|
230
225
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
231
226
|
getStats: () => ({loads, saves}),
|
|
227
|
+
...extra,
|
|
232
228
|
};
|
|
233
|
-
if (getThing) {
|
|
234
|
-
persister[getThing] = () => thing;
|
|
235
|
-
}
|
|
236
229
|
return objFreeze(persister);
|
|
237
230
|
};
|
|
238
231
|
|
|
@@ -240,7 +233,7 @@ const DELETE = 'delete';
|
|
|
240
233
|
const getYContent = (yContent) => [yContent.get(T), yContent.get(V)];
|
|
241
234
|
const getChangesFromYDoc = (yContent, events) => {
|
|
242
235
|
if (size(events) == 1 && arrayIsEmpty(events[0].path)) {
|
|
243
|
-
return [yContent.get(T).toJSON(), yContent.get(V).toJSON()];
|
|
236
|
+
return [yContent.get(T).toJSON(), yContent.get(V).toJSON(), 1];
|
|
244
237
|
}
|
|
245
238
|
const [yTables, yValues] = getYContent(yContent);
|
|
246
239
|
const tables = {};
|
|
@@ -286,7 +279,7 @@ const getChangesFromYDoc = (yContent, events) => {
|
|
|
286
279
|
(values[valueId] = action == DELETE ? null : yValues.get(valueId)),
|
|
287
280
|
),
|
|
288
281
|
);
|
|
289
|
-
return [tables, values];
|
|
282
|
+
return [tables, values, 1];
|
|
290
283
|
};
|
|
291
284
|
const applyChangesToYDoc = (yContent, getContent, getChanges) => {
|
|
292
285
|
if (!yContent.size) {
|
|
@@ -405,7 +398,7 @@ const createYjsPersister = (
|
|
|
405
398
|
delPersisterListener,
|
|
406
399
|
onIgnoredError,
|
|
407
400
|
false,
|
|
408
|
-
|
|
401
|
+
{getYDoc: () => yDoc},
|
|
409
402
|
);
|
|
410
403
|
};
|
|
411
404
|
|
package/lib/debug/persisters.js
CHANGED
|
@@ -13,8 +13,6 @@ const arrayShift = (array) => array.shift();
|
|
|
13
13
|
|
|
14
14
|
const object = Object;
|
|
15
15
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
16
|
-
const objIds = object.keys;
|
|
17
|
-
const objFreeze = object.freeze;
|
|
18
16
|
const isObject = (obj) =>
|
|
19
17
|
!isUndefined(obj) &&
|
|
20
18
|
ifNotUndefined(
|
|
@@ -25,6 +23,8 @@ const isObject = (obj) =>
|
|
|
25
23
|
/* istanbul ignore next */
|
|
26
24
|
() => true,
|
|
27
25
|
);
|
|
26
|
+
const objIds = object.keys;
|
|
27
|
+
const objFreeze = object.freeze;
|
|
28
28
|
const objSize = (obj) => size(objIds(obj));
|
|
29
29
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
30
30
|
|
|
@@ -46,7 +46,6 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
46
46
|
|
|
47
47
|
const scheduleRunning = mapNew();
|
|
48
48
|
const scheduleActions = mapNew();
|
|
49
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
50
49
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
51
50
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
52
51
|
? [
|
|
@@ -71,16 +70,15 @@ const createCustomPersister = (
|
|
|
71
70
|
delPersisterListener,
|
|
72
71
|
onIgnoredError,
|
|
73
72
|
supportsMergeableStore,
|
|
74
|
-
|
|
73
|
+
extra = {},
|
|
75
74
|
scheduleId = [],
|
|
76
75
|
) => {
|
|
77
|
-
let listenerId;
|
|
78
76
|
let loadSave = 0;
|
|
79
77
|
let loads = 0;
|
|
80
78
|
let saves = 0;
|
|
81
|
-
let listening = 0;
|
|
82
79
|
let action;
|
|
83
|
-
let
|
|
80
|
+
let autoLoadHandle;
|
|
81
|
+
let autoSaveListenerId;
|
|
84
82
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
85
83
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
86
84
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -116,55 +114,51 @@ const createCustomPersister = (
|
|
|
116
114
|
}
|
|
117
115
|
return persister;
|
|
118
116
|
};
|
|
117
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
118
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
119
|
+
? contentOrChanges?.[1][2] === 1
|
|
120
|
+
? store.applyMergeableChanges
|
|
121
|
+
: store.setMergeableContent
|
|
122
|
+
: contentOrChanges?.[2] === 1
|
|
123
|
+
? store.applyChanges
|
|
124
|
+
: store.setContent)(contentOrChanges);
|
|
125
|
+
};
|
|
119
126
|
const persister = {
|
|
120
127
|
load: async (initialTables, initialValues) =>
|
|
121
128
|
await loadLock(async () => {
|
|
122
129
|
try {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
: store.setContent)(content);
|
|
127
|
-
} catch {
|
|
130
|
+
setContentOrChanges(await getPersisted());
|
|
131
|
+
} catch (error) {
|
|
132
|
+
onIgnoredError?.(error);
|
|
128
133
|
store.setContent([initialTables, initialValues]);
|
|
129
134
|
}
|
|
130
135
|
}),
|
|
131
136
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
132
|
-
persister.stopAutoLoad();
|
|
133
|
-
|
|
134
|
-
listening = 1;
|
|
135
|
-
listeningHandle = addPersisterListener(
|
|
137
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
138
|
+
autoLoadHandle = addPersisterListener(
|
|
136
139
|
async (getContent2, getChanges2) => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
148
|
-
(isMergeableStore && isMergeable(content)
|
|
149
|
-
? store.setMergeableContent
|
|
150
|
-
: store.setContent)(content);
|
|
151
|
-
} catch (error) {
|
|
152
|
-
onIgnoredError?.(error);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
}
|
|
140
|
+
const changes = getChanges2?.();
|
|
141
|
+
await loadLock(async () => {
|
|
142
|
+
try {
|
|
143
|
+
setContentOrChanges(
|
|
144
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
145
|
+
);
|
|
146
|
+
} catch (error) {
|
|
147
|
+
onIgnoredError?.(error);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
156
150
|
},
|
|
157
151
|
);
|
|
158
152
|
return persister;
|
|
159
153
|
},
|
|
160
154
|
stopAutoLoad: () => {
|
|
161
|
-
if (
|
|
162
|
-
delPersisterListener(
|
|
163
|
-
|
|
164
|
-
listening = 0;
|
|
155
|
+
if (autoLoadHandle) {
|
|
156
|
+
delPersisterListener(autoLoadHandle);
|
|
157
|
+
autoLoadHandle = void 0;
|
|
165
158
|
}
|
|
166
159
|
return persister;
|
|
167
160
|
},
|
|
161
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
168
162
|
save: async (getChanges2) => {
|
|
169
163
|
/* istanbul ignore else */
|
|
170
164
|
if (loadSave != 1) {
|
|
@@ -186,7 +180,7 @@ const createCustomPersister = (
|
|
|
186
180
|
},
|
|
187
181
|
startAutoSave: async () => {
|
|
188
182
|
await persister.stopAutoSave().save();
|
|
189
|
-
|
|
183
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
190
184
|
const changes = getChanges();
|
|
191
185
|
if (hasChanges(changes)) {
|
|
192
186
|
persister.save(() => changes);
|
|
@@ -195,10 +189,11 @@ const createCustomPersister = (
|
|
|
195
189
|
return persister;
|
|
196
190
|
},
|
|
197
191
|
stopAutoSave: () => {
|
|
198
|
-
ifNotUndefined(
|
|
199
|
-
|
|
192
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
193
|
+
autoSaveListenerId = void 0;
|
|
200
194
|
return persister;
|
|
201
195
|
},
|
|
196
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
202
197
|
schedule: async (...actions) => {
|
|
203
198
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
204
199
|
await run();
|
|
@@ -207,10 +202,8 @@ const createCustomPersister = (
|
|
|
207
202
|
getStore: () => store,
|
|
208
203
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
209
204
|
getStats: () => ({loads, saves}),
|
|
205
|
+
...extra,
|
|
210
206
|
};
|
|
211
|
-
if (getThing) {
|
|
212
|
-
persister[getThing] = () => thing;
|
|
213
|
-
}
|
|
214
207
|
return objFreeze(persister);
|
|
215
208
|
};
|
|
216
209
|
|