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
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
* |persister-expo-sqlite-next|createExpoSqliteNextPersister|SQLite in React Native, via [expo-sqlite/next](https://github.com/expo/expo/tree/main/packages/expo-sqlite/next)|
|
|
24
24
|
* |persister-electric-sql|createElectricSqlPersister|Electric SQL, via [electric-sql](https://github.com/electric-sql/electric)|
|
|
25
25
|
* |persister-libsql|createLibSqlPersister|LibSQL for Turso, via [libsql-client](https://github.com/tursodatabase/libsql-client-ts)|
|
|
26
|
+
* |persister-powersync|createPowerSyncPersister|PowerSync, via [powersync-sdk](https://github.com/powersync-ja/powersync-js)|
|
|
26
27
|
* |persister-yjs|createYjsPersister|Yjs CRDTs, via [yjs](https://github.com/yjs/yjs)|
|
|
27
28
|
* |persister-automerge|createSqliteWasmPersister|Automerge CRDTs, via [automerge-repo](https://github.com/automerge/automerge-repo)|
|
|
28
29
|
*
|
|
@@ -47,8 +48,12 @@ import {
|
|
|
47
48
|
Store,
|
|
48
49
|
Tables,
|
|
49
50
|
Values,
|
|
50
|
-
} from './store.d';
|
|
51
|
-
import {
|
|
51
|
+
} from './store.d.ts';
|
|
52
|
+
import {
|
|
53
|
+
MergeableChanges,
|
|
54
|
+
MergeableContent,
|
|
55
|
+
MergeableStore,
|
|
56
|
+
} from './mergeable-store';
|
|
52
57
|
import {TableIdFromSchema} from './internal/store';
|
|
53
58
|
|
|
54
59
|
/**
|
|
@@ -100,9 +105,16 @@ export type PersisterStats = {
|
|
|
100
105
|
* @category Creation
|
|
101
106
|
* @since v4.0.0
|
|
102
107
|
*/
|
|
103
|
-
export type PersisterListener<
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
export type PersisterListener<
|
|
109
|
+
Schemas extends OptionalSchemas,
|
|
110
|
+
SupportsMergeableStore extends boolean = false,
|
|
111
|
+
> = (
|
|
112
|
+
getContent?: () =>
|
|
113
|
+
| Content<Schemas, true>
|
|
114
|
+
| (SupportsMergeableStore extends true ? MergeableContent<Schemas> : never),
|
|
115
|
+
getChanges?: () =>
|
|
116
|
+
| Changes<Schemas>
|
|
117
|
+
| (SupportsMergeableStore extends true ? MergeableChanges<Schemas> : never),
|
|
106
118
|
) => void;
|
|
107
119
|
|
|
108
120
|
/**
|
|
@@ -682,10 +694,7 @@ export interface Persister<
|
|
|
682
694
|
* This has schema-based typing. The following is a simplified representation:
|
|
683
695
|
*
|
|
684
696
|
* ```ts override
|
|
685
|
-
* load(
|
|
686
|
-
* initialTables?: Tables,
|
|
687
|
-
* initialValues?: Values,
|
|
688
|
-
* ): Promise<Persister<SupportsMergeableStore>>;
|
|
697
|
+
* load(initialTables?: Tables, initialValues?: Values): Promise<this>;
|
|
689
698
|
* ```
|
|
690
699
|
*
|
|
691
700
|
* The optional parameters allow you to specify what the initial content for
|
|
@@ -746,7 +755,7 @@ export interface Persister<
|
|
|
746
755
|
load(
|
|
747
756
|
initialTables?: Tables<Schemas[0], true>,
|
|
748
757
|
initialValues?: Values<Schemas[1], true>,
|
|
749
|
-
): Promise<
|
|
758
|
+
): Promise<this>;
|
|
750
759
|
|
|
751
760
|
/**
|
|
752
761
|
* The startAutoLoad method gets persisted data from storage, and loads it
|
|
@@ -756,10 +765,7 @@ export interface Persister<
|
|
|
756
765
|
* This has schema-based typing. The following is a simplified representation:
|
|
757
766
|
*
|
|
758
767
|
* ```ts override
|
|
759
|
-
* startAutoLoad(
|
|
760
|
-
* initialTables?: Tables,
|
|
761
|
-
* initialValues?: Values,
|
|
762
|
-
* ): Promise<Persister<SupportsMergeableStore>>;
|
|
768
|
+
* startAutoLoad(initialTables?: Tables, initialValues?: Values): Promise<this>;
|
|
763
769
|
* ```
|
|
764
770
|
*
|
|
765
771
|
* The optional parameters allow you to specify what the initial content for
|
|
@@ -813,18 +819,12 @@ export interface Persister<
|
|
|
813
819
|
startAutoLoad(
|
|
814
820
|
initialTables?: Tables<Schemas[0], true>,
|
|
815
821
|
initialValues?: Values<Schemas[1], true>,
|
|
816
|
-
): Promise<
|
|
822
|
+
): Promise<this>;
|
|
817
823
|
|
|
818
824
|
/**
|
|
819
825
|
* The stopAutoLoad method stops the automatic loading of data from storage
|
|
820
826
|
* previously started with the startAutoLoad method.
|
|
821
827
|
*
|
|
822
|
-
* This has schema-based typing. The following is a simplified representation:
|
|
823
|
-
*
|
|
824
|
-
* ```ts override
|
|
825
|
-
* stopAutoLoad(): Persister<SupportsMergeableStore>;
|
|
826
|
-
* ```
|
|
827
|
-
*
|
|
828
828
|
* If the Persister is not currently set to automatically load, this method
|
|
829
829
|
* has no effect.
|
|
830
830
|
* @returns A reference to the Persister object.
|
|
@@ -863,17 +863,38 @@ export interface Persister<
|
|
|
863
863
|
* ```
|
|
864
864
|
* @category Load
|
|
865
865
|
*/
|
|
866
|
-
stopAutoLoad():
|
|
866
|
+
stopAutoLoad(): this;
|
|
867
867
|
|
|
868
868
|
/**
|
|
869
|
-
* The
|
|
870
|
-
*
|
|
869
|
+
* The isAutoLoading method lets you find out if the Persister is currently
|
|
870
|
+
* automatically loading its content.
|
|
871
|
+
* @returns A boolean indicating whether the Persister is currently
|
|
872
|
+
* autoLoading.
|
|
873
|
+
* @example
|
|
874
|
+
* This example creates a Persister and queries whether it is autoLoading.
|
|
871
875
|
*
|
|
872
|
-
*
|
|
876
|
+
* ```js
|
|
877
|
+
* const persister = createSessionPersister(createStore(), 'pets');
|
|
873
878
|
*
|
|
874
|
-
*
|
|
875
|
-
*
|
|
879
|
+
* console.log(persister.isAutoLoading());
|
|
880
|
+
* // -> false
|
|
881
|
+
*
|
|
882
|
+
* await persister.startAutoLoad();
|
|
883
|
+
* console.log(persister.isAutoLoading());
|
|
884
|
+
* // -> true
|
|
885
|
+
*
|
|
886
|
+
* await persister.stopAutoLoad();
|
|
887
|
+
* console.log(persister.isAutoLoading());
|
|
888
|
+
* // -> false
|
|
876
889
|
* ```
|
|
890
|
+
* @category Load
|
|
891
|
+
* @since v5.0.0
|
|
892
|
+
*/
|
|
893
|
+
isAutoLoading(): boolean;
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* The save method takes data from the Store with which the Persister is
|
|
897
|
+
* associated and persists it into storage, once.
|
|
877
898
|
*
|
|
878
899
|
* This method is asynchronous because the persisted data may be on a remote
|
|
879
900
|
* machine or a filesystem. Even for those storage types that are synchronous
|
|
@@ -897,18 +918,12 @@ export interface Persister<
|
|
|
897
918
|
* ```
|
|
898
919
|
* @category Save
|
|
899
920
|
*/
|
|
900
|
-
save(): Promise<
|
|
921
|
+
save(): Promise<this>;
|
|
901
922
|
|
|
902
923
|
/**
|
|
903
924
|
* The save method takes data from the Store with which the Persister is
|
|
904
925
|
* associated and persists it into storage, once, and then continuously.
|
|
905
926
|
*
|
|
906
|
-
* This has schema-based typing. The following is a simplified representation:
|
|
907
|
-
*
|
|
908
|
-
* ```ts override
|
|
909
|
-
* startAutoSave(): Promise<Persister<SupportsMergeableStore>>;
|
|
910
|
-
* ```
|
|
911
|
-
*
|
|
912
927
|
* This method first runs a single call to the save method to ensure the data
|
|
913
928
|
* is in sync with the persisted storage. It then continues to watch for
|
|
914
929
|
* changes to the Store, automatically saving the data to storage.
|
|
@@ -940,18 +955,12 @@ export interface Persister<
|
|
|
940
955
|
* ```
|
|
941
956
|
* @category Save
|
|
942
957
|
*/
|
|
943
|
-
startAutoSave(): Promise<
|
|
958
|
+
startAutoSave(): Promise<this>;
|
|
944
959
|
|
|
945
960
|
/**
|
|
946
961
|
* The stopAutoSave method stops the automatic save of data to storage
|
|
947
962
|
* previously started with the startAutoSave method.
|
|
948
963
|
*
|
|
949
|
-
* This has schema-based typing. The following is a simplified representation:
|
|
950
|
-
*
|
|
951
|
-
* ```ts override
|
|
952
|
-
* stopAutoSave(): Persister<SupportsMergeableStore>;
|
|
953
|
-
* ```
|
|
954
|
-
*
|
|
955
964
|
* If the Persister is not currently set to automatically save, this method
|
|
956
965
|
* has no effect.
|
|
957
966
|
* @returns A reference to the Persister object.
|
|
@@ -983,19 +992,38 @@ export interface Persister<
|
|
|
983
992
|
* ```
|
|
984
993
|
* @category Save
|
|
985
994
|
*/
|
|
986
|
-
stopAutoSave():
|
|
995
|
+
stopAutoSave(): this;
|
|
987
996
|
|
|
988
997
|
/**
|
|
989
|
-
* The
|
|
990
|
-
*
|
|
998
|
+
* The isAutoSaving method lets you find out if the Persister is currently
|
|
999
|
+
* automatically saving its content.
|
|
1000
|
+
* @returns A boolean indicating whether the Persister is currently
|
|
1001
|
+
* autoSaving.
|
|
1002
|
+
* @example
|
|
1003
|
+
* This example creates a Persister and queries whether it is autoSaving.
|
|
991
1004
|
*
|
|
992
|
-
*
|
|
1005
|
+
* ```js
|
|
1006
|
+
* const persister = createSessionPersister(createStore(), 'pets');
|
|
993
1007
|
*
|
|
994
|
-
*
|
|
995
|
-
*
|
|
996
|
-
*
|
|
997
|
-
* )
|
|
1008
|
+
* console.log(persister.isAutoSaving());
|
|
1009
|
+
* // -> false
|
|
1010
|
+
*
|
|
1011
|
+
* await persister.startAutoSave();
|
|
1012
|
+
* console.log(persister.isAutoSaving());
|
|
1013
|
+
* // -> true
|
|
1014
|
+
*
|
|
1015
|
+
* await persister.stopAutoSave();
|
|
1016
|
+
* console.log(persister.isAutoSaving());
|
|
1017
|
+
* // -> false
|
|
998
1018
|
* ```
|
|
1019
|
+
* @category Save
|
|
1020
|
+
* @since v5.0.0
|
|
1021
|
+
*/
|
|
1022
|
+
isAutoSaving(): boolean;
|
|
1023
|
+
|
|
1024
|
+
/**
|
|
1025
|
+
* The schedule method allows you to queue up a series of asynchronous actions
|
|
1026
|
+
* that must run in sequence during persistence.
|
|
999
1027
|
*
|
|
1000
1028
|
* For example, a database Persister may need to ensure that multiple
|
|
1001
1029
|
* asynchronous tasks to check and update the database schema are completed
|
|
@@ -1034,9 +1062,7 @@ export interface Persister<
|
|
|
1034
1062
|
* @category Lifecycle
|
|
1035
1063
|
* @since v4.0.0
|
|
1036
1064
|
*/
|
|
1037
|
-
schedule(
|
|
1038
|
-
...actions: Promise<any>[]
|
|
1039
|
-
): Promise<Persister<Schemas, SupportsMergeableStore>>;
|
|
1065
|
+
schedule(...actions: Promise<any>[]): Promise<this>;
|
|
1040
1066
|
|
|
1041
1067
|
/**
|
|
1042
1068
|
* The getStore method returns a reference to the underlying Store that is
|
|
@@ -1067,18 +1093,14 @@ export interface Persister<
|
|
|
1067
1093
|
* ```
|
|
1068
1094
|
* @category Getter
|
|
1069
1095
|
*/
|
|
1070
|
-
getStore():
|
|
1096
|
+
getStore(): SupportsMergeableStore extends true
|
|
1097
|
+
? Store<Schemas> | MergeableStore<Schemas>
|
|
1098
|
+
: Store<Schemas>;
|
|
1071
1099
|
|
|
1072
1100
|
/**
|
|
1073
1101
|
* The destroy method should be called when this Persister object is no longer
|
|
1074
1102
|
* used.
|
|
1075
1103
|
*
|
|
1076
|
-
* This has schema-based typing. The following is a simplified representation:
|
|
1077
|
-
*
|
|
1078
|
-
* ```ts override
|
|
1079
|
-
* destroy(): Persister<SupportsMergeableStore>;
|
|
1080
|
-
* ```
|
|
1081
|
-
*
|
|
1082
1104
|
* This guarantees that all of the listeners that the object registered with
|
|
1083
1105
|
* the underlying Store and storage are removed and it can be correctly
|
|
1084
1106
|
* garbage collected. It is equivalent to running the stopAutoLoad method and
|
|
@@ -1103,7 +1125,7 @@ export interface Persister<
|
|
|
1103
1125
|
* ```
|
|
1104
1126
|
* @category Lifecycle
|
|
1105
1127
|
*/
|
|
1106
|
-
destroy():
|
|
1128
|
+
destroy(): this;
|
|
1107
1129
|
|
|
1108
1130
|
/**
|
|
1109
1131
|
* The getStats method provides a set of statistics about the Persister, and
|
|
@@ -1171,7 +1193,9 @@ export interface Persister<
|
|
|
1171
1193
|
* getContent: () =>
|
|
1172
1194
|
* | Content
|
|
1173
1195
|
* | (SupportsMergeableStore extends true ? MergeableContent : never),
|
|
1174
|
-
* getChanges?: () =>
|
|
1196
|
+
* getChanges?: () =>
|
|
1197
|
+
* | Changes
|
|
1198
|
+
* | (SupportsMergeableStore extends true ? MergeableChanges : never),
|
|
1175
1199
|
* ) => Promise<void>,
|
|
1176
1200
|
* addPersisterListener: (
|
|
1177
1201
|
* listener: PersisterListener<SupportsMergeableStore>,
|
|
@@ -1275,7 +1299,11 @@ export function createCustomPersister<
|
|
|
1275
1299
|
| (SupportsMergeableStore extends true
|
|
1276
1300
|
? MergeableContent<Schemas>
|
|
1277
1301
|
: never),
|
|
1278
|
-
getChanges?: () =>
|
|
1302
|
+
getChanges?: () =>
|
|
1303
|
+
| Changes<Schemas>
|
|
1304
|
+
| (SupportsMergeableStore extends true
|
|
1305
|
+
? MergeableChanges<Schemas>
|
|
1306
|
+
: never),
|
|
1279
1307
|
) => Promise<void>,
|
|
1280
1308
|
addPersisterListener: (
|
|
1281
1309
|
listener: PersisterListener<Schemas>,
|
|
@@ -19,11 +19,11 @@ import {
|
|
|
19
19
|
OptionalSchemas,
|
|
20
20
|
OptionalTablesSchema,
|
|
21
21
|
Store,
|
|
22
|
-
} from './store.d';
|
|
22
|
+
} from './store.d.ts';
|
|
23
23
|
import {CellIdFromSchema, TableIdFromSchema} from './internal/store';
|
|
24
24
|
import {GetResultCell, JoinedCellIdOrId} from './internal/queries';
|
|
25
|
-
import {Id, IdOrNull, Ids} from './common.d';
|
|
26
|
-
import {GetIdChanges} from '../store.d';
|
|
25
|
+
import {Id, IdOrNull, Ids} from './common.d.ts';
|
|
26
|
+
import {GetIdChanges} from '../store.d.ts';
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* The ResultTable type is the data structure representing the results of a
|
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
OptionalTablesSchema,
|
|
18
18
|
RowCallback,
|
|
19
19
|
Store,
|
|
20
|
-
} from './store.d';
|
|
21
|
-
import {Id, IdOrNull, Ids} from './common.d';
|
|
20
|
+
} from './store.d.ts';
|
|
21
|
+
import {Id, IdOrNull, Ids} from './common.d.ts';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* The Relationship type represents the concept of a map that connects one Row
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
Truncate,
|
|
23
23
|
ValueIdFromSchema,
|
|
24
24
|
} from './internal/store';
|
|
25
|
-
import {Id, IdOrNull, Ids, Json} from './common.d';
|
|
25
|
+
import {Id, IdOrNull, Ids, Json} from './common.d.ts';
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* The TablesSchema type describes the tabular structure of a Store in terms of
|
|
@@ -167,7 +167,41 @@ export type OptionalSchemas = [OptionalTablesSchema, OptionalValuesSchema];
|
|
|
167
167
|
*/
|
|
168
168
|
export type NoSchemas = [NoTablesSchema, NoValuesSchema];
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
/**
|
|
171
|
+
* The Content type describes both the Tables and Values in a Store.
|
|
172
|
+
*
|
|
173
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
174
|
+
*
|
|
175
|
+
* ```ts override
|
|
176
|
+
* [Tables, Values];
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* It is an array of two objects, representing tabular and keyed value content.
|
|
180
|
+
* @example
|
|
181
|
+
* The following is a valid Content array:
|
|
182
|
+
* ```json
|
|
183
|
+
* [
|
|
184
|
+
* {
|
|
185
|
+
* "pets": {
|
|
186
|
+
* "fido": {
|
|
187
|
+
* "sold": false,
|
|
188
|
+
* "price": 4,
|
|
189
|
+
* },
|
|
190
|
+
* "felix": {
|
|
191
|
+
* "sold": true,
|
|
192
|
+
* "price": 5,
|
|
193
|
+
* },
|
|
194
|
+
* },
|
|
195
|
+
* },
|
|
196
|
+
* {
|
|
197
|
+
* open: true,
|
|
198
|
+
* employees: 3,
|
|
199
|
+
* },
|
|
200
|
+
* ]
|
|
201
|
+
* ```
|
|
202
|
+
* @category Store
|
|
203
|
+
* @since v5.0.0
|
|
204
|
+
*/
|
|
171
205
|
export type Content<
|
|
172
206
|
Schemas extends OptionalSchemas,
|
|
173
207
|
WhenSet extends boolean = false,
|
|
@@ -2207,7 +2241,69 @@ export type ChangedValue<
|
|
|
2207
2241
|
*/
|
|
2208
2242
|
export type InvalidValues = {[valueId: Id]: any[]};
|
|
2209
2243
|
|
|
2210
|
-
|
|
2244
|
+
/**
|
|
2245
|
+
* The Changes type describes the net meaningful changes that were made to a
|
|
2246
|
+
* Store during a transaction.
|
|
2247
|
+
*
|
|
2248
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
2249
|
+
*
|
|
2250
|
+
* ```ts override
|
|
2251
|
+
* [
|
|
2252
|
+
* changedTables: {
|
|
2253
|
+
* [tableId: Id]:
|
|
2254
|
+
* | {[rowId: Id]: {[cellId: Id]: CellOrUndefined} | undefined}
|
|
2255
|
+
* | undefined;
|
|
2256
|
+
* },
|
|
2257
|
+
* changedValues: {[valueId: Id]: ValueOrUndefined},
|
|
2258
|
+
* isChanges: 1,
|
|
2259
|
+
* ];
|
|
2260
|
+
* ```
|
|
2261
|
+
*
|
|
2262
|
+
* This contains mostly equivalent information to a TransactionLog, but in a
|
|
2263
|
+
* form that can be more efficiently parsed and serialized (for example in the
|
|
2264
|
+
* case of synchronization between systems).
|
|
2265
|
+
*
|
|
2266
|
+
* It is an array of two objects, representing tabular and keyed value changes.
|
|
2267
|
+
* If the first item is an empty object, it means no tabular changes were made.
|
|
2268
|
+
* If the second item is an empty object, it means no keyed value changes were
|
|
2269
|
+
* made.
|
|
2270
|
+
*
|
|
2271
|
+
* If not empty, the first object has an entry for each Table in a Store that
|
|
2272
|
+
* has had a change within it. If the entry is null, it means that whole Table
|
|
2273
|
+
* was deleted. Otherwise, the entry will be an object with an entry for each
|
|
2274
|
+
* Row in that Table that had a change within it. In turn, if that entry is
|
|
2275
|
+
* null, it means the Row was deleted. Otherwise, the entry will be an object
|
|
2276
|
+
* with an entry for each Cell in that Row that had a change within it. If the
|
|
2277
|
+
* entry is null, the Cell was deleted, otherwise it will contain the new value
|
|
2278
|
+
* the Cell was changed to during the transaction.
|
|
2279
|
+
*
|
|
2280
|
+
* If not empty, the second object has an entry for each Value in a Store that
|
|
2281
|
+
* has had a change. If the entry is null, the Value was deleted, otherwise it
|
|
2282
|
+
* will contain the new Value it was changed to during the transaction.
|
|
2283
|
+
*
|
|
2284
|
+
* A third, required, item in the array is the digit `1`, so that instances of
|
|
2285
|
+
* Content and Changes types can be disambiguated.
|
|
2286
|
+
* @example
|
|
2287
|
+
* The following is a valid Changes array that conveys the following:
|
|
2288
|
+
* ```json
|
|
2289
|
+
* [
|
|
2290
|
+
* { // changes to tabular data in the Store
|
|
2291
|
+
* "pets": { // this Table was changed
|
|
2292
|
+
* "fido": null, // this Row was deleted
|
|
2293
|
+
* "felix": { // this Row was changed
|
|
2294
|
+
* "sold": true, // this Cell was changed
|
|
2295
|
+
* "price": null, // this Cell was deleted
|
|
2296
|
+
* },
|
|
2297
|
+
* },
|
|
2298
|
+
* "pendingSales": null, // this Table was deleted
|
|
2299
|
+
* },
|
|
2300
|
+
* {}, // no changes to keyed value data in the Store
|
|
2301
|
+
* 1, // indicates that this is a Changes array
|
|
2302
|
+
* ]
|
|
2303
|
+
* ```
|
|
2304
|
+
* @category Transaction
|
|
2305
|
+
* @since v4.0.0
|
|
2306
|
+
*/
|
|
2211
2307
|
export type Changes<Schemas extends OptionalSchemas> = [
|
|
2212
2308
|
{
|
|
2213
2309
|
[TableId in TableIdFromSchema<Schemas[0]>]?:
|
|
@@ -2226,6 +2322,7 @@ export type Changes<Schemas extends OptionalSchemas> = [
|
|
|
2226
2322
|
{
|
|
2227
2323
|
[ValueId in ValueIdFromSchema<Schemas[1]>]?: Value<Schemas[1], ValueId>;
|
|
2228
2324
|
},
|
|
2325
|
+
isChanges: 1,
|
|
2229
2326
|
];
|
|
2230
2327
|
|
|
2231
2328
|
/**
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The synchronizer-local module of the TinyBase project lets you synchronize
|
|
3
|
+
* MergeableStore data to and from other MergeableStore instances on the same
|
|
4
|
+
* local machine.
|
|
5
|
+
* @see Synchronizing Data guide
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module synchronizer-local
|
|
8
|
+
* @since v5.0.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {MergeableStore} from '../mergeable-store';
|
|
12
|
+
import {OptionalSchemas} from '../store';
|
|
13
|
+
import {Synchronizer} from '../synchronizers';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The LocalSynchronizer interface
|
|
17
|
+
* @category Synchronizer
|
|
18
|
+
*/
|
|
19
|
+
export interface LocalSynchronizer<Schemas extends OptionalSchemas>
|
|
20
|
+
extends Synchronizer<Schemas> {}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The createLocalSynchronizer function
|
|
24
|
+
* @category Creation
|
|
25
|
+
*/
|
|
26
|
+
export function createLocalSynchronizer<Schemas extends OptionalSchemas>(
|
|
27
|
+
store: MergeableStore<Schemas>,
|
|
28
|
+
onIgnoredError?: (error: any) => void,
|
|
29
|
+
): LocalSynchronizer<Schemas>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The synchronizer-ws module of the TinyBase project lets you synchronize
|
|
3
|
+
* MergeableStore data to and from other MergeableStore instances via WebSockets
|
|
4
|
+
* facilitated by a server.
|
|
5
|
+
* @see Synchronizing Data guide
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module synchronizer-ws-client
|
|
8
|
+
* @since v5.0.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {MergeableStore} from '../mergeable-store';
|
|
12
|
+
import {OptionalSchemas} from '../store';
|
|
13
|
+
import {Synchronizer} from '../synchronizers';
|
|
14
|
+
import {WebSocket} from 'ws';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The WsSynchronizer interface
|
|
18
|
+
* @category Synchronizer
|
|
19
|
+
*/
|
|
20
|
+
export interface WsSynchronizer<Schemas extends OptionalSchemas>
|
|
21
|
+
extends Synchronizer<Schemas> {}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The createWsSynchronizer function
|
|
25
|
+
* @category Creation
|
|
26
|
+
*/
|
|
27
|
+
export function createWsSynchronizer<Schemas extends OptionalSchemas>(
|
|
28
|
+
store: MergeableStore<Schemas>,
|
|
29
|
+
webSocket: WebSocket,
|
|
30
|
+
requestTimeoutSeconds?: number,
|
|
31
|
+
onIgnoredError?: (error: any) => void,
|
|
32
|
+
): Promise<WsSynchronizer<Schemas>>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The synchronizer-ws-server module of the TinyBase project lets you create
|
|
3
|
+
* a server that facilitates synchronization between clients.
|
|
4
|
+
* @see Synchronizing Data guide
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
* @module synchronizer-ws-server
|
|
7
|
+
* @since v5.0.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {WebSocketServer} from 'ws';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The WsServer interface
|
|
14
|
+
*/
|
|
15
|
+
export interface WsServer {
|
|
16
|
+
getWebSocketServer: () => WebSocketServer;
|
|
17
|
+
destroy: () => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The createWsServer function
|
|
22
|
+
* @category Creation
|
|
23
|
+
*/
|
|
24
|
+
export function createWsServer(WebSocketServer: WebSocketServer): WsServer;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The persister-sync module of the TinyBase project lets you synchronize
|
|
3
|
+
* MergeableStore data to and from other MergeableStore instances.
|
|
4
|
+
* @see Synchronizing Data guide
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
* @module synchronizers
|
|
7
|
+
* @since v5.0.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {Id, IdOrNull} from './common';
|
|
11
|
+
import {MergeableStore} from './mergeable-store';
|
|
12
|
+
import {OptionalSchemas} from './store';
|
|
13
|
+
import {Persister} from './persisters';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The MessageType type
|
|
17
|
+
* @category Synchronization
|
|
18
|
+
*/
|
|
19
|
+
export type MessageType = number;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The Receive type
|
|
23
|
+
* @category Synchronization
|
|
24
|
+
*/
|
|
25
|
+
export type Receive = (
|
|
26
|
+
fromClientId: Id,
|
|
27
|
+
requestId: Id,
|
|
28
|
+
messageType: MessageType,
|
|
29
|
+
messageBody: any,
|
|
30
|
+
) => void;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The Send type
|
|
34
|
+
* @category Synchronization
|
|
35
|
+
*/
|
|
36
|
+
export type Send = (
|
|
37
|
+
toClientId: IdOrNull,
|
|
38
|
+
requestId: Id,
|
|
39
|
+
messageType: MessageType,
|
|
40
|
+
messageBody: any,
|
|
41
|
+
) => void;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The SynchronizerStats type
|
|
45
|
+
* @category Development
|
|
46
|
+
*/
|
|
47
|
+
export type SynchronizerStats = {
|
|
48
|
+
sends?: number;
|
|
49
|
+
receives?: number;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The Synchronizer interface is a minor extension to the Persister interface.
|
|
54
|
+
*
|
|
55
|
+
* It provides extra convenience methods for starting and stopping the
|
|
56
|
+
* synchronization.
|
|
57
|
+
*
|
|
58
|
+
* You should use the createCustomSynchronizer function to create a Synchronizer
|
|
59
|
+
* object.
|
|
60
|
+
* @category Synchronizer
|
|
61
|
+
* @since v5.0.0
|
|
62
|
+
*/
|
|
63
|
+
export interface Synchronizer<Schemas extends OptionalSchemas>
|
|
64
|
+
extends Persister<Schemas, true> {
|
|
65
|
+
/**
|
|
66
|
+
* The startSync method
|
|
67
|
+
* @category Synchronization
|
|
68
|
+
*/
|
|
69
|
+
startSync(): Promise<this>;
|
|
70
|
+
/**
|
|
71
|
+
* The stopSync method
|
|
72
|
+
* @category Synchronization
|
|
73
|
+
*/
|
|
74
|
+
stopSync(): this;
|
|
75
|
+
/**
|
|
76
|
+
* The getSynchronizerStats method
|
|
77
|
+
* @category Synchronization
|
|
78
|
+
*/
|
|
79
|
+
getSynchronizerStats(): SynchronizerStats;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The createCustomSynchronizer function creates a Synchronizer object that can
|
|
84
|
+
* persist one MergeableStore to another.
|
|
85
|
+
*
|
|
86
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
87
|
+
*
|
|
88
|
+
* ```ts override
|
|
89
|
+
* createCustomSynchronizer(
|
|
90
|
+
* store: MergeableStore,
|
|
91
|
+
* send: Send,
|
|
92
|
+
* onReceive: (receive: Receive) => void,
|
|
93
|
+
* destroy: () => void,
|
|
94
|
+
* requestTimeoutSeconds?: number,
|
|
95
|
+
* onIgnoredError?: (error: any) => void,
|
|
96
|
+
* ): Synchronizer;
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* As well as providing a reference to the MergeableStore to synchronize, you
|
|
100
|
+
* must provide a `client` parameter which identifies the Client that is used to
|
|
101
|
+
* transmit changes to and from this MergeableStore and its peers.
|
|
102
|
+
* @param store The MergeableStore to synchronize.
|
|
103
|
+
* @param client The reference of the Client.
|
|
104
|
+
* @param requestTimeoutSeconds An optional number of seconds before a request
|
|
105
|
+
* to the Client times out, defaulting to 5.
|
|
106
|
+
* @param onIgnoredError An optional handler for the errors that the
|
|
107
|
+
* Synchronizer would otherwise ignore when trying to save or load data. This is
|
|
108
|
+
* suitable for debugging synchronization issues in a development environment.
|
|
109
|
+
* @returns A reference to the new Synchronizer object.
|
|
110
|
+
* @example
|
|
111
|
+
* This example creates a Synchronizer object and synchronizes one
|
|
112
|
+
* MergeableStore to another.
|
|
113
|
+
*
|
|
114
|
+
* ```js
|
|
115
|
+
* const store1 = createMergeableStore('store1').setTables({
|
|
116
|
+
* pets: {fido: {species: 'dog'}},
|
|
117
|
+
* });
|
|
118
|
+
* const synchronizer1 = createLocalSynchronizer(store1);
|
|
119
|
+
*
|
|
120
|
+
* const store2 = createMergeableStore('store2');
|
|
121
|
+
* const synchronizer2 = createLocalSynchronizer(store2);
|
|
122
|
+
* await synchronizer2.startSync();
|
|
123
|
+
*
|
|
124
|
+
* await synchronizer1.save();
|
|
125
|
+
* // ...
|
|
126
|
+
* // Store2 will be synced with Store1.
|
|
127
|
+
*
|
|
128
|
+
* console.log(store2.getTables());
|
|
129
|
+
* // -> {pets: {fido: {species: 'dog'}}}
|
|
130
|
+
*
|
|
131
|
+
* await synchronizer1.load();
|
|
132
|
+
* // Store1 will be synced with Store2.
|
|
133
|
+
*
|
|
134
|
+
* synchronizer1.destroy();
|
|
135
|
+
* synchronizer2.destroy();
|
|
136
|
+
* ```
|
|
137
|
+
* @category Creation
|
|
138
|
+
*/
|
|
139
|
+
export function createCustomSynchronizer<Schemas extends OptionalSchemas>(
|
|
140
|
+
store: MergeableStore<Schemas>,
|
|
141
|
+
send: Send,
|
|
142
|
+
onReceive: (receive: Receive) => void,
|
|
143
|
+
destroy: () => void,
|
|
144
|
+
requestTimeoutSeconds?: number,
|
|
145
|
+
onIgnoredError?: (error: any) => void,
|
|
146
|
+
): Synchronizer<Schemas>;
|