tinybase 5.0.0-beta.10 → 5.0.0-beta.11
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 -1
- 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-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/synchronizers/synchronizer-local.cjs +1 -1
- package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -1
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -1
- package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
- package/lib/cjs/synchronizers.cjs +1 -1
- package/lib/cjs/synchronizers.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.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-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 -1
- 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-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/synchronizers/synchronizer-local.cjs +1 -1
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -1
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -1
- package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers.cjs +1 -1
- package/lib/cjs-es6/synchronizers.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/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/debug/mergeable-store.js +1 -1
- package/lib/debug/persisters/persister-automerge.js +113 -101
- package/lib/debug/persisters/persister-browser.js +113 -97
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +113 -102
- package/lib/debug/persisters/persister-electric-sql.js +113 -102
- package/lib/debug/persisters/persister-expo-sqlite-next.js +113 -102
- package/lib/debug/persisters/persister-expo-sqlite.js +113 -102
- package/lib/debug/persisters/persister-file.js +108 -96
- package/lib/debug/persisters/persister-indexed-db.js +108 -96
- package/lib/debug/persisters/persister-libsql.js +113 -102
- package/lib/debug/persisters/persister-partykit-client.js +112 -100
- package/lib/debug/persisters/persister-powersync.js +113 -102
- package/lib/debug/persisters/persister-remote.js +108 -96
- package/lib/debug/persisters/persister-sqlite-wasm.js +113 -102
- package/lib/debug/persisters/persister-sqlite3.js +113 -102
- package/lib/debug/persisters/persister-yjs.js +113 -101
- package/lib/debug/persisters.js +107 -95
- package/lib/debug/store.js +1 -1
- package/lib/debug/synchronizers/synchronizer-local.js +114 -102
- package/lib/debug/synchronizers/synchronizer-ws-client.js +113 -101
- package/lib/debug/synchronizers/synchronizer-ws-server.js +151 -6
- package/lib/debug/synchronizers.js +113 -101
- package/lib/debug/tinybase.js +114 -102
- package/lib/debug/ui-react-dom.js +114 -98
- 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 -1
- 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-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/synchronizers/synchronizer-local.js +1 -1
- package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -1
- package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/es6/synchronizers.js +1 -1
- package/lib/es6/synchronizers.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.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/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 -1
- 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-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/synchronizers/synchronizer-local.js +1 -1
- package/lib/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-server.js +1 -1
- package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/synchronizers.js +1 -1
- package/lib/synchronizers.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/types/persisters/persister-browser.d.ts +2 -2
- package/lib/types/persisters/persister-file.d.ts +1 -1
- package/lib/types/persisters.d.ts +73 -47
- package/lib/types/synchronizers/synchronizer-ws-server.d.ts +24 -3
- package/lib/types/synchronizers.d.ts +1 -1
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-file.d.ts +1 -1
- package/lib/types/with-schemas/persisters.d.ts +99 -87
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +24 -3
- package/lib/types/with-schemas/synchronizers.d.ts +1 -1
- 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 -1
- 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-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/synchronizers/synchronizer-local.js +1 -1
- package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -1
- package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/umd/synchronizers.js +1 -1
- package/lib/umd/synchronizers.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.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-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 -1
- 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-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/synchronizers/synchronizer-local.js +1 -1
- package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -1
- package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/umd-es6/synchronizers.js +1 -1
- package/lib/umd-es6/synchronizers.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/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/package.json +1 -1
- package/readme.md +2 -2
|
@@ -388,24 +388,27 @@ const jsonParse = JSON.parse;
|
|
|
388
388
|
|
|
389
389
|
const scheduleRunning = mapNew();
|
|
390
390
|
const scheduleActions = mapNew();
|
|
391
|
-
const getStoreFunctions = (
|
|
392
|
-
|
|
391
|
+
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
392
|
+
supportedStoreType > 1 && 'getMergeableContent' in store
|
|
393
393
|
? [
|
|
394
|
-
0,
|
|
395
|
-
store.getContent,
|
|
396
|
-
store.getTransactionChanges,
|
|
397
|
-
([changedTables, changedValues]) =>
|
|
398
|
-
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
399
|
-
store.setContent,
|
|
400
|
-
]
|
|
401
|
-
: [
|
|
402
394
|
1,
|
|
403
395
|
store.getMergeableContent,
|
|
404
396
|
store.getTransactionMergeableChanges,
|
|
405
397
|
([[changedTables], [changedValues]]) =>
|
|
406
398
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
407
399
|
store.setDefaultContent,
|
|
408
|
-
]
|
|
400
|
+
]
|
|
401
|
+
: supportedStoreType != 2
|
|
402
|
+
? [
|
|
403
|
+
0,
|
|
404
|
+
store.getContent,
|
|
405
|
+
store.getTransactionChanges,
|
|
406
|
+
([changedTables, changedValues]) =>
|
|
407
|
+
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
408
|
+
store.setContent,
|
|
409
|
+
]
|
|
410
|
+
: /* istanbul ignore next */
|
|
411
|
+
0;
|
|
409
412
|
const createCustomPersister = (
|
|
410
413
|
store,
|
|
411
414
|
getPersisted,
|
|
@@ -413,7 +416,7 @@ const createCustomPersister = (
|
|
|
413
416
|
addPersisterListener,
|
|
414
417
|
delPersisterListener,
|
|
415
418
|
onIgnoredError,
|
|
416
|
-
|
|
419
|
+
supportedStoreType,
|
|
417
420
|
extra = {},
|
|
418
421
|
scheduleId = [],
|
|
419
422
|
) => {
|
|
@@ -431,7 +434,7 @@ const createCustomPersister = (
|
|
|
431
434
|
getChanges,
|
|
432
435
|
hasChanges,
|
|
433
436
|
setDefaultContent,
|
|
434
|
-
] = getStoreFunctions(
|
|
437
|
+
] = getStoreFunctions(supportedStoreType, store);
|
|
435
438
|
const run = async () => {
|
|
436
439
|
/* istanbul ignore else */
|
|
437
440
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -449,20 +452,6 @@ const createCustomPersister = (
|
|
|
449
452
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
450
453
|
}
|
|
451
454
|
};
|
|
452
|
-
const loadLock = async (actions) => {
|
|
453
|
-
/* istanbul ignore else */
|
|
454
|
-
if (loadSave != 2) {
|
|
455
|
-
loadSave = 1;
|
|
456
|
-
{
|
|
457
|
-
loads++;
|
|
458
|
-
}
|
|
459
|
-
await persister.schedule(async () => {
|
|
460
|
-
await actions();
|
|
461
|
-
loadSave = 0;
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
return persister;
|
|
465
|
-
};
|
|
466
455
|
const setContentOrChanges = (contentOrChanges) => {
|
|
467
456
|
(isMergeableStore && isArray(contentOrChanges?.[0])
|
|
468
457
|
? contentOrChanges?.[2] === 1
|
|
@@ -472,9 +461,14 @@ const createCustomPersister = (
|
|
|
472
461
|
? store.applyChanges
|
|
473
462
|
: store.setContent)(contentOrChanges);
|
|
474
463
|
};
|
|
475
|
-
const
|
|
476
|
-
|
|
477
|
-
|
|
464
|
+
const load = async (initialContent) => {
|
|
465
|
+
/* istanbul ignore else */
|
|
466
|
+
if (loadSave != 2) {
|
|
467
|
+
loadSave = 1;
|
|
468
|
+
{
|
|
469
|
+
loads++;
|
|
470
|
+
}
|
|
471
|
+
await schedule(async () => {
|
|
478
472
|
try {
|
|
479
473
|
setContentOrChanges(await getPersisted());
|
|
480
474
|
} catch (error) {
|
|
@@ -483,76 +477,94 @@ const createCustomPersister = (
|
|
|
483
477
|
setDefaultContent(initialContent);
|
|
484
478
|
}
|
|
485
479
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
});
|
|
501
|
-
},
|
|
502
|
-
);
|
|
503
|
-
return persister;
|
|
504
|
-
},
|
|
505
|
-
stopAutoLoad: () => {
|
|
506
|
-
if (autoLoadHandle) {
|
|
507
|
-
delPersisterListener(autoLoadHandle);
|
|
508
|
-
autoLoadHandle = void 0;
|
|
509
|
-
}
|
|
510
|
-
return persister;
|
|
511
|
-
},
|
|
512
|
-
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
513
|
-
save: async (getChanges2) => {
|
|
514
|
-
/* istanbul ignore else */
|
|
515
|
-
if (loadSave != 1) {
|
|
516
|
-
loadSave = 2;
|
|
517
|
-
{
|
|
518
|
-
saves++;
|
|
519
|
-
}
|
|
520
|
-
await persister.schedule(async () => {
|
|
521
|
-
try {
|
|
522
|
-
await setPersisted(getContent, getChanges2);
|
|
523
|
-
} catch (error) {
|
|
524
|
-
/* istanbul ignore next */
|
|
525
|
-
onIgnoredError?.(error);
|
|
480
|
+
loadSave = 0;
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
return persister;
|
|
484
|
+
};
|
|
485
|
+
const startAutoLoad = async (initialContent) => {
|
|
486
|
+
await stopAutoLoad().load(initialContent);
|
|
487
|
+
autoLoadHandle = addPersisterListener(async (content, changes) => {
|
|
488
|
+
if (changes || content) {
|
|
489
|
+
/* istanbul ignore else */
|
|
490
|
+
if (loadSave != 2) {
|
|
491
|
+
loadSave = 1;
|
|
492
|
+
{
|
|
493
|
+
loads++;
|
|
526
494
|
}
|
|
495
|
+
setContentOrChanges(changes ?? content);
|
|
527
496
|
loadSave = 0;
|
|
528
|
-
}
|
|
497
|
+
}
|
|
498
|
+
} else {
|
|
499
|
+
await load();
|
|
529
500
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
501
|
+
});
|
|
502
|
+
return persister;
|
|
503
|
+
};
|
|
504
|
+
const stopAutoLoad = () => {
|
|
505
|
+
if (autoLoadHandle) {
|
|
506
|
+
delPersisterListener(autoLoadHandle);
|
|
507
|
+
autoLoadHandle = void 0;
|
|
508
|
+
}
|
|
509
|
+
return persister;
|
|
510
|
+
};
|
|
511
|
+
const isAutoLoading = () => !isUndefined(autoLoadHandle);
|
|
512
|
+
const save = async (changes) => {
|
|
513
|
+
/* istanbul ignore else */
|
|
514
|
+
if (loadSave != 1) {
|
|
515
|
+
loadSave = 2;
|
|
516
|
+
{
|
|
517
|
+
saves++;
|
|
518
|
+
}
|
|
519
|
+
await schedule(async () => {
|
|
520
|
+
try {
|
|
521
|
+
await setPersisted(getContent, changes);
|
|
522
|
+
} catch (error) {
|
|
523
|
+
/* istanbul ignore next */
|
|
524
|
+
onIgnoredError?.(error);
|
|
538
525
|
}
|
|
526
|
+
loadSave = 0;
|
|
539
527
|
});
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
528
|
+
}
|
|
529
|
+
return persister;
|
|
530
|
+
};
|
|
531
|
+
const startAutoSave = async () => {
|
|
532
|
+
await stopAutoSave().save();
|
|
533
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
534
|
+
const changes = getChanges();
|
|
535
|
+
if (hasChanges(changes)) {
|
|
536
|
+
save(changes);
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
return persister;
|
|
540
|
+
};
|
|
541
|
+
const stopAutoSave = () => {
|
|
542
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
543
|
+
autoSaveListenerId = void 0;
|
|
544
|
+
return persister;
|
|
545
|
+
};
|
|
546
|
+
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
547
|
+
const schedule = async (...actions) => {
|
|
548
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
549
|
+
await run();
|
|
550
|
+
return persister;
|
|
551
|
+
};
|
|
552
|
+
const getStore = () => store;
|
|
553
|
+
const destroy = () => stopAutoLoad().stopAutoSave();
|
|
554
|
+
const getStats = () => ({loads, saves});
|
|
555
|
+
const persister = {
|
|
556
|
+
load,
|
|
557
|
+
startAutoLoad,
|
|
558
|
+
stopAutoLoad,
|
|
559
|
+
isAutoLoading,
|
|
560
|
+
save,
|
|
561
|
+
startAutoSave,
|
|
562
|
+
stopAutoSave,
|
|
563
|
+
isAutoSaving,
|
|
564
|
+
schedule,
|
|
565
|
+
getStore,
|
|
566
|
+
destroy,
|
|
567
|
+
getStats,
|
|
556
568
|
...extra,
|
|
557
569
|
};
|
|
558
570
|
return objFreeze(persister);
|
|
@@ -604,7 +616,7 @@ const createJsonSqlitePersister = (
|
|
|
604
616
|
addPersisterListener,
|
|
605
617
|
delPersisterListener,
|
|
606
618
|
onIgnoredError,
|
|
607
|
-
|
|
619
|
+
1,
|
|
608
620
|
{[getThing]: () => db},
|
|
609
621
|
db,
|
|
610
622
|
);
|
|
@@ -691,13 +703,12 @@ const createTabularSqlitePersister = (
|
|
|
691
703
|
? [tables, values]
|
|
692
704
|
: void 0;
|
|
693
705
|
});
|
|
694
|
-
const setPersisted = async (getContent,
|
|
706
|
+
const setPersisted = async (getContent, changes) =>
|
|
695
707
|
await transaction(async () => {
|
|
696
708
|
await refreshSchema();
|
|
697
|
-
if (!isUndefined(
|
|
698
|
-
|
|
699
|
-
await
|
|
700
|
-
await saveValues(valueChanges, true);
|
|
709
|
+
if (!isUndefined(changes)) {
|
|
710
|
+
await saveTables(changes[0], true);
|
|
711
|
+
await saveValues(changes[1], true);
|
|
701
712
|
} else {
|
|
702
713
|
const [tables, values] = getContent();
|
|
703
714
|
await saveTables(tables);
|
|
@@ -711,7 +722,7 @@ const createTabularSqlitePersister = (
|
|
|
711
722
|
addPersisterListener,
|
|
712
723
|
delPersisterListener,
|
|
713
724
|
onIgnoredError,
|
|
714
|
-
|
|
725
|
+
1,
|
|
715
726
|
{[getThing]: () => db},
|
|
716
727
|
db,
|
|
717
728
|
);
|
|
@@ -54,24 +54,27 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
54
54
|
|
|
55
55
|
const scheduleRunning = mapNew();
|
|
56
56
|
const scheduleActions = mapNew();
|
|
57
|
-
const getStoreFunctions = (
|
|
58
|
-
|
|
57
|
+
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
58
|
+
supportedStoreType > 1 && 'getMergeableContent' in store
|
|
59
59
|
? [
|
|
60
|
-
0,
|
|
61
|
-
store.getContent,
|
|
62
|
-
store.getTransactionChanges,
|
|
63
|
-
([changedTables, changedValues]) =>
|
|
64
|
-
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
65
|
-
store.setContent,
|
|
66
|
-
]
|
|
67
|
-
: [
|
|
68
60
|
1,
|
|
69
61
|
store.getMergeableContent,
|
|
70
62
|
store.getTransactionMergeableChanges,
|
|
71
63
|
([[changedTables], [changedValues]]) =>
|
|
72
64
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
73
65
|
store.setDefaultContent,
|
|
74
|
-
]
|
|
66
|
+
]
|
|
67
|
+
: supportedStoreType != 2
|
|
68
|
+
? [
|
|
69
|
+
0,
|
|
70
|
+
store.getContent,
|
|
71
|
+
store.getTransactionChanges,
|
|
72
|
+
([changedTables, changedValues]) =>
|
|
73
|
+
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
74
|
+
store.setContent,
|
|
75
|
+
]
|
|
76
|
+
: /* istanbul ignore next */
|
|
77
|
+
0;
|
|
75
78
|
const createCustomPersister = (
|
|
76
79
|
store,
|
|
77
80
|
getPersisted,
|
|
@@ -79,7 +82,7 @@ const createCustomPersister = (
|
|
|
79
82
|
addPersisterListener,
|
|
80
83
|
delPersisterListener,
|
|
81
84
|
onIgnoredError,
|
|
82
|
-
|
|
85
|
+
supportedStoreType,
|
|
83
86
|
extra = {},
|
|
84
87
|
scheduleId = [],
|
|
85
88
|
) => {
|
|
@@ -97,7 +100,7 @@ const createCustomPersister = (
|
|
|
97
100
|
getChanges,
|
|
98
101
|
hasChanges,
|
|
99
102
|
setDefaultContent,
|
|
100
|
-
] = getStoreFunctions(
|
|
103
|
+
] = getStoreFunctions(supportedStoreType, store);
|
|
101
104
|
const run = async () => {
|
|
102
105
|
/* istanbul ignore else */
|
|
103
106
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -115,20 +118,6 @@ const createCustomPersister = (
|
|
|
115
118
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
116
119
|
}
|
|
117
120
|
};
|
|
118
|
-
const loadLock = async (actions) => {
|
|
119
|
-
/* istanbul ignore else */
|
|
120
|
-
if (loadSave != 2) {
|
|
121
|
-
loadSave = 1;
|
|
122
|
-
{
|
|
123
|
-
loads++;
|
|
124
|
-
}
|
|
125
|
-
await persister.schedule(async () => {
|
|
126
|
-
await actions();
|
|
127
|
-
loadSave = 0;
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
return persister;
|
|
131
|
-
};
|
|
132
121
|
const setContentOrChanges = (contentOrChanges) => {
|
|
133
122
|
(isMergeableStore && isArray(contentOrChanges?.[0])
|
|
134
123
|
? contentOrChanges?.[2] === 1
|
|
@@ -138,9 +127,14 @@ const createCustomPersister = (
|
|
|
138
127
|
? store.applyChanges
|
|
139
128
|
: store.setContent)(contentOrChanges);
|
|
140
129
|
};
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
130
|
+
const load = async (initialContent) => {
|
|
131
|
+
/* istanbul ignore else */
|
|
132
|
+
if (loadSave != 2) {
|
|
133
|
+
loadSave = 1;
|
|
134
|
+
{
|
|
135
|
+
loads++;
|
|
136
|
+
}
|
|
137
|
+
await schedule(async () => {
|
|
144
138
|
try {
|
|
145
139
|
setContentOrChanges(await getPersisted());
|
|
146
140
|
} catch (error) {
|
|
@@ -149,76 +143,94 @@ const createCustomPersister = (
|
|
|
149
143
|
setDefaultContent(initialContent);
|
|
150
144
|
}
|
|
151
145
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
});
|
|
167
|
-
},
|
|
168
|
-
);
|
|
169
|
-
return persister;
|
|
170
|
-
},
|
|
171
|
-
stopAutoLoad: () => {
|
|
172
|
-
if (autoLoadHandle) {
|
|
173
|
-
delPersisterListener(autoLoadHandle);
|
|
174
|
-
autoLoadHandle = void 0;
|
|
175
|
-
}
|
|
176
|
-
return persister;
|
|
177
|
-
},
|
|
178
|
-
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
179
|
-
save: async (getChanges2) => {
|
|
180
|
-
/* istanbul ignore else */
|
|
181
|
-
if (loadSave != 1) {
|
|
182
|
-
loadSave = 2;
|
|
183
|
-
{
|
|
184
|
-
saves++;
|
|
185
|
-
}
|
|
186
|
-
await persister.schedule(async () => {
|
|
187
|
-
try {
|
|
188
|
-
await setPersisted(getContent, getChanges2);
|
|
189
|
-
} catch (error) {
|
|
190
|
-
/* istanbul ignore next */
|
|
191
|
-
onIgnoredError?.(error);
|
|
146
|
+
loadSave = 0;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return persister;
|
|
150
|
+
};
|
|
151
|
+
const startAutoLoad = async (initialContent) => {
|
|
152
|
+
await stopAutoLoad().load(initialContent);
|
|
153
|
+
autoLoadHandle = addPersisterListener(async (content, changes) => {
|
|
154
|
+
if (changes || content) {
|
|
155
|
+
/* istanbul ignore else */
|
|
156
|
+
if (loadSave != 2) {
|
|
157
|
+
loadSave = 1;
|
|
158
|
+
{
|
|
159
|
+
loads++;
|
|
192
160
|
}
|
|
161
|
+
setContentOrChanges(changes ?? content);
|
|
193
162
|
loadSave = 0;
|
|
194
|
-
}
|
|
163
|
+
}
|
|
164
|
+
} else {
|
|
165
|
+
await load();
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return persister;
|
|
169
|
+
};
|
|
170
|
+
const stopAutoLoad = () => {
|
|
171
|
+
if (autoLoadHandle) {
|
|
172
|
+
delPersisterListener(autoLoadHandle);
|
|
173
|
+
autoLoadHandle = void 0;
|
|
174
|
+
}
|
|
175
|
+
return persister;
|
|
176
|
+
};
|
|
177
|
+
const isAutoLoading = () => !isUndefined(autoLoadHandle);
|
|
178
|
+
const save = async (changes) => {
|
|
179
|
+
/* istanbul ignore else */
|
|
180
|
+
if (loadSave != 1) {
|
|
181
|
+
loadSave = 2;
|
|
182
|
+
{
|
|
183
|
+
saves++;
|
|
195
184
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (hasChanges(changes)) {
|
|
203
|
-
persister.save(() => changes);
|
|
185
|
+
await schedule(async () => {
|
|
186
|
+
try {
|
|
187
|
+
await setPersisted(getContent, changes);
|
|
188
|
+
} catch (error) {
|
|
189
|
+
/* istanbul ignore next */
|
|
190
|
+
onIgnoredError?.(error);
|
|
204
191
|
}
|
|
192
|
+
loadSave = 0;
|
|
205
193
|
});
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
194
|
+
}
|
|
195
|
+
return persister;
|
|
196
|
+
};
|
|
197
|
+
const startAutoSave = async () => {
|
|
198
|
+
await stopAutoSave().save();
|
|
199
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
200
|
+
const changes = getChanges();
|
|
201
|
+
if (hasChanges(changes)) {
|
|
202
|
+
save(changes);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
return persister;
|
|
206
|
+
};
|
|
207
|
+
const stopAutoSave = () => {
|
|
208
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
209
|
+
autoSaveListenerId = void 0;
|
|
210
|
+
return persister;
|
|
211
|
+
};
|
|
212
|
+
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
213
|
+
const schedule = async (...actions) => {
|
|
214
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
215
|
+
await run();
|
|
216
|
+
return persister;
|
|
217
|
+
};
|
|
218
|
+
const getStore = () => store;
|
|
219
|
+
const destroy = () => stopAutoLoad().stopAutoSave();
|
|
220
|
+
const getStats = () => ({loads, saves});
|
|
221
|
+
const persister = {
|
|
222
|
+
load,
|
|
223
|
+
startAutoLoad,
|
|
224
|
+
stopAutoLoad,
|
|
225
|
+
isAutoLoading,
|
|
226
|
+
save,
|
|
227
|
+
startAutoSave,
|
|
228
|
+
stopAutoSave,
|
|
229
|
+
isAutoSaving,
|
|
230
|
+
schedule,
|
|
231
|
+
getStore,
|
|
232
|
+
destroy,
|
|
233
|
+
getStats,
|
|
222
234
|
...extra,
|
|
223
235
|
};
|
|
224
236
|
return objFreeze(persister);
|
|
@@ -265,7 +277,7 @@ const createRemotePersister = (
|
|
|
265
277
|
addPersisterListener,
|
|
266
278
|
delPersisterListener,
|
|
267
279
|
onIgnoredError,
|
|
268
|
-
|
|
280
|
+
1,
|
|
269
281
|
{getUrls: () => [loadUrl, saveUrl]},
|
|
270
282
|
);
|
|
271
283
|
};
|