tinybase 4.4.0-beta.0 → 4.4.0-beta.1
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/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-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-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-server.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-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-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.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/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-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-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-server.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-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-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.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 +12 -12
- package/lib/debug/indexes.js +9 -9
- package/lib/debug/metrics.js +9 -9
- package/lib/debug/persisters/persister-automerge.js +21 -8
- package/lib/debug/persisters/persister-browser.js +17 -3
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +27 -12
- package/lib/debug/persisters/persister-expo-sqlite.js +27 -12
- package/lib/debug/persisters/persister-file.js +17 -3
- package/lib/debug/persisters/persister-indexed-db.js +21 -8
- package/lib/debug/persisters/persister-partykit-client.js +54 -20
- package/lib/debug/persisters/persister-partykit-server.js +173 -77
- package/lib/debug/persisters/persister-remote.js +17 -3
- package/lib/debug/persisters/persister-sqlite-wasm.js +27 -12
- package/lib/debug/persisters/persister-sqlite3.js +28 -13
- package/lib/debug/persisters/persister-yjs.js +23 -10
- package/lib/debug/persisters.js +16 -4
- package/lib/debug/queries.js +16 -15
- package/lib/debug/relationships.js +9 -9
- package/lib/debug/store.js +130 -35
- package/lib/debug/tinybase.js +142 -41
- package/lib/debug/tools.js +17 -9
- package/lib/debug/ui-react-dom.js +262 -150
- package/lib/debug/ui-react.js +26 -18
- 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/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-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-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-server.js +1 -1
- package/lib/es6/persisters/persister-partykit-server.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-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-dom.js +1 -1
- package/lib/es6/ui-react-dom.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/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-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-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-partykit-server.js +1 -1
- package/lib/persisters/persister-partykit-server.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-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/persisters/persister-automerge.d.ts +36 -3
- package/lib/types/persisters/persister-browser.d.ts +71 -8
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +42 -8
- package/lib/types/persisters/persister-expo-sqlite.d.ts +40 -7
- package/lib/types/persisters/persister-file.d.ts +34 -3
- package/lib/types/persisters/persister-indexed-db.d.ts +40 -9
- package/lib/types/persisters/persister-partykit-client.d.ts +99 -13
- package/lib/types/persisters/persister-partykit-server.d.ts +414 -9
- package/lib/types/persisters/persister-remote.d.ts +40 -4
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +46 -7
- package/lib/types/persisters/persister-sqlite3.d.ts +40 -7
- package/lib/types/persisters/persister-yjs.d.ts +37 -5
- package/lib/types/persisters.d.ts +10 -10
- package/lib/types/queries.d.ts +24 -0
- package/lib/types/store.d.ts +911 -31
- package/lib/types/tools.d.ts +4 -6
- package/lib/types/ui-react-dom.d.ts +13 -2
- package/lib/types/ui-react.d.ts +27 -6
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +38 -4
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +75 -10
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +44 -9
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +42 -8
- package/lib/types/with-schemas/persisters/persister-file.d.ts +36 -4
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +42 -10
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +102 -15
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +447 -9
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +42 -5
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +48 -8
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +41 -7
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +39 -6
- package/lib/types/with-schemas/persisters.d.ts +10 -10
- package/lib/types/with-schemas/queries.d.ts +24 -0
- package/lib/types/with-schemas/store.d.ts +1179 -35
- package/lib/types/with-schemas/tools.d.ts +4 -6
- package/lib/types/with-schemas/ui-react-dom.d.ts +21 -4
- package/lib/types/with-schemas/ui-react.d.ts +29 -6
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- 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/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-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-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-server.js +1 -1
- package/lib/umd/persisters/persister-partykit-server.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-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-dom.js +1 -1
- package/lib/umd/ui-react-dom.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/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-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-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-server.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-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-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.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 +42 -40
- package/readme.md +2 -2
package/lib/debug/tinybase.js
CHANGED
|
@@ -27,6 +27,7 @@ const CELL_IDS = CELL + IDS;
|
|
|
27
27
|
const VALUE = 'Value';
|
|
28
28
|
const VALUES = VALUE + 's';
|
|
29
29
|
const VALUE_IDS = VALUE + IDS;
|
|
30
|
+
const HAS = 'Has';
|
|
30
31
|
const id = (key) => EMPTY_STRING + key;
|
|
31
32
|
|
|
32
33
|
const mathMax = Math.max;
|
|
@@ -41,13 +42,14 @@ const isString = (thing) => getTypeOf(thing) == STRING;
|
|
|
41
42
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
42
43
|
const isArray = (thing) => Array.isArray(thing);
|
|
43
44
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
45
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
44
46
|
const test = (regex, subject) => regex.test(subject);
|
|
45
47
|
const getUndefined = () => void 0;
|
|
46
48
|
|
|
47
49
|
const arrayHas = (array, value) => array.includes(value);
|
|
48
50
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
49
51
|
const arrayIsEqual = (array1, array2) =>
|
|
50
|
-
|
|
52
|
+
size(array1) === size(array2) &&
|
|
51
53
|
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
52
54
|
const arrayIsSorted = (array, sorter) =>
|
|
53
55
|
arrayEvery(
|
|
@@ -58,8 +60,7 @@ const arraySort = (array, sorter) => array.sort(sorter);
|
|
|
58
60
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
59
61
|
const arrayMap = (array, cb) => array.map(cb);
|
|
60
62
|
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
61
|
-
const
|
|
62
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
63
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
63
64
|
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
64
65
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
65
66
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
@@ -68,11 +69,19 @@ const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
|
68
69
|
const arrayShift = (array) => array.shift();
|
|
69
70
|
|
|
70
71
|
const object = Object;
|
|
72
|
+
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
71
73
|
const objIds = object.keys;
|
|
72
74
|
const objFrozen = object.isFrozen;
|
|
73
75
|
const objFreeze = object.freeze;
|
|
74
76
|
const isObject = (obj) =>
|
|
75
|
-
|
|
77
|
+
!isUndefined(obj) &&
|
|
78
|
+
ifNotUndefined(
|
|
79
|
+
getPrototypeOf(obj),
|
|
80
|
+
(objPrototype) =>
|
|
81
|
+
objPrototype == object.prototype ||
|
|
82
|
+
isUndefined(getPrototypeOf(objPrototype)),
|
|
83
|
+
() => true,
|
|
84
|
+
);
|
|
76
85
|
const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
77
86
|
const objHas = (obj, id) => !isUndefined(objGet(obj, id));
|
|
78
87
|
const objDel = (obj, id) => {
|
|
@@ -81,7 +90,7 @@ const objDel = (obj, id) => {
|
|
|
81
90
|
};
|
|
82
91
|
const objMap = (obj, cb) =>
|
|
83
92
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
84
|
-
const objSize = (obj) =>
|
|
93
|
+
const objSize = (obj) => size(objIds(obj));
|
|
85
94
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
86
95
|
|
|
87
96
|
const collSizeN = (collSizer) => (coll) =>
|
|
@@ -149,10 +158,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
149
158
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
150
159
|
node,
|
|
151
160
|
path[p],
|
|
152
|
-
p >
|
|
161
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
153
162
|
),
|
|
154
163
|
(nodeOrLeaf) => {
|
|
155
|
-
if (p >
|
|
164
|
+
if (p > size(path) - 2) {
|
|
156
165
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
157
166
|
mapSet(node, path[p]);
|
|
158
167
|
}
|
|
@@ -364,7 +373,7 @@ const getPoolFunctions = () => {
|
|
|
364
373
|
return [
|
|
365
374
|
(reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
|
|
366
375
|
(id) => {
|
|
367
|
-
if (test(INTEGER, id) &&
|
|
376
|
+
if (test(INTEGER, id) && size(pool) < 1e3) {
|
|
368
377
|
arrayPush(pool, id);
|
|
369
378
|
}
|
|
370
379
|
},
|
|
@@ -374,7 +383,7 @@ const getPoolFunctions = () => {
|
|
|
374
383
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
375
384
|
const leaves = [];
|
|
376
385
|
const deep = (node, p) =>
|
|
377
|
-
p ==
|
|
386
|
+
p == size(path)
|
|
378
387
|
? arrayPush(leaves, node)
|
|
379
388
|
: path[p] === null
|
|
380
389
|
? collForEach(node, (node2) => deep(node2, p + 1))
|
|
@@ -426,8 +435,8 @@ const getListenerFunctions = (getThing) => {
|
|
|
426
435
|
mapGet(allListeners, id),
|
|
427
436
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
428
437
|
const callWithIds = (...ids) => {
|
|
429
|
-
const index =
|
|
430
|
-
index ==
|
|
438
|
+
const index = size(ids);
|
|
439
|
+
index == size(path)
|
|
431
440
|
? listener(thing, ...ids, ...extraArgsGetter(ids))
|
|
432
441
|
: isUndefined(path[index])
|
|
433
442
|
? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
@@ -482,11 +491,11 @@ const createCheckpoints = getCreateFunction((store) => {
|
|
|
482
491
|
};
|
|
483
492
|
const clearCheckpointIds = (checkpointIds, to) =>
|
|
484
493
|
arrayForEach(
|
|
485
|
-
arrayClear(checkpointIds, to ??
|
|
494
|
+
arrayClear(checkpointIds, to ?? size(checkpointIds)),
|
|
486
495
|
clearCheckpointId,
|
|
487
496
|
);
|
|
488
497
|
const trimBackwardsIds = () =>
|
|
489
|
-
clearCheckpointIds(backwardIds,
|
|
498
|
+
clearCheckpointIds(backwardIds, size(backwardIds) - backwardIdsSize);
|
|
490
499
|
const storeChanged = () =>
|
|
491
500
|
ifNotUndefined(currentId, () => {
|
|
492
501
|
arrayPush(backwardIds, currentId);
|
|
@@ -575,8 +584,8 @@ const createCheckpoints = getCreateFunction((store) => {
|
|
|
575
584
|
checkpointsChanged = 0;
|
|
576
585
|
}
|
|
577
586
|
};
|
|
578
|
-
const setSize = (
|
|
579
|
-
backwardIdsSize =
|
|
587
|
+
const setSize = (size2) => {
|
|
588
|
+
backwardIdsSize = size2;
|
|
580
589
|
trimBackwardsIds();
|
|
581
590
|
return checkpoints;
|
|
582
591
|
};
|
|
@@ -1050,6 +1059,7 @@ const createCustomPersister = (
|
|
|
1050
1059
|
addPersisterListener,
|
|
1051
1060
|
delPersisterListener,
|
|
1052
1061
|
onIgnoredError,
|
|
1062
|
+
[getThing, thing] = [],
|
|
1053
1063
|
scheduleId = [],
|
|
1054
1064
|
) => {
|
|
1055
1065
|
let listenerId;
|
|
@@ -1166,6 +1176,7 @@ const createCustomPersister = (
|
|
|
1166
1176
|
},
|
|
1167
1177
|
stopAutoSave: () => {
|
|
1168
1178
|
ifNotUndefined(listenerId, store.delListener);
|
|
1179
|
+
listenerId = void 0;
|
|
1169
1180
|
return persister;
|
|
1170
1181
|
},
|
|
1171
1182
|
schedule: async (...actions) => {
|
|
@@ -1177,6 +1188,9 @@ const createCustomPersister = (
|
|
|
1177
1188
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
1178
1189
|
getStats: () => ({loads, saves}),
|
|
1179
1190
|
};
|
|
1191
|
+
if (getThing) {
|
|
1192
|
+
persister[getThing] = () => thing;
|
|
1193
|
+
}
|
|
1180
1194
|
return objFreeze(persister);
|
|
1181
1195
|
};
|
|
1182
1196
|
|
|
@@ -1256,7 +1270,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1256
1270
|
const havings = [];
|
|
1257
1271
|
const select = (arg1, arg2) => {
|
|
1258
1272
|
const selectEntry = isFunction(arg1)
|
|
1259
|
-
? [
|
|
1273
|
+
? [size(selectEntries) + EMPTY_STRING, arg1]
|
|
1260
1274
|
: [
|
|
1261
1275
|
isUndefined(arg2) ? arg1 : arg2,
|
|
1262
1276
|
(getTableCell) => getTableCell(arg1, arg2),
|
|
@@ -1630,6 +1644,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1630
1644
|
...slice(args, 0, argumentCount),
|
|
1631
1645
|
(_store, ...listenerArgs) =>
|
|
1632
1646
|
args[argumentCount](queries, ...listenerArgs),
|
|
1647
|
+
true,
|
|
1633
1648
|
);
|
|
1634
1649
|
},
|
|
1635
1650
|
);
|
|
@@ -1862,6 +1877,8 @@ const createStore = () => {
|
|
|
1862
1877
|
let hasValuesSchema;
|
|
1863
1878
|
let cellsTouched = false;
|
|
1864
1879
|
let valuesTouched = false;
|
|
1880
|
+
let hadTables = false;
|
|
1881
|
+
let hadValues = false;
|
|
1865
1882
|
let transactions = 0;
|
|
1866
1883
|
const changedTableIds = mapNew();
|
|
1867
1884
|
const changedTableCellIds = mapNew();
|
|
@@ -1882,20 +1899,27 @@ const createStore = () => {
|
|
|
1882
1899
|
const tableCellIds = mapNew();
|
|
1883
1900
|
const tablesMap = mapNew();
|
|
1884
1901
|
const valuesMap = mapNew();
|
|
1902
|
+
const hasTablesListeners = pairNewMap();
|
|
1885
1903
|
const tablesListeners = pairNewMap();
|
|
1886
1904
|
const tableIdsListeners = pairNewMap();
|
|
1905
|
+
const hasTableListeners = pairNewMap();
|
|
1887
1906
|
const tableListeners = pairNewMap();
|
|
1888
1907
|
const tableCellIdsListeners = pairNewMap();
|
|
1908
|
+
const hasTableCellListeners = pairNewMap();
|
|
1889
1909
|
const rowCountListeners = pairNewMap();
|
|
1890
1910
|
const rowIdsListeners = pairNewMap();
|
|
1891
1911
|
const sortedRowIdsListeners = pairNewMap();
|
|
1912
|
+
const hasRowListeners = pairNewMap();
|
|
1892
1913
|
const rowListeners = pairNewMap();
|
|
1893
1914
|
const cellIdsListeners = pairNewMap();
|
|
1915
|
+
const hasCellListeners = pairNewMap();
|
|
1894
1916
|
const cellListeners = pairNewMap();
|
|
1895
1917
|
const invalidCellListeners = pairNewMap();
|
|
1896
1918
|
const invalidValueListeners = pairNewMap();
|
|
1919
|
+
const hasValuesListeners = pairNewMap();
|
|
1897
1920
|
const valuesListeners = pairNewMap();
|
|
1898
1921
|
const valueIdsListeners = pairNewMap();
|
|
1922
|
+
const hasValueListeners = pairNewMap();
|
|
1899
1923
|
const valueListeners = pairNewMap();
|
|
1900
1924
|
const startTransactionListeners = mapNew();
|
|
1901
1925
|
const finishTransactionListeners = pairNewMap();
|
|
@@ -2290,29 +2314,45 @@ const createStore = () => {
|
|
|
2290
2314
|
),
|
|
2291
2315
|
)
|
|
2292
2316
|
: 0;
|
|
2293
|
-
const
|
|
2317
|
+
const callIdsAndHasListenersIfChanged = (
|
|
2318
|
+
changedIds,
|
|
2319
|
+
idListeners,
|
|
2320
|
+
hasListeners,
|
|
2321
|
+
ids,
|
|
2322
|
+
) => {
|
|
2294
2323
|
if (!collIsEmpty(changedIds)) {
|
|
2295
|
-
callListeners(
|
|
2324
|
+
callListeners(idListeners, ids, () => mapToObj(changedIds));
|
|
2325
|
+
mapForEach(changedIds, (changedId, changed) =>
|
|
2326
|
+
callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),
|
|
2327
|
+
);
|
|
2296
2328
|
return 1;
|
|
2297
2329
|
}
|
|
2298
2330
|
};
|
|
2299
2331
|
const callTabularListenersForChanges = (mutator) => {
|
|
2332
|
+
const hasTablesNow = hasTables();
|
|
2333
|
+
if (hasTablesNow != hadTables) {
|
|
2334
|
+
callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
|
|
2335
|
+
}
|
|
2300
2336
|
const emptySortedRowIdListeners = collIsEmpty(
|
|
2301
2337
|
sortedRowIdsListeners[mutator],
|
|
2302
2338
|
);
|
|
2303
|
-
const
|
|
2339
|
+
const emptyIdAndHasListeners =
|
|
2304
2340
|
collIsEmpty(cellIdsListeners[mutator]) &&
|
|
2341
|
+
collIsEmpty(hasCellListeners[mutator]) &&
|
|
2342
|
+
collIsEmpty(rowIdsListeners[mutator]) &&
|
|
2343
|
+
collIsEmpty(hasRowListeners[mutator]) &&
|
|
2305
2344
|
collIsEmpty(tableCellIdsListeners[mutator]) &&
|
|
2345
|
+
collIsEmpty(hasTableCellListeners[mutator]) &&
|
|
2306
2346
|
collIsEmpty(rowCountListeners[mutator]) &&
|
|
2307
|
-
collIsEmpty(rowIdsListeners[mutator]) &&
|
|
2308
2347
|
emptySortedRowIdListeners &&
|
|
2309
|
-
collIsEmpty(tableIdsListeners[mutator])
|
|
2348
|
+
collIsEmpty(tableIdsListeners[mutator]) &&
|
|
2349
|
+
collIsEmpty(hasTableListeners[mutator]);
|
|
2310
2350
|
const emptyOtherListeners =
|
|
2311
2351
|
collIsEmpty(cellListeners[mutator]) &&
|
|
2312
2352
|
collIsEmpty(rowListeners[mutator]) &&
|
|
2313
2353
|
collIsEmpty(tableListeners[mutator]) &&
|
|
2314
2354
|
collIsEmpty(tablesListeners[mutator]);
|
|
2315
|
-
if (!
|
|
2355
|
+
if (!emptyIdAndHasListeners || !emptyOtherListeners) {
|
|
2316
2356
|
const changes = mutator
|
|
2317
2357
|
? [
|
|
2318
2358
|
mapClone(changedTableIds),
|
|
@@ -2330,12 +2370,17 @@ const createStore = () => {
|
|
|
2330
2370
|
changedCellIds,
|
|
2331
2371
|
changedCells,
|
|
2332
2372
|
];
|
|
2333
|
-
if (!
|
|
2334
|
-
|
|
2373
|
+
if (!emptyIdAndHasListeners) {
|
|
2374
|
+
callIdsAndHasListenersIfChanged(
|
|
2375
|
+
changes[0],
|
|
2376
|
+
tableIdsListeners[mutator],
|
|
2377
|
+
hasTableListeners[mutator],
|
|
2378
|
+
);
|
|
2335
2379
|
collForEach(changes[1], (changedIds, tableId) =>
|
|
2336
|
-
|
|
2337
|
-
tableCellIdsListeners[mutator],
|
|
2380
|
+
callIdsAndHasListenersIfChanged(
|
|
2338
2381
|
changedIds,
|
|
2382
|
+
tableCellIdsListeners[mutator],
|
|
2383
|
+
hasTableCellListeners[mutator],
|
|
2339
2384
|
[tableId],
|
|
2340
2385
|
),
|
|
2341
2386
|
);
|
|
@@ -2351,9 +2396,12 @@ const createStore = () => {
|
|
|
2351
2396
|
const calledSortableTableIds = setNew();
|
|
2352
2397
|
collForEach(changes[3], (changedIds, tableId) => {
|
|
2353
2398
|
if (
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2399
|
+
callIdsAndHasListenersIfChanged(
|
|
2400
|
+
changedIds,
|
|
2401
|
+
rowIdsListeners[mutator],
|
|
2402
|
+
hasRowListeners[mutator],
|
|
2403
|
+
[tableId],
|
|
2404
|
+
) &&
|
|
2357
2405
|
!emptySortedRowIdListeners
|
|
2358
2406
|
) {
|
|
2359
2407
|
callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
|
|
@@ -2382,10 +2430,12 @@ const createStore = () => {
|
|
|
2382
2430
|
}
|
|
2383
2431
|
collForEach(changes[4], (rowCellIds, tableId) =>
|
|
2384
2432
|
collForEach(rowCellIds, (changedIds, rowId) =>
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2433
|
+
callIdsAndHasListenersIfChanged(
|
|
2434
|
+
changedIds,
|
|
2435
|
+
cellIdsListeners[mutator],
|
|
2436
|
+
hasCellListeners[mutator],
|
|
2437
|
+
[tableId, rowId],
|
|
2438
|
+
),
|
|
2389
2439
|
),
|
|
2390
2440
|
);
|
|
2391
2441
|
}
|
|
@@ -2425,17 +2475,27 @@ const createStore = () => {
|
|
|
2425
2475
|
}
|
|
2426
2476
|
}
|
|
2427
2477
|
};
|
|
2428
|
-
const
|
|
2429
|
-
const
|
|
2478
|
+
const callValuesListenersForChanges = (mutator) => {
|
|
2479
|
+
const hasValuesNow = hasValues();
|
|
2480
|
+
if (hasValuesNow != hadValues) {
|
|
2481
|
+
callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
|
|
2482
|
+
}
|
|
2483
|
+
const emptyIdAndHasListeners =
|
|
2484
|
+
collIsEmpty(valueIdsListeners[mutator]) &&
|
|
2485
|
+
collIsEmpty(hasValueListeners[mutator]);
|
|
2430
2486
|
const emptyOtherListeners =
|
|
2431
2487
|
collIsEmpty(valueListeners[mutator]) &&
|
|
2432
2488
|
collIsEmpty(valuesListeners[mutator]);
|
|
2433
|
-
if (!
|
|
2489
|
+
if (!emptyIdAndHasListeners || !emptyOtherListeners) {
|
|
2434
2490
|
const changes = mutator
|
|
2435
2491
|
? [mapClone(changedValueIds), mapClone(changedValues)]
|
|
2436
2492
|
: [changedValueIds, changedValues];
|
|
2437
|
-
if (!
|
|
2438
|
-
|
|
2493
|
+
if (!emptyIdAndHasListeners) {
|
|
2494
|
+
callIdsAndHasListenersIfChanged(
|
|
2495
|
+
changes[0],
|
|
2496
|
+
valueIdsListeners[mutator],
|
|
2497
|
+
hasValueListeners[mutator],
|
|
2498
|
+
);
|
|
2439
2499
|
}
|
|
2440
2500
|
if (!emptyOtherListeners) {
|
|
2441
2501
|
let valuesChanged;
|
|
@@ -2808,7 +2868,7 @@ const createStore = () => {
|
|
|
2808
2868
|
}
|
|
2809
2869
|
callInvalidValueListeners(1);
|
|
2810
2870
|
if (valuesTouched) {
|
|
2811
|
-
|
|
2871
|
+
callValuesListenersForChanges(1);
|
|
2812
2872
|
}
|
|
2813
2873
|
if (doRollback?.(getTransactionChanges, getTransactionLog)) {
|
|
2814
2874
|
collForEach(changedCells, (table, tableId) =>
|
|
@@ -2836,7 +2896,7 @@ const createStore = () => {
|
|
|
2836
2896
|
}
|
|
2837
2897
|
callInvalidValueListeners(0);
|
|
2838
2898
|
if (valuesTouched) {
|
|
2839
|
-
|
|
2899
|
+
callValuesListenersForChanges(0);
|
|
2840
2900
|
}
|
|
2841
2901
|
callListeners(
|
|
2842
2902
|
finishTransactionListeners[1],
|
|
@@ -2846,6 +2906,8 @@ const createStore = () => {
|
|
|
2846
2906
|
);
|
|
2847
2907
|
transactions = 0;
|
|
2848
2908
|
cellsTouched = valuesTouched = false;
|
|
2909
|
+
hadTables = hasTables();
|
|
2910
|
+
hadValues = hasValues();
|
|
2849
2911
|
arrayForEach(
|
|
2850
2912
|
[
|
|
2851
2913
|
changedTableIds,
|
|
@@ -2942,19 +3004,26 @@ const createStore = () => {
|
|
|
2942
3004
|
return store;
|
|
2943
3005
|
};
|
|
2944
3006
|
const getListenerStats = () => ({
|
|
3007
|
+
hasTables: pairCollSize2(hasTablesListeners),
|
|
2945
3008
|
tables: pairCollSize2(tablesListeners),
|
|
2946
3009
|
tableIds: pairCollSize2(tableIdsListeners),
|
|
2947
|
-
|
|
3010
|
+
hasTable: pairCollSize2(hasTableListeners),
|
|
2948
3011
|
table: pairCollSize2(tableListeners),
|
|
3012
|
+
tableCellIds: pairCollSize2(tableCellIdsListeners),
|
|
3013
|
+
hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),
|
|
2949
3014
|
rowCount: pairCollSize2(rowCountListeners),
|
|
2950
3015
|
rowIds: pairCollSize2(rowIdsListeners),
|
|
2951
3016
|
sortedRowIds: pairCollSize2(sortedRowIdsListeners),
|
|
3017
|
+
hasRow: pairCollSize2(hasRowListeners, collSize3),
|
|
2952
3018
|
row: pairCollSize2(rowListeners, collSize3),
|
|
2953
3019
|
cellIds: pairCollSize2(cellIdsListeners, collSize3),
|
|
3020
|
+
hasCell: pairCollSize2(hasCellListeners, collSize4),
|
|
2954
3021
|
cell: pairCollSize2(cellListeners, collSize4),
|
|
2955
3022
|
invalidCell: pairCollSize2(invalidCellListeners, collSize4),
|
|
3023
|
+
hasValues: pairCollSize2(hasValuesListeners),
|
|
2956
3024
|
values: pairCollSize2(valuesListeners),
|
|
2957
3025
|
valueIds: pairCollSize2(valueIdsListeners),
|
|
3026
|
+
hasValue: pairCollSize2(hasValueListeners),
|
|
2958
3027
|
value: pairCollSize2(valueListeners),
|
|
2959
3028
|
invalidValue: pairCollSize2(invalidValueListeners),
|
|
2960
3029
|
transaction:
|
|
@@ -3039,14 +3108,39 @@ const createStore = () => {
|
|
|
3039
3108
|
};
|
|
3040
3109
|
objMap(
|
|
3041
3110
|
{
|
|
3111
|
+
[HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
|
|
3042
3112
|
[TABLES]: [0, tablesListeners],
|
|
3043
3113
|
[TABLE_IDS]: [0, tableIdsListeners],
|
|
3114
|
+
[HAS + TABLE]: [
|
|
3115
|
+
1,
|
|
3116
|
+
hasTableListeners,
|
|
3117
|
+
[getTableIds],
|
|
3118
|
+
(ids) => [hasTable(...ids)],
|
|
3119
|
+
],
|
|
3044
3120
|
[TABLE]: [1, tableListeners, [getTableIds]],
|
|
3045
3121
|
[TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
|
|
3122
|
+
[HAS + TABLE + CELL]: [
|
|
3123
|
+
2,
|
|
3124
|
+
hasTableCellListeners,
|
|
3125
|
+
[getTableIds, getTableCellIds],
|
|
3126
|
+
(ids) => [hasTableCell(...ids)],
|
|
3127
|
+
],
|
|
3046
3128
|
[ROW_COUNT]: [1, rowCountListeners, [getTableIds]],
|
|
3047
3129
|
[ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
|
|
3130
|
+
[HAS + ROW]: [
|
|
3131
|
+
2,
|
|
3132
|
+
hasRowListeners,
|
|
3133
|
+
[getTableIds, getRowIds],
|
|
3134
|
+
(ids) => [hasRow(...ids)],
|
|
3135
|
+
],
|
|
3048
3136
|
[ROW]: [2, rowListeners, [getTableIds, getRowIds]],
|
|
3049
3137
|
[CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
|
|
3138
|
+
[HAS + CELL]: [
|
|
3139
|
+
3,
|
|
3140
|
+
hasCellListeners,
|
|
3141
|
+
[getTableIds, getRowIds, getCellIds],
|
|
3142
|
+
(ids) => [hasCell(...ids)],
|
|
3143
|
+
],
|
|
3050
3144
|
[CELL]: [
|
|
3051
3145
|
3,
|
|
3052
3146
|
cellListeners,
|
|
@@ -3054,8 +3148,15 @@ const createStore = () => {
|
|
|
3054
3148
|
(ids) => pairNew(getCell(...ids)),
|
|
3055
3149
|
],
|
|
3056
3150
|
InvalidCell: [3, invalidCellListeners],
|
|
3151
|
+
[HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],
|
|
3057
3152
|
[VALUES]: [0, valuesListeners],
|
|
3058
3153
|
[VALUE_IDS]: [0, valueIdsListeners],
|
|
3154
|
+
[HAS + VALUE]: [
|
|
3155
|
+
1,
|
|
3156
|
+
hasValueListeners,
|
|
3157
|
+
[getValueIds],
|
|
3158
|
+
(ids) => [hasValue(...ids)],
|
|
3159
|
+
],
|
|
3059
3160
|
[VALUE]: [
|
|
3060
3161
|
1,
|
|
3061
3162
|
valueListeners,
|
package/lib/debug/tools.js
CHANGED
|
@@ -25,12 +25,14 @@ const VALUE_IDS = VALUE + IDS;
|
|
|
25
25
|
|
|
26
26
|
const promise = Promise;
|
|
27
27
|
const isFiniteNumber = isFinite;
|
|
28
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
29
28
|
const isUndefined = (thing) => thing == void 0;
|
|
29
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
30
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
30
31
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
31
32
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
32
33
|
const isArray = (thing) => Array.isArray(thing);
|
|
33
34
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
35
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
34
36
|
const promiseAll = async (promises) => promise.all(promises);
|
|
35
37
|
|
|
36
38
|
const getCellOrValueType = (cell) => {
|
|
@@ -45,7 +47,6 @@ const arraySort = (array, sorter) => array.sort(sorter);
|
|
|
45
47
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
46
48
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
47
49
|
const arrayMap = (array, cb) => array.map(cb);
|
|
48
|
-
const arrayLength = (array) => array.length;
|
|
49
50
|
const arrayFilter = (array, cb) => array.filter(cb);
|
|
50
51
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
51
52
|
const arrayPop = (array) => array.pop();
|
|
@@ -53,13 +54,21 @@ const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
|
53
54
|
const arrayShift = (array) => array.shift();
|
|
54
55
|
|
|
55
56
|
const object = Object;
|
|
57
|
+
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
56
58
|
const objIds = object.keys;
|
|
57
59
|
const objFreeze = object.freeze;
|
|
58
60
|
const isObject = (obj) =>
|
|
59
|
-
|
|
61
|
+
!isUndefined(obj) &&
|
|
62
|
+
ifNotUndefined(
|
|
63
|
+
getPrototypeOf(obj),
|
|
64
|
+
(objPrototype) =>
|
|
65
|
+
objPrototype == object.prototype ||
|
|
66
|
+
isUndefined(getPrototypeOf(objPrototype)),
|
|
67
|
+
() => true,
|
|
68
|
+
);
|
|
60
69
|
const objMap = (obj, cb) =>
|
|
61
70
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
62
|
-
const objSize = (obj) =>
|
|
71
|
+
const objSize = (obj) => size(objIds(obj));
|
|
63
72
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
64
73
|
|
|
65
74
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -250,7 +259,7 @@ const mapUnique = (map, id, value, index = 1) => {
|
|
|
250
259
|
};
|
|
251
260
|
const formatJsDoc = (file) =>
|
|
252
261
|
file.replace(JSDOC, (_, indent, text) => {
|
|
253
|
-
const lineLength = 77 -
|
|
262
|
+
const lineLength = 77 - size(indent);
|
|
254
263
|
return `${indent}/**
|
|
255
264
|
${text.replace(
|
|
256
265
|
new RegExp(`([^\\n]{1,${lineLength}})(\\s|$)`, 'g'),
|
|
@@ -258,7 +267,6 @@ ${text.replace(
|
|
|
258
267
|
`,
|
|
259
268
|
)}${indent} */`;
|
|
260
269
|
});
|
|
261
|
-
const length = (str) => str.length;
|
|
262
270
|
const flat = (array) => array.flat(1e3);
|
|
263
271
|
const camel = (str, firstCap = 0) =>
|
|
264
272
|
arrayJoin(
|
|
@@ -2872,8 +2880,8 @@ const createTools = getCreateFunction((store) => {
|
|
|
2872
2880
|
totalTables,
|
|
2873
2881
|
totalRows,
|
|
2874
2882
|
totalCells,
|
|
2875
|
-
totalValues:
|
|
2876
|
-
jsonLength:
|
|
2883
|
+
totalValues: size(store.getValueIds()),
|
|
2884
|
+
jsonLength: size(store.getJson()),
|
|
2877
2885
|
...(detail ? {detail: {tables}} : {}),
|
|
2878
2886
|
};
|
|
2879
2887
|
};
|
|
@@ -2909,7 +2917,7 @@ const createTools = getCreateFunction((store) => {
|
|
|
2909
2917
|
collForEach(cellsMeta, ([type, , [, maxValue], count], cellId) => {
|
|
2910
2918
|
tablesSchema[tableId][cellId] = {
|
|
2911
2919
|
[TYPE]: type,
|
|
2912
|
-
...(count ==
|
|
2920
|
+
...(count == size(rowIds) ? {[DEFAULT]: maxValue} : {}),
|
|
2913
2921
|
};
|
|
2914
2922
|
});
|
|
2915
2923
|
return 1;
|