tinybase 5.0.0-beta.4 → 5.0.0-beta.6
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/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/cjs/checkpoints.cjs +1 -1
- package/lib/cjs/checkpoints.cjs.gz +0 -0
- package/lib/cjs/indexes.cjs +1 -1
- package/lib/cjs/indexes.cjs.gz +0 -0
- package/lib/cjs/mergeable-store.cjs +1 -1
- package/lib/cjs/mergeable-store.cjs.gz +0 -0
- package/lib/cjs/metrics.cjs +1 -1
- package/lib/cjs/metrics.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-libsql.cjs +1 -0
- package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-powersync.cjs +1 -0
- package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sync.cjs +1 -0
- package/lib/cjs/persisters/persister-sync.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/relationships.cjs +1 -1
- package/lib/cjs/relationships.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/checkpoints.cjs +1 -1
- package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
- package/lib/cjs-es6/indexes.cjs +1 -1
- package/lib/cjs-es6/indexes.cjs.gz +0 -0
- package/lib/cjs-es6/mergeable-store.cjs +1 -1
- package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
- package/lib/cjs-es6/metrics.cjs +1 -1
- package/lib/cjs-es6/metrics.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sync.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-sync.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/relationships.cjs +1 -1
- package/lib/cjs-es6/relationships.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/checkpoints.js +3 -1
- package/lib/debug/indexes.js +3 -1
- package/lib/debug/mergeable-store.js +403 -179
- package/lib/debug/metrics.js +3 -1
- package/lib/debug/persisters/persister-automerge.js +42 -47
- package/lib/debug/persisters/persister-browser.js +42 -47
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +67 -61
- package/lib/debug/persisters/persister-electric-sql.js +67 -61
- package/lib/debug/persisters/persister-expo-sqlite-next.js +67 -61
- package/lib/debug/persisters/persister-expo-sqlite.js +67 -61
- package/lib/debug/persisters/persister-file.js +42 -47
- package/lib/debug/persisters/persister-indexed-db.js +42 -47
- package/lib/debug/persisters/persister-libsql.js +902 -0
- package/lib/debug/persisters/persister-partykit-client.js +42 -47
- package/lib/debug/persisters/persister-powersync.js +917 -0
- package/lib/debug/persisters/persister-remote.js +42 -47
- package/lib/debug/persisters/persister-sqlite-wasm.js +67 -61
- package/lib/debug/persisters/persister-sqlite3.js +67 -61
- package/lib/debug/persisters/persister-sync.js +594 -0
- package/lib/debug/persisters/persister-yjs.js +44 -49
- package/lib/debug/persisters.js +41 -46
- package/lib/debug/queries.js +7 -4
- package/lib/debug/relationships.js +3 -1
- package/lib/debug/store.js +51 -36
- package/lib/debug/tinybase.js +439 -223
- package/lib/debug/tools.js +9 -6
- package/lib/debug/ui-react-dom.js +88 -80
- package/lib/debug/ui-react.js +1 -1
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/mergeable-store.js +1 -1
- package/lib/es6/mergeable-store.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-libsql.js +1 -0
- package/lib/es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-powersync.js +1 -0
- package/lib/es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-sync.js +1 -0
- package/lib/es6/persisters/persister-sync.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/mergeable-store.js +1 -1
- package/lib/mergeable-store.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-libsql.js +1 -0
- package/lib/persisters/persister-libsql.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-powersync.js +1 -0
- package/lib/persisters/persister-powersync.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-sync.js +1 -0
- package/lib/persisters/persister-sync.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/checkpoints.d.ts +2 -2
- package/lib/types/indexes.d.ts +2 -2
- package/lib/types/mergeable-store.d.ts +143 -20
- package/lib/types/metrics.d.ts +2 -2
- package/lib/types/persisters/persister-automerge.d.ts +3 -0
- package/lib/types/persisters/persister-browser.d.ts +9 -2
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +3 -0
- package/lib/types/persisters/persister-electric-sql.d.ts +3 -0
- package/lib/types/persisters/persister-expo-sqlite-next.d.ts +3 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +3 -0
- package/lib/types/persisters/persister-file.d.ts +5 -1
- package/lib/types/persisters/persister-indexed-db.d.ts +3 -0
- package/lib/types/persisters/persister-libsql.d.ts +142 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +3 -0
- package/lib/types/persisters/persister-powersync.d.ts +157 -0
- package/lib/types/persisters/persister-remote.d.ts +3 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +3 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +3 -0
- package/lib/types/persisters/persister-sync.d.ts +182 -0
- package/lib/types/persisters/persister-yjs.d.ts +5 -2
- package/lib/types/persisters.d.ts +61 -3
- package/lib/types/queries.d.ts +2 -2
- package/lib/types/relationships.d.ts +2 -2
- package/lib/types/store.d.ts +36 -3
- package/lib/types/tinybase.d.ts +9 -9
- package/lib/types/tools.d.ts +2 -2
- package/lib/types/ui-react.d.ts +8 -8
- package/lib/types/with-schemas/checkpoints.d.ts +2 -2
- package/lib/types/with-schemas/indexes.d.ts +2 -2
- package/lib/types/with-schemas/mergeable-store.d.ts +415 -40
- package/lib/types/with-schemas/metrics.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +13 -6
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-file.d.ts +7 -3
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +4 -1
- package/lib/types/with-schemas/persisters/persister-sync.d.ts +195 -0
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +6 -3
- package/lib/types/with-schemas/persisters.d.ts +80 -7
- package/lib/types/with-schemas/queries.d.ts +3 -3
- package/lib/types/with-schemas/relationships.d.ts +2 -2
- package/lib/types/with-schemas/store.d.ts +136 -89
- package/lib/types/with-schemas/tinybase.d.ts +9 -9
- package/lib/types/with-schemas/tools.d.ts +2 -2
- package/lib/types/with-schemas/ui-react.d.ts +8 -8
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/mergeable-store.js +1 -1
- package/lib/umd/mergeable-store.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-libsql.js +1 -0
- package/lib/umd/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-powersync.js +1 -0
- package/lib/umd/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-sync.js +1 -0
- package/lib/umd/persisters/persister-sync.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/mergeable-store.js +1 -1
- package/lib/umd-es6/mergeable-store.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-libsql.js +1 -0
- package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-powersync.js +1 -0
- package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sync.js +1 -0
- package/lib/umd-es6/persisters/persister-sync.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +51 -35
- package/readme.md +2 -2
|
@@ -22,8 +22,6 @@ const arrayShift = (array) => array.shift();
|
|
|
22
22
|
const object = Object;
|
|
23
23
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
24
24
|
const objEntries = object.entries;
|
|
25
|
-
const objIds = object.keys;
|
|
26
|
-
const objFreeze = object.freeze;
|
|
27
25
|
const isObject = (obj) =>
|
|
28
26
|
!isUndefined(obj) &&
|
|
29
27
|
ifNotUndefined(
|
|
@@ -34,6 +32,8 @@ const isObject = (obj) =>
|
|
|
34
32
|
/* istanbul ignore next */
|
|
35
33
|
() => true,
|
|
36
34
|
);
|
|
35
|
+
const objIds = object.keys;
|
|
36
|
+
const objFreeze = object.freeze;
|
|
37
37
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
38
38
|
const objHas = (obj, id) => id in obj;
|
|
39
39
|
const objToArray = (obj, cb) =>
|
|
@@ -57,16 +57,17 @@ const mapForEach = (map, cb) =>
|
|
|
57
57
|
collForEach(map, (value, key) => cb(key, value));
|
|
58
58
|
const mapSet = (map, key, value) =>
|
|
59
59
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
60
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
60
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
61
61
|
if (!collHas(map, key)) {
|
|
62
62
|
mapSet(map, key, getDefaultValue());
|
|
63
|
+
} else {
|
|
64
|
+
hadExistingValue?.(mapGet(map, key));
|
|
63
65
|
}
|
|
64
66
|
return mapGet(map, key);
|
|
65
67
|
};
|
|
66
68
|
|
|
67
69
|
const scheduleRunning = mapNew();
|
|
68
70
|
const scheduleActions = mapNew();
|
|
69
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
70
71
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
71
72
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
72
73
|
? [
|
|
@@ -91,16 +92,15 @@ const createCustomPersister = (
|
|
|
91
92
|
delPersisterListener,
|
|
92
93
|
onIgnoredError,
|
|
93
94
|
supportsMergeableStore,
|
|
94
|
-
|
|
95
|
+
extra = {},
|
|
95
96
|
scheduleId = [],
|
|
96
97
|
) => {
|
|
97
|
-
let listenerId;
|
|
98
98
|
let loadSave = 0;
|
|
99
99
|
let loads = 0;
|
|
100
100
|
let saves = 0;
|
|
101
|
-
let listening = 0;
|
|
102
101
|
let action;
|
|
103
|
-
let
|
|
102
|
+
let autoLoadHandle;
|
|
103
|
+
let autoSaveListenerId;
|
|
104
104
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
105
105
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
106
106
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -136,55 +136,51 @@ const createCustomPersister = (
|
|
|
136
136
|
}
|
|
137
137
|
return persister;
|
|
138
138
|
};
|
|
139
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
140
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
141
|
+
? contentOrChanges?.[1][2] === 1
|
|
142
|
+
? store.applyMergeableChanges
|
|
143
|
+
: store.setMergeableContent
|
|
144
|
+
: contentOrChanges?.[2] === 1
|
|
145
|
+
? store.applyChanges
|
|
146
|
+
: store.setContent)(contentOrChanges);
|
|
147
|
+
};
|
|
139
148
|
const persister = {
|
|
140
149
|
load: async (initialTables, initialValues) =>
|
|
141
150
|
await loadLock(async () => {
|
|
142
151
|
try {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
: store.setContent)(content);
|
|
147
|
-
} catch {
|
|
152
|
+
setContentOrChanges(await getPersisted());
|
|
153
|
+
} catch (error) {
|
|
154
|
+
onIgnoredError?.(error);
|
|
148
155
|
store.setContent([initialTables, initialValues]);
|
|
149
156
|
}
|
|
150
157
|
}),
|
|
151
158
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
152
|
-
persister.stopAutoLoad();
|
|
153
|
-
|
|
154
|
-
listening = 1;
|
|
155
|
-
listeningHandle = addPersisterListener(
|
|
159
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
160
|
+
autoLoadHandle = addPersisterListener(
|
|
156
161
|
async (getContent2, getChanges2) => {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
168
|
-
(isMergeableStore && isMergeable(content)
|
|
169
|
-
? store.setMergeableContent
|
|
170
|
-
: store.setContent)(content);
|
|
171
|
-
} catch (error) {
|
|
172
|
-
onIgnoredError?.(error);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
}
|
|
162
|
+
const changes = getChanges2?.();
|
|
163
|
+
await loadLock(async () => {
|
|
164
|
+
try {
|
|
165
|
+
setContentOrChanges(
|
|
166
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
167
|
+
);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
onIgnoredError?.(error);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
176
172
|
},
|
|
177
173
|
);
|
|
178
174
|
return persister;
|
|
179
175
|
},
|
|
180
176
|
stopAutoLoad: () => {
|
|
181
|
-
if (
|
|
182
|
-
delPersisterListener(
|
|
183
|
-
|
|
184
|
-
listening = 0;
|
|
177
|
+
if (autoLoadHandle) {
|
|
178
|
+
delPersisterListener(autoLoadHandle);
|
|
179
|
+
autoLoadHandle = void 0;
|
|
185
180
|
}
|
|
186
181
|
return persister;
|
|
187
182
|
},
|
|
183
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
188
184
|
save: async (getChanges2) => {
|
|
189
185
|
/* istanbul ignore else */
|
|
190
186
|
if (loadSave != 1) {
|
|
@@ -206,7 +202,7 @@ const createCustomPersister = (
|
|
|
206
202
|
},
|
|
207
203
|
startAutoSave: async () => {
|
|
208
204
|
await persister.stopAutoSave().save();
|
|
209
|
-
|
|
205
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
210
206
|
const changes = getChanges();
|
|
211
207
|
if (hasChanges(changes)) {
|
|
212
208
|
persister.save(() => changes);
|
|
@@ -215,10 +211,11 @@ const createCustomPersister = (
|
|
|
215
211
|
return persister;
|
|
216
212
|
},
|
|
217
213
|
stopAutoSave: () => {
|
|
218
|
-
ifNotUndefined(
|
|
219
|
-
|
|
214
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
215
|
+
autoSaveListenerId = void 0;
|
|
220
216
|
return persister;
|
|
221
217
|
},
|
|
218
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
222
219
|
schedule: async (...actions) => {
|
|
223
220
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
224
221
|
await run();
|
|
@@ -227,10 +224,8 @@ const createCustomPersister = (
|
|
|
227
224
|
getStore: () => store,
|
|
228
225
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
229
226
|
getStats: () => ({loads, saves}),
|
|
227
|
+
...extra,
|
|
230
228
|
};
|
|
231
|
-
if (getThing) {
|
|
232
|
-
persister[getThing] = () => thing;
|
|
233
|
-
}
|
|
234
229
|
return objFreeze(persister);
|
|
235
230
|
};
|
|
236
231
|
|
|
@@ -238,7 +233,7 @@ const DELETE = 'delete';
|
|
|
238
233
|
const getYContent = (yContent) => [yContent.get(T), yContent.get(V)];
|
|
239
234
|
const getChangesFromYDoc = (yContent, events) => {
|
|
240
235
|
if (size(events) == 1 && arrayIsEmpty(events[0].path)) {
|
|
241
|
-
return [yContent.get(T).toJSON(), yContent.get(V).toJSON()];
|
|
236
|
+
return [yContent.get(T).toJSON(), yContent.get(V).toJSON(), 1];
|
|
242
237
|
}
|
|
243
238
|
const [yTables, yValues] = getYContent(yContent);
|
|
244
239
|
const tables = {};
|
|
@@ -284,7 +279,7 @@ const getChangesFromYDoc = (yContent, events) => {
|
|
|
284
279
|
(values[valueId] = action == DELETE ? null : yValues.get(valueId)),
|
|
285
280
|
),
|
|
286
281
|
);
|
|
287
|
-
return [tables, values];
|
|
282
|
+
return [tables, values, 1];
|
|
288
283
|
};
|
|
289
284
|
const applyChangesToYDoc = (yContent, getContent, getChanges) => {
|
|
290
285
|
if (!yContent.size) {
|
|
@@ -403,7 +398,7 @@ const createYjsPersister = (
|
|
|
403
398
|
delPersisterListener,
|
|
404
399
|
onIgnoredError,
|
|
405
400
|
false,
|
|
406
|
-
|
|
401
|
+
{getYDoc: () => yDoc},
|
|
407
402
|
);
|
|
408
403
|
};
|
|
409
404
|
|
package/lib/debug/persisters.js
CHANGED
|
@@ -13,8 +13,6 @@ const arrayShift = (array) => array.shift();
|
|
|
13
13
|
|
|
14
14
|
const object = Object;
|
|
15
15
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
16
|
-
const objIds = object.keys;
|
|
17
|
-
const objFreeze = object.freeze;
|
|
18
16
|
const isObject = (obj) =>
|
|
19
17
|
!isUndefined(obj) &&
|
|
20
18
|
ifNotUndefined(
|
|
@@ -25,6 +23,8 @@ const isObject = (obj) =>
|
|
|
25
23
|
/* istanbul ignore next */
|
|
26
24
|
() => true,
|
|
27
25
|
);
|
|
26
|
+
const objIds = object.keys;
|
|
27
|
+
const objFreeze = object.freeze;
|
|
28
28
|
const objSize = (obj) => size(objIds(obj));
|
|
29
29
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
30
30
|
|
|
@@ -35,16 +35,17 @@ const mapNew = (entries) => new Map(entries);
|
|
|
35
35
|
const mapGet = (map, key) => map?.get(key);
|
|
36
36
|
const mapSet = (map, key, value) =>
|
|
37
37
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
38
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
38
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
39
39
|
if (!collHas(map, key)) {
|
|
40
40
|
mapSet(map, key, getDefaultValue());
|
|
41
|
+
} else {
|
|
42
|
+
hadExistingValue?.(mapGet(map, key));
|
|
41
43
|
}
|
|
42
44
|
return mapGet(map, key);
|
|
43
45
|
};
|
|
44
46
|
|
|
45
47
|
const scheduleRunning = mapNew();
|
|
46
48
|
const scheduleActions = mapNew();
|
|
47
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
48
49
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
49
50
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
50
51
|
? [
|
|
@@ -69,16 +70,15 @@ const createCustomPersister = (
|
|
|
69
70
|
delPersisterListener,
|
|
70
71
|
onIgnoredError,
|
|
71
72
|
supportsMergeableStore,
|
|
72
|
-
|
|
73
|
+
extra = {},
|
|
73
74
|
scheduleId = [],
|
|
74
75
|
) => {
|
|
75
|
-
let listenerId;
|
|
76
76
|
let loadSave = 0;
|
|
77
77
|
let loads = 0;
|
|
78
78
|
let saves = 0;
|
|
79
|
-
let listening = 0;
|
|
80
79
|
let action;
|
|
81
|
-
let
|
|
80
|
+
let autoLoadHandle;
|
|
81
|
+
let autoSaveListenerId;
|
|
82
82
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
83
83
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
84
84
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -114,55 +114,51 @@ const createCustomPersister = (
|
|
|
114
114
|
}
|
|
115
115
|
return persister;
|
|
116
116
|
};
|
|
117
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
118
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
119
|
+
? contentOrChanges?.[1][2] === 1
|
|
120
|
+
? store.applyMergeableChanges
|
|
121
|
+
: store.setMergeableContent
|
|
122
|
+
: contentOrChanges?.[2] === 1
|
|
123
|
+
? store.applyChanges
|
|
124
|
+
: store.setContent)(contentOrChanges);
|
|
125
|
+
};
|
|
117
126
|
const persister = {
|
|
118
127
|
load: async (initialTables, initialValues) =>
|
|
119
128
|
await loadLock(async () => {
|
|
120
129
|
try {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
: store.setContent)(content);
|
|
125
|
-
} catch {
|
|
130
|
+
setContentOrChanges(await getPersisted());
|
|
131
|
+
} catch (error) {
|
|
132
|
+
onIgnoredError?.(error);
|
|
126
133
|
store.setContent([initialTables, initialValues]);
|
|
127
134
|
}
|
|
128
135
|
}),
|
|
129
136
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
130
|
-
persister.stopAutoLoad();
|
|
131
|
-
|
|
132
|
-
listening = 1;
|
|
133
|
-
listeningHandle = addPersisterListener(
|
|
137
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
138
|
+
autoLoadHandle = addPersisterListener(
|
|
134
139
|
async (getContent2, getChanges2) => {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
146
|
-
(isMergeableStore && isMergeable(content)
|
|
147
|
-
? store.setMergeableContent
|
|
148
|
-
: store.setContent)(content);
|
|
149
|
-
} catch (error) {
|
|
150
|
-
onIgnoredError?.(error);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}
|
|
140
|
+
const changes = getChanges2?.();
|
|
141
|
+
await loadLock(async () => {
|
|
142
|
+
try {
|
|
143
|
+
setContentOrChanges(
|
|
144
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
145
|
+
);
|
|
146
|
+
} catch (error) {
|
|
147
|
+
onIgnoredError?.(error);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
154
150
|
},
|
|
155
151
|
);
|
|
156
152
|
return persister;
|
|
157
153
|
},
|
|
158
154
|
stopAutoLoad: () => {
|
|
159
|
-
if (
|
|
160
|
-
delPersisterListener(
|
|
161
|
-
|
|
162
|
-
listening = 0;
|
|
155
|
+
if (autoLoadHandle) {
|
|
156
|
+
delPersisterListener(autoLoadHandle);
|
|
157
|
+
autoLoadHandle = void 0;
|
|
163
158
|
}
|
|
164
159
|
return persister;
|
|
165
160
|
},
|
|
161
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
166
162
|
save: async (getChanges2) => {
|
|
167
163
|
/* istanbul ignore else */
|
|
168
164
|
if (loadSave != 1) {
|
|
@@ -184,7 +180,7 @@ const createCustomPersister = (
|
|
|
184
180
|
},
|
|
185
181
|
startAutoSave: async () => {
|
|
186
182
|
await persister.stopAutoSave().save();
|
|
187
|
-
|
|
183
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
188
184
|
const changes = getChanges();
|
|
189
185
|
if (hasChanges(changes)) {
|
|
190
186
|
persister.save(() => changes);
|
|
@@ -193,10 +189,11 @@ const createCustomPersister = (
|
|
|
193
189
|
return persister;
|
|
194
190
|
},
|
|
195
191
|
stopAutoSave: () => {
|
|
196
|
-
ifNotUndefined(
|
|
197
|
-
|
|
192
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
193
|
+
autoSaveListenerId = void 0;
|
|
198
194
|
return persister;
|
|
199
195
|
},
|
|
196
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
200
197
|
schedule: async (...actions) => {
|
|
201
198
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
202
199
|
await run();
|
|
@@ -205,10 +202,8 @@ const createCustomPersister = (
|
|
|
205
202
|
getStore: () => store,
|
|
206
203
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
207
204
|
getStats: () => ({loads, saves}),
|
|
205
|
+
...extra,
|
|
208
206
|
};
|
|
209
|
-
if (getThing) {
|
|
210
|
-
persister[getThing] = () => thing;
|
|
211
|
-
}
|
|
212
207
|
return objFreeze(persister);
|
|
213
208
|
};
|
|
214
209
|
|
package/lib/debug/queries.js
CHANGED
|
@@ -66,9 +66,11 @@ const mapForEach = (map, cb) =>
|
|
|
66
66
|
collForEach(map, (value, key) => cb(key, value));
|
|
67
67
|
const mapSet = (map, key, value) =>
|
|
68
68
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
69
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
69
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
70
70
|
if (!collHas(map, key)) {
|
|
71
71
|
mapSet(map, key, getDefaultValue());
|
|
72
|
+
} else {
|
|
73
|
+
hadExistingValue?.(mapGet(map, key));
|
|
72
74
|
}
|
|
73
75
|
return mapGet(map, key);
|
|
74
76
|
};
|
|
@@ -171,9 +173,10 @@ const getAggregateValue = (
|
|
|
171
173
|
: aggregateValue;
|
|
172
174
|
};
|
|
173
175
|
|
|
174
|
-
const getCellOrValueType = (
|
|
175
|
-
const type = getTypeOf(
|
|
176
|
-
return isTypeStringOrBoolean(type) ||
|
|
176
|
+
const getCellOrValueType = (cellOrValue) => {
|
|
177
|
+
const type = getTypeOf(cellOrValue);
|
|
178
|
+
return isTypeStringOrBoolean(type) ||
|
|
179
|
+
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
177
180
|
? type
|
|
178
181
|
: void 0;
|
|
179
182
|
};
|
|
@@ -42,9 +42,11 @@ const mapForEach = (map, cb) =>
|
|
|
42
42
|
collForEach(map, (value, key) => cb(key, value));
|
|
43
43
|
const mapSet = (map, key, value) =>
|
|
44
44
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
45
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
45
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
46
46
|
if (!collHas(map, key)) {
|
|
47
47
|
mapSet(map, key, getDefaultValue());
|
|
48
|
+
} else {
|
|
49
|
+
hadExistingValue?.(mapGet(map, key));
|
|
48
50
|
}
|
|
49
51
|
return mapGet(map, key);
|
|
50
52
|
};
|
package/lib/debug/store.js
CHANGED
|
@@ -50,9 +50,7 @@ const arrayShift = (array) => array.shift();
|
|
|
50
50
|
const object = Object;
|
|
51
51
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
52
52
|
const objEntries = object.entries;
|
|
53
|
-
const objIds = object.keys;
|
|
54
53
|
const objFrozen = object.isFrozen;
|
|
55
|
-
const objFreeze = object.freeze;
|
|
56
54
|
const isObject = (obj) =>
|
|
57
55
|
!isUndefined(obj) &&
|
|
58
56
|
ifNotUndefined(
|
|
@@ -63,6 +61,8 @@ const isObject = (obj) =>
|
|
|
63
61
|
/* istanbul ignore next */
|
|
64
62
|
() => true,
|
|
65
63
|
);
|
|
64
|
+
const objIds = object.keys;
|
|
65
|
+
const objFreeze = object.freeze;
|
|
66
66
|
const objHas = (obj, id) => id in obj;
|
|
67
67
|
const objDel = (obj, id) => {
|
|
68
68
|
delete obj[id];
|
|
@@ -72,6 +72,23 @@ const objToArray = (obj, cb) =>
|
|
|
72
72
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
73
73
|
const objSize = (obj) => size(objIds(obj));
|
|
74
74
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
75
|
+
const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
76
|
+
if (
|
|
77
|
+
isUndefined(obj) ||
|
|
78
|
+
!isObject(obj) ||
|
|
79
|
+
(!emptyIsValid && objIsEmpty(obj)) ||
|
|
80
|
+
objFrozen(obj)
|
|
81
|
+
) {
|
|
82
|
+
onInvalidObj?.();
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
objToArray(obj, (child, id) => {
|
|
86
|
+
if (!validateChild(child, id)) {
|
|
87
|
+
objDel(obj, id);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return emptyIsValid ? true : !objIsEmpty(obj);
|
|
91
|
+
};
|
|
75
92
|
|
|
76
93
|
const collSizeN = (collSizer) => (coll) =>
|
|
77
94
|
arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
|
|
@@ -95,9 +112,11 @@ const mapMap = (coll, cb) =>
|
|
|
95
112
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
96
113
|
const mapSet = (map, key, value) =>
|
|
97
114
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
98
|
-
const mapEnsure = (map, key, getDefaultValue) => {
|
|
115
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
99
116
|
if (!collHas(map, key)) {
|
|
100
117
|
mapSet(map, key, getDefaultValue());
|
|
118
|
+
} else {
|
|
119
|
+
hadExistingValue?.(mapGet(map, key));
|
|
101
120
|
}
|
|
102
121
|
return mapGet(map, key);
|
|
103
122
|
};
|
|
@@ -106,24 +125,28 @@ const mapMatch = (map, obj, set, del = mapSet) => {
|
|
|
106
125
|
mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
|
|
107
126
|
return map;
|
|
108
127
|
};
|
|
109
|
-
const mapToObj = (map,
|
|
128
|
+
const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
110
129
|
const obj = {};
|
|
111
|
-
collForEach(map, (
|
|
112
|
-
|
|
113
|
-
|
|
130
|
+
collForEach(map, (mapValue, id) => {
|
|
131
|
+
if (!excludeMapValue?.(mapValue, id)) {
|
|
132
|
+
const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
|
|
133
|
+
excludeObjValue?.(objValue) ? 0 : (obj[id] = objValue);
|
|
134
|
+
}
|
|
114
135
|
});
|
|
115
136
|
return obj;
|
|
116
137
|
};
|
|
117
|
-
const mapToObj2 = (map,
|
|
138
|
+
const mapToObj2 = (map, valueMapper, excludeMapValue) =>
|
|
118
139
|
mapToObj(
|
|
119
140
|
map,
|
|
120
|
-
(childMap) => mapToObj(childMap,
|
|
141
|
+
(childMap) => mapToObj(childMap, valueMapper, excludeMapValue),
|
|
142
|
+
collIsEmpty,
|
|
121
143
|
objIsEmpty,
|
|
122
144
|
);
|
|
123
|
-
const mapToObj3 = (map,
|
|
145
|
+
const mapToObj3 = (map, valueMapper, excludeMapValue) =>
|
|
124
146
|
mapToObj(
|
|
125
147
|
map,
|
|
126
|
-
(childMap) => mapToObj2(childMap,
|
|
148
|
+
(childMap) => mapToObj2(childMap, valueMapper, excludeMapValue),
|
|
149
|
+
collIsEmpty,
|
|
127
150
|
objIsEmpty,
|
|
128
151
|
);
|
|
129
152
|
const mapClone = (map, mapValue) => {
|
|
@@ -253,9 +276,10 @@ const pairNewMap = () => [mapNew(), mapNew()];
|
|
|
253
276
|
const pairClone = (array) => [...array];
|
|
254
277
|
const pairIsEqual = ([entry1, entry2]) => entry1 === entry2;
|
|
255
278
|
|
|
256
|
-
const getCellOrValueType = (
|
|
257
|
-
const type = getTypeOf(
|
|
258
|
-
return isTypeStringOrBoolean(type) ||
|
|
279
|
+
const getCellOrValueType = (cellOrValue) => {
|
|
280
|
+
const type = getTypeOf(cellOrValue);
|
|
281
|
+
return isTypeStringOrBoolean(type) ||
|
|
282
|
+
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
259
283
|
? type
|
|
260
284
|
: void 0;
|
|
261
285
|
};
|
|
@@ -275,18 +299,6 @@ const jsonParse = JSON.parse;
|
|
|
275
299
|
const defaultSorter = (sortKey1, sortKey2) =>
|
|
276
300
|
(sortKey1 ?? 0) < (sortKey2 ?? 0) ? -1 : 1;
|
|
277
301
|
|
|
278
|
-
const validate = (obj, validateChild, onInvalidObj) => {
|
|
279
|
-
if (isUndefined(obj) || !isObject(obj) || objIsEmpty(obj) || objFrozen(obj)) {
|
|
280
|
-
onInvalidObj?.();
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
objToArray(obj, (child, id2) => {
|
|
284
|
-
if (!validateChild(child, id2)) {
|
|
285
|
-
objDel(obj, id2);
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
return !objIsEmpty(obj);
|
|
289
|
-
};
|
|
290
302
|
const idsChanged = (changedIds, id2, addedOrRemoved) =>
|
|
291
303
|
mapSet(
|
|
292
304
|
changedIds,
|
|
@@ -346,13 +358,13 @@ const createStore = () => {
|
|
|
346
358
|
const [addListener, callListeners, delListenerImpl, callListenerImpl] =
|
|
347
359
|
getListenerFunctions(() => store);
|
|
348
360
|
const validateTablesSchema = (tableSchema) =>
|
|
349
|
-
|
|
350
|
-
|
|
361
|
+
objValidate(tableSchema, (tableSchema2) =>
|
|
362
|
+
objValidate(tableSchema2, validateCellOrValueSchema),
|
|
351
363
|
);
|
|
352
364
|
const validateValuesSchema = (valuesSchema) =>
|
|
353
|
-
|
|
365
|
+
objValidate(valuesSchema, validateCellOrValueSchema);
|
|
354
366
|
const validateCellOrValueSchema = (schema) => {
|
|
355
|
-
if (!
|
|
367
|
+
if (!objValidate(schema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))) {
|
|
356
368
|
return false;
|
|
357
369
|
}
|
|
358
370
|
const type = schema[TYPE];
|
|
@@ -365,18 +377,18 @@ const createStore = () => {
|
|
|
365
377
|
return true;
|
|
366
378
|
};
|
|
367
379
|
const validateTables = (tables) =>
|
|
368
|
-
|
|
380
|
+
objValidate(tables, validateTable, cellInvalid);
|
|
369
381
|
const validateTable = (table, tableId) =>
|
|
370
382
|
(!hasTablesSchema ||
|
|
371
383
|
collHas(tablesSchemaMap, tableId) ||
|
|
372
384
|
cellInvalid(tableId)) &&
|
|
373
|
-
|
|
385
|
+
objValidate(
|
|
374
386
|
table,
|
|
375
387
|
(row, rowId) => validateRow(tableId, rowId, row),
|
|
376
388
|
() => cellInvalid(tableId),
|
|
377
389
|
);
|
|
378
390
|
const validateRow = (tableId, rowId, row, skipDefaults) =>
|
|
379
|
-
|
|
391
|
+
objValidate(
|
|
380
392
|
skipDefaults ? row : addDefaultsToRow(row, tableId, rowId),
|
|
381
393
|
(cell, cellId) =>
|
|
382
394
|
ifNotUndefined(
|
|
@@ -403,7 +415,7 @@ const createStore = () => {
|
|
|
403
415
|
? cellInvalid(tableId, rowId, cellId, cell)
|
|
404
416
|
: cell;
|
|
405
417
|
const validateValues = (values, skipDefaults) =>
|
|
406
|
-
|
|
418
|
+
objValidate(
|
|
407
419
|
skipDefaults ? values : addDefaultsToValues(values),
|
|
408
420
|
(value, valueId) =>
|
|
409
421
|
ifNotUndefined(
|
|
@@ -1246,17 +1258,20 @@ const createStore = () => {
|
|
|
1246
1258
|
: mapToObj(
|
|
1247
1259
|
row,
|
|
1248
1260
|
([, newCell]) => newCell,
|
|
1249
|
-
(
|
|
1261
|
+
(changedCell) => pairIsEqual(changedCell),
|
|
1250
1262
|
),
|
|
1263
|
+
collIsEmpty,
|
|
1251
1264
|
objIsEmpty,
|
|
1252
1265
|
),
|
|
1266
|
+
collIsEmpty,
|
|
1253
1267
|
objIsEmpty,
|
|
1254
1268
|
),
|
|
1255
1269
|
mapToObj(
|
|
1256
1270
|
changedValues,
|
|
1257
1271
|
([, newValue]) => newValue,
|
|
1258
|
-
(
|
|
1272
|
+
(changedValue) => pairIsEqual(changedValue),
|
|
1259
1273
|
),
|
|
1274
|
+
1,
|
|
1260
1275
|
];
|
|
1261
1276
|
const getTransactionLog = () => [
|
|
1262
1277
|
!collIsEmpty(changedCells),
|