tinybase 5.0.0-beta.5 → 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/cjs/mergeable-store.cjs +1 -1
- package/lib/cjs/mergeable-store.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 -1
- 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/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/mergeable-store.cjs +1 -1
- package/lib/cjs-es6/mergeable-store.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 -1
- 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/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/mergeable-store.js +287 -130
- package/lib/debug/persisters/persister-automerge.js +39 -46
- package/lib/debug/persisters/persister-browser.js +39 -46
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +64 -60
- package/lib/debug/persisters/persister-electric-sql.js +64 -60
- package/lib/debug/persisters/persister-expo-sqlite-next.js +64 -60
- package/lib/debug/persisters/persister-expo-sqlite.js +64 -60
- package/lib/debug/persisters/persister-file.js +39 -46
- package/lib/debug/persisters/persister-indexed-db.js +39 -46
- package/lib/debug/persisters/persister-libsql.js +64 -60
- package/lib/debug/persisters/persister-partykit-client.js +39 -46
- package/lib/debug/persisters/persister-powersync.js +917 -0
- package/lib/debug/persisters/persister-remote.js +39 -46
- package/lib/debug/persisters/persister-sqlite-wasm.js +64 -60
- package/lib/debug/persisters/persister-sqlite3.js +64 -60
- package/lib/debug/persisters/persister-sync.js +594 -0
- package/lib/debug/persisters/persister-yjs.js +41 -48
- package/lib/debug/persisters.js +38 -45
- package/lib/debug/store.js +44 -32
- package/lib/debug/tinybase.js +322 -173
- package/lib/debug/tools.js +2 -2
- package/lib/debug/ui-react-dom.js +81 -76
- package/lib/debug/ui-react.js +1 -1
- package/lib/es6/mergeable-store.js +1 -1
- package/lib/es6/mergeable-store.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 -1
- 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/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/mergeable-store.js +1 -1
- package/lib/mergeable-store.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 -1
- 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/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 +121 -59
- 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 +3 -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 +60 -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 +185 -87
- 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 +4 -1
- 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 +79 -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 +100 -3
- 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/mergeable-store.js +1 -1
- package/lib/umd/mergeable-store.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 -1
- 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/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/mergeable-store.js +1 -1
- package/lib/umd-es6/mergeable-store.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 -1
- 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/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 +37 -26
- package/readme.md +2 -2
|
@@ -16,8 +16,6 @@ const arrayShift = (array) => array.shift();
|
|
|
16
16
|
const object = Object;
|
|
17
17
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
18
18
|
const objEntries = object.entries;
|
|
19
|
-
const objIds = object.keys;
|
|
20
|
-
const objFreeze = object.freeze;
|
|
21
19
|
const isObject = (obj) =>
|
|
22
20
|
!isUndefined(obj) &&
|
|
23
21
|
ifNotUndefined(
|
|
@@ -28,6 +26,8 @@ const isObject = (obj) =>
|
|
|
28
26
|
/* istanbul ignore next */
|
|
29
27
|
() => true,
|
|
30
28
|
);
|
|
29
|
+
const objIds = object.keys;
|
|
30
|
+
const objFreeze = object.freeze;
|
|
31
31
|
const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
32
32
|
const objHas = (obj, id) => id in obj;
|
|
33
33
|
const objDel = (obj, id) => {
|
|
@@ -63,7 +63,6 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
63
63
|
|
|
64
64
|
const scheduleRunning = mapNew();
|
|
65
65
|
const scheduleActions = mapNew();
|
|
66
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
67
66
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
68
67
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
69
68
|
? [
|
|
@@ -88,16 +87,15 @@ const createCustomPersister = (
|
|
|
88
87
|
delPersisterListener,
|
|
89
88
|
onIgnoredError,
|
|
90
89
|
supportsMergeableStore,
|
|
91
|
-
|
|
90
|
+
extra = {},
|
|
92
91
|
scheduleId = [],
|
|
93
92
|
) => {
|
|
94
|
-
let listenerId;
|
|
95
93
|
let loadSave = 0;
|
|
96
94
|
let loads = 0;
|
|
97
95
|
let saves = 0;
|
|
98
|
-
let listening = 0;
|
|
99
96
|
let action;
|
|
100
|
-
let
|
|
97
|
+
let autoLoadHandle;
|
|
98
|
+
let autoSaveListenerId;
|
|
101
99
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
102
100
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
103
101
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -133,55 +131,51 @@ const createCustomPersister = (
|
|
|
133
131
|
}
|
|
134
132
|
return persister;
|
|
135
133
|
};
|
|
134
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
135
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
136
|
+
? contentOrChanges?.[1][2] === 1
|
|
137
|
+
? store.applyMergeableChanges
|
|
138
|
+
: store.setMergeableContent
|
|
139
|
+
: contentOrChanges?.[2] === 1
|
|
140
|
+
? store.applyChanges
|
|
141
|
+
: store.setContent)(contentOrChanges);
|
|
142
|
+
};
|
|
136
143
|
const persister = {
|
|
137
144
|
load: async (initialTables, initialValues) =>
|
|
138
145
|
await loadLock(async () => {
|
|
139
146
|
try {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
: store.setContent)(content);
|
|
144
|
-
} catch {
|
|
147
|
+
setContentOrChanges(await getPersisted());
|
|
148
|
+
} catch (error) {
|
|
149
|
+
onIgnoredError?.(error);
|
|
145
150
|
store.setContent([initialTables, initialValues]);
|
|
146
151
|
}
|
|
147
152
|
}),
|
|
148
153
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
149
|
-
persister.stopAutoLoad();
|
|
150
|
-
|
|
151
|
-
listening = 1;
|
|
152
|
-
listeningHandle = addPersisterListener(
|
|
154
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
155
|
+
autoLoadHandle = addPersisterListener(
|
|
153
156
|
async (getContent2, getChanges2) => {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
165
|
-
(isMergeableStore && isMergeable(content)
|
|
166
|
-
? store.setMergeableContent
|
|
167
|
-
: store.setContent)(content);
|
|
168
|
-
} catch (error) {
|
|
169
|
-
onIgnoredError?.(error);
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
}
|
|
157
|
+
const changes = getChanges2?.();
|
|
158
|
+
await loadLock(async () => {
|
|
159
|
+
try {
|
|
160
|
+
setContentOrChanges(
|
|
161
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
162
|
+
);
|
|
163
|
+
} catch (error) {
|
|
164
|
+
onIgnoredError?.(error);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
173
167
|
},
|
|
174
168
|
);
|
|
175
169
|
return persister;
|
|
176
170
|
},
|
|
177
171
|
stopAutoLoad: () => {
|
|
178
|
-
if (
|
|
179
|
-
delPersisterListener(
|
|
180
|
-
|
|
181
|
-
listening = 0;
|
|
172
|
+
if (autoLoadHandle) {
|
|
173
|
+
delPersisterListener(autoLoadHandle);
|
|
174
|
+
autoLoadHandle = void 0;
|
|
182
175
|
}
|
|
183
176
|
return persister;
|
|
184
177
|
},
|
|
178
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
185
179
|
save: async (getChanges2) => {
|
|
186
180
|
/* istanbul ignore else */
|
|
187
181
|
if (loadSave != 1) {
|
|
@@ -203,7 +197,7 @@ const createCustomPersister = (
|
|
|
203
197
|
},
|
|
204
198
|
startAutoSave: async () => {
|
|
205
199
|
await persister.stopAutoSave().save();
|
|
206
|
-
|
|
200
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
207
201
|
const changes = getChanges();
|
|
208
202
|
if (hasChanges(changes)) {
|
|
209
203
|
persister.save(() => changes);
|
|
@@ -212,10 +206,11 @@ const createCustomPersister = (
|
|
|
212
206
|
return persister;
|
|
213
207
|
},
|
|
214
208
|
stopAutoSave: () => {
|
|
215
|
-
ifNotUndefined(
|
|
216
|
-
|
|
209
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
210
|
+
autoSaveListenerId = void 0;
|
|
217
211
|
return persister;
|
|
218
212
|
},
|
|
213
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
219
214
|
schedule: async (...actions) => {
|
|
220
215
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
221
216
|
await run();
|
|
@@ -224,10 +219,8 @@ const createCustomPersister = (
|
|
|
224
219
|
getStore: () => store,
|
|
225
220
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
226
221
|
getStats: () => ({loads, saves}),
|
|
222
|
+
...extra,
|
|
227
223
|
};
|
|
228
|
-
if (getThing) {
|
|
229
|
-
persister[getThing] = () => thing;
|
|
230
|
-
}
|
|
231
224
|
return objFreeze(persister);
|
|
232
225
|
};
|
|
233
226
|
|
|
@@ -357,7 +350,7 @@ const createAutomergePersister = (
|
|
|
357
350
|
delPersisterListener,
|
|
358
351
|
onIgnoredError,
|
|
359
352
|
false,
|
|
360
|
-
|
|
353
|
+
{getDocHandle: () => docHandle},
|
|
361
354
|
);
|
|
362
355
|
};
|
|
363
356
|
|
|
@@ -14,8 +14,6 @@ const arrayShift = (array) => array.shift();
|
|
|
14
14
|
|
|
15
15
|
const object = Object;
|
|
16
16
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
17
|
-
const objIds = object.keys;
|
|
18
|
-
const objFreeze = object.freeze;
|
|
19
17
|
const isObject = (obj) =>
|
|
20
18
|
!isUndefined(obj) &&
|
|
21
19
|
ifNotUndefined(
|
|
@@ -26,6 +24,8 @@ const isObject = (obj) =>
|
|
|
26
24
|
/* istanbul ignore next */
|
|
27
25
|
() => true,
|
|
28
26
|
);
|
|
27
|
+
const objIds = object.keys;
|
|
28
|
+
const objFreeze = object.freeze;
|
|
29
29
|
const objSize = (obj) => size(objIds(obj));
|
|
30
30
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
31
31
|
|
|
@@ -53,7 +53,6 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
53
53
|
|
|
54
54
|
const scheduleRunning = mapNew();
|
|
55
55
|
const scheduleActions = mapNew();
|
|
56
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
57
56
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
58
57
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
59
58
|
? [
|
|
@@ -78,16 +77,15 @@ const createCustomPersister = (
|
|
|
78
77
|
delPersisterListener,
|
|
79
78
|
onIgnoredError,
|
|
80
79
|
supportsMergeableStore,
|
|
81
|
-
|
|
80
|
+
extra = {},
|
|
82
81
|
scheduleId = [],
|
|
83
82
|
) => {
|
|
84
|
-
let listenerId;
|
|
85
83
|
let loadSave = 0;
|
|
86
84
|
let loads = 0;
|
|
87
85
|
let saves = 0;
|
|
88
|
-
let listening = 0;
|
|
89
86
|
let action;
|
|
90
|
-
let
|
|
87
|
+
let autoLoadHandle;
|
|
88
|
+
let autoSaveListenerId;
|
|
91
89
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
92
90
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
93
91
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -123,55 +121,51 @@ const createCustomPersister = (
|
|
|
123
121
|
}
|
|
124
122
|
return persister;
|
|
125
123
|
};
|
|
124
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
125
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
126
|
+
? contentOrChanges?.[1][2] === 1
|
|
127
|
+
? store.applyMergeableChanges
|
|
128
|
+
: store.setMergeableContent
|
|
129
|
+
: contentOrChanges?.[2] === 1
|
|
130
|
+
? store.applyChanges
|
|
131
|
+
: store.setContent)(contentOrChanges);
|
|
132
|
+
};
|
|
126
133
|
const persister = {
|
|
127
134
|
load: async (initialTables, initialValues) =>
|
|
128
135
|
await loadLock(async () => {
|
|
129
136
|
try {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
: store.setContent)(content);
|
|
134
|
-
} catch {
|
|
137
|
+
setContentOrChanges(await getPersisted());
|
|
138
|
+
} catch (error) {
|
|
139
|
+
onIgnoredError?.(error);
|
|
135
140
|
store.setContent([initialTables, initialValues]);
|
|
136
141
|
}
|
|
137
142
|
}),
|
|
138
143
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
139
|
-
persister.stopAutoLoad();
|
|
140
|
-
|
|
141
|
-
listening = 1;
|
|
142
|
-
listeningHandle = addPersisterListener(
|
|
144
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
145
|
+
autoLoadHandle = addPersisterListener(
|
|
143
146
|
async (getContent2, getChanges2) => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
155
|
-
(isMergeableStore && isMergeable(content)
|
|
156
|
-
? store.setMergeableContent
|
|
157
|
-
: store.setContent)(content);
|
|
158
|
-
} catch (error) {
|
|
159
|
-
onIgnoredError?.(error);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
147
|
+
const changes = getChanges2?.();
|
|
148
|
+
await loadLock(async () => {
|
|
149
|
+
try {
|
|
150
|
+
setContentOrChanges(
|
|
151
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
152
|
+
);
|
|
153
|
+
} catch (error) {
|
|
154
|
+
onIgnoredError?.(error);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
163
157
|
},
|
|
164
158
|
);
|
|
165
159
|
return persister;
|
|
166
160
|
},
|
|
167
161
|
stopAutoLoad: () => {
|
|
168
|
-
if (
|
|
169
|
-
delPersisterListener(
|
|
170
|
-
|
|
171
|
-
listening = 0;
|
|
162
|
+
if (autoLoadHandle) {
|
|
163
|
+
delPersisterListener(autoLoadHandle);
|
|
164
|
+
autoLoadHandle = void 0;
|
|
172
165
|
}
|
|
173
166
|
return persister;
|
|
174
167
|
},
|
|
168
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
175
169
|
save: async (getChanges2) => {
|
|
176
170
|
/* istanbul ignore else */
|
|
177
171
|
if (loadSave != 1) {
|
|
@@ -193,7 +187,7 @@ const createCustomPersister = (
|
|
|
193
187
|
},
|
|
194
188
|
startAutoSave: async () => {
|
|
195
189
|
await persister.stopAutoSave().save();
|
|
196
|
-
|
|
190
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
197
191
|
const changes = getChanges();
|
|
198
192
|
if (hasChanges(changes)) {
|
|
199
193
|
persister.save(() => changes);
|
|
@@ -202,10 +196,11 @@ const createCustomPersister = (
|
|
|
202
196
|
return persister;
|
|
203
197
|
},
|
|
204
198
|
stopAutoSave: () => {
|
|
205
|
-
ifNotUndefined(
|
|
206
|
-
|
|
199
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
200
|
+
autoSaveListenerId = void 0;
|
|
207
201
|
return persister;
|
|
208
202
|
},
|
|
203
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
209
204
|
schedule: async (...actions) => {
|
|
210
205
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
211
206
|
await run();
|
|
@@ -214,10 +209,8 @@ const createCustomPersister = (
|
|
|
214
209
|
getStore: () => store,
|
|
215
210
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
216
211
|
getStats: () => ({loads, saves}),
|
|
212
|
+
...extra,
|
|
217
213
|
};
|
|
218
|
-
if (getThing) {
|
|
219
|
-
persister[getThing] = () => thing;
|
|
220
|
-
}
|
|
221
214
|
return objFreeze(persister);
|
|
222
215
|
};
|
|
223
216
|
|
|
@@ -251,7 +244,7 @@ const createStoragePersister = (
|
|
|
251
244
|
delPersisterListener,
|
|
252
245
|
onIgnoredError,
|
|
253
246
|
true,
|
|
254
|
-
|
|
247
|
+
{getStorageName: () => storageName},
|
|
255
248
|
);
|
|
256
249
|
};
|
|
257
250
|
const createLocalPersister = (store, storageName, onIgnoredError) =>
|
|
@@ -41,8 +41,6 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
41
41
|
const object = Object;
|
|
42
42
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
43
43
|
const objEntries = object.entries;
|
|
44
|
-
const objIds = object.keys;
|
|
45
|
-
const objFreeze = object.freeze;
|
|
46
44
|
const isObject = (obj) =>
|
|
47
45
|
!isUndefined(obj) &&
|
|
48
46
|
ifNotUndefined(
|
|
@@ -53,6 +51,8 @@ const isObject = (obj) =>
|
|
|
53
51
|
/* istanbul ignore next */
|
|
54
52
|
() => true,
|
|
55
53
|
);
|
|
54
|
+
const objIds = object.keys;
|
|
55
|
+
const objFreeze = object.freeze;
|
|
56
56
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
57
57
|
const objMerge = (...objs) => object.assign({}, ...objs);
|
|
58
58
|
const objHas = (obj, id) => id in obj;
|
|
@@ -97,6 +97,9 @@ const setNew = (entryOrEntries) =>
|
|
|
97
97
|
);
|
|
98
98
|
const setAdd = (set, value) => set?.add(value);
|
|
99
99
|
|
|
100
|
+
const TABLE = 'TABLE';
|
|
101
|
+
const ALTER_TABLE = 'ALTER ' + TABLE;
|
|
102
|
+
const DELETE_FROM = 'DELETE FROM';
|
|
100
103
|
const SELECT_STAR_FROM = SELECT + '*FROM';
|
|
101
104
|
const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
|
|
102
105
|
const WHERE = 'WHERE';
|
|
@@ -191,15 +194,20 @@ const getCommandFunctions = (
|
|
|
191
194
|
arrayIsEmpty(tableColumnNames) &&
|
|
192
195
|
collHas(schemaMap, tableName)
|
|
193
196
|
) {
|
|
194
|
-
await cmd('DROP
|
|
197
|
+
await cmd('DROP ' + TABLE + escapeId(tableName));
|
|
195
198
|
mapSet(schemaMap, tableName);
|
|
196
199
|
return;
|
|
197
200
|
}
|
|
198
201
|
if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
|
|
199
202
|
await cmd(
|
|
200
|
-
`CREATE
|
|
201
|
-
|
|
202
|
-
|
|
203
|
+
`CREATE ` +
|
|
204
|
+
TABLE +
|
|
205
|
+
escapeId(tableName) +
|
|
206
|
+
'(' +
|
|
207
|
+
escapeId(rowIdColumnName) +
|
|
208
|
+
` PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
|
|
209
|
+
arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
|
|
210
|
+
)});`,
|
|
203
211
|
);
|
|
204
212
|
mapSet(
|
|
205
213
|
schemaMap,
|
|
@@ -219,7 +227,7 @@ const getCommandFunctions = (
|
|
|
219
227
|
...arrayMap(tableColumnNames, async (columnName) => {
|
|
220
228
|
if (!collDel(columnNamesAccountedFor, columnName)) {
|
|
221
229
|
await cmd(
|
|
222
|
-
|
|
230
|
+
ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
|
|
223
231
|
);
|
|
224
232
|
mapSet(tableSchemaMap, columnName, EMPTY_STRING);
|
|
225
233
|
}
|
|
@@ -230,9 +238,10 @@ const getCommandFunctions = (
|
|
|
230
238
|
async (columnName) => {
|
|
231
239
|
if (columnName != rowIdColumnName) {
|
|
232
240
|
await cmd(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
241
|
+
ALTER_TABLE +
|
|
242
|
+
escapeId(tableName) +
|
|
243
|
+
'DROP' +
|
|
244
|
+
escapeId(columnName),
|
|
236
245
|
);
|
|
237
246
|
mapSet(tableSchemaMap, columnName);
|
|
238
247
|
}
|
|
@@ -243,13 +252,13 @@ const getCommandFunctions = (
|
|
|
243
252
|
}
|
|
244
253
|
if (partial) {
|
|
245
254
|
if (isUndefined(content)) {
|
|
246
|
-
await cmd(
|
|
255
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
247
256
|
} else {
|
|
248
257
|
await promiseAll(
|
|
249
258
|
objToArray(content, async (row, rowId) => {
|
|
250
259
|
if (isUndefined(row)) {
|
|
251
260
|
await cmd(
|
|
252
|
-
|
|
261
|
+
DELETE_FROM +
|
|
253
262
|
escapeId(tableName) +
|
|
254
263
|
WHERE +
|
|
255
264
|
escapeId(rowIdColumnName) +
|
|
@@ -291,9 +300,10 @@ const getCommandFunctions = (
|
|
|
291
300
|
rowIdColumnName,
|
|
292
301
|
changingColumnNames,
|
|
293
302
|
args,
|
|
303
|
+
useOnConflict,
|
|
294
304
|
);
|
|
295
305
|
await cmd(
|
|
296
|
-
|
|
306
|
+
DELETE_FROM +
|
|
297
307
|
escapeId(tableName) +
|
|
298
308
|
WHERE +
|
|
299
309
|
escapeId(rowIdColumnName) +
|
|
@@ -303,7 +313,7 @@ const getCommandFunctions = (
|
|
|
303
313
|
deleteRowIds,
|
|
304
314
|
);
|
|
305
315
|
} else if (collHas(schemaMap, tableName)) {
|
|
306
|
-
await cmd(
|
|
316
|
+
await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
|
|
307
317
|
}
|
|
308
318
|
}
|
|
309
319
|
};
|
|
@@ -378,7 +388,6 @@ const jsonParse = JSON.parse;
|
|
|
378
388
|
|
|
379
389
|
const scheduleRunning = mapNew();
|
|
380
390
|
const scheduleActions = mapNew();
|
|
381
|
-
const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
|
|
382
391
|
const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
383
392
|
!supportsMergeableStore || isUndefined(store.getMergeableContent)
|
|
384
393
|
? [
|
|
@@ -403,16 +412,15 @@ const createCustomPersister = (
|
|
|
403
412
|
delPersisterListener,
|
|
404
413
|
onIgnoredError,
|
|
405
414
|
supportsMergeableStore,
|
|
406
|
-
|
|
415
|
+
extra = {},
|
|
407
416
|
scheduleId = [],
|
|
408
417
|
) => {
|
|
409
|
-
let listenerId;
|
|
410
418
|
let loadSave = 0;
|
|
411
419
|
let loads = 0;
|
|
412
420
|
let saves = 0;
|
|
413
|
-
let listening = 0;
|
|
414
421
|
let action;
|
|
415
|
-
let
|
|
422
|
+
let autoLoadHandle;
|
|
423
|
+
let autoSaveListenerId;
|
|
416
424
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
417
425
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
418
426
|
const [isMergeableStore, getContent, getChanges, hasChanges] =
|
|
@@ -448,55 +456,51 @@ const createCustomPersister = (
|
|
|
448
456
|
}
|
|
449
457
|
return persister;
|
|
450
458
|
};
|
|
459
|
+
const setContentOrChanges = (contentOrChanges) => {
|
|
460
|
+
(isMergeableStore && isString(contentOrChanges?.[0])
|
|
461
|
+
? contentOrChanges?.[1][2] === 1
|
|
462
|
+
? store.applyMergeableChanges
|
|
463
|
+
: store.setMergeableContent
|
|
464
|
+
: contentOrChanges?.[2] === 1
|
|
465
|
+
? store.applyChanges
|
|
466
|
+
: store.setContent)(contentOrChanges);
|
|
467
|
+
};
|
|
451
468
|
const persister = {
|
|
452
469
|
load: async (initialTables, initialValues) =>
|
|
453
470
|
await loadLock(async () => {
|
|
454
471
|
try {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
: store.setContent)(content);
|
|
459
|
-
} catch {
|
|
472
|
+
setContentOrChanges(await getPersisted());
|
|
473
|
+
} catch (error) {
|
|
474
|
+
onIgnoredError?.(error);
|
|
460
475
|
store.setContent([initialTables, initialValues]);
|
|
461
476
|
}
|
|
462
477
|
}),
|
|
463
478
|
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
464
|
-
persister.stopAutoLoad();
|
|
465
|
-
|
|
466
|
-
listening = 1;
|
|
467
|
-
listeningHandle = addPersisterListener(
|
|
479
|
+
await persister.stopAutoLoad().load(initialTables, initialValues);
|
|
480
|
+
autoLoadHandle = addPersisterListener(
|
|
468
481
|
async (getContent2, getChanges2) => {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
(
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
)
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
const content = getContent2?.() ?? (await getPersisted());
|
|
480
|
-
(isMergeableStore && isMergeable(content)
|
|
481
|
-
? store.setMergeableContent
|
|
482
|
-
: store.setContent)(content);
|
|
483
|
-
} catch (error) {
|
|
484
|
-
onIgnoredError?.(error);
|
|
485
|
-
}
|
|
486
|
-
});
|
|
487
|
-
}
|
|
482
|
+
const changes = getChanges2?.();
|
|
483
|
+
await loadLock(async () => {
|
|
484
|
+
try {
|
|
485
|
+
setContentOrChanges(
|
|
486
|
+
changes ?? getContent2?.() ?? (await getPersisted()),
|
|
487
|
+
);
|
|
488
|
+
} catch (error) {
|
|
489
|
+
onIgnoredError?.(error);
|
|
490
|
+
}
|
|
491
|
+
});
|
|
488
492
|
},
|
|
489
493
|
);
|
|
490
494
|
return persister;
|
|
491
495
|
},
|
|
492
496
|
stopAutoLoad: () => {
|
|
493
|
-
if (
|
|
494
|
-
delPersisterListener(
|
|
495
|
-
|
|
496
|
-
listening = 0;
|
|
497
|
+
if (autoLoadHandle) {
|
|
498
|
+
delPersisterListener(autoLoadHandle);
|
|
499
|
+
autoLoadHandle = void 0;
|
|
497
500
|
}
|
|
498
501
|
return persister;
|
|
499
502
|
},
|
|
503
|
+
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
500
504
|
save: async (getChanges2) => {
|
|
501
505
|
/* istanbul ignore else */
|
|
502
506
|
if (loadSave != 1) {
|
|
@@ -518,7 +522,7 @@ const createCustomPersister = (
|
|
|
518
522
|
},
|
|
519
523
|
startAutoSave: async () => {
|
|
520
524
|
await persister.stopAutoSave().save();
|
|
521
|
-
|
|
525
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
522
526
|
const changes = getChanges();
|
|
523
527
|
if (hasChanges(changes)) {
|
|
524
528
|
persister.save(() => changes);
|
|
@@ -527,10 +531,11 @@ const createCustomPersister = (
|
|
|
527
531
|
return persister;
|
|
528
532
|
},
|
|
529
533
|
stopAutoSave: () => {
|
|
530
|
-
ifNotUndefined(
|
|
531
|
-
|
|
534
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
535
|
+
autoSaveListenerId = void 0;
|
|
532
536
|
return persister;
|
|
533
537
|
},
|
|
538
|
+
isAutoSaving: () => !isUndefined(autoSaveListenerId),
|
|
534
539
|
schedule: async (...actions) => {
|
|
535
540
|
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
536
541
|
await run();
|
|
@@ -539,10 +544,8 @@ const createCustomPersister = (
|
|
|
539
544
|
getStore: () => store,
|
|
540
545
|
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
541
546
|
getStats: () => ({loads, saves}),
|
|
547
|
+
...extra,
|
|
542
548
|
};
|
|
543
|
-
if (getThing) {
|
|
544
|
-
persister[getThing] = () => thing;
|
|
545
|
-
}
|
|
546
549
|
return objFreeze(persister);
|
|
547
550
|
};
|
|
548
551
|
|
|
@@ -557,9 +560,10 @@ const createJsonSqlitePersister = (
|
|
|
557
560
|
managedTableNames,
|
|
558
561
|
db,
|
|
559
562
|
getThing,
|
|
563
|
+
useOnConflict,
|
|
560
564
|
) => {
|
|
561
565
|
const [refreshSchema, loadTable, saveTable, transaction] =
|
|
562
|
-
getCommandFunctions(cmd, managedTableNames, onIgnoredError);
|
|
566
|
+
getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
|
|
563
567
|
const getPersisted = async () =>
|
|
564
568
|
await transaction(async () => {
|
|
565
569
|
await refreshSchema();
|
|
@@ -590,7 +594,7 @@ const createJsonSqlitePersister = (
|
|
|
590
594
|
delPersisterListener,
|
|
591
595
|
onIgnoredError,
|
|
592
596
|
false,
|
|
593
|
-
[getThing
|
|
597
|
+
{[getThing]: () => db},
|
|
594
598
|
db,
|
|
595
599
|
);
|
|
596
600
|
return persister;
|
|
@@ -697,7 +701,7 @@ const createTabularSqlitePersister = (
|
|
|
697
701
|
delPersisterListener,
|
|
698
702
|
onIgnoredError,
|
|
699
703
|
false,
|
|
700
|
-
[getThing
|
|
704
|
+
{[getThing]: () => db},
|
|
701
705
|
db,
|
|
702
706
|
);
|
|
703
707
|
return persister;
|