tinybase 5.0.0-beta.1 → 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/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/cjs/checkpoints.cjs +1 -1
- package/lib/cjs/checkpoints.cjs.gz +0 -0
- package/lib/cjs/indexes.cjs +1 -1
- package/lib/cjs/indexes.cjs.gz +0 -0
- package/lib/cjs/mergeable-store.cjs +1 -0
- package/lib/cjs/mergeable-store.cjs.gz +0 -0
- package/lib/cjs/metrics.cjs +1 -1
- package/lib/cjs/metrics.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-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 -0
- 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-partykit-server.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-powersync.cjs +1 -0
- package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/relationships.cjs +1 -1
- package/lib/cjs/relationships.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
- package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
- package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
- package/lib/cjs/synchronizers.cjs +1 -0
- 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/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/checkpoints.cjs +1 -1
- package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
- package/lib/cjs-es6/indexes.cjs +1 -1
- package/lib/cjs-es6/indexes.cjs.gz +0 -0
- package/lib/cjs-es6/mergeable-store.cjs +1 -0
- package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
- package/lib/cjs-es6/metrics.cjs +1 -1
- package/lib/cjs-es6/metrics.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-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 -0
- 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-partykit-server.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/relationships.cjs +1 -1
- package/lib/cjs-es6/relationships.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers.cjs +1 -0
- 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/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/checkpoints.js +3 -1
- package/lib/debug/indexes.js +3 -1
- package/lib/debug/mergeable-store.js +2230 -0
- package/lib/debug/metrics.js +3 -1
- package/lib/debug/persisters/persister-automerge.js +167 -131
- package/lib/debug/persisters/persister-browser.js +155 -102
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +225 -152
- package/lib/debug/persisters/persister-electric-sql.js +225 -152
- package/lib/debug/persisters/persister-expo-sqlite-next.js +225 -152
- package/lib/debug/persisters/persister-expo-sqlite.js +225 -152
- package/lib/debug/persisters/persister-file.js +149 -101
- package/lib/debug/persisters/persister-indexed-db.js +146 -100
- package/lib/debug/persisters/persister-libsql.js +924 -0
- package/lib/debug/persisters/persister-partykit-client.js +146 -104
- package/lib/debug/persisters/persister-partykit-server.js +17 -25
- package/lib/debug/persisters/persister-powersync.js +939 -0
- package/lib/debug/persisters/persister-remote.js +141 -97
- package/lib/debug/persisters/persister-sqlite-wasm.js +225 -152
- package/lib/debug/persisters/persister-sqlite3.js +225 -152
- package/lib/debug/persisters/persister-yjs.js +164 -127
- package/lib/debug/persisters.js +137 -94
- package/lib/debug/queries.js +9 -6
- package/lib/debug/relationships.js +3 -1
- package/lib/debug/store.js +147 -126
- package/lib/debug/synchronizers/synchronizer-local.js +571 -0
- package/lib/debug/synchronizers/synchronizer-ws-client.js +598 -0
- package/lib/debug/synchronizers/synchronizer-ws-server.js +241 -0
- package/lib/debug/synchronizers.js +531 -0
- package/lib/debug/tinybase.js +1080 -215
- package/lib/debug/tools.js +22 -21
- package/lib/debug/ui-react-dom.js +336 -258
- package/lib/debug/ui-react.js +55 -6
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/mergeable-store.js +1 -0
- package/lib/es6/mergeable-store.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-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 -0
- 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-partykit-server.js +1 -1
- package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/es6/persisters/persister-powersync.js +1 -0
- package/lib/es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-local.js +1 -0
- package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/es6/synchronizers.js +1 -0
- 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/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react-dom.js +1 -1
- package/lib/es6/ui-react-dom.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/mergeable-store.js +1 -0
- package/lib/mergeable-store.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-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 -0
- 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-partykit-server.js +1 -1
- package/lib/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/persisters/persister-powersync.js +1 -0
- package/lib/persisters/persister-powersync.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/synchronizers/synchronizer-local.js +1 -0
- package/lib/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/synchronizers.js +1 -0
- package/lib/synchronizers.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/checkpoints.d.ts +2 -2
- package/lib/types/indexes.d.ts +2 -2
- package/lib/types/mergeable-store.d.ts +214 -0
- package/lib/types/metrics.d.ts +2 -2
- package/lib/types/persisters/persister-automerge.d.ts +11 -7
- package/lib/types/persisters/persister-browser.d.ts +13 -4
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
- package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
- package/lib/types/persisters/persister-expo-sqlite-next.d.ts +4 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
- package/lib/types/persisters/persister-file.d.ts +7 -2
- package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
- package/lib/types/persisters/persister-libsql.d.ts +142 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
- package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
- package/lib/types/persisters/persister-powersync.d.ts +157 -0
- package/lib/types/persisters/persister-remote.d.ts +4 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
- package/lib/types/persisters/persister-yjs.d.ts +6 -2
- package/lib/types/persisters.d.ts +162 -59
- package/lib/types/queries.d.ts +2 -2
- package/lib/types/relationships.d.ts +2 -2
- package/lib/types/store.d.ts +275 -187
- package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
- package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
- package/lib/types/synchronizers/synchronizer-ws-server.d.ts +57 -0
- package/lib/types/synchronizers.d.ts +132 -0
- package/lib/types/tinybase.d.ts +10 -8
- package/lib/types/tools.d.ts +4 -4
- package/lib/types/ui-react.d.ts +160 -9
- package/lib/types/with-schemas/checkpoints.d.ts +2 -2
- package/lib/types/with-schemas/indexes.d.ts +2 -2
- package/lib/types/with-schemas/internal/store.d.ts +4 -0
- package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
- package/lib/types/with-schemas/metrics.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
- package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
- package/lib/types/with-schemas/persisters.d.ts +193 -121
- package/lib/types/with-schemas/queries.d.ts +3 -3
- package/lib/types/with-schemas/relationships.d.ts +2 -2
- package/lib/types/with-schemas/store.d.ts +483 -345
- package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +57 -0
- package/lib/types/with-schemas/synchronizers.d.ts +146 -0
- package/lib/types/with-schemas/tinybase.d.ts +9 -8
- package/lib/types/with-schemas/tools.d.ts +4 -4
- package/lib/types/with-schemas/ui-react.d.ts +177 -9
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/mergeable-store.js +1 -0
- package/lib/umd/mergeable-store.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-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 -0
- 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-partykit-server.js +1 -1
- package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd/persisters/persister-powersync.js +1 -0
- package/lib/umd/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-local.js +1 -0
- package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/umd/synchronizers.js +1 -0
- 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/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react-dom.js +1 -1
- package/lib/umd/ui-react-dom.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/mergeable-store.js +1 -0
- package/lib/umd-es6/mergeable-store.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-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 -0
- 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-partykit-server.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-powersync.js +1 -0
- package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
- package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
- package/lib/umd-es6/synchronizers.js +1 -0
- 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/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +65 -45
- package/readme.md +2 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The synchronizer-local module of the TinyBase project lets you synchronize
|
|
3
|
+
* MergeableStore data to and from other MergeableStore instances on the same
|
|
4
|
+
* local machine.
|
|
5
|
+
* @see Synchronizing Data guide
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module synchronizer-local
|
|
8
|
+
* @since v5.0.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {MergeableStore} from '../mergeable-store';
|
|
12
|
+
import {OptionalSchemas} from '../store';
|
|
13
|
+
import {Synchronizer} from '../synchronizers';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The LocalSynchronizer interface
|
|
17
|
+
* @category Synchronizer
|
|
18
|
+
*/
|
|
19
|
+
export interface LocalSynchronizer<Schemas extends OptionalSchemas>
|
|
20
|
+
extends Synchronizer<Schemas> {}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The createLocalSynchronizer function
|
|
24
|
+
* @category Creation
|
|
25
|
+
*/
|
|
26
|
+
export function createLocalSynchronizer<Schemas extends OptionalSchemas>(
|
|
27
|
+
store: MergeableStore<Schemas>,
|
|
28
|
+
onIgnoredError?: (error: any) => void,
|
|
29
|
+
): LocalSynchronizer<Schemas>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The synchronizer-ws module of the TinyBase project lets you synchronize
|
|
3
|
+
* MergeableStore data to and from other MergeableStore instances via WebSockets
|
|
4
|
+
* facilitated by a server.
|
|
5
|
+
* @see Synchronizing Data guide
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module synchronizer-ws-client
|
|
8
|
+
* @since v5.0.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {MergeableStore} from '../mergeable-store';
|
|
12
|
+
import {OptionalSchemas} from '../store';
|
|
13
|
+
import {Synchronizer} from '../synchronizers';
|
|
14
|
+
import {WebSocket as WsWebSocket} from 'ws';
|
|
15
|
+
|
|
16
|
+
export type WebSocketTypes = WebSocket | WsWebSocket;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The WsSynchronizer interface
|
|
20
|
+
* @category Synchronizer
|
|
21
|
+
*/
|
|
22
|
+
export interface WsSynchronizer<
|
|
23
|
+
Schemas extends OptionalSchemas,
|
|
24
|
+
WebSocketType extends WebSocketTypes,
|
|
25
|
+
> extends Synchronizer<Schemas> {
|
|
26
|
+
getWebSocket(): WebSocketType;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The createWsSynchronizer function
|
|
31
|
+
* @category Creation
|
|
32
|
+
*/
|
|
33
|
+
export function createWsSynchronizer<
|
|
34
|
+
Schemas extends OptionalSchemas,
|
|
35
|
+
WebSocketType extends WebSocketTypes,
|
|
36
|
+
>(
|
|
37
|
+
store: MergeableStore<Schemas>,
|
|
38
|
+
webSocket: WebSocketType,
|
|
39
|
+
requestTimeoutSeconds?: number,
|
|
40
|
+
onIgnoredError?: (error: any) => void,
|
|
41
|
+
): Promise<WsSynchronizer<Schemas, WebSocketType>>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The synchronizer-ws-server module of the TinyBase project lets you create
|
|
3
|
+
* a server that facilitates synchronization between clients.
|
|
4
|
+
* @see Synchronizing Data guide
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
* @module synchronizer-ws-server
|
|
7
|
+
* @since v5.0.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {Id, IdOrNull, Ids} from '../common';
|
|
11
|
+
import {GetIdChanges} from '../store';
|
|
12
|
+
import {WebSocketServer} from 'ws';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The PathIdsListener type
|
|
16
|
+
*/
|
|
17
|
+
export type PathIdsListener<> = (
|
|
18
|
+
wsServer: WsServer,
|
|
19
|
+
getIdChanges: GetIdChanges<Id>,
|
|
20
|
+
) => void;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The ClientIdsListener type
|
|
24
|
+
*/
|
|
25
|
+
export type ClientIdsListener<> = (
|
|
26
|
+
wsServer: WsServer,
|
|
27
|
+
pathId: Id,
|
|
28
|
+
getIdChanges: GetIdChanges<Id>,
|
|
29
|
+
) => void;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The WsServerStats type
|
|
33
|
+
*/
|
|
34
|
+
export type WsServerStats = {
|
|
35
|
+
paths?: number;
|
|
36
|
+
clients?: number;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The WsServer interface
|
|
41
|
+
*/
|
|
42
|
+
export interface WsServer {
|
|
43
|
+
getWebSocketServer: () => WebSocketServer;
|
|
44
|
+
getPathIds: () => Ids;
|
|
45
|
+
getClientIds: (pathId: Id) => Ids;
|
|
46
|
+
addPathIdsListener: (listener: PathIdsListener) => Id;
|
|
47
|
+
addClientIdsListener: (pathId: IdOrNull, listener: ClientIdsListener) => Id;
|
|
48
|
+
delListener(listenerId: Id): WsServer;
|
|
49
|
+
getStats: () => WsServerStats;
|
|
50
|
+
destroy: () => void;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The createWsServer function
|
|
55
|
+
* @category Creation
|
|
56
|
+
*/
|
|
57
|
+
export function createWsServer(WebSocketServer: WebSocketServer): WsServer;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The persister-sync module of the TinyBase project lets you synchronize
|
|
3
|
+
* MergeableStore data to and from other MergeableStore instances.
|
|
4
|
+
* @see Synchronizing Data guide
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
* @module synchronizers
|
|
7
|
+
* @since v5.0.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {Content, OptionalSchemas} from './store';
|
|
11
|
+
import {Id, IdOrNull} from './common';
|
|
12
|
+
import {MergeableStore} from './mergeable-store';
|
|
13
|
+
import {Persister} from './persisters';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The MessageType type
|
|
17
|
+
* @category Synchronization
|
|
18
|
+
*/
|
|
19
|
+
export type MessageType = number;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The Receive type
|
|
23
|
+
* @category Synchronization
|
|
24
|
+
*/
|
|
25
|
+
export type Receive = (
|
|
26
|
+
fromClientId: Id,
|
|
27
|
+
requestId: Id,
|
|
28
|
+
messageType: MessageType,
|
|
29
|
+
messageBody: any,
|
|
30
|
+
) => void;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The Send type
|
|
34
|
+
* @category Synchronization
|
|
35
|
+
*/
|
|
36
|
+
export type Send = (
|
|
37
|
+
toClientId: IdOrNull,
|
|
38
|
+
requestId: Id,
|
|
39
|
+
messageType: MessageType,
|
|
40
|
+
messageBody: any,
|
|
41
|
+
) => void;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The SynchronizerStats type
|
|
45
|
+
* @category Development
|
|
46
|
+
*/
|
|
47
|
+
export type SynchronizerStats = {
|
|
48
|
+
sends?: number;
|
|
49
|
+
receives?: number;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The Synchronizer interface is a minor extension to the Persister interface.
|
|
54
|
+
*
|
|
55
|
+
* It provides extra convenience methods for starting and stopping the
|
|
56
|
+
* synchronization.
|
|
57
|
+
*
|
|
58
|
+
* You should use the createCustomSynchronizer function to create a Synchronizer
|
|
59
|
+
* object.
|
|
60
|
+
* @category Synchronizer
|
|
61
|
+
* @since v5.0.0
|
|
62
|
+
*/
|
|
63
|
+
export interface Synchronizer<Schemas extends OptionalSchemas>
|
|
64
|
+
extends Persister<Schemas, 2> {
|
|
65
|
+
/**
|
|
66
|
+
* The startSync method
|
|
67
|
+
* @category Synchronization
|
|
68
|
+
*/
|
|
69
|
+
startSync(initialContent?: Content<Schemas, true>): Promise<this>;
|
|
70
|
+
/**
|
|
71
|
+
* The stopSync method
|
|
72
|
+
* @category Synchronization
|
|
73
|
+
*/
|
|
74
|
+
stopSync(): this;
|
|
75
|
+
/**
|
|
76
|
+
* The getSynchronizerStats method
|
|
77
|
+
* @category Synchronization
|
|
78
|
+
*/
|
|
79
|
+
getSynchronizerStats(): SynchronizerStats;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The createCustomSynchronizer function creates a Synchronizer object that can
|
|
84
|
+
* persist one MergeableStore to another.
|
|
85
|
+
*
|
|
86
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
87
|
+
*
|
|
88
|
+
* ```ts override
|
|
89
|
+
* createCustomSynchronizer(
|
|
90
|
+
* store: MergeableStore,
|
|
91
|
+
* send: Send,
|
|
92
|
+
* onReceive: (receive: Receive) => void,
|
|
93
|
+
* destroy: () => void,
|
|
94
|
+
* requestTimeoutSeconds: number,
|
|
95
|
+
* onIgnoredError?: (error: any) => void,
|
|
96
|
+
* ): Synchronizer;
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* As well as providing a reference to the MergeableStore to synchronize, you
|
|
100
|
+
* must provide a `client` parameter which identifies the Client that is used to
|
|
101
|
+
* transmit changes to and from this MergeableStore and its peers.
|
|
102
|
+
* @param store The MergeableStore to synchronize.
|
|
103
|
+
* @param client The reference of the Client.
|
|
104
|
+
* @param requestTimeoutSeconds An optional number of seconds before a request
|
|
105
|
+
* to the Client times out, defaulting to 5.
|
|
106
|
+
* @param onIgnoredError An optional handler for the errors that the
|
|
107
|
+
* Synchronizer would otherwise ignore when trying to save or load data. This is
|
|
108
|
+
* suitable for debugging synchronization issues in a development environment.
|
|
109
|
+
* @returns A reference to the new Synchronizer object.
|
|
110
|
+
* @example
|
|
111
|
+
* This example creates a Synchronizer object and synchronizes one
|
|
112
|
+
* MergeableStore to another.
|
|
113
|
+
*
|
|
114
|
+
* ```js
|
|
115
|
+
* const store1 = createMergeableStore('store1').setTables({
|
|
116
|
+
* pets: {fido: {species: 'dog'}},
|
|
117
|
+
* });
|
|
118
|
+
* const synchronizer1 = createLocalSynchronizer(store1);
|
|
119
|
+
*
|
|
120
|
+
* const store2 = createMergeableStore('store2');
|
|
121
|
+
* const synchronizer2 = createLocalSynchronizer(store2);
|
|
122
|
+
* await synchronizer2.startSync();
|
|
123
|
+
*
|
|
124
|
+
* await synchronizer1.save();
|
|
125
|
+
* // ...
|
|
126
|
+
* // Store2 will be synced with Store1.
|
|
127
|
+
*
|
|
128
|
+
* console.log(store2.getTables());
|
|
129
|
+
* // -> {pets: {fido: {species: 'dog'}}}
|
|
130
|
+
*
|
|
131
|
+
* await synchronizer1.load();
|
|
132
|
+
* // Store1 will be synced with Store2.
|
|
133
|
+
*
|
|
134
|
+
* synchronizer1.destroy();
|
|
135
|
+
* synchronizer2.destroy();
|
|
136
|
+
* ```
|
|
137
|
+
* @category Creation
|
|
138
|
+
*/
|
|
139
|
+
export function createCustomSynchronizer<Schemas extends OptionalSchemas>(
|
|
140
|
+
store: MergeableStore<Schemas>,
|
|
141
|
+
send: Send,
|
|
142
|
+
onReceive: (receive: Receive) => void,
|
|
143
|
+
destroy: () => void,
|
|
144
|
+
requestTimeoutSeconds: number,
|
|
145
|
+
onIgnoredError?: (error: any) => void,
|
|
146
|
+
): Synchronizer<Schemas>;
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* @packageDocumentation
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export * from './checkpoints.d';
|
|
7
|
-
export * from './common.d';
|
|
8
|
-
export * from './indexes.d';
|
|
9
|
-
export * from './metrics.d';
|
|
10
|
-
export * from './persisters.d';
|
|
11
|
-
export * from './queries.d';
|
|
12
|
-
export * from './relationships.d';
|
|
13
|
-
export * from './store.d';
|
|
6
|
+
export * from './checkpoints.d.ts';
|
|
7
|
+
export * from './common.d.ts';
|
|
8
|
+
export * from './indexes.d.ts';
|
|
9
|
+
export * from './metrics.d.ts';
|
|
10
|
+
export * from './persisters.d.ts';
|
|
11
|
+
export * from './queries.d.ts';
|
|
12
|
+
export * from './relationships.d.ts';
|
|
13
|
+
export * from './mergeable-store.d.ts';
|
|
14
|
+
export * from './store.d.ts';
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* @since v2.2.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import {OptionalSchemas, Store} from './store.d';
|
|
13
|
-
import {Id} from './common.d';
|
|
12
|
+
import {OptionalSchemas, Store} from './store.d.ts';
|
|
13
|
+
import {Id} from './common.d.ts';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* The StoreStats type describes a set of statistics about the Store, and
|
|
@@ -416,7 +416,7 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
|
|
|
416
416
|
* await createTools(store).getPrettyStoreApi('shop');
|
|
417
417
|
*
|
|
418
418
|
* const dTsLines = dTs.split('\n');
|
|
419
|
-
* console.log(dTsLines[
|
|
419
|
+
* console.log(dTsLines[15]);
|
|
420
420
|
* // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
|
|
421
421
|
*
|
|
422
422
|
* const tsLines = ts.split('\n');
|
|
@@ -436,7 +436,7 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
|
|
|
436
436
|
* await createTools(store).getPrettyStoreApi('shop');
|
|
437
437
|
*
|
|
438
438
|
* const dTsLines = dTs.split('\n');
|
|
439
|
-
* console.log(dTsLines[
|
|
439
|
+
* console.log(dTsLines[15]);
|
|
440
440
|
* // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
|
|
441
441
|
*
|
|
442
442
|
* const tsLines = ts.split('\n');
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
ValueProps,
|
|
65
65
|
ValuesProps,
|
|
66
66
|
} from './internal/ui-react';
|
|
67
|
-
import {Callback, Id, IdOrNull, Ids, ParameterizedCallback} from './common.d';
|
|
67
|
+
import {Callback, Id, IdOrNull, Ids, ParameterizedCallback} from './common.d.ts';
|
|
68
68
|
import {
|
|
69
69
|
Cell,
|
|
70
70
|
CellIdsListener,
|
|
@@ -98,21 +98,21 @@ import {
|
|
|
98
98
|
ValueListener,
|
|
99
99
|
Values,
|
|
100
100
|
ValuesListener,
|
|
101
|
-
} from './store.d';
|
|
101
|
+
} from './store.d.ts';
|
|
102
102
|
import {
|
|
103
103
|
CheckpointIds,
|
|
104
104
|
CheckpointIdsListener,
|
|
105
105
|
CheckpointListener,
|
|
106
106
|
Checkpoints,
|
|
107
|
-
} from './checkpoints.d';
|
|
108
|
-
import {Indexes, SliceIdsListener, SliceRowIdsListener} from './indexes.d';
|
|
107
|
+
} from './checkpoints.d.ts';
|
|
108
|
+
import {Indexes, SliceIdsListener, SliceRowIdsListener} from './indexes.d.ts';
|
|
109
109
|
import {
|
|
110
110
|
LinkedRowIdsListener,
|
|
111
111
|
LocalRowIdsListener,
|
|
112
112
|
Relationships,
|
|
113
113
|
RemoteRowIdListener,
|
|
114
|
-
} from './relationships.d';
|
|
115
|
-
import {MetricListener, Metrics} from './metrics.d';
|
|
114
|
+
} from './relationships.d.ts';
|
|
115
|
+
import {MetricListener, Metrics} from './metrics.d.ts';
|
|
116
116
|
import {
|
|
117
117
|
Queries,
|
|
118
118
|
ResultCell,
|
|
@@ -126,9 +126,11 @@ import {
|
|
|
126
126
|
ResultTable,
|
|
127
127
|
ResultTableCellIdsListener,
|
|
128
128
|
ResultTableListener,
|
|
129
|
-
} from './queries.d';
|
|
130
|
-
import {
|
|
129
|
+
} from './queries.d.ts';
|
|
130
|
+
import {MergeableStore} from './mergeable-store';
|
|
131
|
+
import {Persister} from './persisters.d.ts';
|
|
131
132
|
import {ReactElement} from 'react';
|
|
133
|
+
import {Synchronizer} from './synchronizers.d.ts';
|
|
132
134
|
|
|
133
135
|
export type WithSchemas<Schemas extends OptionalSchemas> = {
|
|
134
136
|
/**
|
|
@@ -380,6 +382,14 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
|
|
|
380
382
|
createDeps?: React.DependencyList,
|
|
381
383
|
) => Store<Schemas>;
|
|
382
384
|
|
|
385
|
+
/**
|
|
386
|
+
* The useCreateMergeableStore hook
|
|
387
|
+
*/
|
|
388
|
+
useCreateMergeableStore: (
|
|
389
|
+
create: () => MergeableStore<Schemas>,
|
|
390
|
+
createDeps?: React.DependencyList,
|
|
391
|
+
) => MergeableStore<Schemas>;
|
|
392
|
+
|
|
383
393
|
/**
|
|
384
394
|
* The useStoreIds hook is used to retrieve the Ids of all the named Store
|
|
385
395
|
* objects present in the current Provider component context.
|
|
@@ -11628,8 +11638,8 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
|
|
|
11628
11638
|
* // -> '<span>{\"pets\":{\"fido\":{\"species\":\"dog\"}}}</span>'
|
|
11629
11639
|
*
|
|
11630
11640
|
* root.render(<App sessionKey="cujoStore" />); // !act
|
|
11631
|
-
* // -> 'Persister destroyed for session key fidoStore'
|
|
11632
11641
|
* // -> 'Persister created for session key cujoStore'
|
|
11642
|
+
* // -> 'Persister destroyed for session key fidoStore'
|
|
11633
11643
|
*
|
|
11634
11644
|
* // ... // !act
|
|
11635
11645
|
* console.log(app.innerHTML);
|
|
@@ -11652,6 +11662,164 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
|
|
|
11652
11662
|
destroyDeps?: React.DependencyList,
|
|
11653
11663
|
) => PersisterOrUndefined;
|
|
11654
11664
|
|
|
11665
|
+
/**
|
|
11666
|
+
* The useCreateSynchronizer hook is used to create a Synchronizer within a
|
|
11667
|
+
* React application along with convenient memoization and callbacks.
|
|
11668
|
+
*
|
|
11669
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
11670
|
+
*
|
|
11671
|
+
* ```ts override
|
|
11672
|
+
* useCreateSynchronizer<
|
|
11673
|
+
* SynchronizerOrUndefined extends Synchronizer | undefined,
|
|
11674
|
+
* >(
|
|
11675
|
+
* store: MergeableStore,
|
|
11676
|
+
* create: (store: MergeableStore) => Promise<SynchronizerOrUndefined>,
|
|
11677
|
+
* createDeps?: React.DependencyList,
|
|
11678
|
+
* then?: (synchronizer: Synchronizer) => Promise<void>,
|
|
11679
|
+
* thenDeps?: React.DependencyList,
|
|
11680
|
+
* destroy?: (synchronizer: Synchronizer) => void,
|
|
11681
|
+
* destroyDeps?: React.DependencyList,
|
|
11682
|
+
* ): SynchronizerOrUndefined;
|
|
11683
|
+
* ```
|
|
11684
|
+
*
|
|
11685
|
+
* It is possible to create a Synchronizer outside of the React app with the
|
|
11686
|
+
* regular createSynchronizer function and pass it in, but you may prefer to
|
|
11687
|
+
* create it within the app, perhaps inside the top-level component. To prevent
|
|
11688
|
+
* a new Synchronizer being created every time the app renders or re-renders,
|
|
11689
|
+
* the useCreateMetrics hook performs the creation in an effect.
|
|
11690
|
+
*
|
|
11691
|
+
* If your asynchronous `create` function (the second parameter to the hook)
|
|
11692
|
+
* contains dependencies, the changing of which should cause the Synchronizer to
|
|
11693
|
+
* be recreated, you can provide them in an array in the third parameter, just
|
|
11694
|
+
* as you would for any React hook with dependencies. The MergeableStore passed
|
|
11695
|
+
* in as the first parameter of this hook is used as a dependency by default.
|
|
11696
|
+
*
|
|
11697
|
+
* A second callback, called `then`, can be provided as the fourth parameter.
|
|
11698
|
+
* This is called after the creation, and can also be asynchronous, so that you
|
|
11699
|
+
* can configure the Synchronizer with the startSync method, for example. If
|
|
11700
|
+
* this callback contains dependencies, the changing of which should cause the
|
|
11701
|
+
* Synchronizer to be reconfigured, you can provide them in an array in the
|
|
11702
|
+
* fifth parameter. The Synchronizer itself is used as a dependency by default.
|
|
11703
|
+
*
|
|
11704
|
+
* The `create` function can return undefined, meaning that you can enable or
|
|
11705
|
+
* disable synchronization conditionally within this hook. This is useful for
|
|
11706
|
+
* applications which might turn on or off their cloud synchronization or
|
|
11707
|
+
* collaboration features.
|
|
11708
|
+
*
|
|
11709
|
+
* This hook ensures the Synchronizer object is destroyed whenever a new one is
|
|
11710
|
+
* created or the component is unmounted.
|
|
11711
|
+
* @param store A reference to the MergeableStore for which to create a new
|
|
11712
|
+
* Synchronizer object.
|
|
11713
|
+
* @param create An asynchronous function for performing the creation steps of
|
|
11714
|
+
* the Synchronizer object for the Store.
|
|
11715
|
+
* @param createDeps An optional array of dependencies for the `create`
|
|
11716
|
+
* function, which, if any change, result in its rerun. This parameter defaults
|
|
11717
|
+
* to an empty array.
|
|
11718
|
+
* @param then An optional callback for performing asynchronous post-creation
|
|
11719
|
+
* steps on the Synchronizer, such as starting automatic synchronization.
|
|
11720
|
+
* @param thenDeps An optional array of dependencies for the `then` callback,
|
|
11721
|
+
* which, if any change, result in its rerun. This parameter defaults to an
|
|
11722
|
+
* empty array.
|
|
11723
|
+
* @param destroy An optional callback whenever the Synchronizer is destroyed
|
|
11724
|
+
* due to a change in the `createDeps` dependencies.
|
|
11725
|
+
* @param destroyDeps An optional array of dependencies for the `destroy`
|
|
11726
|
+
* callback, which, if any change, result in `destroy` and `then` being rerun.
|
|
11727
|
+
* This parameter defaults to an empty array.
|
|
11728
|
+
* @returns A reference to the Synchronizer.
|
|
11729
|
+
* @example
|
|
11730
|
+
* This example creates a Synchronizer at the top level of a React application.
|
|
11731
|
+
* Even though the App component is rendered twice, the Synchronizer creation
|
|
11732
|
+
* only occurs once by default.
|
|
11733
|
+
*
|
|
11734
|
+
* ```jsx
|
|
11735
|
+
* const App = () => {
|
|
11736
|
+
* const store = useCreateMergeableStore(() => createMergeableStore('s1'));
|
|
11737
|
+
* const synchronizer = useCreateSynchronizer(store, async (store) => {
|
|
11738
|
+
* console.log('Synchronizer created');
|
|
11739
|
+
* return await createLocalSynchronizer(store, 'pets');
|
|
11740
|
+
* });
|
|
11741
|
+
* return <span>{JSON.stringify(useTables(store))}</span>;
|
|
11742
|
+
* };
|
|
11743
|
+
*
|
|
11744
|
+
* const app = document.createElement('div');
|
|
11745
|
+
* const root = ReactDOMClient.createRoot(app);
|
|
11746
|
+
* root.render(<App />); // !act
|
|
11747
|
+
* // -> 'Synchronizer created'
|
|
11748
|
+
*
|
|
11749
|
+
* // ... // !act
|
|
11750
|
+
* root.render(<App />); // !act
|
|
11751
|
+
* // No second Synchronizer creation
|
|
11752
|
+
*
|
|
11753
|
+
* root.unmount(); // !act
|
|
11754
|
+
* ```
|
|
11755
|
+
* @example
|
|
11756
|
+
* This example creates a Synchronizer at the top level of a React application.
|
|
11757
|
+
* The App component is rendered twice, each with a different top-level prop.
|
|
11758
|
+
* The useCreateSynchronizer hook takes the `url` prop as a dependency, and so
|
|
11759
|
+
* the Synchronizer object is created again on the second render. The first is
|
|
11760
|
+
* destroyed and the `destroy` parameter is called for it. A `then` parameter
|
|
11761
|
+
* is provided to start both Synchronizers' synchronization.
|
|
11762
|
+
*
|
|
11763
|
+
* ```jsx
|
|
11764
|
+
* const server1 = createWsServer(new ws.WebSocketServer({port: 8044}));
|
|
11765
|
+
* const server2 = createWsServer(new ws.WebSocketServer({port: 8045}));
|
|
11766
|
+
*
|
|
11767
|
+
* const App = ({url}) => {
|
|
11768
|
+
* const store = useCreateMergeableStore(() => createMergeableStore('s1'));
|
|
11769
|
+
* const synchronizer = useCreateSynchronizer(
|
|
11770
|
+
* store,
|
|
11771
|
+
* async (store) => {
|
|
11772
|
+
* const webSocket = new WebSocket(url);
|
|
11773
|
+
* console.log(`Synchronizer created for ${webSocket.url}`);
|
|
11774
|
+
* return await createWsSynchronizer(store, webSocket);
|
|
11775
|
+
* },
|
|
11776
|
+
* [url],
|
|
11777
|
+
* async (synchronizer) => {
|
|
11778
|
+
* await synchronizer.startSync();
|
|
11779
|
+
* },
|
|
11780
|
+
* [],
|
|
11781
|
+
* (synchronizer) => {
|
|
11782
|
+
* const webSocket = synchronizer.getWebSocket();
|
|
11783
|
+
* console.log(`Synchronizer destroyed for ${webSocket.url}`);
|
|
11784
|
+
* },
|
|
11785
|
+
* );
|
|
11786
|
+
* return <span>{JSON.stringify(useTables(store))}</span>;
|
|
11787
|
+
* };
|
|
11788
|
+
*
|
|
11789
|
+
* const app = document.createElement('div');
|
|
11790
|
+
* const root = ReactDOMClient.createRoot(app);
|
|
11791
|
+
* root.render(<App url="ws://localhost:8044/" />); // !act
|
|
11792
|
+
* // ... // !act
|
|
11793
|
+
* // -> 'Synchronizer created for ws://localhost:8044/'
|
|
11794
|
+
*
|
|
11795
|
+
* root.render(<App url="ws://localhost:8045/" />); // !act
|
|
11796
|
+
* // ... // !act
|
|
11797
|
+
* // -> 'Synchronizer created for ws://localhost:8045/'
|
|
11798
|
+
* // -> 'Synchronizer destroyed for ws://localhost:8044/'
|
|
11799
|
+
*
|
|
11800
|
+
* root.unmount(); // !act
|
|
11801
|
+
* // -> 'Synchronizer destroyed for ws://localhost:8045/'
|
|
11802
|
+
*
|
|
11803
|
+
* server1.destroy();
|
|
11804
|
+
* server2.destroy();
|
|
11805
|
+
* ```
|
|
11806
|
+
* @category Synchronizer hooks
|
|
11807
|
+
* @since v5.0.0
|
|
11808
|
+
*/
|
|
11809
|
+
useCreateSynchronizer: <
|
|
11810
|
+
SynchronizerOrUndefined extends Synchronizer<Schemas> | undefined,
|
|
11811
|
+
>(
|
|
11812
|
+
store: MergeableStore<Schemas>,
|
|
11813
|
+
create: (
|
|
11814
|
+
store: MergeableStore<Schemas>,
|
|
11815
|
+
) => Promise<SynchronizerOrUndefined>,
|
|
11816
|
+
createDeps?: React.DependencyList,
|
|
11817
|
+
then?: (synchronizer: Synchronizer<Schemas>) => Promise<void>,
|
|
11818
|
+
thenDeps?: React.DependencyList,
|
|
11819
|
+
destroy?: (synchronizer: Synchronizer<Schemas>) => void,
|
|
11820
|
+
destroyDeps?: React.DependencyList,
|
|
11821
|
+
) => SynchronizerOrUndefined;
|
|
11822
|
+
|
|
11655
11823
|
/**
|
|
11656
11824
|
* The ExtraProps type represents a set of arbitrary additional props.
|
|
11657
11825
|
* @category Props
|
package/lib/ui-react-dom.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"react";import{useRowIds as t,useTableCellIds as l,useRowCount as a,useSortedRowIds as n,useValueIds as o,ValueView as r,useIndexesOrIndexesById as i,useSliceRowIds as s,useRelationshipsOrRelationshipsById as d,useResultRowIds as m,useResultTableCellIds as h,useResultRowCount as u,useResultSortedRowIds as c,useCell as g,useSetCellCallback as p,useStoreOrStoreById as b,useValue as f,useSetValueCallback as w,useRemoteRowId as y,CellView as
|
|
1
|
+
import e from"react";import{useRowIds as t,useTableCellIds as l,useRowCount as a,useSortedRowIds as n,useValueIds as o,ValueView as r,useIndexesOrIndexesById as i,useSliceRowIds as s,useRelationshipsOrRelationshipsById as d,useResultRowIds as m,useResultTableCellIds as h,useResultRowCount as u,useResultSortedRowIds as c,useCell as g,useSetCellCallback as p,useStoreOrStoreById as b,useValue as f,useSetValueCallback as w,useRemoteRowId as y,CellView as v,ResultCellView as k}from"./ui-react";const C=e=>typeof e,x=C(""),I=C(!0),N=C(0),z="Value",$="currentTarget",T="value",M=isFinite,S=e=>null==e,{PureComponent:R,Fragment:q,createElement:F,useCallback:P,useLayoutEffect:E,useRef:O,useState:V}=e,j=(e,...t)=>S(e)?{}:e(...t),A=(e,t)=>e.map(t),B=Object,L=B.entries,D=(e=[])=>B.fromEntries(e),G=(e,t)=>A(L(e),(([e,l])=>t(l,e))),H="tinybaseStoreInspector",J="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",K='content:url("',Q=K+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",U='</svg>")',W=K+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",X=A([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,a])=>Q+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${a}' fill='white'/>`+U)),Y=Q+"<path d='M20 20l60 60M20 80l60-60' />"+U,Z=Q+`<path d='${J}' />`+U,_=Q+`<path d='${J}M20 20l60 60' />`+U,ee="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(G({"":"all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999","*":"all:revert","*::before":"all:revert","*::after":"all:revert",[ee]:"width:0.5rem;height:0.5rem;",[ee+"-track"]:"background:#111",[ee+"-thumb"]:"background:#999;border:1px solid #111",[ee+"-thumb:hover"]:"background:#fff",[ee+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+W,...D(A(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e]))),main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;",...D(A(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e]))),header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":W,"header>img:nth-of-type(6)":Y,...D(A(X,((e,t)=>[`header>img[data-id='${t}']`,e]))),"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":Z,"details[open]>summary img.done":_,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem",[`th,#${H} td`]:"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"},((e,t)=>e?`#${H} ${t}{${e}}`:"")));const te=(e,t,l,a)=>e==x?t:e==N?l:a,{useCallback:le,useMemo:ae,useState:ne}=e,oe="editable",re=(e,t)=>A(l(e,t),(t=>e+"."+t)),ie=(e,t,l)=>{const a=le(e,t);return l?a:void 0},se=(...e)=>ae((()=>e),e),de=(e,t)=>ae((()=>({store:e,tableId:t})),[e,t]),me=(e,t)=>ae((()=>({queries:e,queryId:t})),[e,t]),he=(e,t=!1,l,a=0,n,o,r,i)=>{const[[s,d,m],h]=ne([e,t,a]),u=le((e=>{h(e),i?.(e)}),[i]),c=ie((e=>u([e,e==s&&!d,m])),[u,s,d,m],l),g=le((e=>u([s,d,e])),[u,s,d]),p=!0===r?ze:r;return[[s,d,m],c,ae((()=>!1===r?null:F(p,{offset:m,limit:n,total:o,onChange:g})),[r,p,m,n,o,g])]},ue=(e,t,l)=>ae((()=>{const a=t??e;return n=Array.isArray(a)?D(A(a,(e=>[e,e]))):a,o=(e,t)=>{return{label:t,component:l,...(a=e,C(a)==x?{label:e}:e)};var a},D(G(n,((e,t)=>[t,o(e,t)])));var n,o}),[t,l,e]),ce=({className:e,headerRow:t,idColumn:l,params:[a,n,o,r,i,s]})=>F("table",{className:e},s?F("caption",null,s):null,!1===t?null:F("thead",null,F("tr",null,!1===l?null:F(ge,{sort:r??[],label:"Id",onClick:i}),G(a,(({label:e},t)=>F(ge,{key:t,cellId:t,label:e,sort:r??[],onClick:i}))))),F("tbody",null,A(o,(e=>F("tr",{key:e},!1===l?null:F("th",null,e),G(a,(({component:t,getComponentProps:l},a)=>F("td",{key:a},F(t,{...j(l,e,a),...n,rowId:e,cellId:a}))))))))),ge=({cellId:e,sort:[t,l],label:a=e??"",onClick:n})=>F("th",{onClick:ie((()=>n?.(e)),[n,e],n),className:S(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},S(l)||t!=e?null:(l?"↓":"↑")+" ",a),pe=({localRowId:t,params:[l,a,n,o,r,i,s]})=>{const d=y(r,t,i);return F("tr",null,!1===l?null:F(e.Fragment,null,F("th",null,t),F("th",null,d)),G(a,(({component:e,getComponentProps:l},a)=>{const[r,i]=a.split(".",2),m=r===n?t:r===o?d:null;return S(m)?null:F("td",{key:a},F(e,{...j(l,m,i),store:s,tableId:r,rowId:m,cellId:i}))})))},be=({thing:e,onThingChange:t,className:l,hasSchema:a,showType:n=!0})=>{const[o,r]=ne(),[i,s]=ne(),[d,m]=ne(),[h,u]=ne(),[c,g]=ne();i!==e&&(r((e=>{const t=C(e);return(e=>e==x||e==I)(t)||t==N&&M(e)?t:void 0})(e)),s(e),m(e+""),u(Number(e)||0),g(!!e));const p=le(((e,l)=>{l(e),s(e),t(e)}),[t]),b=le((()=>{if(!a?.()){const e=te(o,N,I,x),l=te(e,d,h,c);r(e),s(l),t(l)}}),[a,t,d,h,c,o]);return F("div",{className:l},n?F("button",{className:o,onClick:b},o):null,te(o,F("input",{key:o,value:d,onChange:le((e=>p(e[$][T]+"",m)),[p])}),F("input",{key:o,type:"number",value:h,onChange:le((e=>p(Number(e[$][T]||0),u)),[p])}),F("input",{key:o,type:"checkbox",checked:c,onChange:le((e=>p(!!e[$].checked,g)),[p])})))},fe=({tableId:e,store:a,editable:n,customCells:o,...r})=>F(ce,{...r,params:se(ue(l(e,a),o,n?Ie:v),de(a,e),t(e,a))}),we=({tableId:e,cellId:t,descending:o,offset:r,limit:i,store:s,editable:d,sortOnClick:m,paginator:h=!1,onChange:u,customCells:c,...g})=>{const[p,b,f]=he(t,o,m,r,i,a(e,s),h,u);return F(ce,{...g,params:se(ue(l(e,s),c,d?Ie:v),de(s,e),n(e,...p,i,s),p,b,f)})},ye=({store:e,editable:t=!1,valueComponent:l=(t?Ne:r),getValueComponentProps:a,className:n,headerRow:i,idColumn:s})=>F("table",{className:n},!1===i?null:F("thead",null,F("tr",null,!1===s?null:F("th",null,"Id"),F("th",null,z))),F("tbody",null,A(o(e),(t=>F("tr",{key:t},!1===s?null:F("th",null,t),F("td",null,F(l,{...j(a,t),valueId:t,store:e}))))))),ve=({indexId:e,sliceId:t,indexes:a,editable:n,customCells:o,...r})=>{const[d,m,h]=((e,t)=>[e,e?.getStore(),e?.getTableId(t)])(i(a),e);return F(ce,{...r,params:se(ue(l(h,m),o,n?Ie:v),de(m,h),s(e,t,d))})},ke=({relationshipId:l,relationships:a,editable:n,customCells:o,className:r,headerRow:i,idColumn:s=!0})=>{const[m,h,u,c]=((e,t)=>[e,e?.getStore(),e?.getLocalTableId(t),e?.getRemoteTableId(t)])(d(a),l),g=ue([...re(u,h),...re(c,h)],o,n?Ie:v),p=se(s,g,u,c,l,m,h);return F("table",{className:r},!1===i?null:F("thead",null,F("tr",null,!1===s?null:F(e.Fragment,null,F("th",null,u,".Id"),F("th",null,c,".Id")),G(g,(({label:e},t)=>F("th",{key:t},e))))),F("tbody",null,A(t(u,h),(e=>F(pe,{key:e,localRowId:e,params:p})))))},Ce=({queryId:e,queries:t,customCells:l,...a})=>F(ce,{...a,params:se(ue(h(e,t),l,k),me(t,e),m(e,t))}),xe=({queryId:e,cellId:t,descending:l,offset:a,limit:n,queries:o,sortOnClick:r,paginator:i=!1,customCells:s,onChange:d,...m})=>{const[g,p,b]=he(t,l,r,a,n,u(e,o),i,d);return F(ce,{...m,params:se(ue(h(e,o),s,k),me(o,e),c(e,...g,n,o),g,p,b)})},Ie=({tableId:e,rowId:t,cellId:l,store:a,className:n,showType:o})=>F(be,{thing:g(e,t,l,a),onThingChange:p(e,t,l,(e=>e),[],a),className:n??oe+"Cell",showType:o,hasSchema:b(a)?.hasTablesSchema}),Ne=({valueId:e,store:t,className:l,showType:a})=>F(be,{thing:f(e,t),onThingChange:w(e,(e=>e),[],t),className:l??oe+z,showType:a,hasSchema:b(t)?.hasValuesSchema}),ze=({onChange:t,total:l,offset:a=0,limit:n=l,singular:o="row",plural:r=o+"s"})=>{(a>l||a<0)&&(a=0,t(0));const i=ie((()=>t(a-n)),[t,a,n],a>0),s=ie((()=>t(a+n)),[t,a,n],a+n<l);return F(e.Fragment,null,l>n&&F(e.Fragment,null,F("button",{className:"previous",disabled:0==a,onClick:i},"←"),F("button",{className:"next",disabled:a+n>=l,onClick:s},"→"),a+1," to ",Math.min(l,a+n)," of "),l," ",1!=l?r:o)},$e=e=>new Map(e);$e(),$e();const Te=e=>null;export{Ie as EditableCellView,Ne as EditableValueView,ke as RelationshipInHtmlTable,xe as ResultSortedTableInHtmlTable,Ce as ResultTableInHtmlTable,ve as SliceInHtmlTable,we as SortedTableInHtmlTable,ze as SortedTablePaginator,Te as StoreInspector,fe as TableInHtmlTable,ye as ValuesInHtmlTable};
|
package/lib/ui-react-dom.js.gz
CHANGED
|
Binary file
|