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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinybase",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.3",
|
|
4
4
|
"author": "jamesgpearce",
|
|
5
5
|
"repository": "github:tinyplex/tinybase",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,23 +22,25 @@
|
|
|
22
22
|
"sideEffects": false,
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"@automerge/automerge-repo": "^1.2.1",
|
|
25
|
-
"@cloudflare/workers-types": "^4.
|
|
26
|
-
"@electric-sql/pglite": "^0.
|
|
27
|
-
"@libsql/client": "^0.15.
|
|
28
|
-
"@powersync/common": "^1.
|
|
29
|
-
"@sqlite.org/sqlite-wasm": "^3.50.
|
|
25
|
+
"@cloudflare/workers-types": "^4.20251202.0",
|
|
26
|
+
"@electric-sql/pglite": "^0.3.14",
|
|
27
|
+
"@libsql/client": "^0.15.15",
|
|
28
|
+
"@powersync/common": "^1.43.1",
|
|
29
|
+
"@sqlite.org/sqlite-wasm": "^3.50.4-build1",
|
|
30
30
|
"@vlcn.io/crsqlite-wasm": "^0.16.0",
|
|
31
|
-
"bun": "^1.
|
|
31
|
+
"bun": "^1.3.3",
|
|
32
32
|
"electric-sql": "^0.12.1",
|
|
33
|
-
"expo": "^
|
|
34
|
-
"expo-sqlite": "^
|
|
33
|
+
"expo": "^54.0.10",
|
|
34
|
+
"expo-sqlite": "^16.0.9",
|
|
35
35
|
"partykit": "^0.0.115",
|
|
36
|
-
"partysocket": "^1.1.
|
|
36
|
+
"partysocket": "^1.1.6",
|
|
37
37
|
"postgres": "^3.4.7",
|
|
38
38
|
"react": "^19.0.0",
|
|
39
39
|
"react-dom": "^19.0.0",
|
|
40
|
+
"react-native-mmkv": "4.0.0",
|
|
41
|
+
"react-native-sqlite-storage": "^6.0.1",
|
|
40
42
|
"sqlite3": "^5.1.7",
|
|
41
|
-
"ws": "^8.18.
|
|
43
|
+
"ws": "^8.18.3",
|
|
42
44
|
"yjs": "^13.6.27"
|
|
43
45
|
},
|
|
44
46
|
"peerDependenciesMeta": {
|
|
@@ -90,6 +92,12 @@
|
|
|
90
92
|
"react-dom": {
|
|
91
93
|
"optional": true
|
|
92
94
|
},
|
|
95
|
+
"react-native-sqlite-storage": {
|
|
96
|
+
"optional": true
|
|
97
|
+
},
|
|
98
|
+
"react-native-mmkv": {
|
|
99
|
+
"optional": true
|
|
100
|
+
},
|
|
93
101
|
"sqlite3": {
|
|
94
102
|
"optional": true
|
|
95
103
|
},
|
|
@@ -242,6 +250,18 @@
|
|
|
242
250
|
"persisters/persister-powersync/with-schemas": [
|
|
243
251
|
"./@types/persisters/persister-powersync/with-schemas/index.d.ts"
|
|
244
252
|
],
|
|
253
|
+
"persisters/persister-react-native-mmkv": [
|
|
254
|
+
"./@types/persisters/persister-react-native-mmkv/index.d.ts"
|
|
255
|
+
],
|
|
256
|
+
"persisters/persister-react-native-mmkv/with-schemas": [
|
|
257
|
+
"./@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts"
|
|
258
|
+
],
|
|
259
|
+
"persisters/persister-react-native-sqlite": [
|
|
260
|
+
"./@types/persisters/persister-react-native-sqlite/index.d.ts"
|
|
261
|
+
],
|
|
262
|
+
"persisters/persister-react-native-sqlite/with-schemas": [
|
|
263
|
+
"./@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts"
|
|
264
|
+
],
|
|
245
265
|
"persisters/persister-remote": [
|
|
246
266
|
"./@types/persisters/persister-remote/index.d.ts"
|
|
247
267
|
],
|
|
@@ -488,6 +508,18 @@
|
|
|
488
508
|
"min/persisters/persister-powersync/with-schemas": [
|
|
489
509
|
"./@types/persisters/persister-powersync/with-schemas/index.d.ts"
|
|
490
510
|
],
|
|
511
|
+
"min/persisters/persister-react-native-mmkv": [
|
|
512
|
+
"./@types/persisters/persister-react-native-mmkv/index.d.ts"
|
|
513
|
+
],
|
|
514
|
+
"min/persisters/persister-react-native-mmkv/with-schemas": [
|
|
515
|
+
"./@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts"
|
|
516
|
+
],
|
|
517
|
+
"min/persisters/persister-react-native-sqlite": [
|
|
518
|
+
"./@types/persisters/persister-react-native-sqlite/index.d.ts"
|
|
519
|
+
],
|
|
520
|
+
"min/persisters/persister-react-native-sqlite/with-schemas": [
|
|
521
|
+
"./@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts"
|
|
522
|
+
],
|
|
491
523
|
"min/persisters/persister-remote": [
|
|
492
524
|
"./@types/persisters/persister-remote/index.d.ts"
|
|
493
525
|
],
|
|
@@ -875,6 +907,30 @@
|
|
|
875
907
|
"default": "./persisters/persister-powersync/index.js"
|
|
876
908
|
}
|
|
877
909
|
},
|
|
910
|
+
"./persisters/persister-react-native-mmkv": {
|
|
911
|
+
"default": {
|
|
912
|
+
"types": "./@types/persisters/persister-react-native-mmkv/index.d.ts",
|
|
913
|
+
"default": "./persisters/persister-react-native-mmkv/index.js"
|
|
914
|
+
}
|
|
915
|
+
},
|
|
916
|
+
"./persisters/persister-react-native-mmkv/with-schemas": {
|
|
917
|
+
"default": {
|
|
918
|
+
"types": "./@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts",
|
|
919
|
+
"default": "./persisters/persister-react-native-mmkv/index.js"
|
|
920
|
+
}
|
|
921
|
+
},
|
|
922
|
+
"./persisters/persister-react-native-sqlite": {
|
|
923
|
+
"default": {
|
|
924
|
+
"types": "./@types/persisters/persister-react-native-sqlite/index.d.ts",
|
|
925
|
+
"default": "./persisters/persister-react-native-sqlite/index.js"
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
"./persisters/persister-react-native-sqlite/with-schemas": {
|
|
929
|
+
"default": {
|
|
930
|
+
"types": "./@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts",
|
|
931
|
+
"default": "./persisters/persister-react-native-sqlite/index.js"
|
|
932
|
+
}
|
|
933
|
+
},
|
|
878
934
|
"./persisters/persister-remote": {
|
|
879
935
|
"default": {
|
|
880
936
|
"types": "./@types/persisters/persister-remote/index.d.ts",
|
|
@@ -1367,6 +1423,30 @@
|
|
|
1367
1423
|
"default": "./min/persisters/persister-powersync/index.js"
|
|
1368
1424
|
}
|
|
1369
1425
|
},
|
|
1426
|
+
"./min/persisters/persister-react-native-mmkv": {
|
|
1427
|
+
"default": {
|
|
1428
|
+
"types": "./@types/persisters/persister-react-native-mmkv/index.d.ts",
|
|
1429
|
+
"default": "./min/persisters/persister-react-native-mmkv/index.js"
|
|
1430
|
+
}
|
|
1431
|
+
},
|
|
1432
|
+
"./min/persisters/persister-react-native-mmkv/with-schemas": {
|
|
1433
|
+
"default": {
|
|
1434
|
+
"types": "./@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts",
|
|
1435
|
+
"default": "./min/persisters/persister-react-native-mmkv/index.js"
|
|
1436
|
+
}
|
|
1437
|
+
},
|
|
1438
|
+
"./min/persisters/persister-react-native-sqlite": {
|
|
1439
|
+
"default": {
|
|
1440
|
+
"types": "./@types/persisters/persister-react-native-sqlite/index.d.ts",
|
|
1441
|
+
"default": "./min/persisters/persister-react-native-sqlite/index.js"
|
|
1442
|
+
}
|
|
1443
|
+
},
|
|
1444
|
+
"./min/persisters/persister-react-native-sqlite/with-schemas": {
|
|
1445
|
+
"default": {
|
|
1446
|
+
"types": "./@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts",
|
|
1447
|
+
"default": "./min/persisters/persister-react-native-sqlite/index.js"
|
|
1448
|
+
}
|
|
1449
|
+
},
|
|
1370
1450
|
"./min/persisters/persister-remote": {
|
|
1371
1451
|
"default": {
|
|
1372
1452
|
"types": "./@types/persisters/persister-remote/index.d.ts",
|
package/persisters/index.js
CHANGED
|
@@ -13,15 +13,21 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
13
13
|
str.replace(searchValue, replaceValue);
|
|
14
14
|
|
|
15
15
|
const promise = Promise;
|
|
16
|
+
const getIfNotFunction =
|
|
17
|
+
(predicate = isNullish) =>
|
|
18
|
+
(value, then, otherwise) =>
|
|
19
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
16
20
|
const GLOBAL = globalThis;
|
|
17
21
|
const THOUSAND = 1e3;
|
|
18
22
|
const startInterval = (callback, sec, immediate) => {
|
|
19
23
|
return setInterval(callback, sec * THOUSAND);
|
|
20
24
|
};
|
|
21
25
|
const stopInterval = clearInterval;
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
26
|
+
const isNullish = (thing) => thing == null;
|
|
27
|
+
const isUndefined = (thing) => thing === void 0;
|
|
28
|
+
const isNull = (thing) => thing === null;
|
|
29
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
30
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
25
31
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
26
32
|
const isArray = (thing) => Array.isArray(thing);
|
|
27
33
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -61,12 +67,12 @@ const object = Object;
|
|
|
61
67
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
62
68
|
const objEntries = object.entries;
|
|
63
69
|
const isObject = (obj) =>
|
|
64
|
-
!
|
|
65
|
-
|
|
70
|
+
!isNullish(obj) &&
|
|
71
|
+
ifNotNullish(
|
|
66
72
|
getPrototypeOf(obj),
|
|
67
73
|
(objPrototype) =>
|
|
68
74
|
objPrototype == object.prototype ||
|
|
69
|
-
|
|
75
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
70
76
|
|
|
71
77
|
/* istanbul ignore next */
|
|
72
78
|
() => true,
|
|
@@ -95,7 +101,7 @@ const mapForEach = (map, cb) =>
|
|
|
95
101
|
const mapMap = (coll, cb) =>
|
|
96
102
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
97
103
|
const mapSet = (map, key, value) =>
|
|
98
|
-
|
|
104
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
99
105
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
100
106
|
if (!collHas(map, key)) {
|
|
101
107
|
mapSet(map, key, getDefaultValue());
|
|
@@ -206,7 +212,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
206
212
|
const index = size(ids);
|
|
207
213
|
if (index == size(path)) {
|
|
208
214
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
209
|
-
} else if (
|
|
215
|
+
} else if (isNull(path[index])) {
|
|
210
216
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
211
217
|
callWithIds(...ids, id2),
|
|
212
218
|
);
|
|
@@ -579,7 +585,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
579
585
|
0,
|
|
580
586
|
objSize(defaultObj),
|
|
581
587
|
);
|
|
582
|
-
if (!
|
|
588
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
583
589
|
then(id, defaultedConfig[0]);
|
|
584
590
|
mapSet(configMap, id, defaultedConfig);
|
|
585
591
|
}
|
|
@@ -1306,7 +1312,7 @@ const createCustomSqlitePersister = (
|
|
|
1306
1312
|
` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
1307
1313
|
);
|
|
1308
1314
|
if (d != dataVersion || s != schemaVersion || c != totalChanges) {
|
|
1309
|
-
if (dataVersion
|
|
1315
|
+
if (!isNullish(dataVersion)) {
|
|
1310
1316
|
listener();
|
|
1311
1317
|
}
|
|
1312
1318
|
dataVersion = d;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
const TINYBASE = 'tinybase';
|
|
2
2
|
const EMPTY_STRING = '';
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const getIfNotFunction =
|
|
5
|
+
(predicate = isNullish) =>
|
|
6
|
+
(value, then, otherwise) =>
|
|
7
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
8
|
+
const isNullish = (thing) => thing == null;
|
|
9
|
+
const isUndefined = (thing) => thing === void 0;
|
|
10
|
+
const isNull = (thing) => thing === null;
|
|
11
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
12
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
7
13
|
const isArray = (thing) => Array.isArray(thing);
|
|
8
14
|
const size = (arrayOrString) => arrayOrString.length;
|
|
9
15
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -29,12 +35,12 @@ const object = Object;
|
|
|
29
35
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
30
36
|
const objEntries = object.entries;
|
|
31
37
|
const isObject = (obj) =>
|
|
32
|
-
!
|
|
33
|
-
|
|
38
|
+
!isNullish(obj) &&
|
|
39
|
+
ifNotNullish(
|
|
34
40
|
getPrototypeOf(obj),
|
|
35
41
|
(objPrototype) =>
|
|
36
42
|
objPrototype == object.prototype ||
|
|
37
|
-
|
|
43
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
38
44
|
|
|
39
45
|
/* istanbul ignore next */
|
|
40
46
|
() => true,
|
|
@@ -70,7 +76,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
70
76
|
const mapNew = (entries) => new Map(entries);
|
|
71
77
|
const mapGet = (map, key) => map?.get(key);
|
|
72
78
|
const mapSet = (map, key, value) =>
|
|
73
|
-
|
|
79
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
74
80
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
75
81
|
if (!collHas(map, key)) {
|
|
76
82
|
mapSet(map, key, getDefaultValue());
|
|
@@ -181,7 +187,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
181
187
|
const index = size(ids);
|
|
182
188
|
if (index == size(path)) {
|
|
183
189
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
184
|
-
} else if (
|
|
190
|
+
} else if (isNull(path[index])) {
|
|
185
191
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
186
192
|
callWithIds(...ids, id2),
|
|
187
193
|
);
|
|
@@ -534,7 +540,7 @@ const createAutomergePersister = (
|
|
|
534
540
|
) => {
|
|
535
541
|
docHandle.change((doc) => objEnsure(doc, docObjName, objNew));
|
|
536
542
|
const getPersisted = async () => {
|
|
537
|
-
const doc =
|
|
543
|
+
const doc = docHandle.doc();
|
|
538
544
|
return objSize(doc?.[docObjName]) == 2
|
|
539
545
|
? getDocContent(doc, docObjName)
|
|
540
546
|
: void 0;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
const TINYBASE = 'tinybase';
|
|
2
2
|
const EMPTY_STRING = '';
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const getIfNotFunction =
|
|
5
|
+
(predicate = isNullish) =>
|
|
6
|
+
(value, then, otherwise) =>
|
|
7
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
8
|
+
const isNullish = (thing) => thing == null;
|
|
9
|
+
const isUndefined = (thing) => thing === void 0;
|
|
10
|
+
const isNull = (thing) => thing === null;
|
|
11
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
12
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
7
13
|
const isArray = (thing) => Array.isArray(thing);
|
|
8
14
|
const size = (arrayOrString) => arrayOrString.length;
|
|
9
15
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -29,12 +35,12 @@ const object = Object;
|
|
|
29
35
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
30
36
|
const objEntries = object.entries;
|
|
31
37
|
const isObject = (obj) =>
|
|
32
|
-
!
|
|
33
|
-
|
|
38
|
+
!isNullish(obj) &&
|
|
39
|
+
ifNotNullish(
|
|
34
40
|
getPrototypeOf(obj),
|
|
35
41
|
(objPrototype) =>
|
|
36
42
|
objPrototype == object.prototype ||
|
|
37
|
-
|
|
43
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
38
44
|
|
|
39
45
|
/* istanbul ignore next */
|
|
40
46
|
() => true,
|
|
@@ -70,7 +76,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
70
76
|
const mapNew = (entries) => new Map(entries);
|
|
71
77
|
const mapGet = (map, key) => map?.get(key);
|
|
72
78
|
const mapSet = (map, key, value) =>
|
|
73
|
-
|
|
79
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
74
80
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
75
81
|
if (!collHas(map, key)) {
|
|
76
82
|
mapSet(map, key, getDefaultValue());
|
|
@@ -181,7 +187,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
181
187
|
const index = size(ids);
|
|
182
188
|
if (index == size(path)) {
|
|
183
189
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
184
|
-
} else if (
|
|
190
|
+
} else if (isNull(path[index])) {
|
|
185
191
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
186
192
|
callWithIds(...ids, id2),
|
|
187
193
|
);
|
|
@@ -534,7 +540,7 @@ const createAutomergePersister = (
|
|
|
534
540
|
) => {
|
|
535
541
|
docHandle.change((doc) => objEnsure(doc, docObjName, objNew));
|
|
536
542
|
const getPersisted = async () => {
|
|
537
|
-
const doc =
|
|
543
|
+
const doc = docHandle.doc();
|
|
538
544
|
return objSize(doc?.[docObjName]) == 2
|
|
539
545
|
? getDocContent(doc, docObjName)
|
|
540
546
|
: void 0;
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
2
|
const UNDEFINED = '\uFFFC';
|
|
3
3
|
|
|
4
|
+
const getIfNotFunction =
|
|
5
|
+
(predicate = isNullish) =>
|
|
6
|
+
(value, then, otherwise) =>
|
|
7
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
4
8
|
const GLOBAL = globalThis;
|
|
5
9
|
const WINDOW = GLOBAL.window;
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
10
|
+
const isNullish = (thing) => thing == null;
|
|
11
|
+
const isUndefined = (thing) => thing === void 0;
|
|
12
|
+
const isNull = (thing) => thing === null;
|
|
13
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
14
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
9
15
|
const isArray = (thing) => Array.isArray(thing);
|
|
10
16
|
const size = (arrayOrString) => arrayOrString.length;
|
|
11
17
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -29,12 +35,12 @@ const arrayShift = (array) => array.shift();
|
|
|
29
35
|
const object = Object;
|
|
30
36
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
31
37
|
const isObject = (obj) =>
|
|
32
|
-
!
|
|
33
|
-
|
|
38
|
+
!isNullish(obj) &&
|
|
39
|
+
ifNotNullish(
|
|
34
40
|
getPrototypeOf(obj),
|
|
35
41
|
(objPrototype) =>
|
|
36
42
|
objPrototype == object.prototype ||
|
|
37
|
-
|
|
43
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
38
44
|
|
|
39
45
|
/* istanbul ignore next */
|
|
40
46
|
() => true,
|
|
@@ -60,7 +66,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
60
66
|
const mapNew = (entries) => new Map(entries);
|
|
61
67
|
const mapGet = (map, key) => map?.get(key);
|
|
62
68
|
const mapSet = (map, key, value) =>
|
|
63
|
-
|
|
69
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
64
70
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
65
71
|
if (!collHas(map, key)) {
|
|
66
72
|
mapSet(map, key, getDefaultValue());
|
|
@@ -171,7 +177,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
171
177
|
const index = size(ids);
|
|
172
178
|
if (index == size(path)) {
|
|
173
179
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
174
|
-
} else if (
|
|
180
|
+
} else if (isNull(path[index])) {
|
|
175
181
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
176
182
|
callWithIds(...ids, id2),
|
|
177
183
|
);
|
|
@@ -464,5 +470,31 @@ const createLocalPersister = (store, storageName, onIgnoredError) =>
|
|
|
464
470
|
createStoragePersister(store, storageName, localStorage, onIgnoredError);
|
|
465
471
|
const createSessionPersister = (store, storageName, onIgnoredError) =>
|
|
466
472
|
createStoragePersister(store, storageName, sessionStorage, onIgnoredError);
|
|
473
|
+
const createOpfsPersister = (store, handle, onIgnoredError) => {
|
|
474
|
+
const getPersisted = async () =>
|
|
475
|
+
jsonParseWithUndefined(await (await handle.getFile()).text());
|
|
476
|
+
const setPersisted = async (getContent) => {
|
|
477
|
+
const writable = await handle.createWritable();
|
|
478
|
+
await writable.write(jsonStringWithUndefined(getContent()));
|
|
479
|
+
await writable.close();
|
|
480
|
+
};
|
|
481
|
+
const addPersisterListener = async (listener) => {
|
|
482
|
+
const observer = new FileSystemObserver(() => listener());
|
|
483
|
+
await observer.observe(handle);
|
|
484
|
+
return observer;
|
|
485
|
+
};
|
|
486
|
+
const delPersisterListener = (observer) => observer?.disconnect();
|
|
487
|
+
return createCustomPersister(
|
|
488
|
+
store,
|
|
489
|
+
getPersisted,
|
|
490
|
+
setPersisted,
|
|
491
|
+
addPersisterListener,
|
|
492
|
+
delPersisterListener,
|
|
493
|
+
onIgnoredError,
|
|
494
|
+
3,
|
|
495
|
+
// StoreOrMergeableStore,
|
|
496
|
+
{getHandle: () => handle},
|
|
497
|
+
);
|
|
498
|
+
};
|
|
467
499
|
|
|
468
|
-
export {createLocalPersister, createSessionPersister};
|
|
500
|
+
export {createLocalPersister, createOpfsPersister, createSessionPersister};
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
2
|
const UNDEFINED = '\uFFFC';
|
|
3
3
|
|
|
4
|
+
const getIfNotFunction =
|
|
5
|
+
(predicate = isNullish) =>
|
|
6
|
+
(value, then, otherwise) =>
|
|
7
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
4
8
|
const GLOBAL = globalThis;
|
|
5
9
|
const WINDOW = GLOBAL.window;
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
10
|
+
const isNullish = (thing) => thing == null;
|
|
11
|
+
const isUndefined = (thing) => thing === void 0;
|
|
12
|
+
const isNull = (thing) => thing === null;
|
|
13
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
14
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
9
15
|
const isArray = (thing) => Array.isArray(thing);
|
|
10
16
|
const size = (arrayOrString) => arrayOrString.length;
|
|
11
17
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -29,12 +35,12 @@ const arrayShift = (array) => array.shift();
|
|
|
29
35
|
const object = Object;
|
|
30
36
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
31
37
|
const isObject = (obj) =>
|
|
32
|
-
!
|
|
33
|
-
|
|
38
|
+
!isNullish(obj) &&
|
|
39
|
+
ifNotNullish(
|
|
34
40
|
getPrototypeOf(obj),
|
|
35
41
|
(objPrototype) =>
|
|
36
42
|
objPrototype == object.prototype ||
|
|
37
|
-
|
|
43
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
38
44
|
|
|
39
45
|
/* istanbul ignore next */
|
|
40
46
|
() => true,
|
|
@@ -60,7 +66,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
60
66
|
const mapNew = (entries) => new Map(entries);
|
|
61
67
|
const mapGet = (map, key) => map?.get(key);
|
|
62
68
|
const mapSet = (map, key, value) =>
|
|
63
|
-
|
|
69
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
64
70
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
65
71
|
if (!collHas(map, key)) {
|
|
66
72
|
mapSet(map, key, getDefaultValue());
|
|
@@ -171,7 +177,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
171
177
|
const index = size(ids);
|
|
172
178
|
if (index == size(path)) {
|
|
173
179
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
174
|
-
} else if (
|
|
180
|
+
} else if (isNull(path[index])) {
|
|
175
181
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
176
182
|
callWithIds(...ids, id2),
|
|
177
183
|
);
|
|
@@ -464,5 +470,31 @@ const createLocalPersister = (store, storageName, onIgnoredError) =>
|
|
|
464
470
|
createStoragePersister(store, storageName, localStorage, onIgnoredError);
|
|
465
471
|
const createSessionPersister = (store, storageName, onIgnoredError) =>
|
|
466
472
|
createStoragePersister(store, storageName, sessionStorage, onIgnoredError);
|
|
473
|
+
const createOpfsPersister = (store, handle, onIgnoredError) => {
|
|
474
|
+
const getPersisted = async () =>
|
|
475
|
+
jsonParseWithUndefined(await (await handle.getFile()).text());
|
|
476
|
+
const setPersisted = async (getContent) => {
|
|
477
|
+
const writable = await handle.createWritable();
|
|
478
|
+
await writable.write(jsonStringWithUndefined(getContent()));
|
|
479
|
+
await writable.close();
|
|
480
|
+
};
|
|
481
|
+
const addPersisterListener = async (listener) => {
|
|
482
|
+
const observer = new FileSystemObserver(() => listener());
|
|
483
|
+
await observer.observe(handle);
|
|
484
|
+
return observer;
|
|
485
|
+
};
|
|
486
|
+
const delPersisterListener = (observer) => observer?.disconnect();
|
|
487
|
+
return createCustomPersister(
|
|
488
|
+
store,
|
|
489
|
+
getPersisted,
|
|
490
|
+
setPersisted,
|
|
491
|
+
addPersisterListener,
|
|
492
|
+
delPersisterListener,
|
|
493
|
+
onIgnoredError,
|
|
494
|
+
3,
|
|
495
|
+
// StoreOrMergeableStore,
|
|
496
|
+
{getHandle: () => handle},
|
|
497
|
+
);
|
|
498
|
+
};
|
|
467
499
|
|
|
468
|
-
export {createLocalPersister, createSessionPersister};
|
|
500
|
+
export {createLocalPersister, createOpfsPersister, createSessionPersister};
|
|
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
12
12
|
str.replace(searchValue, replaceValue);
|
|
13
13
|
|
|
14
14
|
const promise = Promise;
|
|
15
|
+
const getIfNotFunction =
|
|
16
|
+
(predicate = isNullish) =>
|
|
17
|
+
(value, then, otherwise) =>
|
|
18
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
15
19
|
const THOUSAND = 1e3;
|
|
16
20
|
const startInterval = (callback, sec, immediate) => {
|
|
17
21
|
return setInterval(callback, sec * THOUSAND);
|
|
18
22
|
};
|
|
19
23
|
const stopInterval = clearInterval;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
24
|
+
const isNullish = (thing) => thing == null;
|
|
25
|
+
const isUndefined = (thing) => thing === void 0;
|
|
26
|
+
const isNull = (thing) => thing === null;
|
|
27
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
28
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
23
29
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
24
30
|
const isArray = (thing) => Array.isArray(thing);
|
|
25
31
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -102,12 +108,12 @@ const object = Object;
|
|
|
102
108
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
103
109
|
const objEntries = object.entries;
|
|
104
110
|
const isObject = (obj) =>
|
|
105
|
-
!
|
|
106
|
-
|
|
111
|
+
!isNullish(obj) &&
|
|
112
|
+
ifNotNullish(
|
|
107
113
|
getPrototypeOf(obj),
|
|
108
114
|
(objPrototype) =>
|
|
109
115
|
objPrototype == object.prototype ||
|
|
110
|
-
|
|
116
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
111
117
|
|
|
112
118
|
/* istanbul ignore next */
|
|
113
119
|
() => true,
|
|
@@ -136,7 +142,7 @@ const mapForEach = (map, cb) =>
|
|
|
136
142
|
const mapMap = (coll, cb) =>
|
|
137
143
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
138
144
|
const mapSet = (map, key, value) =>
|
|
139
|
-
|
|
145
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
140
146
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
141
147
|
if (!collHas(map, key)) {
|
|
142
148
|
mapSet(map, key, getDefaultValue());
|
|
@@ -223,7 +229,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
223
229
|
0,
|
|
224
230
|
objSize(defaultObj),
|
|
225
231
|
);
|
|
226
|
-
if (!
|
|
232
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
227
233
|
then(id, defaultedConfig[0]);
|
|
228
234
|
mapSet(configMap, id, defaultedConfig);
|
|
229
235
|
}
|
|
@@ -372,7 +378,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
372
378
|
const index = size(ids);
|
|
373
379
|
if (index == size(path)) {
|
|
374
380
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
375
|
-
} else if (
|
|
381
|
+
} else if (isNull(path[index])) {
|
|
376
382
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
377
383
|
callWithIds(...ids, id2),
|
|
378
384
|
);
|
|
@@ -1117,7 +1123,7 @@ const createCustomSqlitePersister = (
|
|
|
1117
1123
|
` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
1118
1124
|
);
|
|
1119
1125
|
if (d != dataVersion || s != schemaVersion || c != totalChanges) {
|
|
1120
|
-
if (dataVersion
|
|
1126
|
+
if (!isNullish(dataVersion)) {
|
|
1121
1127
|
listener();
|
|
1122
1128
|
}
|
|
1123
1129
|
dataVersion = d;
|