tinybase 5.0.4 → 5.1.0-beta.1
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/@types/persisters/index.d.cts +3 -1
- package/@types/persisters/index.d.ts +3 -1
- package/@types/persisters/with-schemas/index.d.cts +3 -1
- package/@types/persisters/with-schemas/index.d.ts +3 -1
- package/@types/synchronizers/index.d.cts +39 -23
- package/@types/synchronizers/index.d.ts +39 -23
- package/@types/synchronizers/synchronizer-broadcast-channel/index.d.cts +12 -1
- package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +12 -1
- package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.cts +14 -1
- package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +14 -1
- package/@types/synchronizers/synchronizer-local/index.d.cts +12 -3
- package/@types/synchronizers/synchronizer-local/index.d.ts +12 -3
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +14 -3
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +14 -3
- package/@types/synchronizers/synchronizer-ws-client/index.d.cts +13 -1
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +13 -1
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.cts +15 -1
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +15 -1
- package/@types/synchronizers/synchronizer-ws-server/index.d.cts +125 -2
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +125 -2
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +147 -3
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +147 -3
- package/@types/synchronizers/with-schemas/index.d.cts +41 -23
- package/@types/synchronizers/with-schemas/index.d.ts +41 -23
- package/cjs/es6/index.cjs +101 -86
- package/cjs/es6/min/index.cjs +1 -1
- package/cjs/es6/min/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/index.cjs +1 -1
- package/cjs/es6/min/persisters/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-browser/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-browser/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-file/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-file/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-indexed-db/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-partykit-client/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-remote/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-remote/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-yjs/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-yjs/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/ui-react-inspector/index.cjs +1 -1
- package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
- package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/persisters/index.cjs +30 -21
- package/cjs/es6/persisters/persister-automerge/index.cjs +29 -24
- package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-browser/index.cjs +35 -30
- package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +35 -30
- package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +29 -24
- package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-electric-sql/index.cjs +29 -24
- package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +29 -24
- package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-file/index.cjs +41 -31
- package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +41 -31
- package/cjs/es6/persisters/persister-indexed-db/index.cjs +29 -24
- package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-libsql/index.cjs +286 -281
- package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +286 -281
- package/cjs/es6/persisters/persister-partykit-client/index.cjs +29 -24
- package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-powersync/index.cjs +29 -24
- package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-remote/index.cjs +35 -30
- package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +35 -30
- package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +29 -24
- package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-sqlite3/index.cjs +29 -24
- package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/persister-yjs/index.cjs +29 -24
- package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +29 -24
- package/cjs/es6/persisters/with-schemas/index.cjs +30 -21
- package/cjs/es6/synchronizers/index.cjs +113 -102
- package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +109 -104
- package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +109 -104
- package/cjs/es6/synchronizers/synchronizer-local/index.cjs +108 -105
- package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +108 -105
- package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +130 -119
- package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +130 -119
- package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +691 -35
- package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +691 -35
- package/cjs/es6/synchronizers/with-schemas/index.cjs +113 -102
- package/cjs/es6/ui-react-inspector/index.cjs +26 -24
- package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +26 -24
- package/cjs/es6/with-schemas/index.cjs +101 -86
- package/cjs/index.cjs +105 -91
- package/cjs/indexes/index.cjs +1 -1
- package/cjs/indexes/with-schemas/index.cjs +1 -1
- package/cjs/metrics/index.cjs +3 -3
- package/cjs/metrics/with-schemas/index.cjs +3 -3
- package/cjs/min/index.cjs +1 -1
- package/cjs/min/index.cjs.gz +0 -0
- package/cjs/min/persisters/index.cjs +1 -1
- package/cjs/min/persisters/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-automerge/index.cjs +1 -1
- package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-browser/index.cjs +1 -1
- package/cjs/min/persisters/persister-browser/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-browser/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
- package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
- package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
- package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-file/index.cjs +1 -1
- package/cjs/min/persisters/persister-file/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-file/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-indexed-db/index.cjs +1 -1
- package/cjs/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
- package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-partykit-client/index.cjs +1 -1
- package/cjs/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
- package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-remote/index.cjs +1 -1
- package/cjs/min/persisters/persister-remote/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-remote/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-yjs/index.cjs +1 -1
- package/cjs/min/persisters/persister-yjs/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/index.cjs +1 -1
- package/cjs/min/synchronizers/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-local/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/ui-react-inspector/index.cjs +1 -1
- package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
- package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -1
- package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/with-schemas/index.cjs +1 -1
- package/cjs/min/with-schemas/index.cjs.gz +0 -0
- package/cjs/persisters/index.cjs +28 -19
- package/cjs/persisters/persister-automerge/index.cjs +27 -22
- package/cjs/persisters/persister-automerge/with-schemas/index.cjs +27 -22
- package/cjs/persisters/persister-browser/index.cjs +33 -28
- package/cjs/persisters/persister-browser/with-schemas/index.cjs +33 -28
- package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +28 -23
- package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +28 -23
- package/cjs/persisters/persister-electric-sql/index.cjs +28 -23
- package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +28 -23
- package/cjs/persisters/persister-expo-sqlite/index.cjs +28 -23
- package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +28 -23
- package/cjs/persisters/persister-file/index.cjs +39 -29
- package/cjs/persisters/persister-file/with-schemas/index.cjs +39 -29
- package/cjs/persisters/persister-indexed-db/index.cjs +27 -22
- package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +27 -22
- package/cjs/persisters/persister-libsql/index.cjs +194 -189
- package/cjs/persisters/persister-libsql/with-schemas/index.cjs +194 -189
- package/cjs/persisters/persister-partykit-client/index.cjs +27 -22
- package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +27 -22
- package/cjs/persisters/persister-powersync/index.cjs +28 -23
- package/cjs/persisters/persister-powersync/with-schemas/index.cjs +28 -23
- package/cjs/persisters/persister-remote/index.cjs +33 -28
- package/cjs/persisters/persister-remote/with-schemas/index.cjs +33 -28
- package/cjs/persisters/persister-sqlite-wasm/index.cjs +28 -23
- package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +28 -23
- package/cjs/persisters/persister-sqlite3/index.cjs +28 -23
- package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +28 -23
- package/cjs/persisters/persister-yjs/index.cjs +29 -24
- package/cjs/persisters/persister-yjs/with-schemas/index.cjs +29 -24
- package/cjs/persisters/with-schemas/index.cjs +28 -19
- package/cjs/queries/index.cjs +2 -2
- package/cjs/queries/with-schemas/index.cjs +2 -2
- package/cjs/relationships/index.cjs +1 -1
- package/cjs/relationships/with-schemas/index.cjs +1 -1
- package/cjs/synchronizers/index.cjs +105 -95
- package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +101 -97
- package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +101 -97
- package/cjs/synchronizers/synchronizer-local/index.cjs +100 -98
- package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +100 -98
- package/cjs/synchronizers/synchronizer-ws-client/index.cjs +119 -112
- package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +119 -112
- package/cjs/synchronizers/synchronizer-ws-server/index.cjs +520 -20
- package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +520 -20
- package/cjs/synchronizers/with-schemas/index.cjs +105 -95
- package/cjs/ui-react-inspector/index.cjs +24 -22
- package/cjs/ui-react-inspector/with-schemas/index.cjs +24 -22
- package/cjs/with-schemas/index.cjs +105 -91
- package/es6/index.js +101 -86
- package/es6/min/index.js +1 -1
- package/es6/min/index.js.gz +0 -0
- package/es6/min/persisters/index.js +1 -1
- package/es6/min/persisters/index.js.gz +0 -0
- package/es6/min/persisters/persister-automerge/index.js +1 -1
- package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
- package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-browser/index.js +1 -1
- package/es6/min/persisters/persister-browser/index.js.gz +0 -0
- package/es6/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-electric-sql/index.js +1 -1
- package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-file/index.js +1 -1
- package/es6/min/persisters/persister-file/index.js.gz +0 -0
- package/es6/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-indexed-db/index.js +1 -1
- package/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-libsql/index.js +1 -1
- package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
- package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-partykit-client/index.js +1 -1
- package/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-powersync/index.js +1 -1
- package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
- package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-remote/index.js +1 -1
- package/es6/min/persisters/persister-remote/index.js.gz +0 -0
- package/es6/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite3/index.js +1 -1
- package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-yjs/index.js +1 -1
- package/es6/min/persisters/persister-yjs/index.js.gz +0 -0
- package/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/with-schemas/index.js +1 -1
- package/es6/min/persisters/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/index.js +1 -1
- package/es6/min/synchronizers/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-local/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/es6/min/ui-react-inspector/index.js +1 -1
- package/es6/min/ui-react-inspector/index.js.gz +0 -0
- package/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/es6/min/with-schemas/index.js +1 -1
- package/es6/min/with-schemas/index.js.gz +0 -0
- package/es6/persisters/index.js +30 -21
- package/es6/persisters/persister-automerge/index.js +29 -24
- package/es6/persisters/persister-automerge/with-schemas/index.js +29 -24
- package/es6/persisters/persister-browser/index.js +35 -30
- package/es6/persisters/persister-browser/with-schemas/index.js +35 -30
- package/es6/persisters/persister-cr-sqlite-wasm/index.js +29 -24
- package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -24
- package/es6/persisters/persister-electric-sql/index.js +29 -24
- package/es6/persisters/persister-electric-sql/with-schemas/index.js +29 -24
- package/es6/persisters/persister-expo-sqlite/index.js +29 -24
- package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +29 -24
- package/es6/persisters/persister-file/index.js +42 -31
- package/es6/persisters/persister-file/with-schemas/index.js +42 -31
- package/es6/persisters/persister-indexed-db/index.js +29 -24
- package/es6/persisters/persister-indexed-db/with-schemas/index.js +29 -24
- package/es6/persisters/persister-libsql/index.js +286 -281
- package/es6/persisters/persister-libsql/with-schemas/index.js +286 -281
- package/es6/persisters/persister-partykit-client/index.js +29 -24
- package/es6/persisters/persister-partykit-client/with-schemas/index.js +29 -24
- package/es6/persisters/persister-powersync/index.js +29 -24
- package/es6/persisters/persister-powersync/with-schemas/index.js +29 -24
- package/es6/persisters/persister-remote/index.js +35 -30
- package/es6/persisters/persister-remote/with-schemas/index.js +35 -30
- package/es6/persisters/persister-sqlite-wasm/index.js +29 -24
- package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -24
- package/es6/persisters/persister-sqlite3/index.js +29 -24
- package/es6/persisters/persister-sqlite3/with-schemas/index.js +29 -24
- package/es6/persisters/persister-yjs/index.js +29 -24
- package/es6/persisters/persister-yjs/with-schemas/index.js +29 -24
- package/es6/persisters/with-schemas/index.js +30 -21
- package/es6/synchronizers/index.js +113 -102
- package/es6/synchronizers/synchronizer-broadcast-channel/index.js +109 -104
- package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +109 -104
- package/es6/synchronizers/synchronizer-local/index.js +108 -105
- package/es6/synchronizers/synchronizer-local/with-schemas/index.js +108 -105
- package/es6/synchronizers/synchronizer-ws-client/index.js +130 -119
- package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +130 -119
- package/es6/synchronizers/synchronizer-ws-server/index.js +691 -35
- package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +691 -35
- package/es6/synchronizers/with-schemas/index.js +113 -102
- package/es6/ui-react-inspector/index.js +26 -24
- package/es6/ui-react-inspector/with-schemas/index.js +26 -24
- package/es6/with-schemas/index.js +101 -86
- package/index.js +105 -91
- package/indexes/index.js +1 -1
- package/indexes/with-schemas/index.js +1 -1
- package/metrics/index.js +3 -3
- package/metrics/with-schemas/index.js +3 -3
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +1 -1
- package/persisters/index.js +28 -19
- package/persisters/persister-automerge/index.js +27 -22
- package/persisters/persister-automerge/with-schemas/index.js +27 -22
- package/persisters/persister-browser/index.js +33 -28
- package/persisters/persister-browser/with-schemas/index.js +33 -28
- package/persisters/persister-cr-sqlite-wasm/index.js +28 -23
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +28 -23
- package/persisters/persister-electric-sql/index.js +28 -23
- package/persisters/persister-electric-sql/with-schemas/index.js +28 -23
- package/persisters/persister-expo-sqlite/index.js +28 -23
- package/persisters/persister-expo-sqlite/with-schemas/index.js +28 -23
- package/persisters/persister-file/index.js +40 -29
- package/persisters/persister-file/with-schemas/index.js +40 -29
- package/persisters/persister-indexed-db/index.js +27 -22
- package/persisters/persister-indexed-db/with-schemas/index.js +27 -22
- package/persisters/persister-libsql/index.js +194 -189
- package/persisters/persister-libsql/with-schemas/index.js +194 -189
- package/persisters/persister-partykit-client/index.js +27 -22
- package/persisters/persister-partykit-client/with-schemas/index.js +27 -22
- package/persisters/persister-powersync/index.js +28 -23
- package/persisters/persister-powersync/with-schemas/index.js +28 -23
- package/persisters/persister-remote/index.js +33 -28
- package/persisters/persister-remote/with-schemas/index.js +33 -28
- package/persisters/persister-sqlite-wasm/index.js +28 -23
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +28 -23
- package/persisters/persister-sqlite3/index.js +28 -23
- package/persisters/persister-sqlite3/with-schemas/index.js +28 -23
- package/persisters/persister-yjs/index.js +29 -23
- package/persisters/persister-yjs/with-schemas/index.js +29 -23
- package/persisters/with-schemas/index.js +28 -19
- package/queries/index.js +2 -2
- package/queries/with-schemas/index.js +2 -2
- package/readme.md +14 -14
- package/relationships/index.js +1 -1
- package/relationships/with-schemas/index.js +1 -1
- package/releases.md +21 -21
- package/synchronizers/index.js +105 -95
- package/synchronizers/synchronizer-broadcast-channel/index.js +101 -97
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +101 -97
- package/synchronizers/synchronizer-local/index.js +100 -98
- package/synchronizers/synchronizer-local/with-schemas/index.js +100 -98
- package/synchronizers/synchronizer-ws-client/index.js +119 -112
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +119 -112
- package/synchronizers/synchronizer-ws-server/index.js +520 -20
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +520 -20
- package/synchronizers/with-schemas/index.js +105 -95
- package/ui-react-inspector/index.js +24 -22
- package/ui-react-inspector/with-schemas/index.js +24 -22
- package/umd/es6/index.js +106 -91
- package/umd/es6/min/index.js +1 -1
- package/umd/es6/min/index.js.gz +0 -0
- package/umd/es6/min/persisters/index.js +1 -1
- package/umd/es6/min/persisters/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-automerge/index.js +1 -1
- package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-browser/index.js +1 -1
- package/umd/es6/min/persisters/persister-browser/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
- package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-file/index.js +1 -1
- package/umd/es6/min/persisters/persister-file/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-indexed-db/index.js +1 -1
- package/umd/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
- package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-partykit-client/index.js +1 -1
- package/umd/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
- package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-remote/index.js +1 -1
- package/umd/es6/min/persisters/persister-remote/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-yjs/index.js +1 -1
- package/umd/es6/min/persisters/persister-yjs/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/index.js +1 -1
- package/umd/es6/min/synchronizers/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-local/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/ui-react-inspector/index.js +1 -1
- package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
- package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/with-schemas/index.js +1 -1
- package/umd/es6/min/with-schemas/index.js.gz +0 -0
- package/umd/es6/persisters/index.js +30 -21
- package/umd/es6/persisters/persister-automerge/index.js +29 -24
- package/umd/es6/persisters/persister-automerge/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-browser/index.js +37 -32
- package/umd/es6/persisters/persister-browser/with-schemas/index.js +37 -32
- package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +29 -24
- package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-electric-sql/index.js +29 -24
- package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-expo-sqlite/index.js +29 -24
- package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-file/index.js +43 -33
- package/umd/es6/persisters/persister-file/with-schemas/index.js +43 -33
- package/umd/es6/persisters/persister-indexed-db/index.js +29 -24
- package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-libsql/index.js +291 -286
- package/umd/es6/persisters/persister-libsql/with-schemas/index.js +291 -286
- package/umd/es6/persisters/persister-partykit-client/index.js +29 -24
- package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-powersync/index.js +29 -24
- package/umd/es6/persisters/persister-powersync/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-remote/index.js +35 -30
- package/umd/es6/persisters/persister-remote/with-schemas/index.js +35 -30
- package/umd/es6/persisters/persister-sqlite-wasm/index.js +29 -24
- package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-sqlite3/index.js +29 -24
- package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +29 -24
- package/umd/es6/persisters/persister-yjs/index.js +29 -24
- package/umd/es6/persisters/persister-yjs/with-schemas/index.js +29 -24
- package/umd/es6/persisters/with-schemas/index.js +30 -21
- package/umd/es6/synchronizers/index.js +118 -107
- package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +114 -109
- package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +114 -109
- package/umd/es6/synchronizers/synchronizer-local/index.js +118 -110
- package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +118 -110
- package/umd/es6/synchronizers/synchronizer-ws-client/index.js +135 -124
- package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +135 -124
- package/umd/es6/synchronizers/synchronizer-ws-server/index.js +710 -35
- package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +710 -35
- package/umd/es6/synchronizers/with-schemas/index.js +118 -107
- package/umd/es6/ui-react-inspector/index.js +26 -24
- package/umd/es6/ui-react-inspector/with-schemas/index.js +26 -24
- package/umd/es6/with-schemas/index.js +106 -91
- package/umd/index.js +108 -94
- package/umd/indexes/index.js +1 -1
- package/umd/indexes/with-schemas/index.js +1 -1
- package/umd/metrics/index.js +3 -3
- package/umd/metrics/with-schemas/index.js +3 -3
- package/umd/min/index.js +1 -1
- package/umd/min/index.js.gz +0 -0
- package/umd/min/persisters/index.js +1 -1
- package/umd/min/persisters/index.js.gz +0 -0
- package/umd/min/persisters/persister-automerge/index.js +1 -1
- package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
- package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-browser/index.js +1 -1
- package/umd/min/persisters/persister-browser/index.js.gz +0 -0
- package/umd/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-electric-sql/index.js +1 -1
- package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-file/index.js +1 -1
- package/umd/min/persisters/persister-file/index.js.gz +0 -0
- package/umd/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-indexed-db/index.js +1 -1
- package/umd/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/umd/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-libsql/index.js +1 -1
- package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
- package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-partykit-client/index.js +1 -1
- package/umd/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/umd/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-powersync/index.js +1 -1
- package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
- package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-remote/index.js +1 -1
- package/umd/min/persisters/persister-remote/index.js.gz +0 -0
- package/umd/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite3/index.js +1 -1
- package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-yjs/index.js +1 -1
- package/umd/min/persisters/persister-yjs/index.js.gz +0 -0
- package/umd/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/with-schemas/index.js +1 -1
- package/umd/min/persisters/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/index.js +1 -1
- package/umd/min/synchronizers/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-local/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/umd/min/ui-react-inspector/index.js +1 -1
- package/umd/min/ui-react-inspector/index.js.gz +0 -0
- package/umd/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/umd/min/with-schemas/index.js +1 -1
- package/umd/min/with-schemas/index.js.gz +0 -0
- package/umd/persisters/index.js +28 -19
- package/umd/persisters/persister-automerge/index.js +27 -22
- package/umd/persisters/persister-automerge/with-schemas/index.js +27 -22
- package/umd/persisters/persister-browser/index.js +35 -30
- package/umd/persisters/persister-browser/with-schemas/index.js +35 -30
- package/umd/persisters/persister-cr-sqlite-wasm/index.js +28 -23
- package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +28 -23
- package/umd/persisters/persister-electric-sql/index.js +28 -23
- package/umd/persisters/persister-electric-sql/with-schemas/index.js +28 -23
- package/umd/persisters/persister-expo-sqlite/index.js +28 -23
- package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +28 -23
- package/umd/persisters/persister-file/index.js +41 -31
- package/umd/persisters/persister-file/with-schemas/index.js +41 -31
- package/umd/persisters/persister-indexed-db/index.js +27 -22
- package/umd/persisters/persister-indexed-db/with-schemas/index.js +27 -22
- package/umd/persisters/persister-libsql/index.js +196 -191
- package/umd/persisters/persister-libsql/with-schemas/index.js +196 -191
- package/umd/persisters/persister-partykit-client/index.js +27 -22
- package/umd/persisters/persister-partykit-client/with-schemas/index.js +27 -22
- package/umd/persisters/persister-powersync/index.js +28 -23
- package/umd/persisters/persister-powersync/with-schemas/index.js +28 -23
- package/umd/persisters/persister-remote/index.js +33 -28
- package/umd/persisters/persister-remote/with-schemas/index.js +33 -28
- package/umd/persisters/persister-sqlite-wasm/index.js +28 -23
- package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +28 -23
- package/umd/persisters/persister-sqlite3/index.js +28 -23
- package/umd/persisters/persister-sqlite3/with-schemas/index.js +28 -23
- package/umd/persisters/persister-yjs/index.js +29 -24
- package/umd/persisters/persister-yjs/with-schemas/index.js +29 -24
- package/umd/persisters/with-schemas/index.js +28 -19
- package/umd/queries/index.js +2 -2
- package/umd/queries/with-schemas/index.js +2 -2
- package/umd/relationships/index.js +1 -1
- package/umd/relationships/with-schemas/index.js +1 -1
- package/umd/synchronizers/index.js +108 -98
- package/umd/synchronizers/synchronizer-broadcast-channel/index.js +104 -100
- package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +104 -100
- package/umd/synchronizers/synchronizer-local/index.js +108 -101
- package/umd/synchronizers/synchronizer-local/with-schemas/index.js +108 -101
- package/umd/synchronizers/synchronizer-ws-client/index.js +122 -115
- package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +122 -115
- package/umd/synchronizers/synchronizer-ws-server/index.js +544 -34
- package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +544 -34
- package/umd/synchronizers/with-schemas/index.js +108 -98
- package/umd/ui-react-inspector/index.js +24 -22
- package/umd/ui-react-inspector/with-schemas/index.js +24 -22
- package/umd/with-schemas/index.js +108 -94
- package/with-schemas/index.js +105 -91
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* @since v5.0.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import type {Receive, Send, Synchronizer} from '../index.d.cts';
|
|
12
13
|
import type {MergeableStore} from '../../mergeable-store/index.d.cts';
|
|
13
|
-
import type {Synchronizer} from '../index.d.cts';
|
|
14
14
|
import type {WebSocket as WsWebSocket} from 'ws';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -81,6 +81,10 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
|
|
|
81
81
|
* As well as providing a reference to the MergeableStore to persist, you must
|
|
82
82
|
* provide a configured WebSocket to send synchronization messages over.
|
|
83
83
|
*
|
|
84
|
+
* You can indicate how long the Synchronizer will wait for responses to message
|
|
85
|
+
* requests before timing out. A final set of optional handlers can be provided
|
|
86
|
+
* to help debug sends, receives, and errors respectively.
|
|
87
|
+
*
|
|
84
88
|
* This method is asynchronous because it will await the websocket's connection
|
|
85
89
|
* to the server. You will need to `await` a call to this function or handle the
|
|
86
90
|
* return type natively as a Promise.
|
|
@@ -88,6 +92,12 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
|
|
|
88
92
|
* @param webSocket The WebSocket to send synchronization messages over.
|
|
89
93
|
* @param requestTimeoutSeconds An optional time in seconds that the
|
|
90
94
|
* Synchronizer will wait for responses to request messages, defaulting to 1.
|
|
95
|
+
* @param onSend An optional handler for the messages that this Synchronizer
|
|
96
|
+
* sends. This is suitable for debugging synchronization issues in a development
|
|
97
|
+
* environment, since v5.1.
|
|
98
|
+
* @param onReceive An optional handler for the messages that this Synchronizer
|
|
99
|
+
* receives. This is suitable for debugging synchronization issues in a
|
|
100
|
+
* development environment, since v5.1.
|
|
91
101
|
* @param onIgnoredError An optional handler for the errors that the
|
|
92
102
|
* Synchronizer would otherwise ignore when trying to synchronize data. This is
|
|
93
103
|
* suitable for debugging synchronization issues in a development environment.
|
|
@@ -139,5 +149,7 @@ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
|
|
|
139
149
|
store: MergeableStore,
|
|
140
150
|
webSocket: WebSocketType,
|
|
141
151
|
requestTimeoutSeconds?: number,
|
|
152
|
+
onSend?: Send,
|
|
153
|
+
onReceive?: Receive,
|
|
142
154
|
onIgnoredError?: (error: any) => void,
|
|
143
155
|
): Promise<WsSynchronizer<WebSocketType>>;
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* @since v5.0.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import type {Receive, Send, Synchronizer} from '../index.d.ts';
|
|
12
13
|
import type {MergeableStore} from '../../mergeable-store/index.d.ts';
|
|
13
|
-
import type {Synchronizer} from '../index.d.ts';
|
|
14
14
|
import type {WebSocket as WsWebSocket} from 'ws';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -81,6 +81,10 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
|
|
|
81
81
|
* As well as providing a reference to the MergeableStore to persist, you must
|
|
82
82
|
* provide a configured WebSocket to send synchronization messages over.
|
|
83
83
|
*
|
|
84
|
+
* You can indicate how long the Synchronizer will wait for responses to message
|
|
85
|
+
* requests before timing out. A final set of optional handlers can be provided
|
|
86
|
+
* to help debug sends, receives, and errors respectively.
|
|
87
|
+
*
|
|
84
88
|
* This method is asynchronous because it will await the websocket's connection
|
|
85
89
|
* to the server. You will need to `await` a call to this function or handle the
|
|
86
90
|
* return type natively as a Promise.
|
|
@@ -88,6 +92,12 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
|
|
|
88
92
|
* @param webSocket The WebSocket to send synchronization messages over.
|
|
89
93
|
* @param requestTimeoutSeconds An optional time in seconds that the
|
|
90
94
|
* Synchronizer will wait for responses to request messages, defaulting to 1.
|
|
95
|
+
* @param onSend An optional handler for the messages that this Synchronizer
|
|
96
|
+
* sends. This is suitable for debugging synchronization issues in a development
|
|
97
|
+
* environment, since v5.1.
|
|
98
|
+
* @param onReceive An optional handler for the messages that this Synchronizer
|
|
99
|
+
* receives. This is suitable for debugging synchronization issues in a
|
|
100
|
+
* development environment, since v5.1.
|
|
91
101
|
* @param onIgnoredError An optional handler for the errors that the
|
|
92
102
|
* Synchronizer would otherwise ignore when trying to synchronize data. This is
|
|
93
103
|
* suitable for debugging synchronization issues in a development environment.
|
|
@@ -139,5 +149,7 @@ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
|
|
|
139
149
|
store: MergeableStore,
|
|
140
150
|
webSocket: WebSocketType,
|
|
141
151
|
requestTimeoutSeconds?: number,
|
|
152
|
+
onSend?: Send,
|
|
153
|
+
onReceive?: Receive,
|
|
142
154
|
onIgnoredError?: (error: any) => void,
|
|
143
155
|
): Promise<WsSynchronizer<WebSocketType>>;
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* @since v5.0.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import type {Receive, Send, Synchronizer} from '../../with-schemas/index.d.cts';
|
|
12
13
|
import type {MergeableStore} from '../../../mergeable-store/with-schemas/index.d.cts';
|
|
13
14
|
import type {OptionalSchemas} from '../../../store/with-schemas/index.d.cts';
|
|
14
|
-
import type {Synchronizer} from '../../with-schemas/index.d.cts';
|
|
15
15
|
import type {WebSocket as WsWebSocket} from 'ws';
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -88,6 +88,8 @@ export interface WsSynchronizer<
|
|
|
88
88
|
* store: MergeableStore,
|
|
89
89
|
* webSocket: WebSocketType,
|
|
90
90
|
* requestTimeoutSeconds?: number,
|
|
91
|
+
* onSend?: Send,
|
|
92
|
+
* onReceive?: Receive,
|
|
91
93
|
* onIgnoredError?: (error: any) => void,
|
|
92
94
|
* ): Promise<WsSynchronizer<WebSocketType>>;
|
|
93
95
|
* ```
|
|
@@ -95,6 +97,10 @@ export interface WsSynchronizer<
|
|
|
95
97
|
* As well as providing a reference to the MergeableStore to persist, you must
|
|
96
98
|
* provide a configured WebSocket to send synchronization messages over.
|
|
97
99
|
*
|
|
100
|
+
* You can indicate how long the Synchronizer will wait for responses to message
|
|
101
|
+
* requests before timing out. A final set of optional handlers can be provided
|
|
102
|
+
* to help debug sends, receives, and errors respectively.
|
|
103
|
+
*
|
|
98
104
|
* This method is asynchronous because it will await the websocket's connection
|
|
99
105
|
* to the server. You will need to `await` a call to this function or handle the
|
|
100
106
|
* return type natively as a Promise.
|
|
@@ -102,6 +108,12 @@ export interface WsSynchronizer<
|
|
|
102
108
|
* @param webSocket The WebSocket to send synchronization messages over.
|
|
103
109
|
* @param requestTimeoutSeconds An optional time in seconds that the
|
|
104
110
|
* Synchronizer will wait for responses to request messages, defaulting to 1.
|
|
111
|
+
* @param onSend An optional handler for the messages that this Synchronizer
|
|
112
|
+
* sends. This is suitable for debugging synchronization issues in a development
|
|
113
|
+
* environment, since v5.1.
|
|
114
|
+
* @param onReceive An optional handler for the messages that this Synchronizer
|
|
115
|
+
* receives. This is suitable for debugging synchronization issues in a
|
|
116
|
+
* development environment, since v5.1.
|
|
105
117
|
* @param onIgnoredError An optional handler for the errors that the
|
|
106
118
|
* Synchronizer would otherwise ignore when trying to synchronize data. This is
|
|
107
119
|
* suitable for debugging synchronization issues in a development environment.
|
|
@@ -156,5 +168,7 @@ export function createWsSynchronizer<
|
|
|
156
168
|
store: MergeableStore<Schemas>,
|
|
157
169
|
webSocket: WebSocketType,
|
|
158
170
|
requestTimeoutSeconds?: number,
|
|
171
|
+
onSend?: Send,
|
|
172
|
+
onReceive?: Receive,
|
|
159
173
|
onIgnoredError?: (error: any) => void,
|
|
160
174
|
): Promise<WsSynchronizer<Schemas, WebSocketType>>;
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* @since v5.0.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import type {Receive, Send, Synchronizer} from '../../with-schemas/index.d.ts';
|
|
12
13
|
import type {MergeableStore} from '../../../mergeable-store/with-schemas/index.d.ts';
|
|
13
14
|
import type {OptionalSchemas} from '../../../store/with-schemas/index.d.ts';
|
|
14
|
-
import type {Synchronizer} from '../../with-schemas/index.d.ts';
|
|
15
15
|
import type {WebSocket as WsWebSocket} from 'ws';
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -88,6 +88,8 @@ export interface WsSynchronizer<
|
|
|
88
88
|
* store: MergeableStore,
|
|
89
89
|
* webSocket: WebSocketType,
|
|
90
90
|
* requestTimeoutSeconds?: number,
|
|
91
|
+
* onSend?: Send,
|
|
92
|
+
* onReceive?: Receive,
|
|
91
93
|
* onIgnoredError?: (error: any) => void,
|
|
92
94
|
* ): Promise<WsSynchronizer<WebSocketType>>;
|
|
93
95
|
* ```
|
|
@@ -95,6 +97,10 @@ export interface WsSynchronizer<
|
|
|
95
97
|
* As well as providing a reference to the MergeableStore to persist, you must
|
|
96
98
|
* provide a configured WebSocket to send synchronization messages over.
|
|
97
99
|
*
|
|
100
|
+
* You can indicate how long the Synchronizer will wait for responses to message
|
|
101
|
+
* requests before timing out. A final set of optional handlers can be provided
|
|
102
|
+
* to help debug sends, receives, and errors respectively.
|
|
103
|
+
*
|
|
98
104
|
* This method is asynchronous because it will await the websocket's connection
|
|
99
105
|
* to the server. You will need to `await` a call to this function or handle the
|
|
100
106
|
* return type natively as a Promise.
|
|
@@ -102,6 +108,12 @@ export interface WsSynchronizer<
|
|
|
102
108
|
* @param webSocket The WebSocket to send synchronization messages over.
|
|
103
109
|
* @param requestTimeoutSeconds An optional time in seconds that the
|
|
104
110
|
* Synchronizer will wait for responses to request messages, defaulting to 1.
|
|
111
|
+
* @param onSend An optional handler for the messages that this Synchronizer
|
|
112
|
+
* sends. This is suitable for debugging synchronization issues in a development
|
|
113
|
+
* environment, since v5.1.
|
|
114
|
+
* @param onReceive An optional handler for the messages that this Synchronizer
|
|
115
|
+
* receives. This is suitable for debugging synchronization issues in a
|
|
116
|
+
* development environment, since v5.1.
|
|
105
117
|
* @param onIgnoredError An optional handler for the errors that the
|
|
106
118
|
* Synchronizer would otherwise ignore when trying to synchronize data. This is
|
|
107
119
|
* suitable for debugging synchronization issues in a development environment.
|
|
@@ -156,5 +168,7 @@ export function createWsSynchronizer<
|
|
|
156
168
|
store: MergeableStore<Schemas>,
|
|
157
169
|
webSocket: WebSocketType,
|
|
158
170
|
requestTimeoutSeconds?: number,
|
|
171
|
+
onSend?: Send,
|
|
172
|
+
onReceive?: Receive,
|
|
159
173
|
onIgnoredError?: (error: any) => void,
|
|
160
174
|
): Promise<WsSynchronizer<Schemas, WebSocketType>>;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type {Id, IdOrNull, Ids} from '../../common/index.d.cts';
|
|
12
|
+
import type {Persister, Persists} from '../../persisters/index.d.cts';
|
|
12
13
|
import type {IdAddedOrRemoved} from '../../store/index.d.cts';
|
|
13
14
|
import type {WebSocketServer} from 'ws';
|
|
14
15
|
|
|
@@ -497,17 +498,132 @@ export interface WsServer {
|
|
|
497
498
|
*
|
|
498
499
|
* This should be run in a server environment, and you must pass in a configured
|
|
499
500
|
* WebSocketServer object in order to create it.
|
|
501
|
+
*
|
|
502
|
+
* If you want your server to persist data itself, you can use the optional
|
|
503
|
+
* second parameter of this function, which allows you to create a Persister for
|
|
504
|
+
* a new path - whenever a new path is accessed by a client. This Persister will
|
|
505
|
+
* only exist when there are active clients on that particular path.
|
|
506
|
+
*
|
|
507
|
+
* You are responsible for creating a MergeableStore to pass to this Persister,
|
|
508
|
+
* but starting and stopping its automatic saving and loading is taken care of
|
|
509
|
+
* by the WsServer. As a result, the server MergeableStore will be kept in sync
|
|
510
|
+
* with the clients on that path, and in turn with whatever persistence layer
|
|
511
|
+
* you have configured. See the example below.
|
|
500
512
|
* @param webSocketServer A WebSocketServer object from your server environment.
|
|
513
|
+
* @param createPersisterForPath An optional function that will create a
|
|
514
|
+
* Persister (with a MergeableStore) to synchronize with the clients on a given
|
|
515
|
+
* path.
|
|
501
516
|
* @returns A reference to the new WsServer object.
|
|
502
517
|
* @example
|
|
503
|
-
* This example creates a WsServer
|
|
518
|
+
* This example creates a WsServer that synchronizes two clients on a shared
|
|
519
|
+
* path.
|
|
504
520
|
*
|
|
505
521
|
* ```js
|
|
506
522
|
* import {WebSocketServer} from 'ws';
|
|
523
|
+
* import {createMergeableStore} from 'tinybase';
|
|
507
524
|
* import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
|
|
525
|
+
* import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
|
|
508
526
|
*
|
|
527
|
+
* // Server
|
|
509
528
|
* const server = createWsServer(new WebSocketServer({port: 8047}));
|
|
529
|
+
*
|
|
530
|
+
* // Client 1
|
|
531
|
+
* const clientStore1 = createMergeableStore();
|
|
532
|
+
* clientStore1.setCell('pets', 'fido', 'species', 'dog');
|
|
533
|
+
* const synchronizer1 = await createWsSynchronizer(
|
|
534
|
+
* clientStore1,
|
|
535
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
536
|
+
* );
|
|
537
|
+
* await synchronizer1.startSync();
|
|
538
|
+
* // ...
|
|
539
|
+
*
|
|
540
|
+
* // Client 2
|
|
541
|
+
* const clientStore2 = createMergeableStore();
|
|
542
|
+
* clientStore2.setCell('pets', 'felix', 'species', 'cat');
|
|
543
|
+
* const synchronizer2 = await createWsSynchronizer(
|
|
544
|
+
* clientStore2,
|
|
545
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
546
|
+
* );
|
|
547
|
+
* await synchronizer2.startSync();
|
|
548
|
+
* // ...
|
|
549
|
+
*
|
|
550
|
+
* console.log(clientStore1.getTables());
|
|
551
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
552
|
+
*
|
|
553
|
+
* console.log(clientStore2.getTables());
|
|
554
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
555
|
+
*
|
|
556
|
+
* synchronizer1.destroy();
|
|
557
|
+
* synchronizer2.destroy();
|
|
558
|
+
* server.destroy();
|
|
559
|
+
* ```
|
|
560
|
+
* @example
|
|
561
|
+
* This longer example creates a WsServer that persists a MergeableStore to file
|
|
562
|
+
* that is synchronized with two clients on a shared path. Later, when a third
|
|
563
|
+
* client connects, it picks up the data the previous two were using.
|
|
564
|
+
*
|
|
565
|
+
* ```js
|
|
566
|
+
* import {WebSocketServer} from 'ws';
|
|
567
|
+
* import {createFilePersister} from 'tinybase/persisters/persister-file';
|
|
568
|
+
* import {createMergeableStore} from 'tinybase';
|
|
569
|
+
* import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
|
|
570
|
+
* import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
|
|
571
|
+
* import {rmSync} from 'fs';
|
|
572
|
+
*
|
|
573
|
+
* // Server
|
|
574
|
+
* const server = createWsServer(
|
|
575
|
+
* new WebSocketServer({port: 8047}),
|
|
576
|
+
* (pathId) =>
|
|
577
|
+
* createFilePersister(createMergeableStore(), pathId + '.json'),
|
|
578
|
+
* );
|
|
579
|
+
*
|
|
580
|
+
* // Client 1
|
|
581
|
+
* const clientStore1 = createMergeableStore();
|
|
582
|
+
* clientStore1.setCell('pets', 'fido', 'species', 'dog');
|
|
583
|
+
* const synchronizer1 = await createWsSynchronizer(
|
|
584
|
+
* clientStore1,
|
|
585
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
586
|
+
* );
|
|
587
|
+
* await synchronizer1.startSync();
|
|
588
|
+
* // ...
|
|
589
|
+
*
|
|
590
|
+
* // Client 2
|
|
591
|
+
* const clientStore2 = createMergeableStore();
|
|
592
|
+
* clientStore2.setCell('pets', 'felix', 'species', 'cat');
|
|
593
|
+
* const synchronizer2 = await createWsSynchronizer(
|
|
594
|
+
* clientStore2,
|
|
595
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
596
|
+
* );
|
|
597
|
+
* await synchronizer2.startSync();
|
|
598
|
+
* // ...
|
|
599
|
+
*
|
|
600
|
+
* console.log(clientStore1.getTables());
|
|
601
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
602
|
+
*
|
|
603
|
+
* console.log(clientStore2.getTables());
|
|
604
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
605
|
+
*
|
|
606
|
+
* synchronizer1.destroy();
|
|
607
|
+
* synchronizer2.destroy();
|
|
608
|
+
*
|
|
609
|
+
* // ...
|
|
610
|
+
* // Client 3 connects later
|
|
611
|
+
* const clientStore3 = createMergeableStore();
|
|
612
|
+
* const synchronizer3 = await createWsSynchronizer(
|
|
613
|
+
* clientStore3,
|
|
614
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
615
|
+
* );
|
|
616
|
+
* await synchronizer3.startSync();
|
|
617
|
+
* // ...
|
|
618
|
+
*
|
|
619
|
+
* console.log(clientStore3.getTables());
|
|
620
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
621
|
+
*
|
|
622
|
+
* synchronizer3.destroy();
|
|
510
623
|
* server.destroy();
|
|
624
|
+
*
|
|
625
|
+
* // Remove file for the purposes of this demo.
|
|
626
|
+
* rmSync('petShop.json');
|
|
511
627
|
* ```
|
|
512
628
|
* @example
|
|
513
629
|
* This example creates a WsServer with a custom listener that displays
|
|
@@ -539,4 +655,11 @@ export interface WsServer {
|
|
|
539
655
|
* @category Creation
|
|
540
656
|
* @since v5.0.0
|
|
541
657
|
*/
|
|
542
|
-
export function createWsServer
|
|
658
|
+
export function createWsServer<
|
|
659
|
+
PathPersister extends Persister<
|
|
660
|
+
Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
|
|
661
|
+
>,
|
|
662
|
+
>(
|
|
663
|
+
webSocketServer: WebSocketServer,
|
|
664
|
+
createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
|
|
665
|
+
): WsServer;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type {Id, IdOrNull, Ids} from '../../common/index.d.ts';
|
|
12
|
+
import type {Persister, Persists} from '../../persisters/index.d.ts';
|
|
12
13
|
import type {IdAddedOrRemoved} from '../../store/index.d.ts';
|
|
13
14
|
import type {WebSocketServer} from 'ws';
|
|
14
15
|
|
|
@@ -497,17 +498,132 @@ export interface WsServer {
|
|
|
497
498
|
*
|
|
498
499
|
* This should be run in a server environment, and you must pass in a configured
|
|
499
500
|
* WebSocketServer object in order to create it.
|
|
501
|
+
*
|
|
502
|
+
* If you want your server to persist data itself, you can use the optional
|
|
503
|
+
* second parameter of this function, which allows you to create a Persister for
|
|
504
|
+
* a new path - whenever a new path is accessed by a client. This Persister will
|
|
505
|
+
* only exist when there are active clients on that particular path.
|
|
506
|
+
*
|
|
507
|
+
* You are responsible for creating a MergeableStore to pass to this Persister,
|
|
508
|
+
* but starting and stopping its automatic saving and loading is taken care of
|
|
509
|
+
* by the WsServer. As a result, the server MergeableStore will be kept in sync
|
|
510
|
+
* with the clients on that path, and in turn with whatever persistence layer
|
|
511
|
+
* you have configured. See the example below.
|
|
500
512
|
* @param webSocketServer A WebSocketServer object from your server environment.
|
|
513
|
+
* @param createPersisterForPath An optional function that will create a
|
|
514
|
+
* Persister (with a MergeableStore) to synchronize with the clients on a given
|
|
515
|
+
* path.
|
|
501
516
|
* @returns A reference to the new WsServer object.
|
|
502
517
|
* @example
|
|
503
|
-
* This example creates a WsServer
|
|
518
|
+
* This example creates a WsServer that synchronizes two clients on a shared
|
|
519
|
+
* path.
|
|
504
520
|
*
|
|
505
521
|
* ```js
|
|
506
522
|
* import {WebSocketServer} from 'ws';
|
|
523
|
+
* import {createMergeableStore} from 'tinybase';
|
|
507
524
|
* import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
|
|
525
|
+
* import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
|
|
508
526
|
*
|
|
527
|
+
* // Server
|
|
509
528
|
* const server = createWsServer(new WebSocketServer({port: 8047}));
|
|
529
|
+
*
|
|
530
|
+
* // Client 1
|
|
531
|
+
* const clientStore1 = createMergeableStore();
|
|
532
|
+
* clientStore1.setCell('pets', 'fido', 'species', 'dog');
|
|
533
|
+
* const synchronizer1 = await createWsSynchronizer(
|
|
534
|
+
* clientStore1,
|
|
535
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
536
|
+
* );
|
|
537
|
+
* await synchronizer1.startSync();
|
|
538
|
+
* // ...
|
|
539
|
+
*
|
|
540
|
+
* // Client 2
|
|
541
|
+
* const clientStore2 = createMergeableStore();
|
|
542
|
+
* clientStore2.setCell('pets', 'felix', 'species', 'cat');
|
|
543
|
+
* const synchronizer2 = await createWsSynchronizer(
|
|
544
|
+
* clientStore2,
|
|
545
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
546
|
+
* );
|
|
547
|
+
* await synchronizer2.startSync();
|
|
548
|
+
* // ...
|
|
549
|
+
*
|
|
550
|
+
* console.log(clientStore1.getTables());
|
|
551
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
552
|
+
*
|
|
553
|
+
* console.log(clientStore2.getTables());
|
|
554
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
555
|
+
*
|
|
556
|
+
* synchronizer1.destroy();
|
|
557
|
+
* synchronizer2.destroy();
|
|
558
|
+
* server.destroy();
|
|
559
|
+
* ```
|
|
560
|
+
* @example
|
|
561
|
+
* This longer example creates a WsServer that persists a MergeableStore to file
|
|
562
|
+
* that is synchronized with two clients on a shared path. Later, when a third
|
|
563
|
+
* client connects, it picks up the data the previous two were using.
|
|
564
|
+
*
|
|
565
|
+
* ```js
|
|
566
|
+
* import {WebSocketServer} from 'ws';
|
|
567
|
+
* import {createFilePersister} from 'tinybase/persisters/persister-file';
|
|
568
|
+
* import {createMergeableStore} from 'tinybase';
|
|
569
|
+
* import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
|
|
570
|
+
* import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
|
|
571
|
+
* import {rmSync} from 'fs';
|
|
572
|
+
*
|
|
573
|
+
* // Server
|
|
574
|
+
* const server = createWsServer(
|
|
575
|
+
* new WebSocketServer({port: 8047}),
|
|
576
|
+
* (pathId) =>
|
|
577
|
+
* createFilePersister(createMergeableStore(), pathId + '.json'),
|
|
578
|
+
* );
|
|
579
|
+
*
|
|
580
|
+
* // Client 1
|
|
581
|
+
* const clientStore1 = createMergeableStore();
|
|
582
|
+
* clientStore1.setCell('pets', 'fido', 'species', 'dog');
|
|
583
|
+
* const synchronizer1 = await createWsSynchronizer(
|
|
584
|
+
* clientStore1,
|
|
585
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
586
|
+
* );
|
|
587
|
+
* await synchronizer1.startSync();
|
|
588
|
+
* // ...
|
|
589
|
+
*
|
|
590
|
+
* // Client 2
|
|
591
|
+
* const clientStore2 = createMergeableStore();
|
|
592
|
+
* clientStore2.setCell('pets', 'felix', 'species', 'cat');
|
|
593
|
+
* const synchronizer2 = await createWsSynchronizer(
|
|
594
|
+
* clientStore2,
|
|
595
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
596
|
+
* );
|
|
597
|
+
* await synchronizer2.startSync();
|
|
598
|
+
* // ...
|
|
599
|
+
*
|
|
600
|
+
* console.log(clientStore1.getTables());
|
|
601
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
602
|
+
*
|
|
603
|
+
* console.log(clientStore2.getTables());
|
|
604
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
605
|
+
*
|
|
606
|
+
* synchronizer1.destroy();
|
|
607
|
+
* synchronizer2.destroy();
|
|
608
|
+
*
|
|
609
|
+
* // ...
|
|
610
|
+
* // Client 3 connects later
|
|
611
|
+
* const clientStore3 = createMergeableStore();
|
|
612
|
+
* const synchronizer3 = await createWsSynchronizer(
|
|
613
|
+
* clientStore3,
|
|
614
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
615
|
+
* );
|
|
616
|
+
* await synchronizer3.startSync();
|
|
617
|
+
* // ...
|
|
618
|
+
*
|
|
619
|
+
* console.log(clientStore3.getTables());
|
|
620
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
621
|
+
*
|
|
622
|
+
* synchronizer3.destroy();
|
|
510
623
|
* server.destroy();
|
|
624
|
+
*
|
|
625
|
+
* // Remove file for the purposes of this demo.
|
|
626
|
+
* rmSync('petShop.json');
|
|
511
627
|
* ```
|
|
512
628
|
* @example
|
|
513
629
|
* This example creates a WsServer with a custom listener that displays
|
|
@@ -539,4 +655,11 @@ export interface WsServer {
|
|
|
539
655
|
* @category Creation
|
|
540
656
|
* @since v5.0.0
|
|
541
657
|
*/
|
|
542
|
-
export function createWsServer
|
|
658
|
+
export function createWsServer<
|
|
659
|
+
PathPersister extends Persister<
|
|
660
|
+
Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
|
|
661
|
+
>,
|
|
662
|
+
>(
|
|
663
|
+
webSocketServer: WebSocketServer,
|
|
664
|
+
createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
|
|
665
|
+
): WsServer;
|
|
@@ -9,7 +9,14 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type {Id, IdOrNull, Ids} from '../../../common/with-schemas/index.d.cts';
|
|
12
|
-
import type {
|
|
12
|
+
import type {
|
|
13
|
+
IdAddedOrRemoved,
|
|
14
|
+
OptionalSchemas,
|
|
15
|
+
} from '../../../store/with-schemas/index.d.cts';
|
|
16
|
+
import type {
|
|
17
|
+
Persister,
|
|
18
|
+
Persists,
|
|
19
|
+
} from '../../../persisters/with-schemas/index.d.cts';
|
|
13
20
|
import type {WebSocketServer} from 'ws';
|
|
14
21
|
|
|
15
22
|
/**
|
|
@@ -495,21 +502,149 @@ export interface WsServer {
|
|
|
495
502
|
* The createWsServer function creates a WsServer that facilitates
|
|
496
503
|
* synchronization between clients that are using WsSynchronizer instances.
|
|
497
504
|
*
|
|
505
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
506
|
+
*
|
|
507
|
+
* ```ts override
|
|
508
|
+
* createWsServer<
|
|
509
|
+
* PathPersister extends Persister<
|
|
510
|
+
* Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
|
|
511
|
+
* >,
|
|
512
|
+
* >(
|
|
513
|
+
* webSocketServer: WebSocketServer,
|
|
514
|
+
* createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
|
|
515
|
+
* ): WsServer;
|
|
516
|
+
* ```
|
|
517
|
+
*
|
|
498
518
|
* This should be run in a server environment, and you must pass in a configured
|
|
499
519
|
* WebSocketServer object in order to create it.
|
|
520
|
+
*
|
|
521
|
+
* If you want your server to persist data itself, you can use the optional
|
|
522
|
+
* second parameter of this function, which allows you to create a Persister for
|
|
523
|
+
* a new path - whenever a new path is accessed by a client. This Persister will
|
|
524
|
+
* only exist when there are active clients on that particular path.
|
|
525
|
+
*
|
|
526
|
+
* You are responsible for creating a MergeableStore to pass to this Persister,
|
|
527
|
+
* but starting and stopping its automatic saving and loading is taken care of
|
|
528
|
+
* by the WsServer. As a result, the server MergeableStore will be kept in sync
|
|
529
|
+
* with the clients on that path, and in turn with whatever persistence layer
|
|
530
|
+
* you have configured. See the example below.
|
|
500
531
|
* @param webSocketServer A WebSocketServer object from your server environment.
|
|
532
|
+
* @param createPersisterForPath An optional function that will create a
|
|
533
|
+
* Persister (with a MergeableStore) to synchronize with the clients on a given
|
|
534
|
+
* path.
|
|
501
535
|
* @returns A reference to the new WsServer object.
|
|
502
536
|
* @example
|
|
503
|
-
* This example creates a WsServer
|
|
537
|
+
* This example creates a WsServer that synchronizes two clients on a shared
|
|
538
|
+
* path.
|
|
504
539
|
*
|
|
505
540
|
* ```js
|
|
506
541
|
* import {WebSocketServer} from 'ws';
|
|
542
|
+
* import {createMergeableStore} from 'tinybase';
|
|
507
543
|
* import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
|
|
544
|
+
* import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
|
|
508
545
|
*
|
|
546
|
+
* // Server
|
|
509
547
|
* const server = createWsServer(new WebSocketServer({port: 8047}));
|
|
548
|
+
*
|
|
549
|
+
* // Client 1
|
|
550
|
+
* const clientStore1 = createMergeableStore();
|
|
551
|
+
* clientStore1.setCell('pets', 'fido', 'species', 'dog');
|
|
552
|
+
* const synchronizer1 = await createWsSynchronizer(
|
|
553
|
+
* clientStore1,
|
|
554
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
555
|
+
* );
|
|
556
|
+
* await synchronizer1.startSync();
|
|
557
|
+
* // ...
|
|
558
|
+
*
|
|
559
|
+
* // Client 2
|
|
560
|
+
* const clientStore2 = createMergeableStore();
|
|
561
|
+
* clientStore2.setCell('pets', 'felix', 'species', 'cat');
|
|
562
|
+
* const synchronizer2 = await createWsSynchronizer(
|
|
563
|
+
* clientStore2,
|
|
564
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
565
|
+
* );
|
|
566
|
+
* await synchronizer2.startSync();
|
|
567
|
+
* // ...
|
|
568
|
+
*
|
|
569
|
+
* console.log(clientStore1.getTables());
|
|
570
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
571
|
+
*
|
|
572
|
+
* console.log(clientStore2.getTables());
|
|
573
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
574
|
+
*
|
|
575
|
+
* synchronizer1.destroy();
|
|
576
|
+
* synchronizer2.destroy();
|
|
510
577
|
* server.destroy();
|
|
511
578
|
* ```
|
|
512
579
|
* @example
|
|
580
|
+
* This longer example creates a WsServer that persists a MergeableStore to file
|
|
581
|
+
* that is synchronized with two clients on a shared path. Later, when a third
|
|
582
|
+
* client connects, it picks up the data the previous two were using.
|
|
583
|
+
*
|
|
584
|
+
* ```js
|
|
585
|
+
* import {WebSocketServer} from 'ws';
|
|
586
|
+
* import {createFilePersister} from 'tinybase/persisters/persister-file';
|
|
587
|
+
* import {createMergeableStore} from 'tinybase';
|
|
588
|
+
* import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
|
|
589
|
+
* import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
|
|
590
|
+
* import {rmSync} from 'fs';
|
|
591
|
+
*
|
|
592
|
+
* // Server
|
|
593
|
+
* const server = createWsServer(
|
|
594
|
+
* new WebSocketServer({port: 8047}),
|
|
595
|
+
* (pathId) =>
|
|
596
|
+
* createFilePersister(createMergeableStore(), pathId + '.json'),
|
|
597
|
+
* );
|
|
598
|
+
*
|
|
599
|
+
* // Client 1
|
|
600
|
+
* const clientStore1 = createMergeableStore();
|
|
601
|
+
* clientStore1.setCell('pets', 'fido', 'species', 'dog');
|
|
602
|
+
* const synchronizer1 = await createWsSynchronizer(
|
|
603
|
+
* clientStore1,
|
|
604
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
605
|
+
* );
|
|
606
|
+
* await synchronizer1.startSync();
|
|
607
|
+
* // ...
|
|
608
|
+
*
|
|
609
|
+
* // Client 2
|
|
610
|
+
* const clientStore2 = createMergeableStore();
|
|
611
|
+
* clientStore2.setCell('pets', 'felix', 'species', 'cat');
|
|
612
|
+
* const synchronizer2 = await createWsSynchronizer(
|
|
613
|
+
* clientStore2,
|
|
614
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
615
|
+
* );
|
|
616
|
+
* await synchronizer2.startSync();
|
|
617
|
+
* // ...
|
|
618
|
+
*
|
|
619
|
+
* console.log(clientStore1.getTables());
|
|
620
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
621
|
+
*
|
|
622
|
+
* console.log(clientStore2.getTables());
|
|
623
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
624
|
+
*
|
|
625
|
+
* synchronizer1.destroy();
|
|
626
|
+
* synchronizer2.destroy();
|
|
627
|
+
*
|
|
628
|
+
* // ...
|
|
629
|
+
* // Client 3 connects later
|
|
630
|
+
* const clientStore3 = createMergeableStore();
|
|
631
|
+
* const synchronizer3 = await createWsSynchronizer(
|
|
632
|
+
* clientStore3,
|
|
633
|
+
* new WebSocket('ws://localhost:8047/petShop'),
|
|
634
|
+
* );
|
|
635
|
+
* await synchronizer3.startSync();
|
|
636
|
+
* // ...
|
|
637
|
+
*
|
|
638
|
+
* console.log(clientStore3.getTables());
|
|
639
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
640
|
+
*
|
|
641
|
+
* synchronizer3.destroy();
|
|
642
|
+
* server.destroy();
|
|
643
|
+
*
|
|
644
|
+
* // Remove file for the purposes of this demo.
|
|
645
|
+
* rmSync('petShop.json');
|
|
646
|
+
* ```
|
|
647
|
+
* @example
|
|
513
648
|
* This example creates a WsServer with a custom listener that displays
|
|
514
649
|
* information about the address of the client that connects to it.
|
|
515
650
|
*
|
|
@@ -539,4 +674,13 @@ export interface WsServer {
|
|
|
539
674
|
* @category Creation
|
|
540
675
|
* @since v5.0.0
|
|
541
676
|
*/
|
|
542
|
-
export function createWsServer
|
|
677
|
+
export function createWsServer<
|
|
678
|
+
Schemas extends OptionalSchemas,
|
|
679
|
+
PathPersister extends Persister<
|
|
680
|
+
Schemas,
|
|
681
|
+
Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
|
|
682
|
+
>,
|
|
683
|
+
>(
|
|
684
|
+
webSocketServer: WebSocketServer,
|
|
685
|
+
createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
|
|
686
|
+
): WsServer;
|