tinybase 4.4.0-beta.0 → 4.4.0-beta.2
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 +288 -67
- 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 +912 -32
- 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 +1176 -44
- 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 +1180 -36
- 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 +1382 -71
- 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
|
@@ -15,13 +15,13 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
15
15
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
16
16
|
const isArray = (thing) => Array.isArray(thing);
|
|
17
17
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
18
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
18
19
|
const promiseNew = (resolver) => new promise(resolver);
|
|
19
20
|
const promiseAll = async (promises) => promise.all(promises);
|
|
20
21
|
|
|
21
22
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
22
23
|
const arrayMap = (array, cb) => array.map(cb);
|
|
23
|
-
const
|
|
24
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
24
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
25
25
|
const arrayFilter = (array, cb) => array.filter(cb);
|
|
26
26
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
27
27
|
const arrayShift = (array) => array.shift();
|
|
@@ -32,10 +32,18 @@ const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
|
32
32
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
33
33
|
|
|
34
34
|
const object = Object;
|
|
35
|
+
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
35
36
|
const objIds = object.keys;
|
|
36
37
|
const objFreeze = object.freeze;
|
|
37
38
|
const isObject = (obj) =>
|
|
38
|
-
|
|
39
|
+
!isUndefined(obj) &&
|
|
40
|
+
ifNotUndefined(
|
|
41
|
+
getPrototypeOf(obj),
|
|
42
|
+
(objPrototype) =>
|
|
43
|
+
objPrototype == object.prototype ||
|
|
44
|
+
isUndefined(getPrototypeOf(objPrototype)),
|
|
45
|
+
() => true,
|
|
46
|
+
);
|
|
39
47
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
40
48
|
const objMerge = (...objs) => object.assign({}, ...objs);
|
|
41
49
|
const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
@@ -47,7 +55,7 @@ const objDel = (obj, id) => {
|
|
|
47
55
|
const objMap = (obj, cb) =>
|
|
48
56
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
49
57
|
const objValues = (obj) => object.values(obj);
|
|
50
|
-
const objSize = (obj) =>
|
|
58
|
+
const objSize = (obj) => size(objIds(obj));
|
|
51
59
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
52
60
|
|
|
53
61
|
const mapNew = (entries) => new Map(entries);
|
|
@@ -318,8 +326,8 @@ const upsert = async (
|
|
|
318
326
|
')VALUES' +
|
|
319
327
|
slice(
|
|
320
328
|
strRepeat(
|
|
321
|
-
`,(?${strRepeat(',?',
|
|
322
|
-
|
|
329
|
+
`,(?${strRepeat(',?', size(changingColumnNames))})`,
|
|
330
|
+
size(args) / (size(changingColumnNames) + 1),
|
|
323
331
|
),
|
|
324
332
|
1,
|
|
325
333
|
) +
|
|
@@ -357,6 +365,7 @@ const createCustomPersister = (
|
|
|
357
365
|
addPersisterListener,
|
|
358
366
|
delPersisterListener,
|
|
359
367
|
onIgnoredError,
|
|
368
|
+
[getThing, thing] = [],
|
|
360
369
|
scheduleId = [],
|
|
361
370
|
) => {
|
|
362
371
|
let listenerId;
|
|
@@ -473,6 +482,7 @@ const createCustomPersister = (
|
|
|
473
482
|
},
|
|
474
483
|
stopAutoSave: () => {
|
|
475
484
|
ifNotUndefined(listenerId, store.delListener);
|
|
485
|
+
listenerId = void 0;
|
|
476
486
|
return persister;
|
|
477
487
|
},
|
|
478
488
|
schedule: async (...actions) => {
|
|
@@ -484,6 +494,9 @@ const createCustomPersister = (
|
|
|
484
494
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
485
495
|
getStats: () => ({loads, saves}),
|
|
486
496
|
};
|
|
497
|
+
if (getThing) {
|
|
498
|
+
persister[getThing] = () => thing;
|
|
499
|
+
}
|
|
487
500
|
return objFreeze(persister);
|
|
488
501
|
};
|
|
489
502
|
|
|
@@ -496,7 +509,7 @@ const createJsonSqlitePersister = (
|
|
|
496
509
|
onIgnoredError,
|
|
497
510
|
[storeTableName],
|
|
498
511
|
managedTableNames,
|
|
499
|
-
|
|
512
|
+
db,
|
|
500
513
|
) => {
|
|
501
514
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
502
515
|
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
@@ -529,7 +542,8 @@ const createJsonSqlitePersister = (
|
|
|
529
542
|
addPersisterListener,
|
|
530
543
|
delPersisterListener,
|
|
531
544
|
onIgnoredError,
|
|
532
|
-
|
|
545
|
+
['getDb', db],
|
|
546
|
+
db,
|
|
533
547
|
);
|
|
534
548
|
return persister;
|
|
535
549
|
};
|
|
@@ -546,7 +560,7 @@ const createTabularSqlitePersister = (
|
|
|
546
560
|
[valuesLoad, valuesSave, valuesTableName],
|
|
547
561
|
],
|
|
548
562
|
managedTableNames,
|
|
549
|
-
|
|
563
|
+
db,
|
|
550
564
|
) => {
|
|
551
565
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
552
566
|
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
@@ -633,7 +647,8 @@ const createTabularSqlitePersister = (
|
|
|
633
647
|
addPersisterListener,
|
|
634
648
|
delPersisterListener,
|
|
635
649
|
onIgnoredError,
|
|
636
|
-
|
|
650
|
+
['getDb', db],
|
|
651
|
+
db,
|
|
637
652
|
);
|
|
638
653
|
return persister;
|
|
639
654
|
};
|
|
@@ -742,7 +757,7 @@ const createSqlitePersister = (
|
|
|
742
757
|
delUpdateListener,
|
|
743
758
|
onSqlCommand,
|
|
744
759
|
onIgnoredError,
|
|
745
|
-
|
|
760
|
+
db,
|
|
746
761
|
) => {
|
|
747
762
|
let dataVersion;
|
|
748
763
|
let schemaVersion;
|
|
@@ -793,7 +808,7 @@ const createSqlitePersister = (
|
|
|
793
808
|
onIgnoredError,
|
|
794
809
|
defaultedConfig,
|
|
795
810
|
collValues(managedTableNamesSet),
|
|
796
|
-
|
|
811
|
+
db,
|
|
797
812
|
);
|
|
798
813
|
};
|
|
799
814
|
|
|
@@ -811,7 +826,7 @@ const createSqlite3Persister = (
|
|
|
811
826
|
async (sql, args = []) =>
|
|
812
827
|
await promiseNew((resolve, reject) =>
|
|
813
828
|
db.all(sql, args, (error, rows) =>
|
|
814
|
-
error ? reject(error) : resolve(rows
|
|
829
|
+
error ? reject(error) : resolve(rows),
|
|
815
830
|
),
|
|
816
831
|
),
|
|
817
832
|
(listener) => {
|
|
@@ -4,29 +4,36 @@ const TINYBASE = 'tinybase';
|
|
|
4
4
|
const T = 't';
|
|
5
5
|
const V = 'v';
|
|
6
6
|
|
|
7
|
+
const isUndefined = (thing) => thing == void 0;
|
|
8
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
9
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
10
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
11
|
+
|
|
7
12
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
8
13
|
const arrayMap = (array, cb) => array.map(cb);
|
|
9
|
-
const
|
|
10
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
14
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
11
15
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
12
16
|
const arrayShift = (array) => array.shift();
|
|
13
17
|
|
|
14
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
15
|
-
const isUndefined = (thing) => thing == void 0;
|
|
16
|
-
const ifNotUndefined = (value, then, otherwise) =>
|
|
17
|
-
isUndefined(value) ? otherwise?.() : then(value);
|
|
18
|
-
|
|
19
18
|
const object = Object;
|
|
19
|
+
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
20
20
|
const objIds = object.keys;
|
|
21
21
|
const objFreeze = object.freeze;
|
|
22
22
|
const isObject = (obj) =>
|
|
23
|
-
|
|
23
|
+
!isUndefined(obj) &&
|
|
24
|
+
ifNotUndefined(
|
|
25
|
+
getPrototypeOf(obj),
|
|
26
|
+
(objPrototype) =>
|
|
27
|
+
objPrototype == object.prototype ||
|
|
28
|
+
isUndefined(getPrototypeOf(objPrototype)),
|
|
29
|
+
() => true,
|
|
30
|
+
);
|
|
24
31
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
25
32
|
const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
26
33
|
const objHas = (obj, id) => !isUndefined(objGet(obj, id));
|
|
27
34
|
const objMap = (obj, cb) =>
|
|
28
35
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
29
|
-
const objSize = (obj) =>
|
|
36
|
+
const objSize = (obj) => size(objIds(obj));
|
|
30
37
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
31
38
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
32
39
|
if (!objHas(obj, id)) {
|
|
@@ -61,6 +68,7 @@ const createCustomPersister = (
|
|
|
61
68
|
addPersisterListener,
|
|
62
69
|
delPersisterListener,
|
|
63
70
|
onIgnoredError,
|
|
71
|
+
[getThing, thing] = [],
|
|
64
72
|
scheduleId = [],
|
|
65
73
|
) => {
|
|
66
74
|
let listenerId;
|
|
@@ -177,6 +185,7 @@ const createCustomPersister = (
|
|
|
177
185
|
},
|
|
178
186
|
stopAutoSave: () => {
|
|
179
187
|
ifNotUndefined(listenerId, store.delListener);
|
|
188
|
+
listenerId = void 0;
|
|
180
189
|
return persister;
|
|
181
190
|
},
|
|
182
191
|
schedule: async (...actions) => {
|
|
@@ -188,13 +197,16 @@ const createCustomPersister = (
|
|
|
188
197
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
189
198
|
getStats: () => ({loads, saves}),
|
|
190
199
|
};
|
|
200
|
+
if (getThing) {
|
|
201
|
+
persister[getThing] = () => thing;
|
|
202
|
+
}
|
|
191
203
|
return objFreeze(persister);
|
|
192
204
|
};
|
|
193
205
|
|
|
194
206
|
const DELETE = 'delete';
|
|
195
207
|
const getYContent = (yContent) => [yContent.get(T), yContent.get(V)];
|
|
196
208
|
const getTransactionChangesFromYDoc = (yContent, events) => {
|
|
197
|
-
if (
|
|
209
|
+
if (size(events) == 1 && arrayIsEmpty(events[0].path)) {
|
|
198
210
|
return [yContent.get(T).toJSON(), yContent.get(V).toJSON()];
|
|
199
211
|
}
|
|
200
212
|
const [yTables, yValues] = getYContent(yContent);
|
|
@@ -365,6 +377,7 @@ const createYjsPersister = (
|
|
|
365
377
|
addPersisterListener,
|
|
366
378
|
delPersisterListener,
|
|
367
379
|
onIgnoredError,
|
|
380
|
+
['getYDoc', yDoc],
|
|
368
381
|
);
|
|
369
382
|
};
|
|
370
383
|
|
package/lib/debug/persisters.js
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
2
1
|
const isUndefined = (thing) => thing == void 0;
|
|
3
2
|
const ifNotUndefined = (value, then, otherwise) =>
|
|
4
3
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
4
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
5
5
|
|
|
6
|
-
const arrayLength = (array) => array.length;
|
|
7
6
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
8
7
|
const arrayShift = (array) => array.shift();
|
|
9
8
|
|
|
10
9
|
const object = Object;
|
|
10
|
+
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
11
11
|
const objIds = object.keys;
|
|
12
12
|
const objFreeze = object.freeze;
|
|
13
13
|
const isObject = (obj) =>
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
!isUndefined(obj) &&
|
|
15
|
+
ifNotUndefined(
|
|
16
|
+
getPrototypeOf(obj),
|
|
17
|
+
(objPrototype) =>
|
|
18
|
+
objPrototype == object.prototype ||
|
|
19
|
+
isUndefined(getPrototypeOf(objPrototype)),
|
|
20
|
+
() => true,
|
|
21
|
+
);
|
|
22
|
+
const objSize = (obj) => size(objIds(obj));
|
|
16
23
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
17
24
|
|
|
18
25
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -38,6 +45,7 @@ const createCustomPersister = (
|
|
|
38
45
|
addPersisterListener,
|
|
39
46
|
delPersisterListener,
|
|
40
47
|
onIgnoredError,
|
|
48
|
+
[getThing, thing] = [],
|
|
41
49
|
scheduleId = [],
|
|
42
50
|
) => {
|
|
43
51
|
let listenerId;
|
|
@@ -154,6 +162,7 @@ const createCustomPersister = (
|
|
|
154
162
|
},
|
|
155
163
|
stopAutoSave: () => {
|
|
156
164
|
ifNotUndefined(listenerId, store.delListener);
|
|
165
|
+
listenerId = void 0;
|
|
157
166
|
return persister;
|
|
158
167
|
},
|
|
159
168
|
schedule: async (...actions) => {
|
|
@@ -165,6 +174,9 @@ const createCustomPersister = (
|
|
|
165
174
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
166
175
|
getStats: () => ({loads, saves}),
|
|
167
176
|
};
|
|
177
|
+
if (getThing) {
|
|
178
|
+
persister[getThing] = () => thing;
|
|
179
|
+
}
|
|
168
180
|
return objFreeze(persister);
|
|
169
181
|
};
|
|
170
182
|
|
package/lib/debug/queries.js
CHANGED
|
@@ -21,18 +21,6 @@ const SORTED_ROW_IDS = 'Sorted' + ROW + IDS;
|
|
|
21
21
|
const CELL = 'Cell';
|
|
22
22
|
const CELL_IDS = CELL + IDS;
|
|
23
23
|
|
|
24
|
-
const arrayEvery = (array, cb) => array.every(cb);
|
|
25
|
-
const arrayIsEqual = (array1, array2) =>
|
|
26
|
-
arrayLength(array1) === arrayLength(array2) &&
|
|
27
|
-
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
28
|
-
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
29
|
-
const arrayMap = (array, cb) => array.map(cb);
|
|
30
|
-
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
31
|
-
const arrayLength = (array) => array.length;
|
|
32
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
33
|
-
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
34
|
-
const arrayPush = (array, ...values) => array.push(...values);
|
|
35
|
-
|
|
36
24
|
const mathMax = Math.max;
|
|
37
25
|
const mathMin = Math.min;
|
|
38
26
|
const isFiniteNumber = isFinite;
|
|
@@ -43,8 +31,20 @@ const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
|
43
31
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
44
32
|
const isArray = (thing) => Array.isArray(thing);
|
|
45
33
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
34
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
46
35
|
const getUndefined = () => void 0;
|
|
47
36
|
|
|
37
|
+
const arrayEvery = (array, cb) => array.every(cb);
|
|
38
|
+
const arrayIsEqual = (array1, array2) =>
|
|
39
|
+
size(array1) === size(array2) &&
|
|
40
|
+
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
41
|
+
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
42
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
43
|
+
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
44
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
45
|
+
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
46
|
+
const arrayPush = (array, ...values) => array.push(...values);
|
|
47
|
+
|
|
48
48
|
const object = Object;
|
|
49
49
|
const objFreeze = object.freeze;
|
|
50
50
|
const objMap = (obj, cb) =>
|
|
@@ -76,10 +76,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
76
76
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
77
77
|
node,
|
|
78
78
|
path[p],
|
|
79
|
-
p >
|
|
79
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
80
80
|
),
|
|
81
81
|
(nodeOrLeaf) => {
|
|
82
|
-
if (p >
|
|
82
|
+
if (p > size(path) - 2) {
|
|
83
83
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
84
84
|
mapSet(node, path[p]);
|
|
85
85
|
}
|
|
@@ -423,7 +423,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
423
423
|
const havings = [];
|
|
424
424
|
const select = (arg1, arg2) => {
|
|
425
425
|
const selectEntry = isFunction(arg1)
|
|
426
|
-
? [
|
|
426
|
+
? [size(selectEntries) + EMPTY_STRING, arg1]
|
|
427
427
|
: [
|
|
428
428
|
isUndefined(arg2) ? arg1 : arg2,
|
|
429
429
|
(getTableCell) => getTableCell(arg1, arg2),
|
|
@@ -797,6 +797,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
797
797
|
...slice(args, 0, argumentCount),
|
|
798
798
|
(_store, ...listenerArgs) =>
|
|
799
799
|
args[argumentCount](queries, ...listenerArgs),
|
|
800
|
+
true,
|
|
800
801
|
);
|
|
801
802
|
},
|
|
802
803
|
);
|
|
@@ -7,15 +7,15 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
7
7
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
8
8
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
9
9
|
const isArray = (thing) => Array.isArray(thing);
|
|
10
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
10
11
|
const test = (regex, subject) => regex.test(subject);
|
|
11
12
|
|
|
12
13
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
13
14
|
const arrayIsEqual = (array1, array2) =>
|
|
14
|
-
|
|
15
|
+
size(array1) === size(array2) &&
|
|
15
16
|
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
16
17
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
17
|
-
const
|
|
18
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
18
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
19
19
|
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
20
20
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
21
21
|
const arrayShift = (array) => array.shift();
|
|
@@ -53,10 +53,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
53
53
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
54
54
|
node,
|
|
55
55
|
path[p],
|
|
56
|
-
p >
|
|
56
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
57
57
|
),
|
|
58
58
|
(nodeOrLeaf) => {
|
|
59
|
-
if (p >
|
|
59
|
+
if (p > size(path) - 2) {
|
|
60
60
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
61
61
|
mapSet(node, path[p]);
|
|
62
62
|
}
|
|
@@ -255,7 +255,7 @@ const getPoolFunctions = () => {
|
|
|
255
255
|
return [
|
|
256
256
|
(reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
|
|
257
257
|
(id) => {
|
|
258
|
-
if (test(INTEGER, id) &&
|
|
258
|
+
if (test(INTEGER, id) && size(pool) < 1e3) {
|
|
259
259
|
arrayPush(pool, id);
|
|
260
260
|
}
|
|
261
261
|
},
|
|
@@ -265,7 +265,7 @@ const getPoolFunctions = () => {
|
|
|
265
265
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
266
266
|
const leaves = [];
|
|
267
267
|
const deep = (node, p) =>
|
|
268
|
-
p ==
|
|
268
|
+
p == size(path)
|
|
269
269
|
? arrayPush(leaves, node)
|
|
270
270
|
: path[p] === null
|
|
271
271
|
? collForEach(node, (node2) => deep(node2, p + 1))
|
|
@@ -317,8 +317,8 @@ const getListenerFunctions = (getThing) => {
|
|
|
317
317
|
mapGet(allListeners, id),
|
|
318
318
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
319
319
|
const callWithIds = (...ids) => {
|
|
320
|
-
const index =
|
|
321
|
-
index ==
|
|
320
|
+
const index = size(ids);
|
|
321
|
+
index == size(path)
|
|
322
322
|
? listener(thing, ...ids, ...extraArgsGetter(ids))
|
|
323
323
|
: isUndefined(path[index])
|
|
324
324
|
? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|