tinybase 5.0.0-beta.8 → 5.0.0-beta.9
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/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/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 -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/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/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/mergeable-store.js +6 -0
- package/lib/debug/persisters/persister-automerge.js +15 -6
- package/lib/debug/persisters/persister-browser.js +15 -6
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +15 -6
- package/lib/debug/persisters/persister-electric-sql.js +15 -6
- package/lib/debug/persisters/persister-expo-sqlite-next.js +15 -6
- package/lib/debug/persisters/persister-expo-sqlite.js +15 -6
- package/lib/debug/persisters/persister-file.js +15 -6
- package/lib/debug/persisters/persister-indexed-db.js +15 -6
- package/lib/debug/persisters/persister-libsql.js +15 -6
- package/lib/debug/persisters/persister-partykit-client.js +15 -6
- package/lib/debug/persisters/persister-powersync.js +15 -6
- package/lib/debug/persisters/persister-remote.js +15 -6
- package/lib/debug/persisters/persister-sqlite-wasm.js +15 -6
- package/lib/debug/persisters/persister-sqlite3.js +15 -6
- package/lib/debug/persisters/persister-yjs.js +15 -6
- package/lib/debug/persisters.js +15 -6
- package/lib/debug/synchronizers/synchronizer-local.js +20 -12
- package/lib/debug/synchronizers/synchronizer-ws-client.js +22 -13
- package/lib/debug/synchronizers/synchronizer-ws-server.js +65 -26
- package/lib/debug/synchronizers.js +20 -12
- package/lib/debug/tinybase.js +26 -12
- package/lib/debug/ui-react-dom.js +22 -10
- package/lib/debug/ui-react.js +54 -5
- 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/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/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 -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/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/mergeable-store.d.ts +7 -1
- package/lib/types/persisters.d.ts +10 -14
- package/lib/types/synchronizers/synchronizer-ws-client.d.ts +9 -4
- package/lib/types/synchronizers/synchronizer-ws-server.d.ts +12 -0
- package/lib/types/synchronizers.d.ts +3 -3
- package/lib/types/ui-react.d.ts +151 -1
- package/lib/types/with-schemas/mergeable-store.d.ts +7 -0
- package/lib/types/with-schemas/persisters.d.ts +11 -23
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +14 -5
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +12 -0
- package/lib/types/with-schemas/synchronizers.d.ts +4 -7
- package/lib/types/with-schemas/ui-react.d.ts +169 -1
- 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 -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/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/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 -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/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/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +1 -1
- package/readme.md +2 -2
|
@@ -76,6 +76,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
76
76
|
store.getTransactionChanges,
|
|
77
77
|
([changedTables, changedValues]) =>
|
|
78
78
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
79
|
+
store.setContent,
|
|
79
80
|
]
|
|
80
81
|
: [
|
|
81
82
|
1,
|
|
@@ -83,6 +84,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
83
84
|
store.getTransactionMergeableChanges,
|
|
84
85
|
([, [[, changedTables], [, changedValues]]]) =>
|
|
85
86
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
87
|
+
store.setDefaultContent,
|
|
86
88
|
];
|
|
87
89
|
const createCustomPersister = (
|
|
88
90
|
store,
|
|
@@ -103,8 +105,13 @@ const createCustomPersister = (
|
|
|
103
105
|
let autoSaveListenerId;
|
|
104
106
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
105
107
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
106
|
-
const [
|
|
107
|
-
|
|
108
|
+
const [
|
|
109
|
+
isMergeableStore,
|
|
110
|
+
getContent,
|
|
111
|
+
getChanges,
|
|
112
|
+
hasChanges,
|
|
113
|
+
setDefaultContent,
|
|
114
|
+
] = getStoreFunctions(supportsMergeableStore, store);
|
|
108
115
|
const run = async () => {
|
|
109
116
|
/* istanbul ignore else */
|
|
110
117
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -146,17 +153,19 @@ const createCustomPersister = (
|
|
|
146
153
|
: store.setContent)(contentOrChanges);
|
|
147
154
|
};
|
|
148
155
|
const persister = {
|
|
149
|
-
load: async (
|
|
156
|
+
load: async (initialContent) =>
|
|
150
157
|
await loadLock(async () => {
|
|
151
158
|
try {
|
|
152
159
|
setContentOrChanges(await getPersisted());
|
|
153
160
|
} catch (error) {
|
|
154
161
|
onIgnoredError?.(error);
|
|
155
|
-
|
|
162
|
+
if (initialContent) {
|
|
163
|
+
setDefaultContent(initialContent);
|
|
164
|
+
}
|
|
156
165
|
}
|
|
157
166
|
}),
|
|
158
|
-
startAutoLoad: async (
|
|
159
|
-
await persister.stopAutoLoad().load(
|
|
167
|
+
startAutoLoad: async (initialContent) => {
|
|
168
|
+
await persister.stopAutoLoad().load(initialContent);
|
|
160
169
|
autoLoadHandle = addPersisterListener(
|
|
161
170
|
async (getContent2, getChanges2) => {
|
|
162
171
|
const changes = getChanges2?.();
|
package/lib/debug/persisters.js
CHANGED
|
@@ -54,6 +54,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
54
54
|
store.getTransactionChanges,
|
|
55
55
|
([changedTables, changedValues]) =>
|
|
56
56
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
57
|
+
store.setContent,
|
|
57
58
|
]
|
|
58
59
|
: [
|
|
59
60
|
1,
|
|
@@ -61,6 +62,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
61
62
|
store.getTransactionMergeableChanges,
|
|
62
63
|
([, [[, changedTables], [, changedValues]]]) =>
|
|
63
64
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
65
|
+
store.setDefaultContent,
|
|
64
66
|
];
|
|
65
67
|
const createCustomPersister = (
|
|
66
68
|
store,
|
|
@@ -81,8 +83,13 @@ const createCustomPersister = (
|
|
|
81
83
|
let autoSaveListenerId;
|
|
82
84
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
83
85
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
84
|
-
const [
|
|
85
|
-
|
|
86
|
+
const [
|
|
87
|
+
isMergeableStore,
|
|
88
|
+
getContent,
|
|
89
|
+
getChanges,
|
|
90
|
+
hasChanges,
|
|
91
|
+
setDefaultContent,
|
|
92
|
+
] = getStoreFunctions(supportsMergeableStore, store);
|
|
86
93
|
const run = async () => {
|
|
87
94
|
/* istanbul ignore else */
|
|
88
95
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -124,17 +131,19 @@ const createCustomPersister = (
|
|
|
124
131
|
: store.setContent)(contentOrChanges);
|
|
125
132
|
};
|
|
126
133
|
const persister = {
|
|
127
|
-
load: async (
|
|
134
|
+
load: async (initialContent) =>
|
|
128
135
|
await loadLock(async () => {
|
|
129
136
|
try {
|
|
130
137
|
setContentOrChanges(await getPersisted());
|
|
131
138
|
} catch (error) {
|
|
132
139
|
onIgnoredError?.(error);
|
|
133
|
-
|
|
140
|
+
if (initialContent) {
|
|
141
|
+
setDefaultContent(initialContent);
|
|
142
|
+
}
|
|
134
143
|
}
|
|
135
144
|
}),
|
|
136
|
-
startAutoLoad: async (
|
|
137
|
-
await persister.stopAutoLoad().load(
|
|
145
|
+
startAutoLoad: async (initialContent) => {
|
|
146
|
+
await persister.stopAutoLoad().load(initialContent);
|
|
138
147
|
autoLoadHandle = addPersisterListener(
|
|
139
148
|
async (getContent2, getChanges2) => {
|
|
140
149
|
const changes = getChanges2?.();
|
|
@@ -62,6 +62,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
62
62
|
store.getTransactionChanges,
|
|
63
63
|
([changedTables, changedValues]) =>
|
|
64
64
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
65
|
+
store.setContent,
|
|
65
66
|
]
|
|
66
67
|
: [
|
|
67
68
|
1,
|
|
@@ -69,6 +70,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
69
70
|
store.getTransactionMergeableChanges,
|
|
70
71
|
([, [[, changedTables], [, changedValues]]]) =>
|
|
71
72
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
73
|
+
store.setDefaultContent,
|
|
72
74
|
];
|
|
73
75
|
const createCustomPersister = (
|
|
74
76
|
store,
|
|
@@ -89,8 +91,13 @@ const createCustomPersister = (
|
|
|
89
91
|
let autoSaveListenerId;
|
|
90
92
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
91
93
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
92
|
-
const [
|
|
93
|
-
|
|
94
|
+
const [
|
|
95
|
+
isMergeableStore,
|
|
96
|
+
getContent,
|
|
97
|
+
getChanges,
|
|
98
|
+
hasChanges,
|
|
99
|
+
setDefaultContent,
|
|
100
|
+
] = getStoreFunctions(supportsMergeableStore, store);
|
|
94
101
|
const run = async () => {
|
|
95
102
|
/* istanbul ignore else */
|
|
96
103
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -132,17 +139,19 @@ const createCustomPersister = (
|
|
|
132
139
|
: store.setContent)(contentOrChanges);
|
|
133
140
|
};
|
|
134
141
|
const persister = {
|
|
135
|
-
load: async (
|
|
142
|
+
load: async (initialContent) =>
|
|
136
143
|
await loadLock(async () => {
|
|
137
144
|
try {
|
|
138
145
|
setContentOrChanges(await getPersisted());
|
|
139
146
|
} catch (error) {
|
|
140
147
|
onIgnoredError?.(error);
|
|
141
|
-
|
|
148
|
+
if (initialContent) {
|
|
149
|
+
setDefaultContent(initialContent);
|
|
150
|
+
}
|
|
142
151
|
}
|
|
143
152
|
}),
|
|
144
|
-
startAutoLoad: async (
|
|
145
|
-
await persister.stopAutoLoad().load(
|
|
153
|
+
startAutoLoad: async (initialContent) => {
|
|
154
|
+
await persister.stopAutoLoad().load(initialContent);
|
|
146
155
|
autoLoadHandle = addPersisterListener(
|
|
147
156
|
async (getContent2, getChanges2) => {
|
|
148
157
|
const changes = getChanges2?.();
|
|
@@ -311,8 +320,9 @@ const createCustomSynchronizer = (
|
|
|
311
320
|
send,
|
|
312
321
|
onReceive,
|
|
313
322
|
destroyImpl,
|
|
314
|
-
requestTimeoutSeconds
|
|
323
|
+
requestTimeoutSeconds,
|
|
315
324
|
onIgnoredError,
|
|
325
|
+
extra = {},
|
|
316
326
|
) => {
|
|
317
327
|
let persisterListener;
|
|
318
328
|
let sends = 0;
|
|
@@ -444,10 +454,8 @@ const createCustomSynchronizer = (
|
|
|
444
454
|
};
|
|
445
455
|
const addPersisterListener = (listener) => (persisterListener = listener);
|
|
446
456
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
447
|
-
const startSync = async (
|
|
448
|
-
await (
|
|
449
|
-
await persister.startAutoLoad(initialTables, initialValues)
|
|
450
|
-
).startAutoSave();
|
|
457
|
+
const startSync = async (initialContent) =>
|
|
458
|
+
await (await persister.startAutoLoad(initialContent)).startAutoSave();
|
|
451
459
|
const stopSync = () => persister.stopAutoLoad().stopAutoSave();
|
|
452
460
|
const destroy = () => {
|
|
453
461
|
destroyImpl();
|
|
@@ -462,7 +470,7 @@ const createCustomSynchronizer = (
|
|
|
462
470
|
delPersisterListener,
|
|
463
471
|
onIgnoredError,
|
|
464
472
|
true,
|
|
465
|
-
{startSync, stopSync, destroy, getSynchronizerStats},
|
|
473
|
+
{startSync, stopSync, destroy, getSynchronizerStats, ...extra},
|
|
466
474
|
);
|
|
467
475
|
return persister;
|
|
468
476
|
};
|
|
@@ -70,6 +70,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
70
70
|
store.getTransactionChanges,
|
|
71
71
|
([changedTables, changedValues]) =>
|
|
72
72
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
73
|
+
store.setContent,
|
|
73
74
|
]
|
|
74
75
|
: [
|
|
75
76
|
1,
|
|
@@ -77,6 +78,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
77
78
|
store.getTransactionMergeableChanges,
|
|
78
79
|
([, [[, changedTables], [, changedValues]]]) =>
|
|
79
80
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
81
|
+
store.setDefaultContent,
|
|
80
82
|
];
|
|
81
83
|
const createCustomPersister = (
|
|
82
84
|
store,
|
|
@@ -97,8 +99,13 @@ const createCustomPersister = (
|
|
|
97
99
|
let autoSaveListenerId;
|
|
98
100
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
99
101
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
100
|
-
const [
|
|
101
|
-
|
|
102
|
+
const [
|
|
103
|
+
isMergeableStore,
|
|
104
|
+
getContent,
|
|
105
|
+
getChanges,
|
|
106
|
+
hasChanges,
|
|
107
|
+
setDefaultContent,
|
|
108
|
+
] = getStoreFunctions(supportsMergeableStore, store);
|
|
102
109
|
const run = async () => {
|
|
103
110
|
/* istanbul ignore else */
|
|
104
111
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -140,17 +147,19 @@ const createCustomPersister = (
|
|
|
140
147
|
: store.setContent)(contentOrChanges);
|
|
141
148
|
};
|
|
142
149
|
const persister = {
|
|
143
|
-
load: async (
|
|
150
|
+
load: async (initialContent) =>
|
|
144
151
|
await loadLock(async () => {
|
|
145
152
|
try {
|
|
146
153
|
setContentOrChanges(await getPersisted());
|
|
147
154
|
} catch (error) {
|
|
148
155
|
onIgnoredError?.(error);
|
|
149
|
-
|
|
156
|
+
if (initialContent) {
|
|
157
|
+
setDefaultContent(initialContent);
|
|
158
|
+
}
|
|
150
159
|
}
|
|
151
160
|
}),
|
|
152
|
-
startAutoLoad: async (
|
|
153
|
-
await persister.stopAutoLoad().load(
|
|
161
|
+
startAutoLoad: async (initialContent) => {
|
|
162
|
+
await persister.stopAutoLoad().load(initialContent);
|
|
154
163
|
autoLoadHandle = addPersisterListener(
|
|
155
164
|
async (getContent2, getChanges2) => {
|
|
156
165
|
const changes = getChanges2?.();
|
|
@@ -319,8 +328,9 @@ const createCustomSynchronizer = (
|
|
|
319
328
|
send,
|
|
320
329
|
onReceive,
|
|
321
330
|
destroyImpl,
|
|
322
|
-
requestTimeoutSeconds
|
|
331
|
+
requestTimeoutSeconds,
|
|
323
332
|
onIgnoredError,
|
|
333
|
+
extra = {},
|
|
324
334
|
) => {
|
|
325
335
|
let persisterListener;
|
|
326
336
|
let sends = 0;
|
|
@@ -452,10 +462,8 @@ const createCustomSynchronizer = (
|
|
|
452
462
|
};
|
|
453
463
|
const addPersisterListener = (listener) => (persisterListener = listener);
|
|
454
464
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
455
|
-
const startSync = async (
|
|
456
|
-
await (
|
|
457
|
-
await persister.startAutoLoad(initialTables, initialValues)
|
|
458
|
-
).startAutoSave();
|
|
465
|
+
const startSync = async (initialContent) =>
|
|
466
|
+
await (await persister.startAutoLoad(initialContent)).startAutoSave();
|
|
459
467
|
const stopSync = () => persister.stopAutoLoad().stopAutoSave();
|
|
460
468
|
const destroy = () => {
|
|
461
469
|
destroyImpl();
|
|
@@ -470,7 +478,7 @@ const createCustomSynchronizer = (
|
|
|
470
478
|
delPersisterListener,
|
|
471
479
|
onIgnoredError,
|
|
472
480
|
true,
|
|
473
|
-
{startSync, stopSync, destroy, getSynchronizerStats},
|
|
481
|
+
{startSync, stopSync, destroy, getSynchronizerStats, ...extra},
|
|
474
482
|
);
|
|
475
483
|
return persister;
|
|
476
484
|
};
|
|
@@ -478,7 +486,7 @@ const createCustomSynchronizer = (
|
|
|
478
486
|
const createWsSynchronizer = async (
|
|
479
487
|
store,
|
|
480
488
|
webSocket,
|
|
481
|
-
requestTimeoutSeconds,
|
|
489
|
+
requestTimeoutSeconds = 1,
|
|
482
490
|
onIgnoredError,
|
|
483
491
|
) => {
|
|
484
492
|
let currentReceive;
|
|
@@ -502,6 +510,7 @@ const createWsSynchronizer = async (
|
|
|
502
510
|
destroy,
|
|
503
511
|
requestTimeoutSeconds,
|
|
504
512
|
onIgnoredError,
|
|
513
|
+
{getWebSocket: () => webSocket},
|
|
505
514
|
);
|
|
506
515
|
addEventListener('message', ({data}) => {
|
|
507
516
|
if (!isUndefined(currentReceive)) {
|
|
@@ -2,54 +2,93 @@ const EMPTY_STRING = '';
|
|
|
2
2
|
const UTF8 = 'utf8';
|
|
3
3
|
|
|
4
4
|
const isUndefined = (thing) => thing == void 0;
|
|
5
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
6
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
5
7
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
6
8
|
|
|
9
|
+
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
10
|
+
|
|
11
|
+
const collSizeN = (collSizer) => (coll) =>
|
|
12
|
+
arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
|
|
13
|
+
const collSize = (coll) => coll?.size ?? 0;
|
|
14
|
+
const collSize2 = collSizeN(collSize);
|
|
15
|
+
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
16
|
+
const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
17
|
+
const collValues = (coll) => [...(coll?.values() ?? [])];
|
|
7
18
|
const collClear = (coll) => coll.clear();
|
|
8
19
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
9
20
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
10
21
|
|
|
11
22
|
const mapNew = (entries) => new Map(entries);
|
|
23
|
+
const mapKeys = (map) => [...(map?.keys() ?? [])];
|
|
12
24
|
const mapGet = (map, key) => map?.get(key);
|
|
13
25
|
const mapForEach = (map, cb) =>
|
|
14
26
|
collForEach(map, (value, key) => cb(key, value));
|
|
15
27
|
const mapSet = (map, key, value) =>
|
|
16
28
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
29
|
+
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
30
|
+
if (!collHas(map, key)) {
|
|
31
|
+
mapSet(map, key, getDefaultValue());
|
|
32
|
+
} else {
|
|
33
|
+
hadExistingValue?.(mapGet(map, key));
|
|
34
|
+
}
|
|
35
|
+
return mapGet(map, key);
|
|
36
|
+
};
|
|
17
37
|
|
|
18
38
|
const MESSAGE_SEPARATOR = '\n';
|
|
19
39
|
|
|
40
|
+
const PATH_REGEX = /\/([^?]*)/;
|
|
20
41
|
const createWsServer = (webSocketServer) => {
|
|
21
|
-
const
|
|
22
|
-
webSocketServer.on('connection', (webSocket, request) =>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
const clientsByPath = mapNew();
|
|
43
|
+
webSocketServer.on('connection', (webSocket, request) =>
|
|
44
|
+
ifNotUndefined(request.url?.match(PATH_REGEX), ([path]) =>
|
|
45
|
+
ifNotUndefined(request.headers['sec-websocket-key'], (clientId) => {
|
|
46
|
+
const clients = mapEnsure(clientsByPath, path, mapNew);
|
|
47
|
+
mapSet(clients, clientId, webSocket);
|
|
48
|
+
webSocket.on('message', (data) => {
|
|
49
|
+
const payload = data.toString(UTF8);
|
|
50
|
+
const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
|
|
51
|
+
if (splitAt !== -1) {
|
|
52
|
+
const toClientId = slice(payload, 0, splitAt);
|
|
53
|
+
const message = slice(payload, splitAt + 1);
|
|
54
|
+
toClientId === EMPTY_STRING
|
|
55
|
+
? mapForEach(clients, (otherClientId, otherWebSocket) =>
|
|
56
|
+
otherClientId != clientId
|
|
57
|
+
? otherWebSocket.send(
|
|
58
|
+
clientId + MESSAGE_SEPARATOR + message,
|
|
59
|
+
)
|
|
60
|
+
: 0,
|
|
61
|
+
)
|
|
62
|
+
: mapGet(clients, toClientId)?.send(
|
|
63
|
+
clientId + MESSAGE_SEPARATOR + message,
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
webSocket.on('close', () => {
|
|
68
|
+
collDel(clients, clientId);
|
|
69
|
+
if (collIsEmpty(clients)) {
|
|
70
|
+
collDel(clientsByPath, path);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}),
|
|
74
|
+
),
|
|
75
|
+
);
|
|
46
76
|
const getWebSocketServer = () => webSocketServer;
|
|
77
|
+
const getPaths = () => mapKeys(clientsByPath);
|
|
78
|
+
const getClientIds = (path) => mapKeys(mapGet(clientsByPath, path));
|
|
79
|
+
const getStats = () => ({
|
|
80
|
+
paths: collSize(clientsByPath),
|
|
81
|
+
clients: collSize2(clientsByPath),
|
|
82
|
+
});
|
|
47
83
|
const destroy = () => {
|
|
48
84
|
webSocketServer.close();
|
|
49
|
-
collClear(
|
|
85
|
+
collClear(clientsByPath);
|
|
50
86
|
};
|
|
51
87
|
return {
|
|
52
88
|
getWebSocketServer,
|
|
89
|
+
getPaths,
|
|
90
|
+
getClientIds,
|
|
91
|
+
getStats,
|
|
53
92
|
destroy,
|
|
54
93
|
};
|
|
55
94
|
};
|
|
@@ -59,6 +59,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
59
59
|
store.getTransactionChanges,
|
|
60
60
|
([changedTables, changedValues]) =>
|
|
61
61
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
62
|
+
store.setContent,
|
|
62
63
|
]
|
|
63
64
|
: [
|
|
64
65
|
1,
|
|
@@ -66,6 +67,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
66
67
|
store.getTransactionMergeableChanges,
|
|
67
68
|
([, [[, changedTables], [, changedValues]]]) =>
|
|
68
69
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
70
|
+
store.setDefaultContent,
|
|
69
71
|
];
|
|
70
72
|
const createCustomPersister = (
|
|
71
73
|
store,
|
|
@@ -86,8 +88,13 @@ const createCustomPersister = (
|
|
|
86
88
|
let autoSaveListenerId;
|
|
87
89
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
88
90
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
89
|
-
const [
|
|
90
|
-
|
|
91
|
+
const [
|
|
92
|
+
isMergeableStore,
|
|
93
|
+
getContent,
|
|
94
|
+
getChanges,
|
|
95
|
+
hasChanges,
|
|
96
|
+
setDefaultContent,
|
|
97
|
+
] = getStoreFunctions(supportsMergeableStore, store);
|
|
91
98
|
const run = async () => {
|
|
92
99
|
/* istanbul ignore else */
|
|
93
100
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -129,17 +136,19 @@ const createCustomPersister = (
|
|
|
129
136
|
: store.setContent)(contentOrChanges);
|
|
130
137
|
};
|
|
131
138
|
const persister = {
|
|
132
|
-
load: async (
|
|
139
|
+
load: async (initialContent) =>
|
|
133
140
|
await loadLock(async () => {
|
|
134
141
|
try {
|
|
135
142
|
setContentOrChanges(await getPersisted());
|
|
136
143
|
} catch (error) {
|
|
137
144
|
onIgnoredError?.(error);
|
|
138
|
-
|
|
145
|
+
if (initialContent) {
|
|
146
|
+
setDefaultContent(initialContent);
|
|
147
|
+
}
|
|
139
148
|
}
|
|
140
149
|
}),
|
|
141
|
-
startAutoLoad: async (
|
|
142
|
-
await persister.stopAutoLoad().load(
|
|
150
|
+
startAutoLoad: async (initialContent) => {
|
|
151
|
+
await persister.stopAutoLoad().load(initialContent);
|
|
143
152
|
autoLoadHandle = addPersisterListener(
|
|
144
153
|
async (getContent2, getChanges2) => {
|
|
145
154
|
const changes = getChanges2?.();
|
|
@@ -308,8 +317,9 @@ const createCustomSynchronizer = (
|
|
|
308
317
|
send,
|
|
309
318
|
onReceive,
|
|
310
319
|
destroyImpl,
|
|
311
|
-
requestTimeoutSeconds
|
|
320
|
+
requestTimeoutSeconds,
|
|
312
321
|
onIgnoredError,
|
|
322
|
+
extra = {},
|
|
313
323
|
) => {
|
|
314
324
|
let persisterListener;
|
|
315
325
|
let sends = 0;
|
|
@@ -441,10 +451,8 @@ const createCustomSynchronizer = (
|
|
|
441
451
|
};
|
|
442
452
|
const addPersisterListener = (listener) => (persisterListener = listener);
|
|
443
453
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
444
|
-
const startSync = async (
|
|
445
|
-
await (
|
|
446
|
-
await persister.startAutoLoad(initialTables, initialValues)
|
|
447
|
-
).startAutoSave();
|
|
454
|
+
const startSync = async (initialContent) =>
|
|
455
|
+
await (await persister.startAutoLoad(initialContent)).startAutoSave();
|
|
448
456
|
const stopSync = () => persister.stopAutoLoad().stopAutoSave();
|
|
449
457
|
const destroy = () => {
|
|
450
458
|
destroyImpl();
|
|
@@ -459,7 +467,7 @@ const createCustomSynchronizer = (
|
|
|
459
467
|
delPersisterListener,
|
|
460
468
|
onIgnoredError,
|
|
461
469
|
true,
|
|
462
|
-
{startSync, stopSync, destroy, getSynchronizerStats},
|
|
470
|
+
{startSync, stopSync, destroy, getSynchronizerStats, ...extra},
|
|
463
471
|
);
|
|
464
472
|
return persister;
|
|
465
473
|
};
|
package/lib/debug/tinybase.js
CHANGED
|
@@ -1128,6 +1128,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
1128
1128
|
store.getTransactionChanges,
|
|
1129
1129
|
([changedTables, changedValues]) =>
|
|
1130
1130
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
1131
|
+
store.setContent,
|
|
1131
1132
|
]
|
|
1132
1133
|
: [
|
|
1133
1134
|
1,
|
|
@@ -1135,6 +1136,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
|
|
|
1135
1136
|
store.getTransactionMergeableChanges,
|
|
1136
1137
|
([, [[, changedTables], [, changedValues]]]) =>
|
|
1137
1138
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
1139
|
+
store.setDefaultContent,
|
|
1138
1140
|
];
|
|
1139
1141
|
const createCustomPersister = (
|
|
1140
1142
|
store,
|
|
@@ -1155,8 +1157,13 @@ const createCustomPersister = (
|
|
|
1155
1157
|
let autoSaveListenerId;
|
|
1156
1158
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
1157
1159
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
1158
|
-
const [
|
|
1159
|
-
|
|
1160
|
+
const [
|
|
1161
|
+
isMergeableStore,
|
|
1162
|
+
getContent,
|
|
1163
|
+
getChanges,
|
|
1164
|
+
hasChanges,
|
|
1165
|
+
setDefaultContent,
|
|
1166
|
+
] = getStoreFunctions(supportsMergeableStore, store);
|
|
1160
1167
|
const run = async () => {
|
|
1161
1168
|
/* istanbul ignore else */
|
|
1162
1169
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -1198,17 +1205,19 @@ const createCustomPersister = (
|
|
|
1198
1205
|
: store.setContent)(contentOrChanges);
|
|
1199
1206
|
};
|
|
1200
1207
|
const persister = {
|
|
1201
|
-
load: async (
|
|
1208
|
+
load: async (initialContent) =>
|
|
1202
1209
|
await loadLock(async () => {
|
|
1203
1210
|
try {
|
|
1204
1211
|
setContentOrChanges(await getPersisted());
|
|
1205
1212
|
} catch (error) {
|
|
1206
1213
|
onIgnoredError?.(error);
|
|
1207
|
-
|
|
1214
|
+
if (initialContent) {
|
|
1215
|
+
setDefaultContent(initialContent);
|
|
1216
|
+
}
|
|
1208
1217
|
}
|
|
1209
1218
|
}),
|
|
1210
|
-
startAutoLoad: async (
|
|
1211
|
-
await persister.stopAutoLoad().load(
|
|
1219
|
+
startAutoLoad: async (initialContent) => {
|
|
1220
|
+
await persister.stopAutoLoad().load(initialContent);
|
|
1212
1221
|
autoLoadHandle = addPersisterListener(
|
|
1213
1222
|
async (getContent2, getChanges2) => {
|
|
1214
1223
|
const changes = getChanges2?.();
|
|
@@ -1377,8 +1386,9 @@ const createCustomSynchronizer = (
|
|
|
1377
1386
|
send,
|
|
1378
1387
|
onReceive,
|
|
1379
1388
|
destroyImpl,
|
|
1380
|
-
requestTimeoutSeconds
|
|
1389
|
+
requestTimeoutSeconds,
|
|
1381
1390
|
onIgnoredError,
|
|
1391
|
+
extra = {},
|
|
1382
1392
|
) => {
|
|
1383
1393
|
let persisterListener;
|
|
1384
1394
|
let sends = 0;
|
|
@@ -1510,10 +1520,8 @@ const createCustomSynchronizer = (
|
|
|
1510
1520
|
};
|
|
1511
1521
|
const addPersisterListener = (listener) => (persisterListener = listener);
|
|
1512
1522
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
1513
|
-
const startSync = async (
|
|
1514
|
-
await (
|
|
1515
|
-
await persister.startAutoLoad(initialTables, initialValues)
|
|
1516
|
-
).startAutoSave();
|
|
1523
|
+
const startSync = async (initialContent) =>
|
|
1524
|
+
await (await persister.startAutoLoad(initialContent)).startAutoSave();
|
|
1517
1525
|
const stopSync = () => persister.stopAutoLoad().stopAutoSave();
|
|
1518
1526
|
const destroy = () => {
|
|
1519
1527
|
destroyImpl();
|
|
@@ -1528,7 +1536,7 @@ const createCustomSynchronizer = (
|
|
|
1528
1536
|
delPersisterListener,
|
|
1529
1537
|
onIgnoredError,
|
|
1530
1538
|
true,
|
|
1531
|
-
{startSync, stopSync, destroy, getSynchronizerStats},
|
|
1539
|
+
{startSync, stopSync, destroy, getSynchronizerStats, ...extra},
|
|
1532
1540
|
);
|
|
1533
1541
|
return persister;
|
|
1534
1542
|
};
|
|
@@ -3828,6 +3836,11 @@ const createMergeableStore = (id) => {
|
|
|
3828
3836
|
})
|
|
3829
3837
|
: 0,
|
|
3830
3838
|
);
|
|
3839
|
+
const setDefaultContent = (content) => {
|
|
3840
|
+
transactionTime = '0';
|
|
3841
|
+
store.setContent(content);
|
|
3842
|
+
return mergeableStore;
|
|
3843
|
+
};
|
|
3831
3844
|
const getTransactionMergeableChanges = () => {
|
|
3832
3845
|
if (isUndefined(transactionMergeableChanges)) {
|
|
3833
3846
|
const [, , changedCells, , changedValues] = store.getTransactionLog();
|
|
@@ -3886,6 +3899,7 @@ const createMergeableStore = (id) => {
|
|
|
3886
3899
|
getMergeableValuesHashes,
|
|
3887
3900
|
getMergeableValuesChanges,
|
|
3888
3901
|
setMergeableContent,
|
|
3902
|
+
setDefaultContent,
|
|
3889
3903
|
getTransactionMergeableChanges,
|
|
3890
3904
|
applyMergeableChanges,
|
|
3891
3905
|
merge,
|