tinybase 5.2.0-beta.2 → 5.2.0-beta.4
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/common/index.d.cts +34 -2
- package/@types/common/index.d.ts +34 -2
- package/@types/common/with-schemas/index.d.cts +34 -2
- package/@types/common/with-schemas/index.d.ts +34 -2
- package/@types/persisters/index.d.cts +21 -2
- package/@types/persisters/index.d.ts +21 -2
- package/@types/persisters/persister-pglite/index.d.cts +178 -0
- package/@types/persisters/persister-pglite/index.d.ts +178 -0
- package/@types/persisters/persister-pglite/with-schemas/index.d.cts +197 -0
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +197 -0
- package/@types/persisters/persister-postgres/index.d.cts +2 -1
- package/@types/persisters/persister-postgres/index.d.ts +2 -1
- package/@types/persisters/persister-postgres/with-schemas/index.d.cts +2 -1
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +2 -1
- package/@types/persisters/with-schemas/index.d.cts +21 -2
- package/@types/persisters/with-schemas/index.d.ts +21 -2
- package/@types/synchronizers/synchronizer-local/index.d.cts +1 -0
- package/@types/synchronizers/synchronizer-local/index.d.ts +1 -0
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +1 -0
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +1 -0
- package/checkpoints/index.js +9 -7
- package/checkpoints/with-schemas/index.js +9 -7
- package/cjs/checkpoints/index.cjs +9 -7
- package/cjs/checkpoints/with-schemas/index.cjs +9 -7
- package/cjs/es6/checkpoints/index.cjs +15 -13
- package/cjs/es6/checkpoints/with-schemas/index.cjs +15 -13
- package/cjs/es6/index.cjs +31 -22
- package/cjs/es6/indexes/index.cjs +15 -13
- package/cjs/es6/indexes/with-schemas/index.cjs +15 -13
- package/cjs/es6/mergeable-store/index.cjs +26 -19
- package/cjs/es6/mergeable-store/with-schemas/index.cjs +26 -19
- package/cjs/es6/metrics/index.cjs +15 -13
- package/cjs/es6/metrics/with-schemas/index.cjs +15 -13
- package/cjs/es6/min/index.cjs +1 -1
- package/cjs/es6/min/index.cjs.gz +0 -0
- package/cjs/es6/min/mergeable-store/index.cjs +1 -1
- package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
- package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/mergeable-store/with-schemas/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-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-partykit-server/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-partykit-server/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-partykit-server/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-partykit-server/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-pglite/index.cjs +1 -0
- package/cjs/es6/min/persisters/persister-pglite/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs +1 -0
- package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-postgres/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-postgres/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-postgres/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/store/index.cjs +1 -1
- package/cjs/es6/min/store/index.cjs.gz +0 -0
- package/cjs/es6/min/store/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/store/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/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 +5 -3
- package/cjs/es6/persisters/persister-automerge/index.cjs +7 -4
- package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +7 -4
- package/cjs/es6/persisters/persister-browser/index.cjs +8 -5
- package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +8 -5
- package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +147 -102
- package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +147 -102
- package/cjs/es6/persisters/persister-electric-sql/index.cjs +147 -102
- package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +147 -102
- package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +147 -102
- package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +147 -102
- package/cjs/es6/persisters/persister-file/index.cjs +9 -5
- package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +9 -5
- package/cjs/es6/persisters/persister-indexed-db/index.cjs +5 -3
- package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +5 -3
- package/cjs/es6/persisters/persister-libsql/index.cjs +147 -102
- package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +147 -102
- package/cjs/es6/persisters/persister-partykit-client/index.cjs +8 -5
- package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +8 -5
- package/cjs/es6/persisters/persister-partykit-server/index.cjs +39 -24
- package/cjs/es6/persisters/persister-partykit-server/with-schemas/index.cjs +39 -24
- package/cjs/es6/persisters/persister-pglite/index.cjs +1320 -0
- package/cjs/es6/persisters/persister-pglite/with-schemas/index.cjs +1320 -0
- package/cjs/es6/persisters/persister-postgres/index.cjs +171 -92
- package/cjs/es6/persisters/persister-postgres/with-schemas/index.cjs +171 -92
- package/cjs/es6/persisters/persister-powersync/index.cjs +149 -104
- package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +149 -104
- package/cjs/es6/persisters/persister-remote/index.cjs +8 -5
- package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +8 -5
- package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +147 -102
- package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +147 -102
- package/cjs/es6/persisters/persister-sqlite3/index.cjs +147 -102
- package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +147 -102
- package/cjs/es6/persisters/persister-yjs/index.cjs +5 -3
- package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +5 -3
- package/cjs/es6/persisters/with-schemas/index.cjs +5 -3
- package/cjs/es6/relationships/index.cjs +15 -13
- package/cjs/es6/relationships/with-schemas/index.cjs +15 -13
- package/cjs/es6/store/index.cjs +26 -19
- package/cjs/es6/store/with-schemas/index.cjs +26 -19
- package/cjs/es6/synchronizers/index.cjs +5 -3
- package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +5 -3
- package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +5 -3
- package/cjs/es6/synchronizers/synchronizer-local/index.cjs +5 -3
- package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +5 -3
- package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +12 -8
- package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +12 -8
- package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +83 -77
- package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +83 -77
- package/cjs/es6/synchronizers/with-schemas/index.cjs +5 -3
- package/cjs/es6/ui-react-inspector/index.cjs +35 -25
- package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +35 -25
- package/cjs/es6/with-schemas/index.cjs +31 -22
- package/cjs/index.cjs +25 -14
- package/cjs/indexes/index.cjs +9 -7
- package/cjs/indexes/with-schemas/index.cjs +9 -7
- package/cjs/mergeable-store/index.cjs +20 -11
- package/cjs/mergeable-store/with-schemas/index.cjs +20 -11
- package/cjs/metrics/index.cjs +9 -7
- package/cjs/metrics/with-schemas/index.cjs +9 -7
- package/cjs/min/index.cjs +1 -1
- package/cjs/min/index.cjs.gz +0 -0
- package/cjs/min/mergeable-store/index.cjs +1 -1
- package/cjs/min/mergeable-store/index.cjs.gz +0 -0
- package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
- package/cjs/min/mergeable-store/with-schemas/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-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-partykit-server/index.cjs +1 -1
- package/cjs/min/persisters/persister-partykit-server/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-partykit-server/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-partykit-server/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-pglite/index.cjs +1 -0
- package/cjs/min/persisters/persister-pglite/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs +1 -0
- package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-postgres/index.cjs +1 -1
- package/cjs/min/persisters/persister-postgres/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-postgres/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/store/index.cjs +1 -1
- package/cjs/min/store/index.cjs.gz +0 -0
- package/cjs/min/store/with-schemas/index.cjs +1 -1
- package/cjs/min/store/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/tools/index.cjs +1 -1
- package/cjs/min/tools/index.cjs.gz +0 -0
- package/cjs/min/tools/with-schemas/index.cjs +1 -1
- package/cjs/min/tools/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 +5 -3
- package/cjs/persisters/persister-automerge/index.cjs +7 -4
- package/cjs/persisters/persister-automerge/with-schemas/index.cjs +7 -4
- package/cjs/persisters/persister-browser/index.cjs +8 -5
- package/cjs/persisters/persister-browser/with-schemas/index.cjs +8 -5
- package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +103 -60
- package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +103 -60
- package/cjs/persisters/persister-electric-sql/index.cjs +103 -60
- package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +103 -60
- package/cjs/persisters/persister-expo-sqlite/index.cjs +103 -60
- package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +103 -60
- package/cjs/persisters/persister-file/index.cjs +9 -5
- package/cjs/persisters/persister-file/with-schemas/index.cjs +9 -5
- package/cjs/persisters/persister-indexed-db/index.cjs +5 -3
- package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +5 -3
- package/cjs/persisters/persister-libsql/index.cjs +103 -60
- package/cjs/persisters/persister-libsql/with-schemas/index.cjs +103 -60
- package/cjs/persisters/persister-partykit-client/index.cjs +8 -5
- package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +8 -5
- package/cjs/persisters/persister-partykit-server/index.cjs +39 -27
- package/cjs/persisters/persister-partykit-server/with-schemas/index.cjs +39 -27
- package/cjs/persisters/persister-pglite/index.cjs +994 -0
- package/cjs/persisters/persister-pglite/with-schemas/index.cjs +994 -0
- package/cjs/persisters/persister-postgres/index.cjs +126 -52
- package/cjs/persisters/persister-postgres/with-schemas/index.cjs +126 -52
- package/cjs/persisters/persister-powersync/index.cjs +105 -62
- package/cjs/persisters/persister-powersync/with-schemas/index.cjs +105 -62
- package/cjs/persisters/persister-remote/index.cjs +8 -5
- package/cjs/persisters/persister-remote/with-schemas/index.cjs +8 -5
- package/cjs/persisters/persister-sqlite-wasm/index.cjs +103 -60
- package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +103 -60
- package/cjs/persisters/persister-sqlite3/index.cjs +103 -60
- package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +103 -60
- package/cjs/persisters/persister-yjs/index.cjs +5 -3
- package/cjs/persisters/persister-yjs/with-schemas/index.cjs +5 -3
- package/cjs/persisters/with-schemas/index.cjs +5 -3
- package/cjs/relationships/index.cjs +9 -7
- package/cjs/relationships/with-schemas/index.cjs +9 -7
- package/cjs/store/index.cjs +20 -11
- package/cjs/store/with-schemas/index.cjs +20 -11
- package/cjs/synchronizers/index.cjs +5 -3
- package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +5 -3
- package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +5 -3
- package/cjs/synchronizers/synchronizer-local/index.cjs +5 -3
- package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +5 -3
- package/cjs/synchronizers/synchronizer-ws-client/index.cjs +12 -8
- package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +12 -8
- package/cjs/synchronizers/synchronizer-ws-server/index.cjs +34 -25
- package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +34 -25
- package/cjs/synchronizers/with-schemas/index.cjs +5 -3
- package/cjs/tools/index.cjs +1 -1
- package/cjs/tools/with-schemas/index.cjs +1 -1
- package/cjs/ui-react-inspector/index.cjs +29 -17
- package/cjs/ui-react-inspector/with-schemas/index.cjs +29 -17
- package/cjs/with-schemas/index.cjs +25 -14
- package/es6/checkpoints/index.js +15 -13
- package/es6/checkpoints/with-schemas/index.js +15 -13
- package/es6/index.js +31 -22
- package/es6/indexes/index.js +15 -13
- package/es6/indexes/with-schemas/index.js +15 -13
- package/es6/mergeable-store/index.js +26 -19
- package/es6/mergeable-store/with-schemas/index.js +26 -19
- package/es6/metrics/index.js +15 -13
- package/es6/metrics/with-schemas/index.js +15 -13
- package/es6/min/index.js +1 -1
- package/es6/min/index.js.gz +0 -0
- package/es6/min/mergeable-store/index.js +1 -1
- package/es6/min/mergeable-store/index.js.gz +0 -0
- package/es6/min/mergeable-store/with-schemas/index.js +1 -1
- package/es6/min/mergeable-store/with-schemas/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-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-partykit-server/index.js +1 -1
- package/es6/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/es6/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-pglite/index.js +1 -0
- package/es6/min/persisters/persister-pglite/index.js.gz +0 -0
- package/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -0
- package/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-postgres/index.js +1 -1
- package/es6/min/persisters/persister-postgres/index.js.gz +0 -0
- package/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-postgres/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/store/index.js +1 -1
- package/es6/min/store/index.js.gz +0 -0
- package/es6/min/store/with-schemas/index.js +1 -1
- package/es6/min/store/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/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 +5 -3
- package/es6/persisters/persister-automerge/index.js +7 -4
- package/es6/persisters/persister-automerge/with-schemas/index.js +7 -4
- package/es6/persisters/persister-browser/index.js +8 -5
- package/es6/persisters/persister-browser/with-schemas/index.js +8 -5
- package/es6/persisters/persister-cr-sqlite-wasm/index.js +147 -102
- package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +147 -102
- package/es6/persisters/persister-electric-sql/index.js +147 -102
- package/es6/persisters/persister-electric-sql/with-schemas/index.js +147 -102
- package/es6/persisters/persister-expo-sqlite/index.js +147 -102
- package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +147 -102
- package/es6/persisters/persister-file/index.js +9 -5
- package/es6/persisters/persister-file/with-schemas/index.js +9 -5
- package/es6/persisters/persister-indexed-db/index.js +5 -3
- package/es6/persisters/persister-indexed-db/with-schemas/index.js +5 -3
- package/es6/persisters/persister-libsql/index.js +147 -102
- package/es6/persisters/persister-libsql/with-schemas/index.js +147 -102
- package/es6/persisters/persister-partykit-client/index.js +8 -5
- package/es6/persisters/persister-partykit-client/with-schemas/index.js +8 -5
- package/es6/persisters/persister-partykit-server/index.js +39 -24
- package/es6/persisters/persister-partykit-server/with-schemas/index.js +39 -24
- package/es6/persisters/persister-pglite/index.js +1318 -0
- package/es6/persisters/persister-pglite/with-schemas/index.js +1318 -0
- package/es6/persisters/persister-postgres/index.js +171 -92
- package/es6/persisters/persister-postgres/with-schemas/index.js +171 -92
- package/es6/persisters/persister-powersync/index.js +149 -104
- package/es6/persisters/persister-powersync/with-schemas/index.js +149 -104
- package/es6/persisters/persister-remote/index.js +8 -5
- package/es6/persisters/persister-remote/with-schemas/index.js +8 -5
- package/es6/persisters/persister-sqlite-wasm/index.js +147 -102
- package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +147 -102
- package/es6/persisters/persister-sqlite3/index.js +147 -102
- package/es6/persisters/persister-sqlite3/with-schemas/index.js +147 -102
- package/es6/persisters/persister-yjs/index.js +5 -3
- package/es6/persisters/persister-yjs/with-schemas/index.js +5 -3
- package/es6/persisters/with-schemas/index.js +5 -3
- package/es6/relationships/index.js +15 -13
- package/es6/relationships/with-schemas/index.js +15 -13
- package/es6/store/index.js +26 -19
- package/es6/store/with-schemas/index.js +26 -19
- package/es6/synchronizers/index.js +5 -3
- package/es6/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
- package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
- package/es6/synchronizers/synchronizer-local/index.js +5 -3
- package/es6/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
- package/es6/synchronizers/synchronizer-ws-client/index.js +12 -8
- package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +12 -8
- package/es6/synchronizers/synchronizer-ws-server/index.js +83 -77
- package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +83 -77
- package/es6/synchronizers/with-schemas/index.js +5 -3
- package/es6/ui-react-inspector/index.js +35 -25
- package/es6/ui-react-inspector/with-schemas/index.js +35 -25
- package/es6/with-schemas/index.js +31 -22
- package/index.js +25 -14
- package/indexes/index.js +9 -7
- package/indexes/with-schemas/index.js +9 -7
- package/mergeable-store/index.js +20 -11
- package/mergeable-store/with-schemas/index.js +20 -11
- package/metrics/index.js +9 -7
- package/metrics/with-schemas/index.js +9 -7
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/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-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-partykit-server/index.js +1 -1
- package/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -0
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -0
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/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/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/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/tools/index.js +1 -1
- package/min/tools/index.js.gz +0 -0
- package/min/tools/with-schemas/index.js +1 -1
- package/min/tools/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 +218 -110
- package/persisters/index.js +5 -3
- package/persisters/persister-automerge/index.js +7 -4
- package/persisters/persister-automerge/with-schemas/index.js +7 -4
- package/persisters/persister-browser/index.js +8 -5
- package/persisters/persister-browser/with-schemas/index.js +8 -5
- package/persisters/persister-cr-sqlite-wasm/index.js +103 -60
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +103 -60
- package/persisters/persister-electric-sql/index.js +103 -60
- package/persisters/persister-electric-sql/with-schemas/index.js +103 -60
- package/persisters/persister-expo-sqlite/index.js +103 -60
- package/persisters/persister-expo-sqlite/with-schemas/index.js +103 -60
- package/persisters/persister-file/index.js +9 -5
- package/persisters/persister-file/with-schemas/index.js +9 -5
- package/persisters/persister-indexed-db/index.js +5 -3
- package/persisters/persister-indexed-db/with-schemas/index.js +5 -3
- package/persisters/persister-libsql/index.js +103 -60
- package/persisters/persister-libsql/with-schemas/index.js +103 -60
- package/persisters/persister-partykit-client/index.js +8 -5
- package/persisters/persister-partykit-client/with-schemas/index.js +8 -5
- package/persisters/persister-partykit-server/index.js +39 -27
- package/persisters/persister-partykit-server/with-schemas/index.js +39 -27
- package/persisters/persister-pglite/index.js +992 -0
- package/persisters/persister-pglite/with-schemas/index.js +992 -0
- package/persisters/persister-postgres/index.js +126 -52
- package/persisters/persister-postgres/with-schemas/index.js +126 -52
- package/persisters/persister-powersync/index.js +105 -62
- package/persisters/persister-powersync/with-schemas/index.js +105 -62
- package/persisters/persister-remote/index.js +8 -5
- package/persisters/persister-remote/with-schemas/index.js +8 -5
- package/persisters/persister-sqlite-wasm/index.js +103 -60
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +103 -60
- package/persisters/persister-sqlite3/index.js +103 -60
- package/persisters/persister-sqlite3/with-schemas/index.js +103 -60
- package/persisters/persister-yjs/index.js +5 -3
- package/persisters/persister-yjs/with-schemas/index.js +5 -3
- package/persisters/with-schemas/index.js +5 -3
- package/readme.md +2 -2
- package/relationships/index.js +9 -7
- package/relationships/with-schemas/index.js +9 -7
- package/store/index.js +20 -11
- package/store/with-schemas/index.js +20 -11
- package/synchronizers/index.js +5 -3
- package/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
- package/synchronizers/synchronizer-local/index.js +5 -3
- package/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
- package/synchronizers/synchronizer-ws-client/index.js +12 -8
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +12 -8
- package/synchronizers/synchronizer-ws-server/index.js +34 -25
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +34 -25
- package/synchronizers/with-schemas/index.js +5 -3
- package/tools/index.js +1 -1
- package/tools/with-schemas/index.js +1 -1
- package/ui-react-inspector/index.js +29 -17
- package/ui-react-inspector/with-schemas/index.js +29 -17
- package/umd/checkpoints/index.js +9 -7
- package/umd/checkpoints/with-schemas/index.js +9 -7
- package/umd/es6/checkpoints/index.js +15 -13
- package/umd/es6/checkpoints/with-schemas/index.js +15 -13
- package/umd/es6/index.js +31 -22
- package/umd/es6/indexes/index.js +15 -13
- package/umd/es6/indexes/with-schemas/index.js +15 -13
- package/umd/es6/mergeable-store/index.js +26 -19
- package/umd/es6/mergeable-store/with-schemas/index.js +26 -19
- package/umd/es6/metrics/index.js +15 -13
- package/umd/es6/metrics/with-schemas/index.js +15 -13
- package/umd/es6/min/index.js +1 -1
- package/umd/es6/min/index.js.gz +0 -0
- package/umd/es6/min/mergeable-store/index.js +1 -1
- package/umd/es6/min/mergeable-store/index.js.gz +0 -0
- package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
- package/umd/es6/min/mergeable-store/with-schemas/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-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-partykit-server/index.js +1 -1
- package/umd/es6/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-pglite/index.js +1 -0
- package/umd/es6/min/persisters/persister-pglite/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -0
- package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-postgres/index.js +1 -1
- package/umd/es6/min/persisters/persister-postgres/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-postgres/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/store/index.js +1 -1
- package/umd/es6/min/store/index.js.gz +0 -0
- package/umd/es6/min/store/with-schemas/index.js +1 -1
- package/umd/es6/min/store/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/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 +5 -3
- package/umd/es6/persisters/persister-automerge/index.js +7 -4
- package/umd/es6/persisters/persister-automerge/with-schemas/index.js +7 -4
- package/umd/es6/persisters/persister-browser/index.js +8 -7
- package/umd/es6/persisters/persister-browser/with-schemas/index.js +8 -7
- package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +151 -106
- package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +151 -106
- package/umd/es6/persisters/persister-electric-sql/index.js +151 -106
- package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +151 -106
- package/umd/es6/persisters/persister-expo-sqlite/index.js +151 -106
- package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +151 -106
- package/umd/es6/persisters/persister-file/index.js +9 -7
- package/umd/es6/persisters/persister-file/with-schemas/index.js +9 -7
- package/umd/es6/persisters/persister-indexed-db/index.js +5 -3
- package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +5 -3
- package/umd/es6/persisters/persister-libsql/index.js +151 -106
- package/umd/es6/persisters/persister-libsql/with-schemas/index.js +151 -106
- package/umd/es6/persisters/persister-partykit-client/index.js +8 -5
- package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +8 -5
- package/umd/es6/persisters/persister-partykit-server/index.js +39 -24
- package/umd/es6/persisters/persister-partykit-server/with-schemas/index.js +39 -24
- package/umd/es6/persisters/persister-pglite/index.js +1341 -0
- package/umd/es6/persisters/persister-pglite/with-schemas/index.js +1341 -0
- package/umd/es6/persisters/persister-postgres/index.js +171 -94
- package/umd/es6/persisters/persister-postgres/with-schemas/index.js +171 -94
- package/umd/es6/persisters/persister-powersync/index.js +153 -108
- package/umd/es6/persisters/persister-powersync/with-schemas/index.js +153 -108
- package/umd/es6/persisters/persister-remote/index.js +8 -5
- package/umd/es6/persisters/persister-remote/with-schemas/index.js +8 -5
- package/umd/es6/persisters/persister-sqlite-wasm/index.js +151 -106
- package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +151 -106
- package/umd/es6/persisters/persister-sqlite3/index.js +151 -106
- package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +151 -106
- package/umd/es6/persisters/persister-yjs/index.js +5 -3
- package/umd/es6/persisters/persister-yjs/with-schemas/index.js +5 -3
- package/umd/es6/persisters/with-schemas/index.js +5 -3
- package/umd/es6/relationships/index.js +15 -13
- package/umd/es6/relationships/with-schemas/index.js +15 -13
- package/umd/es6/store/index.js +26 -19
- package/umd/es6/store/with-schemas/index.js +26 -19
- package/umd/es6/synchronizers/index.js +5 -3
- package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
- package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
- package/umd/es6/synchronizers/synchronizer-local/index.js +5 -3
- package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
- package/umd/es6/synchronizers/synchronizer-ws-client/index.js +12 -10
- package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +12 -10
- package/umd/es6/synchronizers/synchronizer-ws-server/index.js +83 -81
- package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +83 -81
- package/umd/es6/synchronizers/with-schemas/index.js +5 -3
- package/umd/es6/ui-react-inspector/index.js +35 -27
- package/umd/es6/ui-react-inspector/with-schemas/index.js +35 -27
- package/umd/es6/with-schemas/index.js +31 -22
- package/umd/index.js +25 -14
- package/umd/indexes/index.js +9 -7
- package/umd/indexes/with-schemas/index.js +9 -7
- package/umd/mergeable-store/index.js +20 -11
- package/umd/mergeable-store/with-schemas/index.js +20 -11
- package/umd/metrics/index.js +9 -7
- package/umd/metrics/with-schemas/index.js +9 -7
- package/umd/min/index.js +1 -1
- package/umd/min/index.js.gz +0 -0
- package/umd/min/mergeable-store/index.js +1 -1
- package/umd/min/mergeable-store/index.js.gz +0 -0
- package/umd/min/mergeable-store/with-schemas/index.js +1 -1
- package/umd/min/mergeable-store/with-schemas/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-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-partykit-server/index.js +1 -1
- package/umd/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/umd/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-pglite/index.js +1 -0
- package/umd/min/persisters/persister-pglite/index.js.gz +0 -0
- package/umd/min/persisters/persister-pglite/with-schemas/index.js +1 -0
- package/umd/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-postgres/index.js +1 -1
- package/umd/min/persisters/persister-postgres/index.js.gz +0 -0
- package/umd/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-postgres/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/store/index.js +1 -1
- package/umd/min/store/index.js.gz +0 -0
- package/umd/min/store/with-schemas/index.js +1 -1
- package/umd/min/store/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/tools/index.js +1 -1
- package/umd/min/tools/index.js.gz +0 -0
- package/umd/min/tools/with-schemas/index.js +1 -1
- package/umd/min/tools/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 +5 -3
- package/umd/persisters/persister-automerge/index.js +7 -4
- package/umd/persisters/persister-automerge/with-schemas/index.js +7 -4
- package/umd/persisters/persister-browser/index.js +8 -7
- package/umd/persisters/persister-browser/with-schemas/index.js +8 -7
- package/umd/persisters/persister-cr-sqlite-wasm/index.js +103 -62
- package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +103 -62
- package/umd/persisters/persister-electric-sql/index.js +103 -62
- package/umd/persisters/persister-electric-sql/with-schemas/index.js +103 -62
- package/umd/persisters/persister-expo-sqlite/index.js +103 -62
- package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +103 -62
- package/umd/persisters/persister-file/index.js +9 -7
- package/umd/persisters/persister-file/with-schemas/index.js +9 -7
- package/umd/persisters/persister-indexed-db/index.js +5 -3
- package/umd/persisters/persister-indexed-db/with-schemas/index.js +5 -3
- package/umd/persisters/persister-libsql/index.js +103 -62
- package/umd/persisters/persister-libsql/with-schemas/index.js +103 -62
- package/umd/persisters/persister-partykit-client/index.js +8 -5
- package/umd/persisters/persister-partykit-client/with-schemas/index.js +8 -5
- package/umd/persisters/persister-partykit-server/index.js +39 -27
- package/umd/persisters/persister-partykit-server/with-schemas/index.js +39 -27
- package/umd/persisters/persister-pglite/index.js +1010 -0
- package/umd/persisters/persister-pglite/with-schemas/index.js +1010 -0
- package/umd/persisters/persister-postgres/index.js +126 -54
- package/umd/persisters/persister-postgres/with-schemas/index.js +126 -54
- package/umd/persisters/persister-powersync/index.js +105 -64
- package/umd/persisters/persister-powersync/with-schemas/index.js +105 -64
- package/umd/persisters/persister-remote/index.js +8 -5
- package/umd/persisters/persister-remote/with-schemas/index.js +8 -5
- package/umd/persisters/persister-sqlite-wasm/index.js +103 -62
- package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +103 -62
- package/umd/persisters/persister-sqlite3/index.js +103 -62
- package/umd/persisters/persister-sqlite3/with-schemas/index.js +103 -62
- package/umd/persisters/persister-yjs/index.js +5 -3
- package/umd/persisters/persister-yjs/with-schemas/index.js +5 -3
- package/umd/persisters/with-schemas/index.js +5 -3
- package/umd/relationships/index.js +9 -7
- package/umd/relationships/with-schemas/index.js +9 -7
- package/umd/store/index.js +20 -11
- package/umd/store/with-schemas/index.js +20 -11
- package/umd/synchronizers/index.js +5 -3
- package/umd/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
- package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
- package/umd/synchronizers/synchronizer-local/index.js +5 -3
- package/umd/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
- package/umd/synchronizers/synchronizer-ws-client/index.js +12 -10
- package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +12 -10
- package/umd/synchronizers/synchronizer-ws-server/index.js +34 -27
- package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +34 -27
- package/umd/synchronizers/with-schemas/index.js +5 -3
- package/umd/tools/index.js +1 -1
- package/umd/tools/with-schemas/index.js +1 -1
- package/umd/ui-react-inspector/index.js +29 -19
- package/umd/ui-react-inspector/with-schemas/index.js +29 -19
- package/umd/with-schemas/index.js +25 -14
- package/with-schemas/index.js +25 -14
|
@@ -130,9 +130,11 @@ const createCustomPersister = (
|
|
|
130
130
|
await schedule(async () => {
|
|
131
131
|
try {
|
|
132
132
|
const content = await getPersisted();
|
|
133
|
-
isArray(content)
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
if (isArray(content)) {
|
|
134
|
+
setContentOrChanges(content);
|
|
135
|
+
} else {
|
|
136
|
+
errorNew(`Content is not an array ${content}`);
|
|
137
|
+
}
|
|
136
138
|
} catch (error) {
|
|
137
139
|
onIgnoredError?.(error);
|
|
138
140
|
if (initialContent) {
|
package/readme.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2></section><p><a href="https://beta.tinybase.org/guides/releases/#v5-2"><em>NEW!</em> v5.2 release</a></p><p><span id="one-with">"The One With PostgreSQL!"</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="it-s-reactive">It's <em>Reactive</em></h2><p>TinyBase lets you <a href="#register-granular-listeners">listen to changes</a> made to any part of your data. This means your app will be fast, since you only spend rendering cycles on things that change. The optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and <a href="#pre-built-reactive-components">pre-built components</a> let you easily build fully reactive UIs on top of TinyBase. You even get a built-in <a href="#set-checkpoints-for-an-undo-stack">undo stack</a>, and <a href="#an-inspector-for-your-data">developer tools</a>!</p></section><section><h2 id="it-s-database-like">It's <em>Database-Like</em></h2><p>Consumer app? Enterprise app? Or even a game? Model <a href="#start-with-a-simple-key-value-store">key-value data</a> and <a href="#level-up-to-use-tabular-data">tabular data</a> with optional typed <a href="#apply-schemas-to-tables-values">schematization</a>, whatever its data structures. There are built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, and tabular <a href="#model-table-relationships">relationships</a> APIs - and a powerful <a href="#build-complex-queries-with-tinyql">query engine</a> to select, join, filter, and group data (reactively!) without SQL.</p></section><section><h2 id="it-synchronizes">It <em>Synchronizes</em></h2><p>TinyBase has <a href="#synchronize-between-devices">native CRDT</a> support, meaning that you can deterministically <a href="https://beta.tinybase.org/guides/synchronization/">synchronize</a> and merge data across multiple sources, clients, and servers. And although TinyBase is an in-memory data store, but you can easily <a href="#persist-to-storage-databases-more">persist</a> your data to file, <a href="https://beta.tinybase.org/api/persister-browser">browser storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/persistence/database-persistence/">SQLite or PostgreSQL databases</a>, and <a href="https://beta.tinybase.org/guides/persistence/third-party-crdt-persistence/">more</a>.</p></section><section><h2 id="it-s-built-for-a-local-first-world">It's Built For A <em>Local-First</em> World</h2><p>TinyBase works anywhere that JavaScript does, but it's especially great for local-first apps: where data is stored locally on the user's device and that can be run offline. It's tiny by name, tiny by nature: just <a href="#did-we-say-tiny">5.3kB - 12.
|
|
1
|
+
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2></section><p><a href="https://beta.tinybase.org/guides/releases/#v5-2"><em>NEW!</em> v5.2 release</a></p><p><span id="one-with">"The One With PostgreSQL!"</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="it-s-reactive">It's <em>Reactive</em></h2><p>TinyBase lets you <a href="#register-granular-listeners">listen to changes</a> made to any part of your data. This means your app will be fast, since you only spend rendering cycles on things that change. The optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and <a href="#pre-built-reactive-components">pre-built components</a> let you easily build fully reactive UIs on top of TinyBase. You even get a built-in <a href="#set-checkpoints-for-an-undo-stack">undo stack</a>, and <a href="#an-inspector-for-your-data">developer tools</a>!</p></section><section><h2 id="it-s-database-like">It's <em>Database-Like</em></h2><p>Consumer app? Enterprise app? Or even a game? Model <a href="#start-with-a-simple-key-value-store">key-value data</a> and <a href="#level-up-to-use-tabular-data">tabular data</a> with optional typed <a href="#apply-schemas-to-tables-values">schematization</a>, whatever its data structures. There are built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, and tabular <a href="#model-table-relationships">relationships</a> APIs - and a powerful <a href="#build-complex-queries-with-tinyql">query engine</a> to select, join, filter, and group data (reactively!) without SQL.</p></section><section><h2 id="it-synchronizes">It <em>Synchronizes</em></h2><p>TinyBase has <a href="#synchronize-between-devices">native CRDT</a> support, meaning that you can deterministically <a href="https://beta.tinybase.org/guides/synchronization/">synchronize</a> and merge data across multiple sources, clients, and servers. And although TinyBase is an in-memory data store, but you can easily <a href="#persist-to-storage-databases-more">persist</a> your data to file, <a href="https://beta.tinybase.org/api/persister-browser">browser storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/persistence/database-persistence/">SQLite or PostgreSQL databases</a>, and <a href="https://beta.tinybase.org/guides/persistence/third-party-crdt-persistence/">more</a>.</p></section><section><h2 id="it-s-built-for-a-local-first-world">It's Built For A <em>Local-First</em> World</h2><p>TinyBase works anywhere that JavaScript does, but it's especially great for local-first apps: where data is stored locally on the user's device and that can be run offline. It's tiny by name, tiny by nature: just <a href="#did-we-say-tiny">5.3kB - 12.7kB</a> and with no dependencies - yet <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</p></section><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/postgresql.svg"> PostgreSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/expo.svg">Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg">ElectricSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/turso.svg">Turso</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/powersync.svg">PowerSync</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=GitHub&labelColor=%23d81b60&color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&logo=discord&logoColor=%23fff&label=Discord&labelColor=%233131e8&color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&logo=x&logoColor=%23fff&label=Twitter&labelColor=%23333&color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Ideas&labelColor=%23d81b60&color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Issues&labelColor=%23d81b60&color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&logo=jest&logoColor=%23fff&color=%23333&labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.2.0-beta.3" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&logo=npm&logoColor=%23fff&labelColor=%23bd0005&color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
|
|
2
2
|
|
|
3
3
|
```js
|
|
4
4
|
import {createStore} from 'tinybase';
|
|
@@ -294,4 +294,4 @@ export const createShop: typeof createShopDecl = () => {
|
|
|
294
294
|
};
|
|
295
295
|
```
|
|
296
296
|
|
|
297
|
-
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you'll only add a gzipped <em>5.3kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>12.8kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just <em>4.6kB</em>, the ui-react-dom components are another <em>2.5kB</em>, and everything is super fast. Life's easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th> </th><th>Minified .js.gz</th><th>Source .js</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">tinybase/store</a> (minimal)</th><td>5.3kB</td><td>52.5kB</td></tr><tr><th class="right">tinybase (complete)</th><td>12.8kB</td><td>130.8kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react/">ui-react</a></th><td>4.6kB</td><td>48.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react-dom/">ui-react-dom</a></th><td>2.5kB</td><td>20.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,381</td><td>2,381</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,568</td><td>2,568</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>1,007</td><td>1,007</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>951</td><td>951</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">7,079</td></tr><tr><th class="right">Assertions</th><td colspan="3">32,463</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/byCedric" target="_blank"><img title="byCedric" src="https://github.com/byCedric.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.png?size=48" width="48" height="48"></a><a href="https://github.com/mouktardev" target="_blank"><img title="mouktardev" src="https://github.com/mouktardev.png?size=48" width="48" height="48"></a><a href="https://github.com/nickmessing" target="_blank"><img title="nickmessing" src="https://github.com/nickmessing.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/nkzw-tech" target="_blank"><img title="nkzw-tech" src="https://github.com/nkzw-tech.png?size=48" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.png?size=48" width="48" height="48"></a><a href="https://github.com/primodiumxyz" target="_blank"><img title="primodiumxyz" src="https://github.com/primodiumxyz.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/ViktorZhurbin" target="_blank"><img title="ViktorZhurbin" src="https://github.com/ViktorZhurbin.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>
|
|
297
|
+
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you'll only add a gzipped <em>5.3kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>12.7kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just <em>4.6kB</em>, the ui-react-dom components are another <em>2.5kB</em>, and everything is super fast. Life's easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th> </th><th>Minified .js.gz</th><th>Source .js</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">tinybase/store</a> (minimal)</th><td>5.3kB</td><td>52.5kB</td></tr><tr><th class="right">tinybase (complete)</th><td>12.7kB</td><td>130.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react/">ui-react</a></th><td>4.6kB</td><td>48.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react-dom/">ui-react-dom</a></th><td>2.5kB</td><td>20.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,390</td><td>2,390</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,577</td><td>2,577</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>1,007</td><td>1,007</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>951</td><td>951</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">7,109</td></tr><tr><th class="right">Assertions</th><td colspan="3">32,558</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/byCedric" target="_blank"><img title="byCedric" src="https://github.com/byCedric.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.png?size=48" width="48" height="48"></a><a href="https://github.com/mouktardev" target="_blank"><img title="mouktardev" src="https://github.com/mouktardev.png?size=48" width="48" height="48"></a><a href="https://github.com/nickmessing" target="_blank"><img title="nickmessing" src="https://github.com/nickmessing.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/nkzw-tech" target="_blank"><img title="nkzw-tech" src="https://github.com/nkzw-tech.png?size=48" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.png?size=48" width="48" height="48"></a><a href="https://github.com/primodiumxyz" target="_blank"><img title="primodiumxyz" src="https://github.com/primodiumxyz.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/ViktorZhurbin" target="_blank"><img title="ViktorZhurbin" src="https://github.com/ViktorZhurbin.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>
|
package/relationships/index.js
CHANGED
|
@@ -321,13 +321,15 @@ const getListenerFunctions = (getThing) => {
|
|
|
321
321
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
322
322
|
const callWithIds = (...ids) => {
|
|
323
323
|
const index = size(ids);
|
|
324
|
-
index == size(path)
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
324
|
+
if (index == size(path)) {
|
|
325
|
+
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
326
|
+
} else if (isUndefined(path[index])) {
|
|
327
|
+
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
328
|
+
callWithIds(...ids, id2),
|
|
329
|
+
);
|
|
330
|
+
} else {
|
|
331
|
+
callWithIds(...ids, path[index]);
|
|
332
|
+
}
|
|
331
333
|
};
|
|
332
334
|
callWithIds();
|
|
333
335
|
},
|
|
@@ -321,13 +321,15 @@ const getListenerFunctions = (getThing) => {
|
|
|
321
321
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
322
322
|
const callWithIds = (...ids) => {
|
|
323
323
|
const index = size(ids);
|
|
324
|
-
index == size(path)
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
324
|
+
if (index == size(path)) {
|
|
325
|
+
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
326
|
+
} else if (isUndefined(path[index])) {
|
|
327
|
+
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
328
|
+
callWithIds(...ids, id2),
|
|
329
|
+
);
|
|
330
|
+
} else {
|
|
331
|
+
callWithIds(...ids, path[index]);
|
|
332
|
+
}
|
|
331
333
|
};
|
|
332
334
|
callWithIds();
|
|
333
335
|
},
|
package/store/index.js
CHANGED
|
@@ -131,7 +131,9 @@ const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
|
131
131
|
collForEach(map, (mapValue, id) => {
|
|
132
132
|
if (!excludeMapValue?.(mapValue, id)) {
|
|
133
133
|
const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
|
|
134
|
-
excludeObjValue?.(objValue)
|
|
134
|
+
if (!excludeObjValue?.(objValue)) {
|
|
135
|
+
obj[id] = objValue;
|
|
136
|
+
}
|
|
135
137
|
}
|
|
136
138
|
});
|
|
137
139
|
return obj;
|
|
@@ -257,13 +259,15 @@ const getListenerFunctions = (getThing) => {
|
|
|
257
259
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
258
260
|
const callWithIds = (...ids) => {
|
|
259
261
|
const index = size(ids);
|
|
260
|
-
index == size(path)
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
if (index == size(path)) {
|
|
263
|
+
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
264
|
+
} else if (isUndefined(path[index])) {
|
|
265
|
+
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
266
|
+
callWithIds(...ids, id2),
|
|
267
|
+
);
|
|
268
|
+
} else {
|
|
269
|
+
callWithIds(...ids, path[index]);
|
|
270
|
+
}
|
|
267
271
|
};
|
|
268
272
|
callWithIds();
|
|
269
273
|
},
|
|
@@ -291,11 +295,12 @@ const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
|
|
|
291
295
|
const setOrDelValue = (store, valueId, value) =>
|
|
292
296
|
isUndefined(value) ? store.delValue(valueId) : store.setValue(valueId, value);
|
|
293
297
|
|
|
298
|
+
const jsonString = JSON.stringify;
|
|
299
|
+
const jsonParse = JSON.parse;
|
|
294
300
|
const jsonStringWithMap = (obj) =>
|
|
295
|
-
|
|
301
|
+
jsonString(obj, (_key, value) =>
|
|
296
302
|
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
297
303
|
);
|
|
298
|
-
const jsonParse = JSON.parse;
|
|
299
304
|
|
|
300
305
|
const ENCODE =
|
|
301
306
|
'-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'.split(
|
|
@@ -634,7 +639,11 @@ const createStore = () => {
|
|
|
634
639
|
cellIdsChanged(tableId, rowId, cellId2, -1);
|
|
635
640
|
mapSet(row, cellId2);
|
|
636
641
|
};
|
|
637
|
-
isUndefined(defaultCell)
|
|
642
|
+
if (isUndefined(defaultCell)) {
|
|
643
|
+
delCell2(cellId);
|
|
644
|
+
} else {
|
|
645
|
+
mapForEach(row, delCell2);
|
|
646
|
+
}
|
|
638
647
|
if (collIsEmpty(row)) {
|
|
639
648
|
rowIdsChanged(tableId, rowId, -1);
|
|
640
649
|
if (collIsEmpty(mapSet(table, rowId))) {
|
|
@@ -131,7 +131,9 @@ const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
|
131
131
|
collForEach(map, (mapValue, id) => {
|
|
132
132
|
if (!excludeMapValue?.(mapValue, id)) {
|
|
133
133
|
const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
|
|
134
|
-
excludeObjValue?.(objValue)
|
|
134
|
+
if (!excludeObjValue?.(objValue)) {
|
|
135
|
+
obj[id] = objValue;
|
|
136
|
+
}
|
|
135
137
|
}
|
|
136
138
|
});
|
|
137
139
|
return obj;
|
|
@@ -257,13 +259,15 @@ const getListenerFunctions = (getThing) => {
|
|
|
257
259
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
258
260
|
const callWithIds = (...ids) => {
|
|
259
261
|
const index = size(ids);
|
|
260
|
-
index == size(path)
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
if (index == size(path)) {
|
|
263
|
+
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
264
|
+
} else if (isUndefined(path[index])) {
|
|
265
|
+
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
266
|
+
callWithIds(...ids, id2),
|
|
267
|
+
);
|
|
268
|
+
} else {
|
|
269
|
+
callWithIds(...ids, path[index]);
|
|
270
|
+
}
|
|
267
271
|
};
|
|
268
272
|
callWithIds();
|
|
269
273
|
},
|
|
@@ -291,11 +295,12 @@ const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
|
|
|
291
295
|
const setOrDelValue = (store, valueId, value) =>
|
|
292
296
|
isUndefined(value) ? store.delValue(valueId) : store.setValue(valueId, value);
|
|
293
297
|
|
|
298
|
+
const jsonString = JSON.stringify;
|
|
299
|
+
const jsonParse = JSON.parse;
|
|
294
300
|
const jsonStringWithMap = (obj) =>
|
|
295
|
-
|
|
301
|
+
jsonString(obj, (_key, value) =>
|
|
296
302
|
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
297
303
|
);
|
|
298
|
-
const jsonParse = JSON.parse;
|
|
299
304
|
|
|
300
305
|
const ENCODE =
|
|
301
306
|
'-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'.split(
|
|
@@ -634,7 +639,11 @@ const createStore = () => {
|
|
|
634
639
|
cellIdsChanged(tableId, rowId, cellId2, -1);
|
|
635
640
|
mapSet(row, cellId2);
|
|
636
641
|
};
|
|
637
|
-
isUndefined(defaultCell)
|
|
642
|
+
if (isUndefined(defaultCell)) {
|
|
643
|
+
delCell2(cellId);
|
|
644
|
+
} else {
|
|
645
|
+
mapForEach(row, delCell2);
|
|
646
|
+
}
|
|
638
647
|
if (collIsEmpty(row)) {
|
|
639
648
|
rowIdsChanged(tableId, rowId, -1);
|
|
640
649
|
if (collIsEmpty(mapSet(table, rowId))) {
|
package/synchronizers/index.js
CHANGED
|
@@ -153,9 +153,11 @@ const createCustomPersister = (
|
|
|
153
153
|
await schedule(async () => {
|
|
154
154
|
try {
|
|
155
155
|
const content = await getPersisted();
|
|
156
|
-
isArray(content)
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
if (isArray(content)) {
|
|
157
|
+
setContentOrChanges(content);
|
|
158
|
+
} else {
|
|
159
|
+
errorNew(`Content is not an array ${content}`);
|
|
160
|
+
}
|
|
159
161
|
} catch (error) {
|
|
160
162
|
onIgnoredError?.(error);
|
|
161
163
|
if (initialContent) {
|
|
@@ -153,9 +153,11 @@ const createCustomPersister = (
|
|
|
153
153
|
await schedule(async () => {
|
|
154
154
|
try {
|
|
155
155
|
const content = await getPersisted();
|
|
156
|
-
isArray(content)
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
if (isArray(content)) {
|
|
157
|
+
setContentOrChanges(content);
|
|
158
|
+
} else {
|
|
159
|
+
errorNew(`Content is not an array ${content}`);
|
|
160
|
+
}
|
|
159
161
|
} catch (error) {
|
|
160
162
|
onIgnoredError?.(error);
|
|
161
163
|
if (initialContent) {
|
|
@@ -153,9 +153,11 @@ const createCustomPersister = (
|
|
|
153
153
|
await schedule(async () => {
|
|
154
154
|
try {
|
|
155
155
|
const content = await getPersisted();
|
|
156
|
-
isArray(content)
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
if (isArray(content)) {
|
|
157
|
+
setContentOrChanges(content);
|
|
158
|
+
} else {
|
|
159
|
+
errorNew(`Content is not an array ${content}`);
|
|
160
|
+
}
|
|
159
161
|
} catch (error) {
|
|
160
162
|
onIgnoredError?.(error);
|
|
161
163
|
if (initialContent) {
|
|
@@ -156,9 +156,11 @@ const createCustomPersister = (
|
|
|
156
156
|
await schedule(async () => {
|
|
157
157
|
try {
|
|
158
158
|
const content = await getPersisted();
|
|
159
|
-
isArray(content)
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
if (isArray(content)) {
|
|
160
|
+
setContentOrChanges(content);
|
|
161
|
+
} else {
|
|
162
|
+
errorNew(`Content is not an array ${content}`);
|
|
163
|
+
}
|
|
162
164
|
} catch (error) {
|
|
163
165
|
onIgnoredError?.(error);
|
|
164
166
|
if (initialContent) {
|
|
@@ -156,9 +156,11 @@ const createCustomPersister = (
|
|
|
156
156
|
await schedule(async () => {
|
|
157
157
|
try {
|
|
158
158
|
const content = await getPersisted();
|
|
159
|
-
isArray(content)
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
if (isArray(content)) {
|
|
160
|
+
setContentOrChanges(content);
|
|
161
|
+
} else {
|
|
162
|
+
errorNew(`Content is not an array ${content}`);
|
|
163
|
+
}
|
|
162
164
|
} catch (error) {
|
|
163
165
|
onIgnoredError?.(error);
|
|
164
166
|
if (initialContent) {
|
|
@@ -53,17 +53,19 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
53
53
|
return obj[id];
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
const jsonString = JSON.stringify;
|
|
57
|
+
const jsonParse = JSON.parse;
|
|
56
58
|
const jsonStringWithUndefined = (obj) =>
|
|
57
|
-
|
|
59
|
+
jsonString(obj, (_key, value) => (value === void 0 ? UNDEFINED : value));
|
|
58
60
|
const jsonParseWithUndefined = (str) =>
|
|
59
|
-
|
|
61
|
+
jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
|
|
60
62
|
|
|
61
63
|
const MESSAGE_SEPARATOR = '\n';
|
|
62
64
|
const ifPayloadValid = (payload, then) => {
|
|
63
65
|
const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
|
|
64
|
-
splitAt !== -1
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
if (splitAt !== -1) {
|
|
67
|
+
then(slice(payload, 0, splitAt), slice(payload, splitAt + 1));
|
|
68
|
+
}
|
|
67
69
|
};
|
|
68
70
|
const receivePayload = (payload, receive) =>
|
|
69
71
|
ifPayloadValid(payload, (fromClientId, remainder) =>
|
|
@@ -177,9 +179,11 @@ const createCustomPersister = (
|
|
|
177
179
|
await schedule(async () => {
|
|
178
180
|
try {
|
|
179
181
|
const content = await getPersisted();
|
|
180
|
-
isArray(content)
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
if (isArray(content)) {
|
|
183
|
+
setContentOrChanges(content);
|
|
184
|
+
} else {
|
|
185
|
+
errorNew(`Content is not an array ${content}`);
|
|
186
|
+
}
|
|
183
187
|
} catch (error) {
|
|
184
188
|
onIgnoredError?.(error);
|
|
185
189
|
if (initialContent) {
|
|
@@ -53,17 +53,19 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
53
53
|
return obj[id];
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
const jsonString = JSON.stringify;
|
|
57
|
+
const jsonParse = JSON.parse;
|
|
56
58
|
const jsonStringWithUndefined = (obj) =>
|
|
57
|
-
|
|
59
|
+
jsonString(obj, (_key, value) => (value === void 0 ? UNDEFINED : value));
|
|
58
60
|
const jsonParseWithUndefined = (str) =>
|
|
59
|
-
|
|
61
|
+
jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
|
|
60
62
|
|
|
61
63
|
const MESSAGE_SEPARATOR = '\n';
|
|
62
64
|
const ifPayloadValid = (payload, then) => {
|
|
63
65
|
const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
|
|
64
|
-
splitAt !== -1
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
if (splitAt !== -1) {
|
|
67
|
+
then(slice(payload, 0, splitAt), slice(payload, splitAt + 1));
|
|
68
|
+
}
|
|
67
69
|
};
|
|
68
70
|
const receivePayload = (payload, receive) =>
|
|
69
71
|
ifPayloadValid(payload, (fromClientId, remainder) =>
|
|
@@ -177,9 +179,11 @@ const createCustomPersister = (
|
|
|
177
179
|
await schedule(async () => {
|
|
178
180
|
try {
|
|
179
181
|
const content = await getPersisted();
|
|
180
|
-
isArray(content)
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
if (isArray(content)) {
|
|
183
|
+
setContentOrChanges(content);
|
|
184
|
+
} else {
|
|
185
|
+
errorNew(`Content is not an array ${content}`);
|
|
186
|
+
}
|
|
183
187
|
} catch (error) {
|
|
184
188
|
onIgnoredError?.(error);
|
|
185
189
|
if (initialContent) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
2
|
const UTF8 = 'utf8';
|
|
3
3
|
const UNDEFINED = '\uFFFC';
|
|
4
|
+
const strMatch = (str, regex) => str?.match(regex);
|
|
4
5
|
|
|
5
6
|
const promise = Promise;
|
|
6
7
|
const GLOBAL = globalThis;
|
|
@@ -102,17 +103,19 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
102
103
|
},
|
|
103
104
|
);
|
|
104
105
|
|
|
106
|
+
const jsonString = JSON.stringify;
|
|
107
|
+
const jsonParse = JSON.parse;
|
|
105
108
|
const jsonStringWithUndefined = (obj) =>
|
|
106
|
-
|
|
109
|
+
jsonString(obj, (_key, value) => (value === void 0 ? UNDEFINED : value));
|
|
107
110
|
const jsonParseWithUndefined = (str) =>
|
|
108
|
-
|
|
111
|
+
jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
|
|
109
112
|
|
|
110
113
|
const MESSAGE_SEPARATOR = '\n';
|
|
111
114
|
const ifPayloadValid = (payload, then) => {
|
|
112
115
|
const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
|
|
113
|
-
splitAt !== -1
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
if (splitAt !== -1) {
|
|
117
|
+
then(slice(payload, 0, splitAt), slice(payload, splitAt + 1));
|
|
118
|
+
}
|
|
116
119
|
};
|
|
117
120
|
const receivePayload = (payload, receive) =>
|
|
118
121
|
ifPayloadValid(payload, (fromClientId, remainder) =>
|
|
@@ -209,9 +212,11 @@ const createCustomPersister = (
|
|
|
209
212
|
await schedule(async () => {
|
|
210
213
|
try {
|
|
211
214
|
const content = await getPersisted();
|
|
212
|
-
isArray(content)
|
|
213
|
-
|
|
214
|
-
|
|
215
|
+
if (isArray(content)) {
|
|
216
|
+
setContentOrChanges(content);
|
|
217
|
+
} else {
|
|
218
|
+
errorNew(`Content is not an array ${content}`);
|
|
219
|
+
}
|
|
215
220
|
} catch (error) {
|
|
216
221
|
if (initialContent) {
|
|
217
222
|
setDefaultContent(initialContent);
|
|
@@ -591,13 +596,15 @@ const getListenerFunctions = (getThing) => {
|
|
|
591
596
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
592
597
|
const callWithIds = (...ids) => {
|
|
593
598
|
const index = size(ids);
|
|
594
|
-
index == size(path)
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
599
|
+
if (index == size(path)) {
|
|
600
|
+
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
601
|
+
} else if (isUndefined(path[index])) {
|
|
602
|
+
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
603
|
+
callWithIds(...ids, id2),
|
|
604
|
+
);
|
|
605
|
+
} else {
|
|
606
|
+
callWithIds(...ids, path[index]);
|
|
607
|
+
}
|
|
601
608
|
};
|
|
602
609
|
callWithIds();
|
|
603
610
|
},
|
|
@@ -662,22 +669,22 @@ const createWsServer = (webSocketServer, createPersisterForPath) => {
|
|
|
662
669
|
ifPayloadValid(payload, (toClientId, remainder) => {
|
|
663
670
|
const forwardedPayload = createRawPayload(clientId, remainder);
|
|
664
671
|
if (toClientId === EMPTY_STRING) {
|
|
665
|
-
clientId !== SERVER_CLIENT_ID
|
|
666
|
-
|
|
667
|
-
|
|
672
|
+
if (clientId !== SERVER_CLIENT_ID) {
|
|
673
|
+
serverClient[3 /* Send */]?.(forwardedPayload);
|
|
674
|
+
}
|
|
668
675
|
mapForEach(clients, (otherClientId, otherWebSocket) =>
|
|
669
676
|
otherClientId !== clientId
|
|
670
677
|
? otherWebSocket.send(forwardedPayload)
|
|
671
678
|
: 0,
|
|
672
679
|
);
|
|
680
|
+
} else if (toClientId === SERVER_CLIENT_ID) {
|
|
681
|
+
serverClient[3 /* Send */]?.(forwardedPayload);
|
|
673
682
|
} else {
|
|
674
|
-
toClientId
|
|
675
|
-
? serverClient[3 /* Send */]?.(forwardedPayload)
|
|
676
|
-
: mapGet(clients, toClientId)?.send(forwardedPayload);
|
|
683
|
+
mapGet(clients, toClientId)?.send(forwardedPayload);
|
|
677
684
|
}
|
|
678
685
|
});
|
|
679
686
|
webSocketServer.on('connection', (webSocket, request) =>
|
|
680
|
-
ifNotUndefined(request.url
|
|
687
|
+
ifNotUndefined(strMatch(request.url, PATH_REGEX), ([, pathId]) =>
|
|
681
688
|
ifNotUndefined(request.headers['sec-websocket-key'], async (clientId) => {
|
|
682
689
|
const clients = mapEnsure(clientsByPath, pathId, mapNew);
|
|
683
690
|
const serverClient = mapEnsure(serverClientsByPath, pathId, () => [
|
|
@@ -696,9 +703,11 @@ const createWsServer = (webSocketServer, createPersisterForPath) => {
|
|
|
696
703
|
callListeners(clientIdListeners, [pathId], clientId, 1);
|
|
697
704
|
webSocket.on('message', (data) => {
|
|
698
705
|
const payload = data.toString(UTF8);
|
|
699
|
-
serverClient[0 /* State */] == 0 /* Ready */
|
|
700
|
-
|
|
701
|
-
|
|
706
|
+
if (serverClient[0 /* State */] == 0 /* Ready */) {
|
|
707
|
+
messageHandler(payload);
|
|
708
|
+
} else {
|
|
709
|
+
arrayPush(serverClient[4 /* Buffer */], payload);
|
|
710
|
+
}
|
|
702
711
|
});
|
|
703
712
|
if (serverClient[0 /* State */] == 1 /* Configured */) {
|
|
704
713
|
await startServerClient(serverClient);
|