tinybase 5.0.0-beta.1 → 5.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/cjs/checkpoints.cjs +1 -1
- package/lib/cjs/checkpoints.cjs.gz +0 -0
- package/lib/cjs/indexes.cjs +1 -1
- package/lib/cjs/indexes.cjs.gz +0 -0
- package/lib/cjs/mergeable-store.cjs +1 -0
- package/lib/cjs/mergeable-store.cjs.gz +0 -0
- package/lib/cjs/metrics.cjs +1 -1
- package/lib/cjs/metrics.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-libsql.cjs +1 -0
- package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-server.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/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/relationships.cjs +1 -1
- package/lib/cjs/relationships.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/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-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/checkpoints.cjs +1 -1
- package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
- package/lib/cjs-es6/indexes.cjs +1 -1
- package/lib/cjs-es6/indexes.cjs.gz +0 -0
- package/lib/cjs-es6/mergeable-store.cjs +1 -0
- package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
- package/lib/cjs-es6/metrics.cjs +1 -1
- package/lib/cjs-es6/metrics.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-server.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/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/relationships.cjs +1 -1
- package/lib/cjs-es6/relationships.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/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-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/checkpoints.js +3 -1
- package/lib/debug/indexes.js +3 -1
- package/lib/debug/mergeable-store.js +2230 -0
- package/lib/debug/metrics.js +3 -1
- package/lib/debug/persisters/persister-automerge.js +167 -131
- package/lib/debug/persisters/persister-browser.js +155 -102
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +225 -152
- package/lib/debug/persisters/persister-electric-sql.js +225 -152
- package/lib/debug/persisters/persister-expo-sqlite-next.js +225 -152
- package/lib/debug/persisters/persister-expo-sqlite.js +225 -152
- package/lib/debug/persisters/persister-file.js +149 -101
- package/lib/debug/persisters/persister-indexed-db.js +146 -100
- package/lib/debug/persisters/persister-libsql.js +924 -0
- package/lib/debug/persisters/persister-partykit-client.js +146 -104
- package/lib/debug/persisters/persister-partykit-server.js +17 -25
- package/lib/debug/persisters/persister-powersync.js +939 -0
- package/lib/debug/persisters/persister-remote.js +141 -97
- package/lib/debug/persisters/persister-sqlite-wasm.js +225 -152
- package/lib/debug/persisters/persister-sqlite3.js +225 -152
- package/lib/debug/persisters/persister-yjs.js +164 -127
- package/lib/debug/persisters.js +137 -94
- package/lib/debug/queries.js +9 -6
- package/lib/debug/relationships.js +3 -1
- package/lib/debug/store.js +147 -126
- package/lib/debug/synchronizers/synchronizer-local.js +571 -0
- package/lib/debug/synchronizers/synchronizer-ws-client.js +598 -0
- package/lib/debug/synchronizers/synchronizer-ws-server.js +241 -0
- package/lib/debug/synchronizers.js +531 -0
- package/lib/debug/tinybase.js +1080 -215
- package/lib/debug/tools.js +22 -21
- package/lib/debug/ui-react-dom.js +336 -258
- package/lib/debug/ui-react.js +55 -6
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/mergeable-store.js +1 -0
- package/lib/es6/mergeable-store.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-libsql.js +1 -0
- package/lib/es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-server.js +1 -1
- package/lib/es6/persisters/persister-partykit-server.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/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/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-dom.js +1 -1
- package/lib/es6/ui-react-dom.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/mergeable-store.js +1 -0
- package/lib/mergeable-store.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-libsql.js +1 -0
- package/lib/persisters/persister-libsql.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-partykit-server.js +1 -1
- package/lib/persisters/persister-partykit-server.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/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/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 +214 -0
- package/lib/types/metrics.d.ts +2 -2
- package/lib/types/persisters/persister-automerge.d.ts +11 -7
- package/lib/types/persisters/persister-browser.d.ts +13 -4
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
- package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
- package/lib/types/persisters/persister-expo-sqlite-next.d.ts +4 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
- package/lib/types/persisters/persister-file.d.ts +7 -2
- package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
- package/lib/types/persisters/persister-libsql.d.ts +142 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
- package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
- package/lib/types/persisters/persister-powersync.d.ts +157 -0
- package/lib/types/persisters/persister-remote.d.ts +4 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
- package/lib/types/persisters/persister-yjs.d.ts +6 -2
- package/lib/types/persisters.d.ts +162 -59
- package/lib/types/queries.d.ts +2 -2
- package/lib/types/relationships.d.ts +2 -2
- package/lib/types/store.d.ts +275 -187
- package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
- package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
- package/lib/types/synchronizers/synchronizer-ws-server.d.ts +57 -0
- package/lib/types/synchronizers.d.ts +132 -0
- package/lib/types/tinybase.d.ts +10 -8
- package/lib/types/tools.d.ts +4 -4
- package/lib/types/ui-react.d.ts +160 -9
- 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/internal/store.d.ts +4 -0
- package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
- package/lib/types/with-schemas/metrics.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
- package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
- package/lib/types/with-schemas/persisters.d.ts +193 -121
- 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 +483 -345
- package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +57 -0
- package/lib/types/with-schemas/synchronizers.d.ts +146 -0
- package/lib/types/with-schemas/tinybase.d.ts +9 -8
- package/lib/types/with-schemas/tools.d.ts +4 -4
- package/lib/types/with-schemas/ui-react.d.ts +177 -9
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/mergeable-store.js +1 -0
- package/lib/umd/mergeable-store.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-libsql.js +1 -0
- package/lib/umd/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-server.js +1 -1
- package/lib/umd/persisters/persister-partykit-server.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/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/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-dom.js +1 -1
- package/lib/umd/ui-react-dom.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/mergeable-store.js +1 -0
- package/lib/umd-es6/mergeable-store.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-libsql.js +1 -0
- package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-server.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/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/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-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.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 +65 -45
- package/readme.md +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
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 {Synchronizer} from '../synchronizers';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The LocalSynchronizer interface
|
|
16
|
+
* @category Synchronizer
|
|
17
|
+
*/
|
|
18
|
+
export interface LocalSynchronizer extends Synchronizer {}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The createLocalSynchronizer function
|
|
22
|
+
* @category Creation
|
|
23
|
+
*/
|
|
24
|
+
export function createLocalSynchronizer(
|
|
25
|
+
store: MergeableStore,
|
|
26
|
+
onIgnoredError?: (error: any) => void,
|
|
27
|
+
): LocalSynchronizer;
|
|
@@ -0,0 +1,35 @@
|
|
|
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 {Synchronizer} from '../synchronizers';
|
|
13
|
+
import {WebSocket as WsWebSocket} from 'ws';
|
|
14
|
+
|
|
15
|
+
export type WebSocketTypes = WebSocket | WsWebSocket;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The WsSynchronizer interface
|
|
19
|
+
* @category Synchronizer
|
|
20
|
+
*/
|
|
21
|
+
export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
|
|
22
|
+
extends Synchronizer {
|
|
23
|
+
getWebSocket(): WebSocketType;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The createWsSynchronizer function
|
|
28
|
+
* @category Creation
|
|
29
|
+
*/
|
|
30
|
+
export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
|
|
31
|
+
store: MergeableStore,
|
|
32
|
+
webSocket: WebSocketType,
|
|
33
|
+
requestTimeoutSeconds?: number,
|
|
34
|
+
onIgnoredError?: (error: any) => void,
|
|
35
|
+
): Promise<WsSynchronizer<WebSocketType>>;
|
|
@@ -0,0 +1,57 @@
|
|
|
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 {Id, IdOrNull, Ids} from '../common';
|
|
11
|
+
import {GetIdChanges} from '../store';
|
|
12
|
+
import {WebSocketServer} from 'ws';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The PathIdsListener type
|
|
16
|
+
*/
|
|
17
|
+
export type PathIdsListener<> = (
|
|
18
|
+
wsServer: WsServer,
|
|
19
|
+
getIdChanges: GetIdChanges,
|
|
20
|
+
) => void;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The ClientIdsListener type
|
|
24
|
+
*/
|
|
25
|
+
export type ClientIdsListener<> = (
|
|
26
|
+
wsServer: WsServer,
|
|
27
|
+
pathId: Id,
|
|
28
|
+
getIdChanges: GetIdChanges,
|
|
29
|
+
) => void;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The WsServerStats type
|
|
33
|
+
*/
|
|
34
|
+
export type WsServerStats = {
|
|
35
|
+
paths?: number;
|
|
36
|
+
clients?: number;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The WsServer interface
|
|
41
|
+
*/
|
|
42
|
+
export interface WsServer {
|
|
43
|
+
getWebSocketServer: () => WebSocketServer;
|
|
44
|
+
getPathIds: () => Ids;
|
|
45
|
+
getClientIds: (pathId: Id) => Ids;
|
|
46
|
+
addPathIdsListener: (listener: PathIdsListener) => Id;
|
|
47
|
+
addClientIdsListener: (pathId: IdOrNull, listener: ClientIdsListener) => Id;
|
|
48
|
+
delListener(listenerId: Id): WsServer;
|
|
49
|
+
getStats: () => WsServerStats;
|
|
50
|
+
destroy: () => void;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The createWsServer function
|
|
55
|
+
* @category Creation
|
|
56
|
+
*/
|
|
57
|
+
export function createWsServer(WebSocketServer: WebSocketServer): WsServer;
|
|
@@ -0,0 +1,132 @@
|
|
|
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 {Content} from './store';
|
|
12
|
+
import {MergeableStore} from './mergeable-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: IdOrNull,
|
|
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: IdOrNull,
|
|
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 extends Persister<2> {
|
|
64
|
+
/**
|
|
65
|
+
* The startSync method
|
|
66
|
+
* @category Synchronization
|
|
67
|
+
*/
|
|
68
|
+
startSync(initialContent?: Content): Promise<this>;
|
|
69
|
+
/**
|
|
70
|
+
* The stopSync method
|
|
71
|
+
* @category Synchronization
|
|
72
|
+
*/
|
|
73
|
+
stopSync(): this;
|
|
74
|
+
/**
|
|
75
|
+
* The getSynchronizerStats method
|
|
76
|
+
* @category Synchronization
|
|
77
|
+
*/
|
|
78
|
+
getSynchronizerStats(): SynchronizerStats;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The createCustomSynchronizer function creates a Synchronizer object that can
|
|
83
|
+
* persist one MergeableStore to another.
|
|
84
|
+
*
|
|
85
|
+
* As well as providing a reference to the MergeableStore to synchronize, you
|
|
86
|
+
* must provide a `client` parameter which identifies the Client that is used to
|
|
87
|
+
* transmit changes to and from this MergeableStore and its peers.
|
|
88
|
+
* @param store The MergeableStore to synchronize.
|
|
89
|
+
* @param client The reference of the Client.
|
|
90
|
+
* @param requestTimeoutSeconds An optional number of seconds before a request
|
|
91
|
+
* to the Client times out, defaulting to 5.
|
|
92
|
+
* @param onIgnoredError An optional handler for the errors that the
|
|
93
|
+
* Synchronizer would otherwise ignore when trying to save or load data. This is
|
|
94
|
+
* suitable for debugging synchronization issues in a development environment.
|
|
95
|
+
* @returns A reference to the new Synchronizer object.
|
|
96
|
+
* @example
|
|
97
|
+
* This example creates a Synchronizer object and synchronizes one
|
|
98
|
+
* MergeableStore to another.
|
|
99
|
+
*
|
|
100
|
+
* ```js
|
|
101
|
+
* const store1 = createMergeableStore('store1').setTables({
|
|
102
|
+
* pets: {fido: {species: 'dog'}},
|
|
103
|
+
* });
|
|
104
|
+
* const synchronizer1 = createLocalSynchronizer(store1);
|
|
105
|
+
*
|
|
106
|
+
* const store2 = createMergeableStore('store2');
|
|
107
|
+
* const synchronizer2 = createLocalSynchronizer(store2);
|
|
108
|
+
* await synchronizer2.startSync();
|
|
109
|
+
*
|
|
110
|
+
* await synchronizer1.save();
|
|
111
|
+
* // ...
|
|
112
|
+
* // Store2 will be synced with Store1.
|
|
113
|
+
*
|
|
114
|
+
* console.log(store2.getTables());
|
|
115
|
+
* // -> {pets: {fido: {species: 'dog'}}}
|
|
116
|
+
*
|
|
117
|
+
* await synchronizer1.load();
|
|
118
|
+
* // Store1 will be synced with Store2.
|
|
119
|
+
*
|
|
120
|
+
* synchronizer1.destroy();
|
|
121
|
+
* synchronizer2.destroy();
|
|
122
|
+
* ```
|
|
123
|
+
* @category Creation
|
|
124
|
+
*/
|
|
125
|
+
export function createCustomSynchronizer(
|
|
126
|
+
store: MergeableStore,
|
|
127
|
+
send: Send,
|
|
128
|
+
onReceive: (receive: Receive) => void,
|
|
129
|
+
destroy: () => void,
|
|
130
|
+
requestTimeoutSeconds: number,
|
|
131
|
+
onIgnoredError?: (error: any) => void,
|
|
132
|
+
): Synchronizer;
|
package/lib/types/tinybase.d.ts
CHANGED
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
* @packageDocumentation
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export * from './checkpoints.d';
|
|
7
|
-
export * from './common.d';
|
|
8
|
-
export * from './indexes.d';
|
|
9
|
-
export * from './metrics.d';
|
|
10
|
-
export * from './persisters.d';
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
6
|
+
export * from './checkpoints.d.ts';
|
|
7
|
+
export * from './common.d.ts';
|
|
8
|
+
export * from './indexes.d.ts';
|
|
9
|
+
export * from './metrics.d.ts';
|
|
10
|
+
export * from './persisters.d.ts';
|
|
11
|
+
export * from './synchronizers.d.ts';
|
|
12
|
+
export * from './queries.d.ts';
|
|
13
|
+
export * from './relationships.d.ts';
|
|
14
|
+
export * from './mergeable-store.d.ts';
|
|
15
|
+
export * from './store.d.ts';
|
package/lib/types/tools.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* @since v2.2.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import {Store, TablesSchema, ValuesSchema} from './store.d';
|
|
13
|
-
import {Id} from './common.d';
|
|
12
|
+
import {Store, TablesSchema, ValuesSchema} from './store.d.ts';
|
|
13
|
+
import {Id} from './common.d.ts';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* The StoreStats type describes a set of statistics about the Store, and
|
|
@@ -417,7 +417,7 @@ export interface Tools {
|
|
|
417
417
|
* await createTools(store).getPrettyStoreApi('shop');
|
|
418
418
|
*
|
|
419
419
|
* const dTsLines = dTs.split('\n');
|
|
420
|
-
* console.log(dTsLines[
|
|
420
|
+
* console.log(dTsLines[15]);
|
|
421
421
|
* // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
|
|
422
422
|
*
|
|
423
423
|
* const tsLines = ts.split('\n');
|
|
@@ -437,7 +437,7 @@ export interface Tools {
|
|
|
437
437
|
* await createTools(store).getPrettyStoreApi('shop');
|
|
438
438
|
*
|
|
439
439
|
* const dTsLines = dTs.split('\n');
|
|
440
|
-
* console.log(dTsLines[
|
|
440
|
+
* console.log(dTsLines[15]);
|
|
441
441
|
* // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
|
|
442
442
|
*
|
|
443
443
|
* const tsLines = ts.split('\n');
|
package/lib/types/ui-react.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @module ui-react
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
import {Callback, Id, IdOrNull, Ids, ParameterizedCallback} from './common.d';
|
|
25
|
+
import {Callback, Id, IdOrNull, Ids, ParameterizedCallback} from './common.d.ts';
|
|
26
26
|
import {
|
|
27
27
|
Cell,
|
|
28
28
|
CellIdsListener,
|
|
@@ -56,22 +56,22 @@ import {
|
|
|
56
56
|
ValueOrUndefined,
|
|
57
57
|
Values,
|
|
58
58
|
ValuesListener,
|
|
59
|
-
} from './store.d';
|
|
59
|
+
} from './store.d.ts';
|
|
60
60
|
import {
|
|
61
61
|
CheckpointIds,
|
|
62
62
|
CheckpointIdsListener,
|
|
63
63
|
CheckpointListener,
|
|
64
64
|
Checkpoints,
|
|
65
|
-
} from './checkpoints.d';
|
|
65
|
+
} from './checkpoints.d.ts';
|
|
66
66
|
import {ComponentType, ReactElement} from 'react';
|
|
67
|
-
import {Indexes, SliceIdsListener, SliceRowIdsListener} from './indexes.d';
|
|
67
|
+
import {Indexes, SliceIdsListener, SliceRowIdsListener} from './indexes.d.ts';
|
|
68
68
|
import {
|
|
69
69
|
LinkedRowIdsListener,
|
|
70
70
|
LocalRowIdsListener,
|
|
71
71
|
Relationships,
|
|
72
72
|
RemoteRowIdListener,
|
|
73
|
-
} from './relationships.d';
|
|
74
|
-
import {MetricListener, Metrics} from './metrics.d';
|
|
73
|
+
} from './relationships.d.ts';
|
|
74
|
+
import {MetricListener, Metrics} from './metrics.d.ts';
|
|
75
75
|
import {
|
|
76
76
|
Queries,
|
|
77
77
|
ResultCellIdsListener,
|
|
@@ -82,8 +82,10 @@ import {
|
|
|
82
82
|
ResultSortedRowIdsListener,
|
|
83
83
|
ResultTableCellIdsListener,
|
|
84
84
|
ResultTableListener,
|
|
85
|
-
} from './queries.d';
|
|
86
|
-
import {
|
|
85
|
+
} from './queries.d.ts';
|
|
86
|
+
import {MergeableStore} from './mergeable-store';
|
|
87
|
+
import {Persister} from './persisters.d.ts';
|
|
88
|
+
import {Synchronizer} from './synchronizers';
|
|
87
89
|
|
|
88
90
|
/**
|
|
89
91
|
* The StoreOrStoreId type is used when you need to refer to a Store in a React
|
|
@@ -212,6 +214,7 @@ export type UndoOrRedoInformation = [boolean, Callback, Id | undefined, string];
|
|
|
212
214
|
* useSetTableCallback hook or useSetRowCallback hook - so that the Id arguments
|
|
213
215
|
* of the object to set can also be dependent on the event or parameter
|
|
214
216
|
* provided (as well as the object itself being set).
|
|
217
|
+
* @category Identity
|
|
215
218
|
*/
|
|
216
219
|
export type GetId<Parameter> = (parameter: Parameter, store: Store) => Id;
|
|
217
220
|
|
|
@@ -300,6 +303,14 @@ export function useCreateStore(
|
|
|
300
303
|
createDeps?: React.DependencyList,
|
|
301
304
|
): Store;
|
|
302
305
|
|
|
306
|
+
/**
|
|
307
|
+
* The useCreateMergeableStore hook
|
|
308
|
+
*/
|
|
309
|
+
export function useCreateMergeableStore(
|
|
310
|
+
create: () => MergeableStore,
|
|
311
|
+
createDeps?: React.DependencyList,
|
|
312
|
+
): MergeableStore;
|
|
313
|
+
|
|
303
314
|
/**
|
|
304
315
|
* The useStoreIds hook is used to retrieve the Ids of all the named Store
|
|
305
316
|
* objects present in the current Provider component context.
|
|
@@ -10196,8 +10207,8 @@ export function useCheckpointListener(
|
|
|
10196
10207
|
* // -> '<span>{\"pets\":{\"fido\":{\"species\":\"dog\"}}}</span>'
|
|
10197
10208
|
*
|
|
10198
10209
|
* root.render(<App sessionKey="cujoStore" />); // !act
|
|
10199
|
-
* // -> 'Persister destroyed for session key fidoStore'
|
|
10200
10210
|
* // -> 'Persister created for session key cujoStore'
|
|
10211
|
+
* // -> 'Persister destroyed for session key fidoStore'
|
|
10201
10212
|
*
|
|
10202
10213
|
* // ... // !act
|
|
10203
10214
|
* console.log(app.innerHTML);
|
|
@@ -10220,6 +10231,146 @@ export function useCreatePersister<
|
|
|
10220
10231
|
destroyDeps?: React.DependencyList,
|
|
10221
10232
|
): PersisterOrUndefined;
|
|
10222
10233
|
|
|
10234
|
+
/**
|
|
10235
|
+
* The useCreateSynchronizer hook is used to create a Synchronizer within a
|
|
10236
|
+
* React application along with convenient memoization and callbacks.
|
|
10237
|
+
*
|
|
10238
|
+
* It is possible to create a Synchronizer outside of the React app with the
|
|
10239
|
+
* regular createSynchronizer function and pass it in, but you may prefer to
|
|
10240
|
+
* create it within the app, perhaps inside the top-level component. To prevent
|
|
10241
|
+
* a new Synchronizer being created every time the app renders or re-renders,
|
|
10242
|
+
* the useCreateMetrics hook performs the creation in an effect.
|
|
10243
|
+
*
|
|
10244
|
+
* If your asynchronous `create` function (the second parameter to the hook)
|
|
10245
|
+
* contains dependencies, the changing of which should cause the Synchronizer to
|
|
10246
|
+
* be recreated, you can provide them in an array in the third parameter, just
|
|
10247
|
+
* as you would for any React hook with dependencies. The MergeableStore passed
|
|
10248
|
+
* in as the first parameter of this hook is used as a dependency by default.
|
|
10249
|
+
*
|
|
10250
|
+
* A second callback, called `then`, can be provided as the fourth parameter.
|
|
10251
|
+
* This is called after the creation, and can also be asynchronous, so that you
|
|
10252
|
+
* can configure the Synchronizer with the startSync method, for example. If
|
|
10253
|
+
* this callback contains dependencies, the changing of which should cause the
|
|
10254
|
+
* Synchronizer to be reconfigured, you can provide them in an array in the
|
|
10255
|
+
* fifth parameter. The Synchronizer itself is used as a dependency by default.
|
|
10256
|
+
*
|
|
10257
|
+
* The `create` function can return undefined, meaning that you can enable or
|
|
10258
|
+
* disable synchronization conditionally within this hook. This is useful for
|
|
10259
|
+
* applications which might turn on or off their cloud synchronization or
|
|
10260
|
+
* collaboration features.
|
|
10261
|
+
*
|
|
10262
|
+
* This hook ensures the Synchronizer object is destroyed whenever a new one is
|
|
10263
|
+
* created or the component is unmounted.
|
|
10264
|
+
* @param store A reference to the MergeableStore for which to create a new
|
|
10265
|
+
* Synchronizer object.
|
|
10266
|
+
* @param create An asynchronous function for performing the creation steps of
|
|
10267
|
+
* the Synchronizer object for the Store.
|
|
10268
|
+
* @param createDeps An optional array of dependencies for the `create`
|
|
10269
|
+
* function, which, if any change, result in its rerun. This parameter defaults
|
|
10270
|
+
* to an empty array.
|
|
10271
|
+
* @param then An optional callback for performing asynchronous post-creation
|
|
10272
|
+
* steps on the Synchronizer, such as starting automatic synchronization.
|
|
10273
|
+
* @param thenDeps An optional array of dependencies for the `then` callback,
|
|
10274
|
+
* which, if any change, result in its rerun. This parameter defaults to an
|
|
10275
|
+
* empty array.
|
|
10276
|
+
* @param destroy An optional callback whenever the Synchronizer is destroyed
|
|
10277
|
+
* due to a change in the `createDeps` dependencies.
|
|
10278
|
+
* @param destroyDeps An optional array of dependencies for the `destroy`
|
|
10279
|
+
* callback, which, if any change, result in `destroy` and `then` being rerun.
|
|
10280
|
+
* This parameter defaults to an empty array.
|
|
10281
|
+
* @returns A reference to the Synchronizer.
|
|
10282
|
+
* @example
|
|
10283
|
+
* This example creates a Synchronizer at the top level of a React application.
|
|
10284
|
+
* Even though the App component is rendered twice, the Synchronizer creation
|
|
10285
|
+
* only occurs once by default.
|
|
10286
|
+
*
|
|
10287
|
+
* ```jsx
|
|
10288
|
+
* const App = () => {
|
|
10289
|
+
* const store = useCreateMergeableStore(() => createMergeableStore('s1'));
|
|
10290
|
+
* const synchronizer = useCreateSynchronizer(store, async (store) => {
|
|
10291
|
+
* console.log('Synchronizer created');
|
|
10292
|
+
* return await createLocalSynchronizer(store, 'pets');
|
|
10293
|
+
* });
|
|
10294
|
+
* return <span>{JSON.stringify(useTables(store))}</span>;
|
|
10295
|
+
* };
|
|
10296
|
+
*
|
|
10297
|
+
* const app = document.createElement('div');
|
|
10298
|
+
* const root = ReactDOMClient.createRoot(app);
|
|
10299
|
+
* root.render(<App />); // !act
|
|
10300
|
+
* // -> 'Synchronizer created'
|
|
10301
|
+
*
|
|
10302
|
+
* // ... // !act
|
|
10303
|
+
* root.render(<App />); // !act
|
|
10304
|
+
* // No second Synchronizer creation
|
|
10305
|
+
*
|
|
10306
|
+
* root.unmount(); // !act
|
|
10307
|
+
* ```
|
|
10308
|
+
* @example
|
|
10309
|
+
* This example creates a Synchronizer at the top level of a React application.
|
|
10310
|
+
* The App component is rendered twice, each with a different top-level prop.
|
|
10311
|
+
* The useCreateSynchronizer hook takes the `url` prop as a dependency, and so
|
|
10312
|
+
* the Synchronizer object is created again on the second render. The first is
|
|
10313
|
+
* destroyed and the `destroy` parameter is called for it. A `then` parameter
|
|
10314
|
+
* is provided to start both Synchronizers' synchronization.
|
|
10315
|
+
*
|
|
10316
|
+
* ```jsx
|
|
10317
|
+
* const server1 = createWsServer(new ws.WebSocketServer({port: 8044}));
|
|
10318
|
+
* const server2 = createWsServer(new ws.WebSocketServer({port: 8045}));
|
|
10319
|
+
*
|
|
10320
|
+
* const App = ({url}) => {
|
|
10321
|
+
* const store = useCreateMergeableStore(() => createMergeableStore('s1'));
|
|
10322
|
+
* const synchronizer = useCreateSynchronizer(
|
|
10323
|
+
* store,
|
|
10324
|
+
* async (store) => {
|
|
10325
|
+
* const webSocket = new WebSocket(url);
|
|
10326
|
+
* console.log(`Synchronizer created for ${webSocket.url}`);
|
|
10327
|
+
* return await createWsSynchronizer(store, webSocket);
|
|
10328
|
+
* },
|
|
10329
|
+
* [url],
|
|
10330
|
+
* async (synchronizer) => {
|
|
10331
|
+
* await synchronizer.startSync();
|
|
10332
|
+
* },
|
|
10333
|
+
* [],
|
|
10334
|
+
* (synchronizer) => {
|
|
10335
|
+
* const webSocket = synchronizer.getWebSocket();
|
|
10336
|
+
* console.log(`Synchronizer destroyed for ${webSocket.url}`);
|
|
10337
|
+
* },
|
|
10338
|
+
* );
|
|
10339
|
+
* return <span>{JSON.stringify(useTables(store))}</span>;
|
|
10340
|
+
* };
|
|
10341
|
+
*
|
|
10342
|
+
* const app = document.createElement('div');
|
|
10343
|
+
* const root = ReactDOMClient.createRoot(app);
|
|
10344
|
+
* root.render(<App url="ws://localhost:8044/" />); // !act
|
|
10345
|
+
* // ... // !act
|
|
10346
|
+
* // -> 'Synchronizer created for ws://localhost:8044/'
|
|
10347
|
+
*
|
|
10348
|
+
* root.render(<App url="ws://localhost:8045/" />); // !act
|
|
10349
|
+
* // ... // !act
|
|
10350
|
+
* // -> 'Synchronizer created for ws://localhost:8045/'
|
|
10351
|
+
* // -> 'Synchronizer destroyed for ws://localhost:8044/'
|
|
10352
|
+
*
|
|
10353
|
+
* root.unmount(); // !act
|
|
10354
|
+
* // -> 'Synchronizer destroyed for ws://localhost:8045/'
|
|
10355
|
+
*
|
|
10356
|
+
* server1.destroy();
|
|
10357
|
+
* server2.destroy();
|
|
10358
|
+
* ```
|
|
10359
|
+
* @category Synchronizer hooks
|
|
10360
|
+
* @since v5.0.0
|
|
10361
|
+
*/
|
|
10362
|
+
export function useCreateSynchronizer<
|
|
10363
|
+
SynchronizerOrUndefined extends Synchronizer | undefined,
|
|
10364
|
+
>(
|
|
10365
|
+
store: MergeableStore,
|
|
10366
|
+
create: (store: MergeableStore) => Promise<SynchronizerOrUndefined>,
|
|
10367
|
+
createDeps?: React.DependencyList,
|
|
10368
|
+
then?: (synchronizer: Synchronizer) => Promise<void>,
|
|
10369
|
+
thenDeps?: React.DependencyList,
|
|
10370
|
+
destroy?: (synchronizer: Synchronizer) => void,
|
|
10371
|
+
destroyDeps?: React.DependencyList,
|
|
10372
|
+
): SynchronizerOrUndefined;
|
|
10373
|
+
|
|
10223
10374
|
/**
|
|
10224
10375
|
* The ExtraProps type represents a set of arbitrary additional props.
|
|
10225
10376
|
* @category Props
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* @module checkpoints
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import {Id, IdOrNull, Ids} from './common.d';
|
|
14
|
-
import {OptionalSchemas, Store} from './store.d';
|
|
13
|
+
import {Id, IdOrNull, Ids} from './common.d.ts';
|
|
14
|
+
import {OptionalSchemas, Store} from './store.d.ts';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* The CheckpointIds type is a representation of the list of checkpoint Ids
|
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
OptionalTablesSchema,
|
|
18
18
|
RowCallback,
|
|
19
19
|
Store,
|
|
20
|
-
} from './store.d';
|
|
21
|
-
import {Id, IdOrNull, Ids, SortKey} from './common.d';
|
|
20
|
+
} from './store.d.ts';
|
|
21
|
+
import {Id, IdOrNull, Ids, SortKey} from './common.d.ts';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* The Index type represents the concept of a map of Slice objects, keyed by Id.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Cell,
|
|
3
|
+
OptionalSchemas,
|
|
3
4
|
OptionalTablesSchema,
|
|
4
5
|
OptionalValuesSchema,
|
|
6
|
+
Store,
|
|
5
7
|
Value,
|
|
6
8
|
} from '../store';
|
|
7
9
|
import {Id} from '../common';
|
|
@@ -100,3 +102,5 @@ export type Truncate<Params> = Params extends [...infer ShorterParams, any]
|
|
|
100
102
|
: never;
|
|
101
103
|
|
|
102
104
|
export type NoInfer<Type> = [Type][Type extends any ? 0 : never];
|
|
105
|
+
|
|
106
|
+
export type StoreAlias<Schemas extends OptionalSchemas> = Store<Schemas>;
|