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/index.js
CHANGED
|
@@ -6,6 +6,7 @@ const NUMBER = getTypeOf(0);
|
|
|
6
6
|
const FUNCTION = getTypeOf(getTypeOf);
|
|
7
7
|
const TYPE = 'type';
|
|
8
8
|
const DEFAULT = 'default';
|
|
9
|
+
const ALLOW_NULL = 'allowNull';
|
|
9
10
|
const SUM = 'sum';
|
|
10
11
|
const AVG = 'avg';
|
|
11
12
|
const MIN = 'min';
|
|
@@ -37,6 +38,10 @@ const strEndsWith = (str, suffix) => str.endsWith(suffix);
|
|
|
37
38
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
38
39
|
str.split(separator, limit);
|
|
39
40
|
|
|
41
|
+
const getIfNotFunction =
|
|
42
|
+
(predicate = isNullish) =>
|
|
43
|
+
(value, then, otherwise) =>
|
|
44
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
40
45
|
const GLOBAL = globalThis;
|
|
41
46
|
const math = Math;
|
|
42
47
|
const mathMax = math.max;
|
|
@@ -44,9 +49,11 @@ const mathMin = math.min;
|
|
|
44
49
|
const mathFloor = math.floor;
|
|
45
50
|
const isFiniteNumber = isFinite;
|
|
46
51
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
|
|
52
|
+
const isNullish = (thing) => thing == null;
|
|
53
|
+
const isUndefined = (thing) => thing === void 0;
|
|
54
|
+
const isNull = (thing) => thing === null;
|
|
55
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
56
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
50
57
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
51
58
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
52
59
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
@@ -88,13 +95,16 @@ const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
|
88
95
|
const arrayShift = (array) => array.shift();
|
|
89
96
|
|
|
90
97
|
const getCellOrValueType = (cellOrValue) => {
|
|
98
|
+
if (isNull(cellOrValue)) {
|
|
99
|
+
return 'null';
|
|
100
|
+
}
|
|
91
101
|
const type = getTypeOf(cellOrValue);
|
|
92
102
|
return isTypeStringOrBoolean(type) ||
|
|
93
103
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
94
104
|
? type
|
|
95
105
|
: void 0;
|
|
96
106
|
};
|
|
97
|
-
const
|
|
107
|
+
const isCellOrValueOrUndefined = (cellOrValue) =>
|
|
98
108
|
isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
|
|
99
109
|
const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
|
|
100
110
|
isUndefined(cell)
|
|
@@ -121,12 +131,12 @@ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
|
121
131
|
const objFrozen = object.isFrozen;
|
|
122
132
|
const objEntries = object.entries;
|
|
123
133
|
const isObject = (obj) =>
|
|
124
|
-
!
|
|
125
|
-
|
|
134
|
+
!isNullish(obj) &&
|
|
135
|
+
ifNotNullish(
|
|
126
136
|
getPrototypeOf(obj),
|
|
127
137
|
(objPrototype) =>
|
|
128
138
|
objPrototype == object.prototype ||
|
|
129
|
-
|
|
139
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
130
140
|
|
|
131
141
|
/* istanbul ignore next */
|
|
132
142
|
() => true,
|
|
@@ -155,7 +165,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
155
165
|
};
|
|
156
166
|
const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
157
167
|
if (
|
|
158
|
-
|
|
168
|
+
isNullish(obj) ||
|
|
159
169
|
!isObject(obj) ||
|
|
160
170
|
(!emptyIsValid && objIsEmpty(obj)) ||
|
|
161
171
|
objFrozen(obj)
|
|
@@ -179,7 +189,7 @@ const mapForEach = (map, cb) =>
|
|
|
179
189
|
const mapMap = (coll, cb) =>
|
|
180
190
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
181
191
|
const mapSet = (map, key, value) =>
|
|
182
|
-
|
|
192
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
183
193
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
184
194
|
if (!collHas(map, key)) {
|
|
185
195
|
mapSet(map, key, getDefaultValue());
|
|
@@ -500,7 +510,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
500
510
|
const index = size(ids);
|
|
501
511
|
if (index == size(path)) {
|
|
502
512
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
503
|
-
} else if (
|
|
513
|
+
} else if (isNull(path[index])) {
|
|
504
514
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
505
515
|
callWithIds(...ids, id2),
|
|
506
516
|
);
|
|
@@ -653,7 +663,7 @@ const createCheckpoints = getCreateFunction(
|
|
|
653
663
|
? goBackwardImpl
|
|
654
664
|
: arrayHas(forwardIds, checkpointId)
|
|
655
665
|
? goForwardImpl
|
|
656
|
-
:
|
|
666
|
+
: void 0;
|
|
657
667
|
while (!isUndefined(action) && checkpointId != currentId) {
|
|
658
668
|
action();
|
|
659
669
|
}
|
|
@@ -782,7 +792,7 @@ const getUniqueId = (length = 16) =>
|
|
|
782
792
|
arrayReduce(
|
|
783
793
|
getRandomValues(new Uint8Array(length)),
|
|
784
794
|
(uniqueId, number) => uniqueId + encode(number),
|
|
785
|
-
|
|
795
|
+
EMPTY_STRING,
|
|
786
796
|
);
|
|
787
797
|
|
|
788
798
|
const jsonString = JSON.stringify;
|
|
@@ -1233,14 +1243,22 @@ const createStore = () => {
|
|
|
1233
1243
|
const validateValuesSchema = (valuesSchema) =>
|
|
1234
1244
|
objValidate(valuesSchema, validateCellOrValueSchema);
|
|
1235
1245
|
const validateCellOrValueSchema = (schema) => {
|
|
1236
|
-
if (
|
|
1246
|
+
if (
|
|
1247
|
+
!objValidate(schema, (_child, id2) =>
|
|
1248
|
+
arrayHas([TYPE, DEFAULT, ALLOW_NULL], id2),
|
|
1249
|
+
)
|
|
1250
|
+
) {
|
|
1237
1251
|
return false;
|
|
1238
1252
|
}
|
|
1239
1253
|
const type = schema[TYPE];
|
|
1240
1254
|
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
1241
1255
|
return false;
|
|
1242
1256
|
}
|
|
1243
|
-
|
|
1257
|
+
const defaultValue = schema[DEFAULT];
|
|
1258
|
+
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
1259
|
+
return false;
|
|
1260
|
+
}
|
|
1261
|
+
if (!isNull(defaultValue) && getCellOrValueType(defaultValue) != type) {
|
|
1244
1262
|
objDel(schema, DEFAULT);
|
|
1245
1263
|
}
|
|
1246
1264
|
return true;
|
|
@@ -1277,9 +1295,19 @@ const createStore = () => {
|
|
|
1277
1295
|
? ifNotUndefined(
|
|
1278
1296
|
mapGet(mapGet(tablesSchemaMap, tableId), cellId),
|
|
1279
1297
|
(cellSchema) =>
|
|
1280
|
-
|
|
1281
|
-
?
|
|
1282
|
-
|
|
1298
|
+
isNull(cell)
|
|
1299
|
+
? cellSchema[ALLOW_NULL]
|
|
1300
|
+
? cell
|
|
1301
|
+
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
1302
|
+
: getCellOrValueType(cell) == cellSchema[TYPE]
|
|
1303
|
+
? cell
|
|
1304
|
+
: cellInvalid(
|
|
1305
|
+
tableId,
|
|
1306
|
+
rowId,
|
|
1307
|
+
cellId,
|
|
1308
|
+
cell,
|
|
1309
|
+
cellSchema[DEFAULT],
|
|
1310
|
+
),
|
|
1283
1311
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
1284
1312
|
)
|
|
1285
1313
|
: isUndefined(getCellOrValueType(cell))
|
|
@@ -1304,9 +1332,13 @@ const createStore = () => {
|
|
|
1304
1332
|
? ifNotUndefined(
|
|
1305
1333
|
mapGet(valuesSchemaMap, valueId),
|
|
1306
1334
|
(valueSchema) =>
|
|
1307
|
-
|
|
1308
|
-
?
|
|
1309
|
-
|
|
1335
|
+
isNull(value)
|
|
1336
|
+
? valueSchema[ALLOW_NULL]
|
|
1337
|
+
? value
|
|
1338
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
1339
|
+
: getCellOrValueType(value) == valueSchema[TYPE]
|
|
1340
|
+
? value
|
|
1341
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
1310
1342
|
() => valueInvalid(valueId, value),
|
|
1311
1343
|
)
|
|
1312
1344
|
: isUndefined(getCellOrValueType(value))
|
|
@@ -1549,7 +1581,7 @@ const createStore = () => {
|
|
|
1549
1581
|
mapSet(
|
|
1550
1582
|
cellIds,
|
|
1551
1583
|
cellId,
|
|
1552
|
-
count != -addedOrRemoved ? count + addedOrRemoved :
|
|
1584
|
+
count != -addedOrRemoved ? count + addedOrRemoved : void 0,
|
|
1553
1585
|
);
|
|
1554
1586
|
idsChanged(
|
|
1555
1587
|
mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
|
|
@@ -2558,7 +2590,7 @@ const validateMergeableContent = (mergeableContent) =>
|
|
|
2558
2590
|
objValidate(
|
|
2559
2591
|
cellStamps,
|
|
2560
2592
|
(cellStamp) =>
|
|
2561
|
-
stampValidate(cellStamp,
|
|
2593
|
+
stampValidate(cellStamp, isCellOrValueOrUndefined),
|
|
2562
2594
|
void 0,
|
|
2563
2595
|
1,
|
|
2564
2596
|
),
|
|
@@ -2574,7 +2606,7 @@ const validateMergeableContent = (mergeableContent) =>
|
|
|
2574
2606
|
stampValidate(mergeableContent[1], (values) =>
|
|
2575
2607
|
objValidate(
|
|
2576
2608
|
values,
|
|
2577
|
-
(value) => stampValidate(value,
|
|
2609
|
+
(value) => stampValidate(value, isCellOrValueOrUndefined),
|
|
2578
2610
|
void 0,
|
|
2579
2611
|
1,
|
|
2580
2612
|
),
|
|
@@ -3252,7 +3284,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
3252
3284
|
setDefinition(queryId, tableId);
|
|
3253
3285
|
resetPreStores(queryId);
|
|
3254
3286
|
const selectEntries = [];
|
|
3255
|
-
const joinEntries = [[
|
|
3287
|
+
const joinEntries = [[void 0, [tableId, void 0, void 0, [], mapNew()]]];
|
|
3256
3288
|
const wheres = [];
|
|
3257
3289
|
const groupEntries = [];
|
|
3258
3290
|
const havings = [];
|
|
@@ -3268,7 +3300,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
3268
3300
|
};
|
|
3269
3301
|
const join = (joinedTableId, arg1, arg2) => {
|
|
3270
3302
|
const fromIntermediateJoinedTableId =
|
|
3271
|
-
isUndefined(arg2) || isFunction(arg1) ?
|
|
3303
|
+
isUndefined(arg2) || isFunction(arg1) ? void 0 : arg1;
|
|
3272
3304
|
const onArg = isUndefined(fromIntermediateJoinedTableId) ? arg1 : arg2;
|
|
3273
3305
|
const joinEntry = [
|
|
3274
3306
|
joinedTableId,
|
|
@@ -3388,7 +3420,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
3388
3420
|
groupRow[groupedCellId] = isUndefined(
|
|
3389
3421
|
getCellOrValueType(aggregateValue),
|
|
3390
3422
|
)
|
|
3391
|
-
?
|
|
3423
|
+
? void 0
|
|
3392
3424
|
: aggregateValue;
|
|
3393
3425
|
},
|
|
3394
3426
|
);
|
|
@@ -3517,20 +3549,20 @@ const createQueries = getCreateFunction((store) => {
|
|
|
3517
3549
|
const listenToTable = (rootRowId, tableId2, rowId, joinedTableIds2) => {
|
|
3518
3550
|
const getCell = (cellId) => store.getCell(tableId2, rowId, cellId);
|
|
3519
3551
|
arrayForEach(joinedTableIds2, (remoteAsTableId) => {
|
|
3520
|
-
const [realJoinedTableId, , on, nextJoinedTableIds,
|
|
3552
|
+
const [realJoinedTableId, , on, nextJoinedTableIds, remoteIdPairs] =
|
|
3521
3553
|
mapGet(joins, remoteAsTableId);
|
|
3522
3554
|
const remoteRowId = on?.(getCell, rootRowId);
|
|
3523
3555
|
const [previousRemoteRowId, previousRemoteListenerId] =
|
|
3524
|
-
mapGet(
|
|
3556
|
+
mapGet(remoteIdPairs, rootRowId) ?? [];
|
|
3525
3557
|
if (remoteRowId != previousRemoteRowId) {
|
|
3526
3558
|
if (!isUndefined(previousRemoteListenerId)) {
|
|
3527
3559
|
delStoreListeners(queryId, previousRemoteListenerId);
|
|
3528
3560
|
}
|
|
3529
3561
|
mapSet(
|
|
3530
|
-
|
|
3562
|
+
remoteIdPairs,
|
|
3531
3563
|
rootRowId,
|
|
3532
3564
|
isUndefined(remoteRowId)
|
|
3533
|
-
?
|
|
3565
|
+
? void 0
|
|
3534
3566
|
: [
|
|
3535
3567
|
remoteRowId,
|
|
3536
3568
|
...addStoreListeners(
|
|
@@ -3551,7 +3583,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
3551
3583
|
});
|
|
3552
3584
|
writeSelectRow(rootRowId);
|
|
3553
3585
|
};
|
|
3554
|
-
const {3: joinedTableIds} = mapGet(joins,
|
|
3586
|
+
const {3: joinedTableIds} = mapGet(joins, void 0);
|
|
3555
3587
|
selectJoinWhereStore.transaction(() =>
|
|
3556
3588
|
addStoreListeners(
|
|
3557
3589
|
queryId,
|
package/indexes/index.js
CHANGED
|
@@ -3,9 +3,14 @@ const EMPTY_STRING = '';
|
|
|
3
3
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
4
4
|
const id = (key) => EMPTY_STRING + key;
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const getIfNotFunction =
|
|
7
|
+
(predicate = isNullish) =>
|
|
8
|
+
(value, then, otherwise) =>
|
|
9
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
10
|
+
const isNullish = (thing) => thing == null;
|
|
11
|
+
const isUndefined = (thing) => thing === void 0;
|
|
12
|
+
const isNull = (thing) => thing === null;
|
|
13
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
9
14
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
10
15
|
const isArray = (thing) => Array.isArray(thing);
|
|
11
16
|
const size = (arrayOrString) => arrayOrString.length;
|
|
@@ -49,7 +54,7 @@ const mapGet = (map, key) => map?.get(key);
|
|
|
49
54
|
const mapForEach = (map, cb) =>
|
|
50
55
|
collForEach(map, (value, key) => cb(key, value));
|
|
51
56
|
const mapSet = (map, key, value) =>
|
|
52
|
-
|
|
57
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
53
58
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
54
59
|
if (!collHas(map, key)) {
|
|
55
60
|
mapSet(map, key, getDefaultValue());
|
|
@@ -334,7 +339,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
334
339
|
const index = size(ids);
|
|
335
340
|
if (index == size(path)) {
|
|
336
341
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
337
|
-
} else if (
|
|
342
|
+
} else if (isNull(path[index])) {
|
|
338
343
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
339
344
|
callWithIds(...ids, id2),
|
|
340
345
|
);
|
|
@@ -3,9 +3,14 @@ const EMPTY_STRING = '';
|
|
|
3
3
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
4
4
|
const id = (key) => EMPTY_STRING + key;
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const getIfNotFunction =
|
|
7
|
+
(predicate = isNullish) =>
|
|
8
|
+
(value, then, otherwise) =>
|
|
9
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
10
|
+
const isNullish = (thing) => thing == null;
|
|
11
|
+
const isUndefined = (thing) => thing === void 0;
|
|
12
|
+
const isNull = (thing) => thing === null;
|
|
13
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
9
14
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
10
15
|
const isArray = (thing) => Array.isArray(thing);
|
|
11
16
|
const size = (arrayOrString) => arrayOrString.length;
|
|
@@ -49,7 +54,7 @@ const mapGet = (map, key) => map?.get(key);
|
|
|
49
54
|
const mapForEach = (map, cb) =>
|
|
50
55
|
collForEach(map, (value, key) => cb(key, value));
|
|
51
56
|
const mapSet = (map, key, value) =>
|
|
52
|
-
|
|
57
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
53
58
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
54
59
|
if (!collHas(map, key)) {
|
|
55
60
|
mapSet(map, key, getDefaultValue());
|
|
@@ -334,7 +339,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
334
339
|
const index = size(ids);
|
|
335
340
|
if (index == size(path)) {
|
|
336
341
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
337
|
-
} else if (
|
|
342
|
+
} else if (isNull(path[index])) {
|
|
338
343
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
339
344
|
callWithIds(...ids, id2),
|
|
340
345
|
);
|
package/mergeable-store/index.js
CHANGED
|
@@ -6,6 +6,7 @@ const NUMBER = getTypeOf(0);
|
|
|
6
6
|
const FUNCTION = getTypeOf(getTypeOf);
|
|
7
7
|
const TYPE = 'type';
|
|
8
8
|
const DEFAULT = 'default';
|
|
9
|
+
const ALLOW_NULL = 'allowNull';
|
|
9
10
|
const LISTENER = 'Listener';
|
|
10
11
|
const SET = 'set';
|
|
11
12
|
const ADD = 'add';
|
|
@@ -30,15 +31,21 @@ const strEndsWith = (str, suffix) => str.endsWith(suffix);
|
|
|
30
31
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
31
32
|
str.split(separator, limit);
|
|
32
33
|
|
|
34
|
+
const getIfNotFunction =
|
|
35
|
+
(predicate = isNullish) =>
|
|
36
|
+
(value, then, otherwise) =>
|
|
37
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
33
38
|
const GLOBAL = globalThis;
|
|
34
39
|
const math = Math;
|
|
35
40
|
const mathMax = math.max;
|
|
36
41
|
const mathFloor = math.floor;
|
|
37
42
|
const isFiniteNumber = isFinite;
|
|
38
43
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
|
|
44
|
+
const isNullish = (thing) => thing == null;
|
|
45
|
+
const isUndefined = (thing) => thing === void 0;
|
|
46
|
+
const isNull = (thing) => thing === null;
|
|
47
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
48
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
42
49
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
43
50
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
44
51
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
@@ -57,13 +64,16 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
57
64
|
};
|
|
58
65
|
|
|
59
66
|
const getCellOrValueType = (cellOrValue) => {
|
|
67
|
+
if (isNull(cellOrValue)) {
|
|
68
|
+
return 'null';
|
|
69
|
+
}
|
|
60
70
|
const type = getTypeOf(cellOrValue);
|
|
61
71
|
return isTypeStringOrBoolean(type) ||
|
|
62
72
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
63
73
|
? type
|
|
64
74
|
: void 0;
|
|
65
75
|
};
|
|
66
|
-
const
|
|
76
|
+
const isCellOrValueOrUndefined = (cellOrValue) =>
|
|
67
77
|
isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
|
|
68
78
|
const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
|
|
69
79
|
isUndefined(cell)
|
|
@@ -102,12 +112,12 @@ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
|
102
112
|
const objFrozen = object.isFrozen;
|
|
103
113
|
const objEntries = object.entries;
|
|
104
114
|
const isObject = (obj) =>
|
|
105
|
-
!
|
|
106
|
-
|
|
115
|
+
!isNullish(obj) &&
|
|
116
|
+
ifNotNullish(
|
|
107
117
|
getPrototypeOf(obj),
|
|
108
118
|
(objPrototype) =>
|
|
109
119
|
objPrototype == object.prototype ||
|
|
110
|
-
|
|
120
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
111
121
|
|
|
112
122
|
/* istanbul ignore next */
|
|
113
123
|
() => true,
|
|
@@ -136,7 +146,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
136
146
|
};
|
|
137
147
|
const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
138
148
|
if (
|
|
139
|
-
|
|
149
|
+
isNullish(obj) ||
|
|
140
150
|
!isObject(obj) ||
|
|
141
151
|
(!emptyIsValid && objIsEmpty(obj)) ||
|
|
142
152
|
objFrozen(obj)
|
|
@@ -183,7 +193,7 @@ const mapForEach = (map, cb) =>
|
|
|
183
193
|
const mapMap = (coll, cb) =>
|
|
184
194
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
185
195
|
const mapSet = (map, key, value) =>
|
|
186
|
-
|
|
196
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
187
197
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
188
198
|
if (!collHas(map, key)) {
|
|
189
199
|
mapSet(map, key, getDefaultValue());
|
|
@@ -269,7 +279,7 @@ const getUniqueId = (length = 16) =>
|
|
|
269
279
|
arrayReduce(
|
|
270
280
|
getRandomValues(new Uint8Array(length)),
|
|
271
281
|
(uniqueId, number) => uniqueId + encode(number),
|
|
272
|
-
|
|
282
|
+
EMPTY_STRING,
|
|
273
283
|
);
|
|
274
284
|
|
|
275
285
|
const SHIFT36 = 2 ** 36;
|
|
@@ -468,7 +478,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
468
478
|
const index = size(ids);
|
|
469
479
|
if (index == size(path)) {
|
|
470
480
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
471
|
-
} else if (
|
|
481
|
+
} else if (isNull(path[index])) {
|
|
472
482
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
473
483
|
callWithIds(...ids, id2),
|
|
474
484
|
);
|
|
@@ -553,14 +563,22 @@ const createStore = () => {
|
|
|
553
563
|
const validateValuesSchema = (valuesSchema) =>
|
|
554
564
|
objValidate(valuesSchema, validateCellOrValueSchema);
|
|
555
565
|
const validateCellOrValueSchema = (schema) => {
|
|
556
|
-
if (
|
|
566
|
+
if (
|
|
567
|
+
!objValidate(schema, (_child, id2) =>
|
|
568
|
+
arrayHas([TYPE, DEFAULT, ALLOW_NULL], id2),
|
|
569
|
+
)
|
|
570
|
+
) {
|
|
557
571
|
return false;
|
|
558
572
|
}
|
|
559
573
|
const type = schema[TYPE];
|
|
560
574
|
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
561
575
|
return false;
|
|
562
576
|
}
|
|
563
|
-
|
|
577
|
+
const defaultValue = schema[DEFAULT];
|
|
578
|
+
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
579
|
+
return false;
|
|
580
|
+
}
|
|
581
|
+
if (!isNull(defaultValue) && getCellOrValueType(defaultValue) != type) {
|
|
564
582
|
objDel(schema, DEFAULT);
|
|
565
583
|
}
|
|
566
584
|
return true;
|
|
@@ -597,9 +615,19 @@ const createStore = () => {
|
|
|
597
615
|
? ifNotUndefined(
|
|
598
616
|
mapGet(mapGet(tablesSchemaMap, tableId), cellId),
|
|
599
617
|
(cellSchema) =>
|
|
600
|
-
|
|
601
|
-
?
|
|
602
|
-
|
|
618
|
+
isNull(cell)
|
|
619
|
+
? cellSchema[ALLOW_NULL]
|
|
620
|
+
? cell
|
|
621
|
+
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
622
|
+
: getCellOrValueType(cell) == cellSchema[TYPE]
|
|
623
|
+
? cell
|
|
624
|
+
: cellInvalid(
|
|
625
|
+
tableId,
|
|
626
|
+
rowId,
|
|
627
|
+
cellId,
|
|
628
|
+
cell,
|
|
629
|
+
cellSchema[DEFAULT],
|
|
630
|
+
),
|
|
603
631
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
604
632
|
)
|
|
605
633
|
: isUndefined(getCellOrValueType(cell))
|
|
@@ -624,9 +652,13 @@ const createStore = () => {
|
|
|
624
652
|
? ifNotUndefined(
|
|
625
653
|
mapGet(valuesSchemaMap, valueId),
|
|
626
654
|
(valueSchema) =>
|
|
627
|
-
|
|
628
|
-
?
|
|
629
|
-
|
|
655
|
+
isNull(value)
|
|
656
|
+
? valueSchema[ALLOW_NULL]
|
|
657
|
+
? value
|
|
658
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
659
|
+
: getCellOrValueType(value) == valueSchema[TYPE]
|
|
660
|
+
? value
|
|
661
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
630
662
|
() => valueInvalid(valueId, value),
|
|
631
663
|
)
|
|
632
664
|
: isUndefined(getCellOrValueType(value))
|
|
@@ -869,7 +901,7 @@ const createStore = () => {
|
|
|
869
901
|
mapSet(
|
|
870
902
|
cellIds,
|
|
871
903
|
cellId,
|
|
872
|
-
count != -addedOrRemoved ? count + addedOrRemoved :
|
|
904
|
+
count != -addedOrRemoved ? count + addedOrRemoved : void 0,
|
|
873
905
|
);
|
|
874
906
|
idsChanged(
|
|
875
907
|
mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
|
|
@@ -1878,7 +1910,7 @@ const validateMergeableContent = (mergeableContent) =>
|
|
|
1878
1910
|
objValidate(
|
|
1879
1911
|
cellStamps,
|
|
1880
1912
|
(cellStamp) =>
|
|
1881
|
-
stampValidate(cellStamp,
|
|
1913
|
+
stampValidate(cellStamp, isCellOrValueOrUndefined),
|
|
1882
1914
|
void 0,
|
|
1883
1915
|
1,
|
|
1884
1916
|
),
|
|
@@ -1894,7 +1926,7 @@ const validateMergeableContent = (mergeableContent) =>
|
|
|
1894
1926
|
stampValidate(mergeableContent[1], (values) =>
|
|
1895
1927
|
objValidate(
|
|
1896
1928
|
values,
|
|
1897
|
-
(value) => stampValidate(value,
|
|
1929
|
+
(value) => stampValidate(value, isCellOrValueOrUndefined),
|
|
1898
1930
|
void 0,
|
|
1899
1931
|
1,
|
|
1900
1932
|
),
|