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
|
@@ -60,24 +60,27 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
60
60
|
|
|
61
61
|
const scheduleRunning = mapNew();
|
|
62
62
|
const scheduleActions = mapNew();
|
|
63
|
-
const getStoreFunctions = (
|
|
64
|
-
|
|
63
|
+
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
64
|
+
supportedStoreType > 1 && 'getMergeableContent' in store
|
|
65
65
|
? [
|
|
66
|
-
0,
|
|
67
|
-
store.getContent,
|
|
68
|
-
store.getTransactionChanges,
|
|
69
|
-
([changedTables, changedValues]) =>
|
|
70
|
-
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
71
|
-
store.setContent,
|
|
72
|
-
]
|
|
73
|
-
: [
|
|
74
66
|
1,
|
|
75
67
|
store.getMergeableContent,
|
|
76
68
|
store.getTransactionMergeableChanges,
|
|
77
69
|
([[changedTables], [changedValues]]) =>
|
|
78
70
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
79
71
|
store.setDefaultContent,
|
|
80
|
-
]
|
|
72
|
+
]
|
|
73
|
+
: supportedStoreType != 2
|
|
74
|
+
? [
|
|
75
|
+
0,
|
|
76
|
+
store.getContent,
|
|
77
|
+
store.getTransactionChanges,
|
|
78
|
+
([changedTables, changedValues]) =>
|
|
79
|
+
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
80
|
+
store.setContent,
|
|
81
|
+
]
|
|
82
|
+
: /* istanbul ignore next */
|
|
83
|
+
0;
|
|
81
84
|
const createCustomPersister = (
|
|
82
85
|
store,
|
|
83
86
|
getPersisted,
|
|
@@ -85,7 +88,7 @@ const createCustomPersister = (
|
|
|
85
88
|
addPersisterListener,
|
|
86
89
|
delPersisterListener,
|
|
87
90
|
onIgnoredError,
|
|
88
|
-
|
|
91
|
+
supportedStoreType,
|
|
89
92
|
extra = {},
|
|
90
93
|
scheduleId = [],
|
|
91
94
|
) => {
|
|
@@ -103,7 +106,7 @@ const createCustomPersister = (
|
|
|
103
106
|
getChanges,
|
|
104
107
|
hasChanges,
|
|
105
108
|
setDefaultContent,
|
|
106
|
-
] = getStoreFunctions(
|
|
109
|
+
] = getStoreFunctions(supportedStoreType, store);
|
|
107
110
|
const run = async () => {
|
|
108
111
|
/* istanbul ignore else */
|
|
109
112
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -121,20 +124,6 @@ const createCustomPersister = (
|
|
|
121
124
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
122
125
|
}
|
|
123
126
|
};
|
|
124
|
-
const loadLock = async (actions) => {
|
|
125
|
-
/* istanbul ignore else */
|
|
126
|
-
if (loadSave != 2) {
|
|
127
|
-
loadSave = 1;
|
|
128
|
-
{
|
|
129
|
-
loads++;
|
|
130
|
-
}
|
|
131
|
-
await persister.schedule(async () => {
|
|
132
|
-
await actions();
|
|
133
|
-
loadSave = 0;
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
return persister;
|
|
137
|
-
};
|
|
138
127
|
const setContentOrChanges = (contentOrChanges) => {
|
|
139
128
|
(isMergeableStore && isArray(contentOrChanges?.[0])
|
|
140
129
|
? contentOrChanges?.[2] === 1
|
|
@@ -144,9 +133,14 @@ const createCustomPersister = (
|
|
|
144
133
|
? store.applyChanges
|
|
145
134
|
: store.setContent)(contentOrChanges);
|
|
146
135
|
};
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
136
|
+
const load = async (initialContent) => {
|
|
137
|
+
/* istanbul ignore else */
|
|
138
|
+
if (loadSave != 2) {
|
|
139
|
+
loadSave = 1;
|
|
140
|
+
{
|
|
141
|
+
loads++;
|
|
142
|
+
}
|
|
143
|
+
await schedule(async () => {
|
|
150
144
|
try {
|
|
151
145
|
setContentOrChanges(await getPersisted());
|
|
152
146
|
} catch (error) {
|
|
@@ -155,76 +149,94 @@ const createCustomPersister = (
|
|
|
155
149
|
setDefaultContent(initialContent);
|
|
156
150
|
}
|
|
157
151
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
});
|
|
173
|
-
},
|
|
174
|
-
);
|
|
175
|
-
return persister;
|
|
176
|
-
},
|
|
177
|
-
stopAutoLoad: () => {
|
|
178
|
-
if (autoLoadHandle) {
|
|
179
|
-
delPersisterListener(autoLoadHandle);
|
|
180
|
-
autoLoadHandle = void 0;
|
|
181
|
-
}
|
|
182
|
-
return persister;
|
|
183
|
-
},
|
|
184
|
-
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
185
|
-
save: async (getChanges2) => {
|
|
186
|
-
/* istanbul ignore else */
|
|
187
|
-
if (loadSave != 1) {
|
|
188
|
-
loadSave = 2;
|
|
189
|
-
{
|
|
190
|
-
saves++;
|
|
191
|
-
}
|
|
192
|
-
await persister.schedule(async () => {
|
|
193
|
-
try {
|
|
194
|
-
await setPersisted(getContent, getChanges2);
|
|
195
|
-
} catch (error) {
|
|
196
|
-
/* istanbul ignore next */
|
|
197
|
-
onIgnoredError?.(error);
|
|
152
|
+
loadSave = 0;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return persister;
|
|
156
|
+
};
|
|
157
|
+
const startAutoLoad = async (initialContent) => {
|
|
158
|
+
await stopAutoLoad().load(initialContent);
|
|
159
|
+
autoLoadHandle = addPersisterListener(async (content, changes) => {
|
|
160
|
+
if (changes || content) {
|
|
161
|
+
/* istanbul ignore else */
|
|
162
|
+
if (loadSave != 2) {
|
|
163
|
+
loadSave = 1;
|
|
164
|
+
{
|
|
165
|
+
loads++;
|
|
198
166
|
}
|
|
167
|
+
setContentOrChanges(changes ?? content);
|
|
199
168
|
loadSave = 0;
|
|
200
|
-
}
|
|
169
|
+
}
|
|
170
|
+
} else {
|
|
171
|
+
await load();
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return persister;
|
|
175
|
+
};
|
|
176
|
+
const stopAutoLoad = () => {
|
|
177
|
+
if (autoLoadHandle) {
|
|
178
|
+
delPersisterListener(autoLoadHandle);
|
|
179
|
+
autoLoadHandle = void 0;
|
|
180
|
+
}
|
|
181
|
+
return persister;
|
|
182
|
+
};
|
|
183
|
+
const isAutoLoading = () => !isUndefined(autoLoadHandle);
|
|
184
|
+
const save = async (changes) => {
|
|
185
|
+
/* istanbul ignore else */
|
|
186
|
+
if (loadSave != 1) {
|
|
187
|
+
loadSave = 2;
|
|
188
|
+
{
|
|
189
|
+
saves++;
|
|
201
190
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (hasChanges(changes)) {
|
|
209
|
-
persister.save(() => changes);
|
|
191
|
+
await schedule(async () => {
|
|
192
|
+
try {
|
|
193
|
+
await setPersisted(getContent, changes);
|
|
194
|
+
} catch (error) {
|
|
195
|
+
/* istanbul ignore next */
|
|
196
|
+
onIgnoredError?.(error);
|
|
210
197
|
}
|
|
198
|
+
loadSave = 0;
|
|
211
199
|
});
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
200
|
+
}
|
|
201
|
+
return persister;
|
|
202
|
+
};
|
|
203
|
+
const startAutoSave = async () => {
|
|
204
|
+
await stopAutoSave().save();
|
|
205
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
206
|
+
const changes = getChanges();
|
|
207
|
+
if (hasChanges(changes)) {
|
|
208
|
+
save(changes);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
return persister;
|
|
212
|
+
};
|
|
213
|
+
const stopAutoSave = () => {
|
|
214
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
215
|
+
autoSaveListenerId = void 0;
|
|
216
|
+
return persister;
|
|
217
|
+
};
|
|
218
|
+
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
219
|
+
const schedule = async (...actions) => {
|
|
220
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
221
|
+
await run();
|
|
222
|
+
return persister;
|
|
223
|
+
};
|
|
224
|
+
const getStore = () => store;
|
|
225
|
+
const destroy = () => stopAutoLoad().stopAutoSave();
|
|
226
|
+
const getStats = () => ({loads, saves});
|
|
227
|
+
const persister = {
|
|
228
|
+
load,
|
|
229
|
+
startAutoLoad,
|
|
230
|
+
stopAutoLoad,
|
|
231
|
+
isAutoLoading,
|
|
232
|
+
save,
|
|
233
|
+
startAutoSave,
|
|
234
|
+
stopAutoSave,
|
|
235
|
+
isAutoSaving,
|
|
236
|
+
schedule,
|
|
237
|
+
getStore,
|
|
238
|
+
destroy,
|
|
239
|
+
getStats,
|
|
228
240
|
...extra,
|
|
229
241
|
};
|
|
230
242
|
return objFreeze(persister);
|
|
@@ -239,14 +251,14 @@ const getDocContent = (doc, docObjName) => [
|
|
|
239
251
|
doc[docObjName].t,
|
|
240
252
|
doc[docObjName].v,
|
|
241
253
|
];
|
|
242
|
-
const applyChangesToDoc = (doc, docObjName, getContent,
|
|
254
|
+
const applyChangesToDoc = (doc, docObjName, getContent, changes) => {
|
|
243
255
|
ensureDocContent(doc, docObjName);
|
|
244
256
|
const [docTables, docValues] = getDocContent(doc, docObjName);
|
|
245
257
|
const changesDidFail = () => {
|
|
246
258
|
changesFailed = 1;
|
|
247
259
|
};
|
|
248
260
|
let changesFailed = 1;
|
|
249
|
-
ifNotUndefined(
|
|
261
|
+
ifNotUndefined(changes, ([cellChanges, valueChanges]) => {
|
|
250
262
|
changesFailed = 0;
|
|
251
263
|
objToArray(cellChanges, (table, tableId) =>
|
|
252
264
|
changesFailed
|
|
@@ -336,12 +348,12 @@ const createAutomergePersister = (
|
|
|
336
348
|
? getDocContent(doc, docObjName)
|
|
337
349
|
: void 0;
|
|
338
350
|
};
|
|
339
|
-
const setPersisted = async (getContent,
|
|
351
|
+
const setPersisted = async (getContent, changes) =>
|
|
340
352
|
docHandle.change((doc) =>
|
|
341
|
-
applyChangesToDoc(doc, docObjName, getContent,
|
|
353
|
+
applyChangesToDoc(doc, docObjName, getContent, changes),
|
|
342
354
|
);
|
|
343
355
|
const addPersisterListener = (listener) => {
|
|
344
|
-
const observer = ({doc}) => listener(
|
|
356
|
+
const observer = ({doc}) => listener(getDocContent(doc, docObjName));
|
|
345
357
|
docHandle.on('change', observer);
|
|
346
358
|
return observer;
|
|
347
359
|
};
|
|
@@ -355,7 +367,7 @@ const createAutomergePersister = (
|
|
|
355
367
|
addPersisterListener,
|
|
356
368
|
delPersisterListener,
|
|
357
369
|
onIgnoredError,
|
|
358
|
-
|
|
370
|
+
1,
|
|
359
371
|
{getDocHandle: () => docHandle},
|
|
360
372
|
);
|
|
361
373
|
};
|
|
@@ -53,24 +53,27 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
53
53
|
|
|
54
54
|
const scheduleRunning = mapNew();
|
|
55
55
|
const scheduleActions = mapNew();
|
|
56
|
-
const getStoreFunctions = (
|
|
57
|
-
|
|
56
|
+
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
57
|
+
supportedStoreType > 1 && 'getMergeableContent' in store
|
|
58
58
|
? [
|
|
59
|
-
0,
|
|
60
|
-
store.getContent,
|
|
61
|
-
store.getTransactionChanges,
|
|
62
|
-
([changedTables, changedValues]) =>
|
|
63
|
-
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
64
|
-
store.setContent,
|
|
65
|
-
]
|
|
66
|
-
: [
|
|
67
59
|
1,
|
|
68
60
|
store.getMergeableContent,
|
|
69
61
|
store.getTransactionMergeableChanges,
|
|
70
62
|
([[changedTables], [changedValues]]) =>
|
|
71
63
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
72
64
|
store.setDefaultContent,
|
|
73
|
-
]
|
|
65
|
+
]
|
|
66
|
+
: supportedStoreType != 2
|
|
67
|
+
? [
|
|
68
|
+
0,
|
|
69
|
+
store.getContent,
|
|
70
|
+
store.getTransactionChanges,
|
|
71
|
+
([changedTables, changedValues]) =>
|
|
72
|
+
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
73
|
+
store.setContent,
|
|
74
|
+
]
|
|
75
|
+
: /* istanbul ignore next */
|
|
76
|
+
0;
|
|
74
77
|
const createCustomPersister = (
|
|
75
78
|
store,
|
|
76
79
|
getPersisted,
|
|
@@ -78,7 +81,7 @@ const createCustomPersister = (
|
|
|
78
81
|
addPersisterListener,
|
|
79
82
|
delPersisterListener,
|
|
80
83
|
onIgnoredError,
|
|
81
|
-
|
|
84
|
+
supportedStoreType,
|
|
82
85
|
extra = {},
|
|
83
86
|
scheduleId = [],
|
|
84
87
|
) => {
|
|
@@ -96,7 +99,7 @@ const createCustomPersister = (
|
|
|
96
99
|
getChanges,
|
|
97
100
|
hasChanges,
|
|
98
101
|
setDefaultContent,
|
|
99
|
-
] = getStoreFunctions(
|
|
102
|
+
] = getStoreFunctions(supportedStoreType, store);
|
|
100
103
|
const run = async () => {
|
|
101
104
|
/* istanbul ignore else */
|
|
102
105
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -114,20 +117,6 @@ const createCustomPersister = (
|
|
|
114
117
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
115
118
|
}
|
|
116
119
|
};
|
|
117
|
-
const loadLock = async (actions) => {
|
|
118
|
-
/* istanbul ignore else */
|
|
119
|
-
if (loadSave != 2) {
|
|
120
|
-
loadSave = 1;
|
|
121
|
-
{
|
|
122
|
-
loads++;
|
|
123
|
-
}
|
|
124
|
-
await persister.schedule(async () => {
|
|
125
|
-
await actions();
|
|
126
|
-
loadSave = 0;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
return persister;
|
|
130
|
-
};
|
|
131
120
|
const setContentOrChanges = (contentOrChanges) => {
|
|
132
121
|
(isMergeableStore && isArray(contentOrChanges?.[0])
|
|
133
122
|
? contentOrChanges?.[2] === 1
|
|
@@ -137,9 +126,14 @@ const createCustomPersister = (
|
|
|
137
126
|
? store.applyChanges
|
|
138
127
|
: store.setContent)(contentOrChanges);
|
|
139
128
|
};
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
129
|
+
const load = async (initialContent) => {
|
|
130
|
+
/* istanbul ignore else */
|
|
131
|
+
if (loadSave != 2) {
|
|
132
|
+
loadSave = 1;
|
|
133
|
+
{
|
|
134
|
+
loads++;
|
|
135
|
+
}
|
|
136
|
+
await schedule(async () => {
|
|
143
137
|
try {
|
|
144
138
|
setContentOrChanges(await getPersisted());
|
|
145
139
|
} catch (error) {
|
|
@@ -148,76 +142,94 @@ const createCustomPersister = (
|
|
|
148
142
|
setDefaultContent(initialContent);
|
|
149
143
|
}
|
|
150
144
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
});
|
|
166
|
-
},
|
|
167
|
-
);
|
|
168
|
-
return persister;
|
|
169
|
-
},
|
|
170
|
-
stopAutoLoad: () => {
|
|
171
|
-
if (autoLoadHandle) {
|
|
172
|
-
delPersisterListener(autoLoadHandle);
|
|
173
|
-
autoLoadHandle = void 0;
|
|
174
|
-
}
|
|
175
|
-
return persister;
|
|
176
|
-
},
|
|
177
|
-
isAutoLoading: () => !isUndefined(autoLoadHandle),
|
|
178
|
-
save: async (getChanges2) => {
|
|
179
|
-
/* istanbul ignore else */
|
|
180
|
-
if (loadSave != 1) {
|
|
181
|
-
loadSave = 2;
|
|
182
|
-
{
|
|
183
|
-
saves++;
|
|
184
|
-
}
|
|
185
|
-
await persister.schedule(async () => {
|
|
186
|
-
try {
|
|
187
|
-
await setPersisted(getContent, getChanges2);
|
|
188
|
-
} catch (error) {
|
|
189
|
-
/* istanbul ignore next */
|
|
190
|
-
onIgnoredError?.(error);
|
|
145
|
+
loadSave = 0;
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return persister;
|
|
149
|
+
};
|
|
150
|
+
const startAutoLoad = async (initialContent) => {
|
|
151
|
+
await stopAutoLoad().load(initialContent);
|
|
152
|
+
autoLoadHandle = addPersisterListener(async (content, changes) => {
|
|
153
|
+
if (changes || content) {
|
|
154
|
+
/* istanbul ignore else */
|
|
155
|
+
if (loadSave != 2) {
|
|
156
|
+
loadSave = 1;
|
|
157
|
+
{
|
|
158
|
+
loads++;
|
|
191
159
|
}
|
|
160
|
+
setContentOrChanges(changes ?? content);
|
|
192
161
|
loadSave = 0;
|
|
193
|
-
}
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
await load();
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
return persister;
|
|
168
|
+
};
|
|
169
|
+
const stopAutoLoad = () => {
|
|
170
|
+
if (autoLoadHandle) {
|
|
171
|
+
delPersisterListener(autoLoadHandle);
|
|
172
|
+
autoLoadHandle = void 0;
|
|
173
|
+
}
|
|
174
|
+
return persister;
|
|
175
|
+
};
|
|
176
|
+
const isAutoLoading = () => !isUndefined(autoLoadHandle);
|
|
177
|
+
const save = async (changes) => {
|
|
178
|
+
/* istanbul ignore else */
|
|
179
|
+
if (loadSave != 1) {
|
|
180
|
+
loadSave = 2;
|
|
181
|
+
{
|
|
182
|
+
saves++;
|
|
194
183
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (hasChanges(changes)) {
|
|
202
|
-
persister.save(() => changes);
|
|
184
|
+
await schedule(async () => {
|
|
185
|
+
try {
|
|
186
|
+
await setPersisted(getContent, changes);
|
|
187
|
+
} catch (error) {
|
|
188
|
+
/* istanbul ignore next */
|
|
189
|
+
onIgnoredError?.(error);
|
|
203
190
|
}
|
|
191
|
+
loadSave = 0;
|
|
204
192
|
});
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
193
|
+
}
|
|
194
|
+
return persister;
|
|
195
|
+
};
|
|
196
|
+
const startAutoSave = async () => {
|
|
197
|
+
await stopAutoSave().save();
|
|
198
|
+
autoSaveListenerId = store.addDidFinishTransactionListener(() => {
|
|
199
|
+
const changes = getChanges();
|
|
200
|
+
if (hasChanges(changes)) {
|
|
201
|
+
save(changes);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
return persister;
|
|
205
|
+
};
|
|
206
|
+
const stopAutoSave = () => {
|
|
207
|
+
ifNotUndefined(autoSaveListenerId, store.delListener);
|
|
208
|
+
autoSaveListenerId = void 0;
|
|
209
|
+
return persister;
|
|
210
|
+
};
|
|
211
|
+
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
212
|
+
const schedule = async (...actions) => {
|
|
213
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
214
|
+
await run();
|
|
215
|
+
return persister;
|
|
216
|
+
};
|
|
217
|
+
const getStore = () => store;
|
|
218
|
+
const destroy = () => stopAutoLoad().stopAutoSave();
|
|
219
|
+
const getStats = () => ({loads, saves});
|
|
220
|
+
const persister = {
|
|
221
|
+
load,
|
|
222
|
+
startAutoLoad,
|
|
223
|
+
stopAutoLoad,
|
|
224
|
+
isAutoLoading,
|
|
225
|
+
save,
|
|
226
|
+
startAutoSave,
|
|
227
|
+
stopAutoSave,
|
|
228
|
+
isAutoSaving,
|
|
229
|
+
schedule,
|
|
230
|
+
getStore,
|
|
231
|
+
destroy,
|
|
232
|
+
getStats,
|
|
221
233
|
...extra,
|
|
222
234
|
};
|
|
223
235
|
return objFreeze(persister);
|
|
@@ -238,7 +250,11 @@ const createStoragePersister = (
|
|
|
238
250
|
const addPersisterListener = (listener) => {
|
|
239
251
|
const storageListener = (event) => {
|
|
240
252
|
if (event.storageArea === storage && event.key === storageName) {
|
|
241
|
-
|
|
253
|
+
try {
|
|
254
|
+
listener(jsonParse(event.newValue));
|
|
255
|
+
} catch {
|
|
256
|
+
listener();
|
|
257
|
+
}
|
|
242
258
|
}
|
|
243
259
|
};
|
|
244
260
|
WINDOW.addEventListener(STORAGE, storageListener);
|
|
@@ -253,7 +269,7 @@ const createStoragePersister = (
|
|
|
253
269
|
addPersisterListener,
|
|
254
270
|
delPersisterListener,
|
|
255
271
|
onIgnoredError,
|
|
256
|
-
|
|
272
|
+
3,
|
|
257
273
|
{getStorageName: () => storageName},
|
|
258
274
|
);
|
|
259
275
|
};
|