tinybase 7.0.0-beta.1 → 7.0.0-beta.3
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.ts +1 -1
- package/@types/mergeable-store/index.d.ts +2 -1
- package/@types/mergeable-store/with-schemas/index.d.ts +5 -3
- package/@types/omni/index.d.ts +2 -0
- package/@types/omni/with-schemas/index.d.ts +2 -0
- package/@types/persisters/index.d.ts +4 -0
- package/@types/persisters/persister-automerge/index.d.ts +4 -6
- package/@types/persisters/persister-automerge/with-schemas/index.d.ts +7 -8
- package/@types/persisters/persister-browser/index.d.ts +97 -6
- package/@types/persisters/persister-browser/with-schemas/index.d.ts +113 -6
- package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -0
- package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +6 -2
- package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +5 -0
- package/@types/persisters/persister-durable-object-storage/index.d.ts +1 -2
- package/@types/persisters/persister-durable-object-storage/with-schemas/index.d.ts +3 -2
- package/@types/persisters/persister-electric-sql/index.d.ts +4 -0
- package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-expo-sqlite/index.d.ts +5 -2
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-file/index.d.ts +1 -2
- package/@types/persisters/persister-file/with-schemas/index.d.ts +3 -2
- package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +3 -2
- package/@types/persisters/persister-libsql/index.d.ts +4 -0
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +3 -2
- package/@types/persisters/persister-pglite/index.d.ts +7 -3
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +9 -3
- package/@types/persisters/persister-postgres/index.d.ts +5 -2
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-powersync/index.d.ts +4 -0
- package/@types/persisters/persister-powersync/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-react-native-mmkv/index.d.ts +117 -0
- package/@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts +133 -0
- package/@types/persisters/persister-react-native-sqlite/index.d.ts +184 -0
- package/@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts +207 -0
- package/@types/persisters/persister-remote/with-schemas/index.d.ts +3 -2
- package/@types/persisters/persister-sqlite-bun/index.d.ts +5 -2
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-sqlite-wasm/index.d.ts +6 -2
- package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +8 -2
- package/@types/persisters/persister-sqlite3/index.d.ts +5 -2
- package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +7 -2
- package/@types/persisters/persister-yjs/with-schemas/index.d.ts +3 -2
- package/@types/persisters/with-schemas/index.d.ts +4 -0
- package/@types/queries/index.d.ts +1 -1
- package/@types/queries/with-schemas/index.d.ts +4 -8
- package/@types/store/index.d.ts +34 -19
- package/@types/store/with-schemas/index.d.ts +28 -13
- package/@types/synchronizers/index.d.ts +1 -0
- package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -2
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +3 -2
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +4 -2
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +1 -0
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +7 -7
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +7 -7
- package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.ts +1 -0
- package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.ts +1 -0
- package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +1 -1
- package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +1 -1
- package/@types/synchronizers/with-schemas/index.d.ts +4 -2
- package/@types/ui-react/index.d.ts +6 -1
- package/@types/ui-react/with-schemas/index.d.ts +6 -1
- package/@types/ui-react-dom/index.d.ts +153 -20
- package/@types/ui-react-dom/with-schemas/index.d.ts +72 -20
- package/@types/ui-react-inspector/index.d.ts +8 -0
- package/@types/ui-react-inspector/with-schemas/index.d.ts +27 -1925
- package/agents.md +343 -0
- package/checkpoints/index.js +11 -6
- package/checkpoints/with-schemas/index.js +11 -6
- package/common/index.js +8 -4
- package/common/with-schemas/index.js +8 -4
- package/index.js +63 -31
- package/indexes/index.js +10 -5
- package/indexes/with-schemas/index.js +10 -5
- package/mergeable-store/index.js +54 -22
- package/mergeable-store/with-schemas/index.js +54 -22
- package/metrics/index.js +10 -5
- package/metrics/with-schemas/index.js +10 -5
- package/min/checkpoints/index.js +1 -1
- package/min/checkpoints/index.js.gz +0 -0
- package/min/checkpoints/with-schemas/index.js +1 -1
- package/min/checkpoints/with-schemas/index.js.gz +0 -0
- package/min/common/index.js +1 -1
- package/min/common/index.js.gz +0 -0
- package/min/common/with-schemas/index.js +1 -1
- package/min/common/with-schemas/index.js.gz +0 -0
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/indexes/index.js +1 -1
- package/min/indexes/index.js.gz +0 -0
- package/min/indexes/with-schemas/index.js +1 -1
- package/min/indexes/with-schemas/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/metrics/index.js +1 -1
- package/min/metrics/index.js.gz +0 -0
- package/min/metrics/with-schemas/index.js +1 -1
- package/min/metrics/with-schemas/index.js.gz +0 -0
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-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 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- 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-react-native-mmkv/index.js +1 -0
- package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -0
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -0
- package/min/persisters/persister-react-native-sqlite/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-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/with-schemas/index.js.gz +0 -0
- package/min/relationships/index.js +1 -1
- package/min/relationships/index.js.gz +0 -0
- package/min/relationships/with-schemas/index.js +1 -1
- package/min/relationships/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/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react/index.js +1 -1
- package/min/ui-react/index.js.gz +0 -0
- package/min/ui-react/with-schemas/index.js +1 -1
- package/min/ui-react/with-schemas/index.js.gz +0 -0
- package/min/ui-react-dom/index.js +1 -1
- package/min/ui-react-dom/index.js.gz +0 -0
- package/min/ui-react-dom/with-schemas/index.js +1 -1
- package/min/ui-react-dom/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/omni/index.js +2178 -1203
- package/omni/with-schemas/index.js +2178 -1203
- package/package.json +91 -11
- package/persisters/index.js +16 -10
- package/persisters/persister-automerge/index.js +15 -9
- package/persisters/persister-automerge/with-schemas/index.js +15 -9
- package/persisters/persister-browser/index.js +41 -9
- package/persisters/persister-browser/with-schemas/index.js +41 -9
- package/persisters/persister-cr-sqlite-wasm/index.js +16 -10
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +16 -10
- package/persisters/persister-durable-object-sql-storage/index.js +16 -10
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +16 -10
- package/persisters/persister-durable-object-storage/index.js +14 -8
- package/persisters/persister-durable-object-storage/with-schemas/index.js +14 -8
- package/persisters/persister-electric-sql/index.js +16 -10
- package/persisters/persister-electric-sql/with-schemas/index.js +16 -10
- package/persisters/persister-expo-sqlite/index.js +16 -10
- package/persisters/persister-expo-sqlite/with-schemas/index.js +16 -10
- package/persisters/persister-file/index.js +14 -8
- package/persisters/persister-file/with-schemas/index.js +14 -8
- package/persisters/persister-indexed-db/index.js +14 -8
- package/persisters/persister-indexed-db/with-schemas/index.js +14 -8
- package/persisters/persister-libsql/index.js +16 -10
- package/persisters/persister-libsql/with-schemas/index.js +16 -10
- package/persisters/persister-partykit-client/index.js +14 -8
- package/persisters/persister-partykit-client/with-schemas/index.js +14 -8
- package/persisters/persister-partykit-server/index.js +7 -3
- package/persisters/persister-partykit-server/with-schemas/index.js +7 -3
- package/persisters/persister-pglite/index.js +15 -9
- package/persisters/persister-pglite/with-schemas/index.js +15 -9
- package/persisters/persister-postgres/index.js +15 -9
- package/persisters/persister-postgres/with-schemas/index.js +15 -9
- package/persisters/persister-powersync/index.js +16 -10
- package/persisters/persister-powersync/with-schemas/index.js +16 -10
- package/persisters/persister-react-native-mmkv/index.js +465 -0
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +465 -0
- package/persisters/persister-react-native-sqlite/index.js +1195 -0
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +1195 -0
- package/persisters/persister-remote/index.js +16 -10
- package/persisters/persister-remote/with-schemas/index.js +16 -10
- package/persisters/persister-sqlite-bun/index.js +16 -10
- package/persisters/persister-sqlite-bun/with-schemas/index.js +16 -10
- package/persisters/persister-sqlite-wasm/index.js +16 -10
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +16 -10
- package/persisters/persister-sqlite3/index.js +16 -10
- package/persisters/persister-sqlite3/with-schemas/index.js +16 -10
- package/persisters/persister-yjs/index.js +20 -12
- package/persisters/persister-yjs/with-schemas/index.js +20 -12
- package/persisters/with-schemas/index.js +16 -10
- package/queries/index.js +20 -12
- package/queries/with-schemas/index.js +20 -12
- package/readme.md +13 -13
- package/relationships/index.js +10 -5
- package/relationships/with-schemas/index.js +10 -5
- package/releases.md +179 -41
- package/store/index.js +50 -18
- package/store/with-schemas/index.js +50 -18
- package/synchronizers/index.js +16 -10
- package/synchronizers/synchronizer-broadcast-channel/index.js +17 -11
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -11
- package/synchronizers/synchronizer-local/index.js +17 -11
- package/synchronizers/synchronizer-local/with-schemas/index.js +17 -11
- package/synchronizers/synchronizer-ws-client/index.js +16 -10
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +16 -10
- package/synchronizers/synchronizer-ws-server/index.js +16 -10
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +16 -10
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +16 -10
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +16 -10
- package/synchronizers/synchronizer-ws-server-simple/index.js +8 -4
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +8 -4
- package/synchronizers/with-schemas/index.js +16 -10
- package/ui-react/index.js +408 -374
- package/ui-react/with-schemas/index.js +408 -374
- package/ui-react-dom/index.js +883 -437
- package/ui-react-dom/with-schemas/index.js +883 -437
- package/ui-react-inspector/index.js +1761 -556
- package/ui-react-inspector/with-schemas/index.js +1761 -556
- package/with-schemas/index.js +63 -31
package/@types/common/index.d.ts
CHANGED
|
@@ -65,7 +65,7 @@ export type Callback = () => void;
|
|
|
65
65
|
* @category Parameter
|
|
66
66
|
* @since v1.0.0
|
|
67
67
|
*/
|
|
68
|
-
export type SortKey = string | number | boolean;
|
|
68
|
+
export type SortKey = string | number | boolean | null;
|
|
69
69
|
|
|
70
70
|
/**
|
|
71
71
|
* The GetNow type is used to represent a function that returns the current time
|
|
@@ -887,7 +887,7 @@ export interface MergeableStore extends Store {
|
|
|
887
887
|
*
|
|
888
888
|
* store.applyMergeableChanges([
|
|
889
889
|
* [{pets: [{fido: [{color: ['black', 'Nn1JUF----2FnHIC']}]}]}],
|
|
890
|
-
* [{open: [
|
|
890
|
+
* [{open: [undefined, 'Nn1JUF----3FnHIC']}],
|
|
891
891
|
* 1,
|
|
892
892
|
* ]);
|
|
893
893
|
* console.log(store.getTables());
|
|
@@ -1115,6 +1115,7 @@ export interface MergeableStore extends Store {
|
|
|
1115
1115
|
* ];
|
|
1116
1116
|
* ```
|
|
1117
1117
|
* @category Creation
|
|
1118
|
+
* @essential Creating stores
|
|
1118
1119
|
* @since v5.0.0
|
|
1119
1120
|
*/
|
|
1120
1121
|
export function createMergeableStore(
|
|
@@ -436,8 +436,9 @@ export type MergeableChanges<
|
|
|
436
436
|
* @category Mergeable
|
|
437
437
|
* @since v5.0.0
|
|
438
438
|
*/
|
|
439
|
-
export interface MergeableStore<
|
|
440
|
-
extends
|
|
439
|
+
export interface MergeableStore<
|
|
440
|
+
Schemas extends OptionalSchemas,
|
|
441
|
+
> extends Store<Schemas> {
|
|
441
442
|
//
|
|
442
443
|
/**
|
|
443
444
|
* The getMergeableContent method returns the full content of a
|
|
@@ -1148,7 +1149,7 @@ export interface MergeableStore<Schemas extends OptionalSchemas>
|
|
|
1148
1149
|
*
|
|
1149
1150
|
* store.applyMergeableChanges([
|
|
1150
1151
|
* [{pets: [{fido: [{color: ['black', 'Nn1JUF----2FnHIC']}]}]}],
|
|
1151
|
-
* [{open: [
|
|
1152
|
+
* [{open: [undefined, 'Nn1JUF----3FnHIC']}],
|
|
1152
1153
|
* 1,
|
|
1153
1154
|
* ]);
|
|
1154
1155
|
* console.log(store.getTables());
|
|
@@ -1607,6 +1608,7 @@ export interface MergeableStore<Schemas extends OptionalSchemas>
|
|
|
1607
1608
|
* ];
|
|
1608
1609
|
* ```
|
|
1609
1610
|
* @category Creation
|
|
1611
|
+
* @essential Creating stores
|
|
1610
1612
|
* @since v5.0.0
|
|
1611
1613
|
*/
|
|
1612
1614
|
export function createMergeableStore(
|
package/@types/omni/index.d.ts
CHANGED
|
@@ -35,6 +35,8 @@ export * from '../persisters/persister-partykit-server/index.d.ts';
|
|
|
35
35
|
export * from '../persisters/persister-pglite/index.d.ts';
|
|
36
36
|
export * from '../persisters/persister-postgres/index.d.ts';
|
|
37
37
|
export * from '../persisters/persister-powersync/index.d.ts';
|
|
38
|
+
export * from '../persisters/persister-react-native-mmkv/index.d.ts';
|
|
39
|
+
export * from '../persisters/persister-react-native-sqlite/index.d.ts';
|
|
38
40
|
export * from '../persisters/persister-remote/index.d.ts';
|
|
39
41
|
export * from '../persisters/persister-sqlite-bun/index.d.ts';
|
|
40
42
|
export * from '../persisters/persister-sqlite-wasm/index.d.ts';
|
|
@@ -34,6 +34,8 @@ export * from '../../persisters/persister-partykit-server/with-schemas/index.d.t
|
|
|
34
34
|
export * from '../../persisters/persister-pglite/with-schemas/index.d.ts';
|
|
35
35
|
export * from '../../persisters/persister-postgres/with-schemas/index.d.ts';
|
|
36
36
|
export * from '../../persisters/persister-powersync/with-schemas/index.d.ts';
|
|
37
|
+
export * from '../../persisters/persister-react-native-mmkv/with-schemas/index.d.ts';
|
|
38
|
+
export * from '../../persisters/persister-react-native-sqlite/with-schemas/index.d.ts';
|
|
37
39
|
export * from '../../persisters/persister-remote/with-schemas/index.d.ts';
|
|
38
40
|
export * from '../../persisters/persister-sqlite-bun/with-schemas/index.d.ts';
|
|
39
41
|
export * from '../../persisters/persister-sqlite-wasm/with-schemas/index.d.ts';
|
|
@@ -13,15 +13,18 @@
|
|
|
13
13
|
* |-|-|-|-|
|
|
14
14
|
* |SessionPersister|Browser session storage|Yes|Yes
|
|
15
15
|
* |LocalPersister|Browser local storage|Yes|Yes
|
|
16
|
+
* |OpfsPersister|Browser origin private file system (OPFS)|Yes|Yes
|
|
16
17
|
* |FilePersister|Local file (where possible)|Yes|Yes
|
|
17
18
|
* |IndexedDbPersister|Browser IndexedDB|Yes|No
|
|
18
19
|
* |RemotePersister|Remote server|Yes|No
|
|
20
|
+
* |ReactNativeMmkvPersister|MMKV in React Native, via [react-native-mmkv](https://github.com/mrousavy/react-native-mmkv)|Yes|Yes
|
|
19
21
|
* |DurableObjectStoragePersister|Cloudflare Durable Object (KV)|No|Yes
|
|
20
22
|
* |DurableObjectSqlStoragePersister|Cloudflare Durable Object (SQLite)|No|Yes
|
|
21
23
|
* |Sqlite3Persister|SQLite in Node, via [sqlite3](https://github.com/TryGhost/node-sqlite3)|Yes|Yes*
|
|
22
24
|
* |SqliteBunPersister| SQLite in Bun, via [bun:sqlite](https://bun.sh/docs/api/sqlite)|Yes|Yes*
|
|
23
25
|
* |SqliteWasmPersister|SQLite in a browser, via [sqlite-wasm](https://github.com/tomayac/sqlite-wasm)|Yes|Yes*
|
|
24
26
|
* |ExpoSqlitePersister|SQLite in React Native, via [expo-sqlite](https://github.com/expo/expo/tree/main/packages/expo-sqlite)|Yes|Yes*
|
|
27
|
+
* |ReactNativeSqlitePersister|SQLite in React Native, via [react-native-sqlite-storage](https://github.com/andpor/react-native-sqlite-storage)|Yes|Yes*
|
|
25
28
|
* |PostgresPersister|PostgreSQL, via [postgres](https://github.com/porsager/postgres)|Yes|Yes*
|
|
26
29
|
* |PglitePersister|PostgreSQL, via [PGlite](https://github.com/electric-sql/pglite)|Yes|Yes*
|
|
27
30
|
* |CrSqliteWasmPersister|SQLite CRDTs, via [cr-sqlite-wasm](https://github.com/vlcn-io/cr-sqlite)|Yes|No
|
|
@@ -956,6 +959,7 @@ export type DpcTabularValues = {
|
|
|
956
959
|
* sessionStorage.clear();
|
|
957
960
|
* ```
|
|
958
961
|
* @category Persister
|
|
962
|
+
* @essential Persisting stores
|
|
959
963
|
* @since v1.0.0
|
|
960
964
|
*/
|
|
961
965
|
export interface Persister<Persist extends Persists = Persists.StoreOnly> {
|
|
@@ -89,7 +89,7 @@ export interface AutomergePersister extends Persister {
|
|
|
89
89
|
* await persister.save();
|
|
90
90
|
* // Store will be saved to the document.
|
|
91
91
|
*
|
|
92
|
-
* console.log(
|
|
92
|
+
* console.log(docHandler.doc());
|
|
93
93
|
* // -> {tinybase: {t: {pets: {fido: {species: 'dog'}}}, v: {}}}
|
|
94
94
|
*
|
|
95
95
|
* await persister.destroy();
|
|
@@ -110,7 +110,6 @@ export interface AutomergePersister extends Persister {
|
|
|
110
110
|
* network: [new BroadcastChannelNetworkAdapter()],
|
|
111
111
|
* });
|
|
112
112
|
* const docHandler1 = repo1.create();
|
|
113
|
-
* await docHandler1.doc();
|
|
114
113
|
* const store1 = createStore();
|
|
115
114
|
* const persister1 = createAutomergePersister(store1, docHandler1);
|
|
116
115
|
* await persister1.startAutoLoad();
|
|
@@ -120,8 +119,7 @@ export interface AutomergePersister extends Persister {
|
|
|
120
119
|
* const repo2 = new Repo({
|
|
121
120
|
* network: [new BroadcastChannelNetworkAdapter()],
|
|
122
121
|
* });
|
|
123
|
-
* const docHandler2 = repo2.find(docHandler1.documentId);
|
|
124
|
-
* await docHandler2.doc();
|
|
122
|
+
* const docHandler2 = await repo2.find(docHandler1.documentId);
|
|
125
123
|
* const store2 = createStore();
|
|
126
124
|
* const persister2 = createAutomergePersister(store2, docHandler2);
|
|
127
125
|
* await persister2.startAutoLoad();
|
|
@@ -131,8 +129,8 @@ export interface AutomergePersister extends Persister {
|
|
|
131
129
|
* // with each other, merely for the purposes of sequentiality in this example.
|
|
132
130
|
* const syncDocsWait = async () => {
|
|
133
131
|
* await new Promise((resolve) => setTimeout(() => resolve(0), 100));
|
|
134
|
-
*
|
|
135
|
-
*
|
|
132
|
+
* docHandler1.doc();
|
|
133
|
+
* docHandler2.doc();
|
|
136
134
|
* };
|
|
137
135
|
*
|
|
138
136
|
* // Wait for the documents to synchronize in their initial state.
|
|
@@ -30,8 +30,9 @@ import type {Persister} from '../../with-schemas/index.d.ts';
|
|
|
30
30
|
* @category Persister
|
|
31
31
|
* @since v4.3.14
|
|
32
32
|
*/
|
|
33
|
-
export interface AutomergePersister<
|
|
34
|
-
extends
|
|
33
|
+
export interface AutomergePersister<
|
|
34
|
+
Schemas extends OptionalSchemas,
|
|
35
|
+
> extends Persister<Schemas> {
|
|
35
36
|
/**
|
|
36
37
|
* The getDocHandle method returns the Automerge document handler the Store is
|
|
37
38
|
* being persisted to.
|
|
@@ -104,7 +105,7 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
|
|
|
104
105
|
* await persister.save();
|
|
105
106
|
* // Store will be saved to the document.
|
|
106
107
|
*
|
|
107
|
-
* console.log(
|
|
108
|
+
* console.log(docHandler.doc());
|
|
108
109
|
* // -> {tinybase: {t: {pets: {fido: {species: 'dog'}}}, v: {}}}
|
|
109
110
|
*
|
|
110
111
|
* await persister.destroy();
|
|
@@ -125,7 +126,6 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
|
|
|
125
126
|
* network: [new BroadcastChannelNetworkAdapter()],
|
|
126
127
|
* });
|
|
127
128
|
* const docHandler1 = repo1.create();
|
|
128
|
-
* await docHandler1.doc();
|
|
129
129
|
* const store1 = createStore();
|
|
130
130
|
* const persister1 = createAutomergePersister(store1, docHandler1);
|
|
131
131
|
* await persister1.startAutoLoad();
|
|
@@ -135,8 +135,7 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
|
|
|
135
135
|
* const repo2 = new Repo({
|
|
136
136
|
* network: [new BroadcastChannelNetworkAdapter()],
|
|
137
137
|
* });
|
|
138
|
-
* const docHandler2 = repo2.find(docHandler1.documentId);
|
|
139
|
-
* await docHandler2.doc();
|
|
138
|
+
* const docHandler2 = await repo2.find(docHandler1.documentId);
|
|
140
139
|
* const store2 = createStore();
|
|
141
140
|
* const persister2 = createAutomergePersister(store2, docHandler2);
|
|
142
141
|
* await persister2.startAutoLoad();
|
|
@@ -146,8 +145,8 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
|
|
|
146
145
|
* // with each other, merely for the purposes of sequentiality in this example.
|
|
147
146
|
* const syncDocsWait = async () => {
|
|
148
147
|
* await new Promise((resolve) => setTimeout(() => resolve(0), 100));
|
|
149
|
-
*
|
|
150
|
-
*
|
|
148
|
+
* docHandler1.doc();
|
|
149
|
+
* docHandler2.doc();
|
|
151
150
|
* };
|
|
152
151
|
*
|
|
153
152
|
* // Wait for the documents to synchronize in their initial state.
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The persister-browser module of the TinyBase project lets you save and load
|
|
3
|
-
* Store data to and from browser storage
|
|
3
|
+
* Store data to and from browser storage, including the origin private file
|
|
4
|
+
* system (OPFS).
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
+
* Three entry points are provided, each of which returns a new Persister object
|
|
6
7
|
* that can load and save a Store:
|
|
7
8
|
*
|
|
8
9
|
* - The createSessionPersister function returns a Persister that uses the
|
|
9
10
|
* browser's session storage.
|
|
10
11
|
* - The createLocalPersister function returns a Persister that uses the
|
|
11
12
|
* browser's local storage.
|
|
13
|
+
* - The createOpfsPersister function returns a Persister that uses a file in
|
|
14
|
+
* an origin private file system (OPFS).
|
|
12
15
|
* @see Persistence guides
|
|
13
16
|
* @packageDocumentation
|
|
14
17
|
* @module persister-browser
|
|
@@ -31,8 +34,7 @@ import type {Persister, Persists} from '../index.d.ts';
|
|
|
31
34
|
* @category Persister
|
|
32
35
|
* @since v4.3.14
|
|
33
36
|
*/
|
|
34
|
-
export interface SessionPersister
|
|
35
|
-
extends Persister<Persists.StoreOrMergeableStore> {
|
|
37
|
+
export interface SessionPersister extends Persister<Persists.StoreOrMergeableStore> {
|
|
36
38
|
/**
|
|
37
39
|
* The getStorageName method returns the unique key of the storage location
|
|
38
40
|
* the Store is being persisted to.
|
|
@@ -72,8 +74,7 @@ export interface SessionPersister
|
|
|
72
74
|
* @category Persister
|
|
73
75
|
* @since v4.3.14
|
|
74
76
|
*/
|
|
75
|
-
export interface LocalPersister
|
|
76
|
-
extends Persister<Persists.StoreOrMergeableStore> {
|
|
77
|
+
export interface LocalPersister extends Persister<Persists.StoreOrMergeableStore> {
|
|
77
78
|
/**
|
|
78
79
|
* The getStorageName method returns the unique key of the storage location
|
|
79
80
|
* the Store is being persisted to.
|
|
@@ -134,6 +135,7 @@ export interface LocalPersister
|
|
|
134
135
|
* sessionStorage.clear();
|
|
135
136
|
* ```
|
|
136
137
|
* @category Creation
|
|
138
|
+
* @essential Persisting stores
|
|
137
139
|
* @since v1.0.0
|
|
138
140
|
*/
|
|
139
141
|
export function createSessionPersister(
|
|
@@ -176,6 +178,7 @@ export function createSessionPersister(
|
|
|
176
178
|
* localStorage.clear();
|
|
177
179
|
* ```
|
|
178
180
|
* @category Creation
|
|
181
|
+
* @essential Persisting stores
|
|
179
182
|
* @since v1.0.0
|
|
180
183
|
*/
|
|
181
184
|
export function createLocalPersister(
|
|
@@ -183,3 +186,91 @@ export function createLocalPersister(
|
|
|
183
186
|
storageName: string,
|
|
184
187
|
onIgnoredError?: (error: any) => void,
|
|
185
188
|
): LocalPersister;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* The OpfsPersister interface represents a Persister that lets you save and
|
|
192
|
+
* load Store data to and from a file in an origin private file system (OPFS).
|
|
193
|
+
*
|
|
194
|
+
* You should use the createOpfsPersister function to create an OpfsPersister
|
|
195
|
+
* object.
|
|
196
|
+
*
|
|
197
|
+
* It is a minor extension to the Persister interface and simply provides an
|
|
198
|
+
* extra getHandle method for accessing the file the Store is being
|
|
199
|
+
* persisted to.
|
|
200
|
+
* @category Persister
|
|
201
|
+
* @since v6.7.0
|
|
202
|
+
*/
|
|
203
|
+
export interface OpfsPersister extends Persister<Persists.StoreOrMergeableStore> {
|
|
204
|
+
/**
|
|
205
|
+
* The getHandle method returns the handle of the file the Store is being
|
|
206
|
+
* persisted to.
|
|
207
|
+
* @returns The handle of the file.
|
|
208
|
+
* @example
|
|
209
|
+
* This example creates a Persister object against a newly-created Store and
|
|
210
|
+
* then gets the file handle back out again.
|
|
211
|
+
*
|
|
212
|
+
* ```js
|
|
213
|
+
* import {createStore} from 'tinybase';
|
|
214
|
+
* import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
|
|
215
|
+
*
|
|
216
|
+
* const opfs = await navigator.storage.getDirectory();
|
|
217
|
+
* const handle = await opfs.getFileHandle('tinybase.json', {create: true});
|
|
218
|
+
*
|
|
219
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
220
|
+
* const persister = createOpfsPersister(store, handle);
|
|
221
|
+
*
|
|
222
|
+
* console.log(persister.getHandle().name);
|
|
223
|
+
* // -> 'tinybase.json'
|
|
224
|
+
*
|
|
225
|
+
* await persister.destroy();
|
|
226
|
+
* ```
|
|
227
|
+
* @category Getter
|
|
228
|
+
* @since v6.7.0
|
|
229
|
+
*/
|
|
230
|
+
getHandle(): FileSystemFileHandle;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* The createOpfsPersister function creates an OpfsPersister object that can
|
|
235
|
+
* persist the Store to a file in an origin private file system (OPFS).
|
|
236
|
+
*
|
|
237
|
+
* An OpfsPersister supports both regular Store and MergeableStore objects.
|
|
238
|
+
*
|
|
239
|
+
* As well as providing a reference to the Store to persist, you must provide a
|
|
240
|
+
* `handle` parameter which identifies an existing OPFS file to persist it to.
|
|
241
|
+
* @param store The Store or MergeableStore to persist.
|
|
242
|
+
* @param handle The handle of an existing OPFS file to persist the Store to.
|
|
243
|
+
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
244
|
+
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
245
|
+
* debugging persistence issues in a development environment.
|
|
246
|
+
* @returns A reference to the new OpfsPersister object.
|
|
247
|
+
* @example
|
|
248
|
+
* This example creates an OpfsPersister object and persists the Store to a
|
|
249
|
+
* local file.
|
|
250
|
+
*
|
|
251
|
+
* ```js
|
|
252
|
+
* import {createStore} from 'tinybase';
|
|
253
|
+
* import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
|
|
254
|
+
*
|
|
255
|
+
* const opfs = await navigator.storage.getDirectory();
|
|
256
|
+
* const handle = await opfs.getFileHandle('tinybase.json', {create: true});
|
|
257
|
+
*
|
|
258
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
259
|
+
* const persister = createOpfsPersister(store, handle);
|
|
260
|
+
*
|
|
261
|
+
* await persister.save();
|
|
262
|
+
* // Store JSON will be saved to the file.
|
|
263
|
+
*
|
|
264
|
+
* await persister.load();
|
|
265
|
+
* // Store JSON will be loaded from the file.
|
|
266
|
+
*
|
|
267
|
+
* await persister.destroy();
|
|
268
|
+
* ```
|
|
269
|
+
* @category Creation
|
|
270
|
+
* @since v6.7.0
|
|
271
|
+
*/
|
|
272
|
+
export function createOpfsPersister(
|
|
273
|
+
store: Store | MergeableStore,
|
|
274
|
+
handle: FileSystemFileHandle,
|
|
275
|
+
onIgnoredError?: (error: any) => void,
|
|
276
|
+
): OpfsPersister;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The persister-browser module of the TinyBase project lets you save and load
|
|
3
|
-
* Store data to and from browser storage
|
|
3
|
+
* Store data to and from browser storage, including the origin private file
|
|
4
|
+
* system (OPFS).
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
+
* Three entry points are provided, each of which returns a new Persister object
|
|
6
7
|
* that can load and save a Store:
|
|
7
8
|
*
|
|
8
9
|
* - The createSessionPersister function returns a Persister that uses the
|
|
9
10
|
* browser's session storage.
|
|
10
11
|
* - The createLocalPersister function returns a Persister that uses the
|
|
11
12
|
* browser's local storage.
|
|
13
|
+
* - The createOpfsPersister function returns a Persister that uses a file in
|
|
14
|
+
* an origin private file system (OPFS).
|
|
12
15
|
* @see Persistence guides
|
|
13
16
|
* @packageDocumentation
|
|
14
17
|
* @module persister-browser
|
|
@@ -34,8 +37,9 @@ import type {Persister, Persists} from '../../with-schemas/index.d.ts';
|
|
|
34
37
|
* @category Persister
|
|
35
38
|
* @since v4.3.14
|
|
36
39
|
*/
|
|
37
|
-
export interface SessionPersister<
|
|
38
|
-
extends
|
|
40
|
+
export interface SessionPersister<
|
|
41
|
+
Schemas extends OptionalSchemas,
|
|
42
|
+
> extends Persister<Schemas, Persists.StoreOrMergeableStore> {
|
|
39
43
|
/**
|
|
40
44
|
* The getStorageName method returns the unique key of the storage location
|
|
41
45
|
* the Store is being persisted to.
|
|
@@ -75,8 +79,9 @@ export interface SessionPersister<Schemas extends OptionalSchemas>
|
|
|
75
79
|
* @category Persister
|
|
76
80
|
* @since v4.3.14
|
|
77
81
|
*/
|
|
78
|
-
export interface LocalPersister<
|
|
79
|
-
extends
|
|
82
|
+
export interface LocalPersister<
|
|
83
|
+
Schemas extends OptionalSchemas,
|
|
84
|
+
> extends Persister<Schemas, Persists.StoreOrMergeableStore> {
|
|
80
85
|
/**
|
|
81
86
|
* The getStorageName method returns the unique key of the storage location
|
|
82
87
|
* the Store is being persisted to.
|
|
@@ -103,6 +108,51 @@ export interface LocalPersister<Schemas extends OptionalSchemas>
|
|
|
103
108
|
getStorageName(): string;
|
|
104
109
|
}
|
|
105
110
|
|
|
111
|
+
/**
|
|
112
|
+
* The OpfsPersister interface represents a Persister that lets you save and
|
|
113
|
+
* load Store data to and from a file in an origin private file system (OPFS).
|
|
114
|
+
*
|
|
115
|
+
* You should use the createOpfsPersister function to create an OpfsPersister
|
|
116
|
+
* object.
|
|
117
|
+
*
|
|
118
|
+
* It is a minor extension to the Persister interface and simply provides an
|
|
119
|
+
* extra getHandle method for accessing the file the Store is being
|
|
120
|
+
* persisted to.
|
|
121
|
+
* @category Persister
|
|
122
|
+
* @since v6.7.0
|
|
123
|
+
*/
|
|
124
|
+
export interface OpfsPersister<
|
|
125
|
+
Schemas extends OptionalSchemas,
|
|
126
|
+
> extends Persister<Schemas, Persists.StoreOrMergeableStore> {
|
|
127
|
+
/**
|
|
128
|
+
* The getHandle method returns the handle of the file the Store is being
|
|
129
|
+
* persisted to.
|
|
130
|
+
* @returns The handle of the file.
|
|
131
|
+
* @example
|
|
132
|
+
* This example creates a Persister object against a newly-created Store and
|
|
133
|
+
* then gets the file handle back out again.
|
|
134
|
+
*
|
|
135
|
+
* ```js
|
|
136
|
+
* import {createStore} from 'tinybase';
|
|
137
|
+
* import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
|
|
138
|
+
*
|
|
139
|
+
* const opfs = await navigator.storage.getDirectory();
|
|
140
|
+
* const handle = await opfs.getFileHandle('tinybase.json', {create: true});
|
|
141
|
+
*
|
|
142
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
143
|
+
* const persister = createOpfsPersister(store, handle);
|
|
144
|
+
*
|
|
145
|
+
* console.log(persister.getHandle().name);
|
|
146
|
+
* // -> 'tinybase.json'
|
|
147
|
+
*
|
|
148
|
+
* await persister.destroy();
|
|
149
|
+
* ```
|
|
150
|
+
* @category Getter
|
|
151
|
+
* @since v6.7.0
|
|
152
|
+
*/
|
|
153
|
+
getHandle(): string;
|
|
154
|
+
}
|
|
155
|
+
|
|
106
156
|
/**
|
|
107
157
|
* The createSessionPersister function creates a SessionPersister object that
|
|
108
158
|
* can persist the Store to the browser's session storage.
|
|
@@ -147,6 +197,7 @@ export interface LocalPersister<Schemas extends OptionalSchemas>
|
|
|
147
197
|
* sessionStorage.clear();
|
|
148
198
|
* ```
|
|
149
199
|
* @category Creation
|
|
200
|
+
* @essential Persisting stores
|
|
150
201
|
* @since v1.0.0
|
|
151
202
|
*/
|
|
152
203
|
export function createSessionPersister<Schemas extends OptionalSchemas>(
|
|
@@ -199,6 +250,7 @@ export function createSessionPersister<Schemas extends OptionalSchemas>(
|
|
|
199
250
|
* localStorage.clear();
|
|
200
251
|
* ```
|
|
201
252
|
* @category Creation
|
|
253
|
+
* @essential Persisting stores
|
|
202
254
|
* @since v1.0.0
|
|
203
255
|
*/
|
|
204
256
|
export function createLocalPersister<Schemas extends OptionalSchemas>(
|
|
@@ -206,3 +258,58 @@ export function createLocalPersister<Schemas extends OptionalSchemas>(
|
|
|
206
258
|
storageName: string,
|
|
207
259
|
onIgnoredError?: (error: any) => void,
|
|
208
260
|
): LocalPersister<Schemas>;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* The createOpfsPersister function creates an OpfsPersister object that can
|
|
264
|
+
* persist the Store to a file in an origin private file system (OPFS).
|
|
265
|
+
*
|
|
266
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
267
|
+
*
|
|
268
|
+
* ```ts override
|
|
269
|
+
* createOpfsPersister(
|
|
270
|
+
* store: Store | MergeableStore,
|
|
271
|
+
* handle: FileSystemFileHandle,
|
|
272
|
+
* onIgnoredError?: (error: any) => void,
|
|
273
|
+
* ): OpfsPersister;
|
|
274
|
+
* ```
|
|
275
|
+
*
|
|
276
|
+
* An OpfsPersister supports both regular Store and MergeableStore objects.
|
|
277
|
+
*
|
|
278
|
+
* As well as providing a reference to the Store to persist, you must provide a
|
|
279
|
+
* `handle` parameter which identifies an existing OPFS file to persist it to.
|
|
280
|
+
* @param store The Store or MergeableStore to persist.
|
|
281
|
+
* @param handle The handle of an existing OPFS file to persist the Store to.
|
|
282
|
+
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
283
|
+
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
284
|
+
* debugging persistence issues in a development environment.
|
|
285
|
+
* @returns A reference to the new OpfsPersister object.
|
|
286
|
+
* @example
|
|
287
|
+
* This example creates an OpfsPersister object and persists the Store to a
|
|
288
|
+
* local file.
|
|
289
|
+
*
|
|
290
|
+
* ```js
|
|
291
|
+
* import {createStore} from 'tinybase';
|
|
292
|
+
* import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
|
|
293
|
+
*
|
|
294
|
+
* const opfs = await navigator.storage.getDirectory();
|
|
295
|
+
* const handle = await opfs.getFileHandle('tinybase.json', {create: true});
|
|
296
|
+
*
|
|
297
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
298
|
+
* const persister = createOpfsPersister(store, handle);
|
|
299
|
+
*
|
|
300
|
+
* await persister.save();
|
|
301
|
+
* // Store JSON will be saved to the file.
|
|
302
|
+
*
|
|
303
|
+
* await persister.load();
|
|
304
|
+
* // Store JSON will be loaded from the file.
|
|
305
|
+
*
|
|
306
|
+
* await persister.destroy();
|
|
307
|
+
* ```
|
|
308
|
+
* @category Creation
|
|
309
|
+
* @since v6.7.0
|
|
310
|
+
*/
|
|
311
|
+
export function createOpfsPersister<Schemas extends OptionalSchemas>(
|
|
312
|
+
store: Store<Schemas> | MergeableStore<Schemas>,
|
|
313
|
+
handle: FileSystemFileHandle,
|
|
314
|
+
onIgnoredError?: (error: any) => void,
|
|
315
|
+
): OpfsPersister<Schemas>;
|
|
@@ -75,6 +75,10 @@ export interface CrSqliteWasmPersister extends Persister {
|
|
|
75
75
|
*
|
|
76
76
|
* See the documentation for the DpcJson and DpcTabular types for more
|
|
77
77
|
* information on how both of those modes can be configured.
|
|
78
|
+
*
|
|
79
|
+
* Note: When using tabular mode, SQL NULL values are loaded as TinyBase null
|
|
80
|
+
* values, making tables dense (every Row has every Cell). See the Database
|
|
81
|
+
* Persistence guide for details.
|
|
78
82
|
* @param store The Store to persist.
|
|
79
83
|
* @param db The database instance that was returned from `crSqlite3.open(...)`.
|
|
80
84
|
* @param configOrStoreTableName A DatabasePersisterConfig to configure the
|
|
@@ -30,8 +30,9 @@ import type {
|
|
|
30
30
|
* @category Persister
|
|
31
31
|
* @since v4.3.14
|
|
32
32
|
*/
|
|
33
|
-
export interface CrSqliteWasmPersister<
|
|
34
|
-
extends
|
|
33
|
+
export interface CrSqliteWasmPersister<
|
|
34
|
+
Schemas extends OptionalSchemas,
|
|
35
|
+
> extends Persister<Schemas> {
|
|
35
36
|
/**
|
|
36
37
|
* The getDb method returns a reference to the database instance the Store is
|
|
37
38
|
* being persisted to.
|
|
@@ -94,6 +95,10 @@ export interface CrSqliteWasmPersister<Schemas extends OptionalSchemas>
|
|
|
94
95
|
*
|
|
95
96
|
* See the documentation for the DpcJson and DpcTabular types for more
|
|
96
97
|
* information on how both of those modes can be configured.
|
|
98
|
+
*
|
|
99
|
+
* Note: When using tabular mode, SQL NULL values are loaded as TinyBase null
|
|
100
|
+
* values, making tables dense (every Row has every Cell). See the Database
|
|
101
|
+
* Persistence guide for details.
|
|
97
102
|
* @param store The Store to persist.
|
|
98
103
|
* @param db The database instance that was returned from `crSqlite3.open(...)`.
|
|
99
104
|
* @param configOrStoreTableName A DatabasePersisterConfig to configure the
|
|
@@ -139,8 +139,7 @@ export type DurableObjectSqlDatabasePersisterConfig = DpcJson | DpcFragmented;
|
|
|
139
139
|
* @category Persister
|
|
140
140
|
* @since v6.3.0
|
|
141
141
|
*/
|
|
142
|
-
export interface DurableObjectSqlStoragePersister
|
|
143
|
-
extends Persister<Persists.MergeableStoreOnly> {
|
|
142
|
+
export interface DurableObjectSqlStoragePersister extends Persister<Persists.MergeableStoreOnly> {
|
|
144
143
|
/**
|
|
145
144
|
* The getSqlStorage method returns a reference to the SQL storage that the
|
|
146
145
|
* Store is being persisted to.
|
|
@@ -234,6 +233,10 @@ export interface DurableObjectSqlStoragePersister
|
|
|
234
233
|
* See the documentation for the DpcJson, DpcFragmented, and DpcTabular types
|
|
235
234
|
* for more information on how all of those modes can be configured.
|
|
236
235
|
*
|
|
236
|
+
* Note: When using tabular mode, SQL NULL values are loaded as TinyBase null
|
|
237
|
+
* values, making tables dense (every Row has every Cell). See the Database
|
|
238
|
+
* Persistence guide for details.
|
|
239
|
+
*
|
|
237
240
|
* As well as providing a reference to the Store or MergeableStore to persist,
|
|
238
241
|
* you must provide a `sqlStorage` parameter which identifies the Durable Object
|
|
239
242
|
* SQLite storage to persist it to.
|
|
@@ -337,6 +340,7 @@ export interface DurableObjectSqlStoragePersister
|
|
|
337
340
|
* }
|
|
338
341
|
* ```
|
|
339
342
|
* @category Creation
|
|
343
|
+
* @essential Persisting stores
|
|
340
344
|
* @since v6.3.0
|
|
341
345
|
*/
|
|
342
346
|
export function createDurableObjectSqlStoragePersister(
|
|
@@ -263,6 +263,10 @@ export interface DurableObjectSqlStoragePersister<
|
|
|
263
263
|
* See the documentation for the DpcJson, DpcFragmented, and DpcTabular types
|
|
264
264
|
* for more information on how all of those modes can be configured.
|
|
265
265
|
*
|
|
266
|
+
* Note: When using tabular mode, SQL NULL values are loaded as TinyBase null
|
|
267
|
+
* values, making tables dense (every Row has every Cell). See the Database
|
|
268
|
+
* Persistence guide for details.
|
|
269
|
+
*
|
|
266
270
|
* As well as providing a reference to the Store or MergeableStore to persist,
|
|
267
271
|
* you must provide a `sqlStorage` parameter which identifies the Durable Object
|
|
268
272
|
* SQLite storage to persist it to.
|
|
@@ -366,6 +370,7 @@ export interface DurableObjectSqlStoragePersister<
|
|
|
366
370
|
* }
|
|
367
371
|
* ```
|
|
368
372
|
* @category Creation
|
|
373
|
+
* @essential Persisting stores
|
|
369
374
|
* @since v6.3.0
|
|
370
375
|
*/
|
|
371
376
|
export function createDurableObjectSqlStoragePersister<
|
|
@@ -25,8 +25,7 @@ import type {Persister, Persists} from '../index.d.ts';
|
|
|
25
25
|
* @category Persister
|
|
26
26
|
* @since v5.4.0
|
|
27
27
|
*/
|
|
28
|
-
export interface DurableObjectStoragePersister
|
|
29
|
-
extends Persister<Persists.MergeableStoreOnly> {
|
|
28
|
+
export interface DurableObjectStoragePersister extends Persister<Persists.MergeableStoreOnly> {
|
|
30
29
|
/**
|
|
31
30
|
* The getStorage method returns a reference to the storage that the Store is
|
|
32
31
|
* being persisted to.
|
|
@@ -26,8 +26,9 @@ import type {Persister, Persists} from '../../with-schemas/index.d.ts';
|
|
|
26
26
|
* @category Persister
|
|
27
27
|
* @since v5.4.0
|
|
28
28
|
*/
|
|
29
|
-
export interface DurableObjectStoragePersister<
|
|
30
|
-
extends
|
|
29
|
+
export interface DurableObjectStoragePersister<
|
|
30
|
+
Schemas extends OptionalSchemas,
|
|
31
|
+
> extends Persister<Schemas, Persists.MergeableStoreOnly> {
|
|
31
32
|
/**
|
|
32
33
|
* The getStorage method returns a reference to the storage that the Store is
|
|
33
34
|
* being persisted to.
|
|
@@ -83,6 +83,10 @@ export interface ElectricSqlPersister extends Persister {
|
|
|
83
83
|
*
|
|
84
84
|
* See the documentation for the DpcJson and DpcTabular types for more
|
|
85
85
|
* information on how both of those modes can be configured.
|
|
86
|
+
*
|
|
87
|
+
* Note: When using tabular mode, SQL NULL values are loaded as TinyBase null
|
|
88
|
+
* values, making tables dense (every Row has every Cell). See the Database
|
|
89
|
+
* Persistence guide for details.
|
|
86
90
|
* @param store The Store to persist.
|
|
87
91
|
* @param electricClient The Electric client that was returned from `await
|
|
88
92
|
* electrify(...)`.
|
|
@@ -30,8 +30,9 @@ import type {
|
|
|
30
30
|
* @category Persister
|
|
31
31
|
* @since v4.6.0
|
|
32
32
|
*/
|
|
33
|
-
export interface ElectricSqlPersister<
|
|
34
|
-
extends
|
|
33
|
+
export interface ElectricSqlPersister<
|
|
34
|
+
Schemas extends OptionalSchemas,
|
|
35
|
+
> extends Persister<Schemas> {
|
|
35
36
|
/**
|
|
36
37
|
* The getElectricClient method returns a reference to the Electric client the
|
|
37
38
|
* Store is being persisted to.
|
|
@@ -102,6 +103,10 @@ export interface ElectricSqlPersister<Schemas extends OptionalSchemas>
|
|
|
102
103
|
*
|
|
103
104
|
* See the documentation for the DpcJson and DpcTabular types for more
|
|
104
105
|
* information on how both of those modes can be configured.
|
|
106
|
+
*
|
|
107
|
+
* Note: When using tabular mode, SQL NULL values are loaded as TinyBase null
|
|
108
|
+
* values, making tables dense (every Row has every Cell). See the Database
|
|
109
|
+
* Persistence guide for details.
|
|
105
110
|
* @param store The Store to persist.
|
|
106
111
|
* @param electricClient The Electric client that was returned from `await
|
|
107
112
|
* electrify(...)`.
|