tinybase 5.4.6 → 5.4.7
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/cjs/es6/index.cjs +13 -11
- package/cjs/es6/mergeable-store/index.cjs +12 -10
- package/cjs/es6/mergeable-store/with-schemas/index.cjs +12 -10
- package/cjs/es6/min/index.cjs +1 -1
- package/cjs/es6/min/index.cjs.gz +0 -0
- package/cjs/es6/min/mergeable-store/index.cjs +1 -1
- package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
- package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/index.cjs +1 -1
- package/cjs/es6/min/persisters/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-pglite/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-pglite/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-postgres/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-postgres/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-yjs/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-yjs/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/queries/index.cjs +1 -1
- package/cjs/es6/min/queries/index.cjs.gz +0 -0
- package/cjs/es6/min/queries/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/queries/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/store/index.cjs +1 -1
- package/cjs/es6/min/store/index.cjs.gz +0 -0
- package/cjs/es6/min/store/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/store/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/ui-react-inspector/index.cjs +1 -1
- package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
- package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/persisters/index.cjs +3 -3
- package/cjs/es6/persisters/persister-automerge/index.cjs +8 -6
- package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +8 -6
- package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +3 -3
- package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-electric-sql/index.cjs +3 -3
- package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +3 -3
- package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-libsql/index.cjs +3 -3
- package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-pglite/index.cjs +3 -3
- package/cjs/es6/persisters/persister-pglite/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-postgres/index.cjs +3 -3
- package/cjs/es6/persisters/persister-postgres/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-powersync/index.cjs +3 -3
- package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +3 -3
- package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-sqlite3/index.cjs +3 -3
- package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +3 -3
- package/cjs/es6/persisters/persister-yjs/index.cjs +7 -5
- package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +7 -5
- package/cjs/es6/persisters/with-schemas/index.cjs +3 -3
- package/cjs/es6/queries/index.cjs +4 -1
- package/cjs/es6/queries/with-schemas/index.cjs +4 -1
- package/cjs/es6/store/index.cjs +14 -9
- package/cjs/es6/store/with-schemas/index.cjs +14 -9
- package/cjs/es6/tools/index.cjs +4 -4
- package/cjs/es6/tools/with-schemas/index.cjs +4 -4
- package/cjs/es6/ui-react-inspector/index.cjs +11 -9
- package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +11 -9
- package/cjs/es6/with-schemas/index.cjs +13 -11
- package/cjs/index.cjs +13 -11
- package/cjs/mergeable-store/index.cjs +12 -10
- package/cjs/mergeable-store/with-schemas/index.cjs +12 -10
- package/cjs/min/index.cjs +1 -1
- package/cjs/min/index.cjs.gz +0 -0
- package/cjs/min/mergeable-store/index.cjs +1 -1
- package/cjs/min/mergeable-store/index.cjs.gz +0 -0
- package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
- package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/index.cjs +1 -1
- package/cjs/min/persisters/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-automerge/index.cjs +1 -1
- package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
- package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
- package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
- package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
- package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-pglite/index.cjs +1 -1
- package/cjs/min/persisters/persister-pglite/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-postgres/index.cjs +1 -1
- package/cjs/min/persisters/persister-postgres/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
- package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-yjs/index.cjs +1 -1
- package/cjs/min/persisters/persister-yjs/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/queries/index.cjs +1 -1
- package/cjs/min/queries/index.cjs.gz +0 -0
- package/cjs/min/queries/with-schemas/index.cjs +1 -1
- package/cjs/min/queries/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/store/index.cjs +1 -1
- package/cjs/min/store/index.cjs.gz +0 -0
- package/cjs/min/store/with-schemas/index.cjs +1 -1
- package/cjs/min/store/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/ui-react-inspector/index.cjs +1 -1
- package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
- package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -1
- package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/with-schemas/index.cjs +1 -1
- package/cjs/min/with-schemas/index.cjs.gz +0 -0
- package/cjs/persisters/index.cjs +3 -3
- package/cjs/persisters/persister-automerge/index.cjs +8 -6
- package/cjs/persisters/persister-automerge/with-schemas/index.cjs +8 -6
- package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +3 -3
- package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-electric-sql/index.cjs +3 -3
- package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-expo-sqlite/index.cjs +3 -3
- package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-libsql/index.cjs +3 -3
- package/cjs/persisters/persister-libsql/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-pglite/index.cjs +3 -3
- package/cjs/persisters/persister-pglite/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-postgres/index.cjs +3 -3
- package/cjs/persisters/persister-postgres/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-powersync/index.cjs +3 -3
- package/cjs/persisters/persister-powersync/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-sqlite-wasm/index.cjs +3 -3
- package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-sqlite3/index.cjs +3 -3
- package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +3 -3
- package/cjs/persisters/persister-yjs/index.cjs +7 -5
- package/cjs/persisters/persister-yjs/with-schemas/index.cjs +7 -5
- package/cjs/persisters/with-schemas/index.cjs +3 -3
- package/cjs/queries/index.cjs +4 -1
- package/cjs/queries/with-schemas/index.cjs +4 -1
- package/cjs/store/index.cjs +14 -9
- package/cjs/store/with-schemas/index.cjs +14 -9
- package/cjs/tools/index.cjs +4 -4
- package/cjs/tools/with-schemas/index.cjs +4 -4
- package/cjs/ui-react-inspector/index.cjs +11 -9
- package/cjs/ui-react-inspector/with-schemas/index.cjs +11 -9
- package/cjs/with-schemas/index.cjs +13 -11
- package/cli/index.js +4 -1
- package/es6/index.js +13 -11
- package/es6/mergeable-store/index.js +12 -10
- package/es6/mergeable-store/with-schemas/index.js +12 -10
- package/es6/min/index.js +1 -1
- package/es6/min/index.js.gz +0 -0
- package/es6/min/mergeable-store/index.js +1 -1
- package/es6/min/mergeable-store/index.js.gz +0 -0
- package/es6/min/mergeable-store/with-schemas/index.js +1 -1
- package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/index.js +1 -1
- package/es6/min/persisters/index.js.gz +0 -0
- package/es6/min/persisters/persister-automerge/index.js +1 -1
- package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
- package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-electric-sql/index.js +1 -1
- package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-libsql/index.js +1 -1
- package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
- package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-pglite/index.js +1 -1
- package/es6/min/persisters/persister-pglite/index.js.gz +0 -0
- package/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-postgres/index.js +1 -1
- package/es6/min/persisters/persister-postgres/index.js.gz +0 -0
- package/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-powersync/index.js +1 -1
- package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
- package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite3/index.js +1 -1
- package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-yjs/index.js +1 -1
- package/es6/min/persisters/persister-yjs/index.js.gz +0 -0
- package/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/with-schemas/index.js +1 -1
- package/es6/min/persisters/with-schemas/index.js.gz +0 -0
- package/es6/min/queries/index.js +1 -1
- package/es6/min/queries/index.js.gz +0 -0
- package/es6/min/queries/with-schemas/index.js +1 -1
- package/es6/min/queries/with-schemas/index.js.gz +0 -0
- package/es6/min/store/index.js +1 -1
- package/es6/min/store/index.js.gz +0 -0
- package/es6/min/store/with-schemas/index.js +1 -1
- package/es6/min/store/with-schemas/index.js.gz +0 -0
- package/es6/min/ui-react-inspector/index.js +1 -1
- package/es6/min/ui-react-inspector/index.js.gz +0 -0
- package/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/es6/min/with-schemas/index.js +1 -1
- package/es6/min/with-schemas/index.js.gz +0 -0
- package/es6/persisters/index.js +3 -3
- package/es6/persisters/persister-automerge/index.js +8 -6
- package/es6/persisters/persister-automerge/with-schemas/index.js +8 -6
- package/es6/persisters/persister-cr-sqlite-wasm/index.js +3 -3
- package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
- package/es6/persisters/persister-electric-sql/index.js +3 -3
- package/es6/persisters/persister-electric-sql/with-schemas/index.js +3 -3
- package/es6/persisters/persister-expo-sqlite/index.js +3 -3
- package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
- package/es6/persisters/persister-libsql/index.js +3 -3
- package/es6/persisters/persister-libsql/with-schemas/index.js +3 -3
- package/es6/persisters/persister-pglite/index.js +3 -3
- package/es6/persisters/persister-pglite/with-schemas/index.js +3 -3
- package/es6/persisters/persister-postgres/index.js +3 -3
- package/es6/persisters/persister-postgres/with-schemas/index.js +3 -3
- package/es6/persisters/persister-powersync/index.js +3 -3
- package/es6/persisters/persister-powersync/with-schemas/index.js +3 -3
- package/es6/persisters/persister-sqlite-wasm/index.js +3 -3
- package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
- package/es6/persisters/persister-sqlite3/index.js +3 -3
- package/es6/persisters/persister-sqlite3/with-schemas/index.js +3 -3
- package/es6/persisters/persister-yjs/index.js +7 -5
- package/es6/persisters/persister-yjs/with-schemas/index.js +7 -5
- package/es6/persisters/with-schemas/index.js +3 -3
- package/es6/queries/index.js +4 -1
- package/es6/queries/with-schemas/index.js +4 -1
- package/es6/store/index.js +14 -9
- package/es6/store/with-schemas/index.js +14 -9
- package/es6/tools/index.js +4 -4
- package/es6/tools/with-schemas/index.js +4 -4
- package/es6/ui-react-inspector/index.js +11 -9
- package/es6/ui-react-inspector/with-schemas/index.js +11 -9
- package/es6/with-schemas/index.js +13 -11
- package/index.js +13 -11
- package/mergeable-store/index.js +12 -10
- package/mergeable-store/with-schemas/index.js +12 -10
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +7 -7
- package/persisters/index.js +3 -3
- package/persisters/persister-automerge/index.js +8 -6
- package/persisters/persister-automerge/with-schemas/index.js +8 -6
- package/persisters/persister-cr-sqlite-wasm/index.js +3 -3
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
- package/persisters/persister-electric-sql/index.js +3 -3
- package/persisters/persister-electric-sql/with-schemas/index.js +3 -3
- package/persisters/persister-expo-sqlite/index.js +3 -3
- package/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
- package/persisters/persister-libsql/index.js +3 -3
- package/persisters/persister-libsql/with-schemas/index.js +3 -3
- package/persisters/persister-pglite/index.js +3 -3
- package/persisters/persister-pglite/with-schemas/index.js +3 -3
- package/persisters/persister-postgres/index.js +3 -3
- package/persisters/persister-postgres/with-schemas/index.js +3 -3
- package/persisters/persister-powersync/index.js +3 -3
- package/persisters/persister-powersync/with-schemas/index.js +3 -3
- package/persisters/persister-sqlite-wasm/index.js +3 -3
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
- package/persisters/persister-sqlite3/index.js +3 -3
- package/persisters/persister-sqlite3/with-schemas/index.js +3 -3
- package/persisters/persister-yjs/index.js +7 -5
- package/persisters/persister-yjs/with-schemas/index.js +7 -5
- package/persisters/with-schemas/index.js +3 -3
- package/queries/index.js +4 -1
- package/queries/with-schemas/index.js +4 -1
- package/readme.md +2 -2
- package/store/index.js +14 -9
- package/store/with-schemas/index.js +14 -9
- package/tools/index.js +4 -4
- package/tools/with-schemas/index.js +4 -4
- package/ui-react-inspector/index.js +11 -9
- package/ui-react-inspector/with-schemas/index.js +11 -9
- package/umd/es6/index.js +13 -11
- package/umd/es6/mergeable-store/index.js +12 -10
- package/umd/es6/mergeable-store/with-schemas/index.js +12 -10
- package/umd/es6/min/index.js +1 -1
- package/umd/es6/min/index.js.gz +0 -0
- package/umd/es6/min/mergeable-store/index.js +1 -1
- package/umd/es6/min/mergeable-store/index.js.gz +0 -0
- package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
- package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/index.js +1 -1
- package/umd/es6/min/persisters/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-automerge/index.js +1 -1
- package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
- package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
- package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-pglite/index.js +1 -1
- package/umd/es6/min/persisters/persister-pglite/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-postgres/index.js +1 -1
- package/umd/es6/min/persisters/persister-postgres/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
- package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-yjs/index.js +1 -1
- package/umd/es6/min/persisters/persister-yjs/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/queries/index.js +1 -1
- package/umd/es6/min/queries/index.js.gz +0 -0
- package/umd/es6/min/queries/with-schemas/index.js +1 -1
- package/umd/es6/min/queries/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/store/index.js +1 -1
- package/umd/es6/min/store/index.js.gz +0 -0
- package/umd/es6/min/store/with-schemas/index.js +1 -1
- package/umd/es6/min/store/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/ui-react-inspector/index.js +1 -1
- package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
- package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/with-schemas/index.js +1 -1
- package/umd/es6/min/with-schemas/index.js.gz +0 -0
- package/umd/es6/persisters/index.js +3 -3
- package/umd/es6/persisters/persister-automerge/index.js +8 -6
- package/umd/es6/persisters/persister-automerge/with-schemas/index.js +8 -6
- package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +3 -3
- package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-electric-sql/index.js +3 -3
- package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-expo-sqlite/index.js +3 -3
- package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-libsql/index.js +3 -3
- package/umd/es6/persisters/persister-libsql/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-pglite/index.js +3 -3
- package/umd/es6/persisters/persister-pglite/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-postgres/index.js +3 -3
- package/umd/es6/persisters/persister-postgres/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-powersync/index.js +3 -3
- package/umd/es6/persisters/persister-powersync/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-sqlite-wasm/index.js +3 -3
- package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-sqlite3/index.js +3 -3
- package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +3 -3
- package/umd/es6/persisters/persister-yjs/index.js +7 -5
- package/umd/es6/persisters/persister-yjs/with-schemas/index.js +7 -5
- package/umd/es6/persisters/with-schemas/index.js +3 -3
- package/umd/es6/queries/index.js +4 -1
- package/umd/es6/queries/with-schemas/index.js +4 -1
- package/umd/es6/store/index.js +14 -9
- package/umd/es6/store/with-schemas/index.js +14 -9
- package/umd/es6/tools/index.js +4 -4
- package/umd/es6/tools/with-schemas/index.js +4 -4
- package/umd/es6/ui-react-inspector/index.js +11 -9
- package/umd/es6/ui-react-inspector/with-schemas/index.js +11 -9
- package/umd/es6/with-schemas/index.js +13 -11
- package/umd/index.js +13 -11
- package/umd/mergeable-store/index.js +12 -10
- package/umd/mergeable-store/with-schemas/index.js +12 -10
- package/umd/min/index.js +1 -1
- package/umd/min/index.js.gz +0 -0
- package/umd/min/mergeable-store/index.js +1 -1
- package/umd/min/mergeable-store/index.js.gz +0 -0
- package/umd/min/mergeable-store/with-schemas/index.js +1 -1
- package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/index.js +1 -1
- package/umd/min/persisters/index.js.gz +0 -0
- package/umd/min/persisters/persister-automerge/index.js +1 -1
- package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
- package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-electric-sql/index.js +1 -1
- package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-libsql/index.js +1 -1
- package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
- package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-pglite/index.js +1 -1
- package/umd/min/persisters/persister-pglite/index.js.gz +0 -0
- package/umd/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-postgres/index.js +1 -1
- package/umd/min/persisters/persister-postgres/index.js.gz +0 -0
- package/umd/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-powersync/index.js +1 -1
- package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
- package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite3/index.js +1 -1
- package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-yjs/index.js +1 -1
- package/umd/min/persisters/persister-yjs/index.js.gz +0 -0
- package/umd/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/with-schemas/index.js +1 -1
- package/umd/min/persisters/with-schemas/index.js.gz +0 -0
- package/umd/min/queries/index.js +1 -1
- package/umd/min/queries/index.js.gz +0 -0
- package/umd/min/queries/with-schemas/index.js +1 -1
- package/umd/min/queries/with-schemas/index.js.gz +0 -0
- package/umd/min/store/index.js +1 -1
- package/umd/min/store/index.js.gz +0 -0
- package/umd/min/store/with-schemas/index.js +1 -1
- package/umd/min/store/with-schemas/index.js.gz +0 -0
- package/umd/min/ui-react-inspector/index.js +1 -1
- package/umd/min/ui-react-inspector/index.js.gz +0 -0
- package/umd/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/umd/min/with-schemas/index.js +1 -1
- package/umd/min/with-schemas/index.js.gz +0 -0
- package/umd/persisters/index.js +3 -3
- package/umd/persisters/persister-automerge/index.js +8 -6
- package/umd/persisters/persister-automerge/with-schemas/index.js +8 -6
- package/umd/persisters/persister-cr-sqlite-wasm/index.js +3 -3
- package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
- package/umd/persisters/persister-electric-sql/index.js +3 -3
- package/umd/persisters/persister-electric-sql/with-schemas/index.js +3 -3
- package/umd/persisters/persister-expo-sqlite/index.js +3 -3
- package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
- package/umd/persisters/persister-libsql/index.js +3 -3
- package/umd/persisters/persister-libsql/with-schemas/index.js +3 -3
- package/umd/persisters/persister-pglite/index.js +3 -3
- package/umd/persisters/persister-pglite/with-schemas/index.js +3 -3
- package/umd/persisters/persister-postgres/index.js +3 -3
- package/umd/persisters/persister-postgres/with-schemas/index.js +3 -3
- package/umd/persisters/persister-powersync/index.js +3 -3
- package/umd/persisters/persister-powersync/with-schemas/index.js +3 -3
- package/umd/persisters/persister-sqlite-wasm/index.js +3 -3
- package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
- package/umd/persisters/persister-sqlite3/index.js +3 -3
- package/umd/persisters/persister-sqlite3/with-schemas/index.js +3 -3
- package/umd/persisters/persister-yjs/index.js +7 -5
- package/umd/persisters/persister-yjs/with-schemas/index.js +7 -5
- package/umd/persisters/with-schemas/index.js +3 -3
- package/umd/queries/index.js +4 -1
- package/umd/queries/with-schemas/index.js +4 -1
- package/umd/store/index.js +14 -9
- package/umd/store/with-schemas/index.js +14 -9
- package/umd/tools/index.js +4 -4
- package/umd/tools/with-schemas/index.js +4 -4
- package/umd/ui-react-inspector/index.js +11 -9
- package/umd/ui-react-inspector/with-schemas/index.js +11 -9
- package/umd/with-schemas/index.js +13 -11
- package/with-schemas/index.js +13 -11
|
@@ -498,7 +498,7 @@ const getCommandFunctions = (
|
|
|
498
498
|
partial = false,
|
|
499
499
|
) => {
|
|
500
500
|
const settingColumnNameSet = setNew();
|
|
501
|
-
|
|
501
|
+
objMap(content ?? {}, (contentRow) =>
|
|
502
502
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
503
503
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
504
504
|
),
|
|
@@ -622,7 +622,7 @@ const getCommandFunctions = (
|
|
|
622
622
|
);
|
|
623
623
|
const rows = {};
|
|
624
624
|
const deleteRowIds = [];
|
|
625
|
-
|
|
625
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
626
626
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
627
627
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
628
628
|
);
|
|
@@ -935,7 +935,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
935
935
|
then,
|
|
936
936
|
) => {
|
|
937
937
|
const configMap = mapNew();
|
|
938
|
-
|
|
938
|
+
objMap(configsObj, (configObj, id) => {
|
|
939
939
|
const defaultedConfig = slice(
|
|
940
940
|
objValues(
|
|
941
941
|
objMerge(
|
|
@@ -507,7 +507,7 @@ const getCommandFunctions = (
|
|
|
507
507
|
partial = false,
|
|
508
508
|
) => {
|
|
509
509
|
const settingColumnNameSet = setNew();
|
|
510
|
-
|
|
510
|
+
objMap(content ?? {}, (contentRow) =>
|
|
511
511
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
512
512
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
513
513
|
),
|
|
@@ -631,7 +631,7 @@ const getCommandFunctions = (
|
|
|
631
631
|
);
|
|
632
632
|
const rows = {};
|
|
633
633
|
const deleteRowIds = [];
|
|
634
|
-
|
|
634
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
635
635
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
636
636
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
637
637
|
);
|
|
@@ -944,7 +944,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
944
944
|
then,
|
|
945
945
|
) => {
|
|
946
946
|
const configMap = mapNew();
|
|
947
|
-
|
|
947
|
+
objMap(configsObj, (configObj, id) => {
|
|
948
948
|
const defaultedConfig = slice(
|
|
949
949
|
objValues(
|
|
950
950
|
objMerge(
|
|
@@ -507,7 +507,7 @@ const getCommandFunctions = (
|
|
|
507
507
|
partial = false,
|
|
508
508
|
) => {
|
|
509
509
|
const settingColumnNameSet = setNew();
|
|
510
|
-
|
|
510
|
+
objMap(content ?? {}, (contentRow) =>
|
|
511
511
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
512
512
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
513
513
|
),
|
|
@@ -631,7 +631,7 @@ const getCommandFunctions = (
|
|
|
631
631
|
);
|
|
632
632
|
const rows = {};
|
|
633
633
|
const deleteRowIds = [];
|
|
634
|
-
|
|
634
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
635
635
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
636
636
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
637
637
|
);
|
|
@@ -944,7 +944,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
944
944
|
then,
|
|
945
945
|
) => {
|
|
946
946
|
const configMap = mapNew();
|
|
947
|
-
|
|
947
|
+
objMap(configsObj, (configObj, id) => {
|
|
948
948
|
const defaultedConfig = slice(
|
|
949
949
|
objValues(
|
|
950
950
|
objMerge(
|
|
@@ -507,7 +507,7 @@ const getCommandFunctions = (
|
|
|
507
507
|
partial = false,
|
|
508
508
|
) => {
|
|
509
509
|
const settingColumnNameSet = setNew();
|
|
510
|
-
|
|
510
|
+
objMap(content ?? {}, (contentRow) =>
|
|
511
511
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
512
512
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
513
513
|
),
|
|
@@ -631,7 +631,7 @@ const getCommandFunctions = (
|
|
|
631
631
|
);
|
|
632
632
|
const rows = {};
|
|
633
633
|
const deleteRowIds = [];
|
|
634
|
-
|
|
634
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
635
635
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
636
636
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
637
637
|
);
|
|
@@ -944,7 +944,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
944
944
|
then,
|
|
945
945
|
) => {
|
|
946
946
|
const configMap = mapNew();
|
|
947
|
-
|
|
947
|
+
objMap(configsObj, (configObj, id) => {
|
|
948
948
|
const defaultedConfig = slice(
|
|
949
949
|
objValues(
|
|
950
950
|
objMerge(
|
|
@@ -507,7 +507,7 @@ const getCommandFunctions = (
|
|
|
507
507
|
partial = false,
|
|
508
508
|
) => {
|
|
509
509
|
const settingColumnNameSet = setNew();
|
|
510
|
-
|
|
510
|
+
objMap(content ?? {}, (contentRow) =>
|
|
511
511
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
512
512
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
513
513
|
),
|
|
@@ -631,7 +631,7 @@ const getCommandFunctions = (
|
|
|
631
631
|
);
|
|
632
632
|
const rows = {};
|
|
633
633
|
const deleteRowIds = [];
|
|
634
|
-
|
|
634
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
635
635
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
636
636
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
637
637
|
);
|
|
@@ -944,7 +944,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
944
944
|
then,
|
|
945
945
|
) => {
|
|
946
946
|
const configMap = mapNew();
|
|
947
|
-
|
|
947
|
+
objMap(configsObj, (configObj, id) => {
|
|
948
948
|
const defaultedConfig = slice(
|
|
949
949
|
objValues(
|
|
950
950
|
objMerge(
|
|
@@ -508,7 +508,7 @@ const getCommandFunctions = (
|
|
|
508
508
|
partial = false,
|
|
509
509
|
) => {
|
|
510
510
|
const settingColumnNameSet = setNew();
|
|
511
|
-
|
|
511
|
+
objMap(content ?? {}, (contentRow) =>
|
|
512
512
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
513
513
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
514
514
|
),
|
|
@@ -632,7 +632,7 @@ const getCommandFunctions = (
|
|
|
632
632
|
);
|
|
633
633
|
const rows = {};
|
|
634
634
|
const deleteRowIds = [];
|
|
635
|
-
|
|
635
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
636
636
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
637
637
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
638
638
|
);
|
|
@@ -945,7 +945,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
945
945
|
then,
|
|
946
946
|
) => {
|
|
947
947
|
const configMap = mapNew();
|
|
948
|
-
|
|
948
|
+
objMap(configsObj, (configObj, id) => {
|
|
949
949
|
const defaultedConfig = slice(
|
|
950
950
|
objValues(
|
|
951
951
|
objMerge(
|
|
@@ -508,7 +508,7 @@ const getCommandFunctions = (
|
|
|
508
508
|
partial = false,
|
|
509
509
|
) => {
|
|
510
510
|
const settingColumnNameSet = setNew();
|
|
511
|
-
|
|
511
|
+
objMap(content ?? {}, (contentRow) =>
|
|
512
512
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
513
513
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
514
514
|
),
|
|
@@ -632,7 +632,7 @@ const getCommandFunctions = (
|
|
|
632
632
|
);
|
|
633
633
|
const rows = {};
|
|
634
634
|
const deleteRowIds = [];
|
|
635
|
-
|
|
635
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
636
636
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
637
637
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
638
638
|
);
|
|
@@ -945,7 +945,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
945
945
|
then,
|
|
946
946
|
) => {
|
|
947
947
|
const configMap = mapNew();
|
|
948
|
-
|
|
948
|
+
objMap(configsObj, (configObj, id) => {
|
|
949
949
|
const defaultedConfig = slice(
|
|
950
950
|
objValues(
|
|
951
951
|
objMerge(
|
|
@@ -42,6 +42,8 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
42
42
|
const objHas = (obj, id) => id in obj;
|
|
43
43
|
const objToArray = (obj, cb) =>
|
|
44
44
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
45
|
+
const objMap = (obj, cb) =>
|
|
46
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
45
47
|
const objSize = (obj) => size(objIds(obj));
|
|
46
48
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
47
49
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
@@ -472,7 +474,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
472
474
|
let changesFailed = 1;
|
|
473
475
|
ifNotUndefined(changes, ([cellChanges, valueChanges]) => {
|
|
474
476
|
changesFailed = 0;
|
|
475
|
-
|
|
477
|
+
objMap(cellChanges, (table, tableId) =>
|
|
476
478
|
changesFailed
|
|
477
479
|
? 0
|
|
478
480
|
: isUndefined(table)
|
|
@@ -480,7 +482,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
480
482
|
: ifNotUndefined(
|
|
481
483
|
yTables.get(tableId),
|
|
482
484
|
(yTable) =>
|
|
483
|
-
|
|
485
|
+
objMap(table, (row, rowId) =>
|
|
484
486
|
changesFailed
|
|
485
487
|
? 0
|
|
486
488
|
: isUndefined(row)
|
|
@@ -488,7 +490,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
488
490
|
: ifNotUndefined(
|
|
489
491
|
yTable.get(rowId),
|
|
490
492
|
(yRow) =>
|
|
491
|
-
|
|
493
|
+
objMap(row, (cell, cellId) =>
|
|
492
494
|
isUndefined(cell)
|
|
493
495
|
? yRow.delete(cellId)
|
|
494
496
|
: yRow.set(cellId, cell),
|
|
@@ -499,7 +501,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
499
501
|
changesDidFail,
|
|
500
502
|
),
|
|
501
503
|
);
|
|
502
|
-
|
|
504
|
+
objMap(valueChanges, (value, valueId) =>
|
|
503
505
|
changesFailed
|
|
504
506
|
? 0
|
|
505
507
|
: isUndefined(value)
|
|
@@ -532,7 +534,7 @@ const yMapMatch = (yMapOrParent, idInParent, obj, set) => {
|
|
|
532
534
|
: (yMapOrParent.get(idInParent) ??
|
|
533
535
|
yMapOrParent.set(idInParent, new Map$1()));
|
|
534
536
|
let changed;
|
|
535
|
-
|
|
537
|
+
objMap(obj, (value, id) => {
|
|
536
538
|
if (set(yMap, id, value)) {
|
|
537
539
|
changed = 1;
|
|
538
540
|
}
|
|
@@ -42,6 +42,8 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
42
42
|
const objHas = (obj, id) => id in obj;
|
|
43
43
|
const objToArray = (obj, cb) =>
|
|
44
44
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
45
|
+
const objMap = (obj, cb) =>
|
|
46
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
45
47
|
const objSize = (obj) => size(objIds(obj));
|
|
46
48
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
47
49
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
@@ -472,7 +474,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
472
474
|
let changesFailed = 1;
|
|
473
475
|
ifNotUndefined(changes, ([cellChanges, valueChanges]) => {
|
|
474
476
|
changesFailed = 0;
|
|
475
|
-
|
|
477
|
+
objMap(cellChanges, (table, tableId) =>
|
|
476
478
|
changesFailed
|
|
477
479
|
? 0
|
|
478
480
|
: isUndefined(table)
|
|
@@ -480,7 +482,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
480
482
|
: ifNotUndefined(
|
|
481
483
|
yTables.get(tableId),
|
|
482
484
|
(yTable) =>
|
|
483
|
-
|
|
485
|
+
objMap(table, (row, rowId) =>
|
|
484
486
|
changesFailed
|
|
485
487
|
? 0
|
|
486
488
|
: isUndefined(row)
|
|
@@ -488,7 +490,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
488
490
|
: ifNotUndefined(
|
|
489
491
|
yTable.get(rowId),
|
|
490
492
|
(yRow) =>
|
|
491
|
-
|
|
493
|
+
objMap(row, (cell, cellId) =>
|
|
492
494
|
isUndefined(cell)
|
|
493
495
|
? yRow.delete(cellId)
|
|
494
496
|
: yRow.set(cellId, cell),
|
|
@@ -499,7 +501,7 @@ const applyChangesToYDoc = (yContent, getContent, changes) => {
|
|
|
499
501
|
changesDidFail,
|
|
500
502
|
),
|
|
501
503
|
);
|
|
502
|
-
|
|
504
|
+
objMap(valueChanges, (value, valueId) =>
|
|
503
505
|
changesFailed
|
|
504
506
|
? 0
|
|
505
507
|
: isUndefined(value)
|
|
@@ -532,7 +534,7 @@ const yMapMatch = (yMapOrParent, idInParent, obj, set) => {
|
|
|
532
534
|
: (yMapOrParent.get(idInParent) ??
|
|
533
535
|
yMapOrParent.set(idInParent, new Map$1()));
|
|
534
536
|
let changed;
|
|
535
|
-
|
|
537
|
+
objMap(obj, (value, id) => {
|
|
536
538
|
if (set(yMap, id, value)) {
|
|
537
539
|
changed = 1;
|
|
538
540
|
}
|
|
@@ -518,7 +518,7 @@ const getCommandFunctions = (
|
|
|
518
518
|
partial = false,
|
|
519
519
|
) => {
|
|
520
520
|
const settingColumnNameSet = setNew();
|
|
521
|
-
|
|
521
|
+
objMap(content ?? {}, (contentRow) =>
|
|
522
522
|
arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
|
|
523
523
|
setAdd(settingColumnNameSet, cellOrValueId),
|
|
524
524
|
),
|
|
@@ -642,7 +642,7 @@ const getCommandFunctions = (
|
|
|
642
642
|
);
|
|
643
643
|
const rows = {};
|
|
644
644
|
const deleteRowIds = [];
|
|
645
|
-
|
|
645
|
+
objMap(content ?? {}, (row, rowId) => {
|
|
646
646
|
rows[rowId] = arrayMap(changingColumnNames, (cellId) =>
|
|
647
647
|
encode ? encode(row?.[cellId]) : row?.[cellId],
|
|
648
648
|
);
|
|
@@ -955,7 +955,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
955
955
|
then,
|
|
956
956
|
) => {
|
|
957
957
|
const configMap = mapNew();
|
|
958
|
-
|
|
958
|
+
objMap(configsObj, (configObj, id) => {
|
|
959
959
|
const defaultedConfig = slice(
|
|
960
960
|
objValues(
|
|
961
961
|
objMerge(
|
package/queries/index.js
CHANGED
|
@@ -49,8 +49,11 @@ const arrayPush = (array, ...values) => array.push(...values);
|
|
|
49
49
|
const object = Object;
|
|
50
50
|
const objEntries = object.entries;
|
|
51
51
|
const objFreeze = object.freeze;
|
|
52
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
52
53
|
const objToArray = (obj, cb) =>
|
|
53
54
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
55
|
+
const objMap = (obj, cb) =>
|
|
56
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
54
57
|
|
|
55
58
|
const collSize = (coll) => coll?.size ?? 0;
|
|
56
59
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -780,7 +783,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
780
783
|
destroy,
|
|
781
784
|
getListenerStats,
|
|
782
785
|
};
|
|
783
|
-
|
|
786
|
+
objMap(
|
|
784
787
|
{
|
|
785
788
|
[TABLE]: [1, 1],
|
|
786
789
|
[TABLE + CELL_IDS]: [0, 1],
|
|
@@ -49,8 +49,11 @@ const arrayPush = (array, ...values) => array.push(...values);
|
|
|
49
49
|
const object = Object;
|
|
50
50
|
const objEntries = object.entries;
|
|
51
51
|
const objFreeze = object.freeze;
|
|
52
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
52
53
|
const objToArray = (obj, cb) =>
|
|
53
54
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
55
|
+
const objMap = (obj, cb) =>
|
|
56
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
54
57
|
|
|
55
58
|
const collSize = (coll) => coll?.size ?? 0;
|
|
56
59
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -780,7 +783,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
780
783
|
destroy,
|
|
781
784
|
getListenerStats,
|
|
782
785
|
};
|
|
783
|
-
|
|
786
|
+
objMap(
|
|
784
787
|
{
|
|
785
788
|
[TABLE]: [1, 1],
|
|
786
789
|
[TABLE + CELL_IDS]: [0, 1],
|
package/readme.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2></section><p><a href="https://tinybase.org/guides/releases/#v5-4"><em>NEW!</em> v5.4 release</a></p><p><span id="one-with">"The One With Durable Objects!"</span></p><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="it-s-reactive">It's <em>Reactive</em></h2><p>TinyBase lets you <a href="#register-granular-listeners">listen to changes</a> made to any part of your data. This means your app will be fast, since you only spend rendering cycles on things that change. The optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and <a href="#pre-built-reactive-components">pre-built components</a> let you easily build fully reactive UIs on top of TinyBase. You even get a built-in <a href="#set-checkpoints-for-an-undo-stack">undo stack</a>, and <a href="#an-inspector-for-your-data">developer tools</a>!</p></section><section><h2 id="it-s-database-like">It's <em>Database-Like</em></h2><p>Consumer app? Enterprise app? Or even a game? Model <a href="#start-with-a-simple-key-value-store">key-value data</a> and <a href="#level-up-to-use-tabular-data">tabular data</a> with optional typed <a href="#apply-schemas-to-tables-values">schematization</a>, whatever its data structures. There are built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, and tabular <a href="#model-table-relationships">relationships</a> APIs - and a powerful <a href="#build-complex-queries-with-tinyql">query engine</a> to select, join, filter, and group data (reactively!) without SQL.</p></section><section><h2 id="it-synchronizes">It <em>Synchronizes</em></h2><p>TinyBase has <a href="#synchronize-between-devices">native CRDT</a> support, meaning that you can deterministically <a href="https://tinybase.org/guides/synchronization/">synchronize</a> and merge data across multiple sources, clients, and servers. And although TinyBase is an in-memory data store, you can easily <a href="#persist-to-storage-databases-more">persist</a> your data to file, <a href="https://tinybase.org/api/persister-browser">browser storage</a>, <a href="https://tinybase.org/api/persister-indexed-db">IndexedDB</a>, <a href="https://tinybase.org/guides/persistence/database-persistence/">SQLite or PostgreSQL databases</a>, and <a href="https://tinybase.org/guides/persistence/third-party-crdt-persistence/">more</a>.</p></section><section><h2 id="it-s-built-for-a-local-first-world">It's Built For A <em>Local-First</em> World</h2><p>TinyBase works anywhere that JavaScript does, but it's especially great for local-first apps: where data is stored locally on the user's device and that can be run offline. It's tiny by name, tiny by nature: just <a href="#did-we-say-tiny">5.3kB - 11.4kB</a> and with no dependencies - yet <a href="#well-tested-and-documented">100% tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</p></section><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends.</h2><div><a href="https://tinybase.org/guides/building-uis/getting-started-with-ui-react"><img src="https://tinybase.org/react.svg?asImg" width="48"> React</a></div><div><a href="https://tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img src="https://tinybase.org/indexeddb.svg?asImg" width="48"> IndexedDB</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/postgresql.svg?asImg" width="48"> PostgreSQL</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/pglite.svg?asImg" width="48"> PGlite</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/sqlite.svg?asImg" width="48"> SQLite</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/expo.svg?asImg" width="48"> Expo SQLite</a></div><div><a href="https://tinybase.org/guides/integrations/cloudflare-durable-objects"><img src="https://tinybase.org/cloudflare.svg?asImg" width="48"> Cloudflare</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/electric.svg?asImg" width="48"> ElectricSQL</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/turso.svg?asImg" width="48"> Turso</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/powersync.svg?asImg" width="48"> PowerSync</a></div><div><a href="https://tinybase.org/api/persister-partykit-client"><img src="https://tinybase.org/partykit.svg?asImg" width="48"> PartyKit</a></div><div><a href="https://tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img src="https://tinybase.org/yjs.svg?asImg" width="48"> YJS</a></div><div><a href="https://tinybase.org/api/persister-cr-sqlite-wasm"><img src="https://tinybase.org/crsqlite.png" width="48"> CR-SQLite</a></div><div><a href="https://tinybase.org/api/persister-automerge"><img src="https://tinybase.org/automerge.svg?asImg" width="48"> Automerge</a></div><p>(Baffled by all these logos? Check out our <a href="https://tinybase.org/guides/the-basics/architectural-options">architectural options</a> guide to make sense of it all!)</p></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=GitHub&labelColor=%23d81b60&color=%23333"> </a><a href="https://bsky.app/profile/tinybase.bsky.social"><img src="https://img.shields.io/badge/Bluesky-Follow-blue?style=for-the-badge&logo=bluesky&logoColor=%23fff&color=%23333&labelColor=%230285FF"> </a><a href="https://x.com/tinybasejs" target="_blank"><img src="https://img.shields.io/badge/%2F%20Twitter-Follow-blue?style=for-the-badge&logo=x&logoColor=%23fff&color=%23333&labelColor=%23000"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&logo=discord&logoColor=%23fff&label=Discord&labelColor=%233131e8&color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Ideas&labelColor=%23d81b60&color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Issues&labelColor=%23d81b60&color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&logo=jest&logoColor=%23fff&color=%23333&labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.4.
|
|
1
|
+
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2></section><p><a href="https://tinybase.org/guides/releases/#v5-4"><em>NEW!</em> v5.4 release</a></p><p><span id="one-with">"The One With Durable Objects!"</span></p><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="it-s-reactive">It's <em>Reactive</em></h2><p>TinyBase lets you <a href="#register-granular-listeners">listen to changes</a> made to any part of your data. This means your app will be fast, since you only spend rendering cycles on things that change. The optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and <a href="#pre-built-reactive-components">pre-built components</a> let you easily build fully reactive UIs on top of TinyBase. You even get a built-in <a href="#set-checkpoints-for-an-undo-stack">undo stack</a>, and <a href="#an-inspector-for-your-data">developer tools</a>!</p></section><section><h2 id="it-s-database-like">It's <em>Database-Like</em></h2><p>Consumer app? Enterprise app? Or even a game? Model <a href="#start-with-a-simple-key-value-store">key-value data</a> and <a href="#level-up-to-use-tabular-data">tabular data</a> with optional typed <a href="#apply-schemas-to-tables-values">schematization</a>, whatever its data structures. There are built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, and tabular <a href="#model-table-relationships">relationships</a> APIs - and a powerful <a href="#build-complex-queries-with-tinyql">query engine</a> to select, join, filter, and group data (reactively!) without SQL.</p></section><section><h2 id="it-synchronizes">It <em>Synchronizes</em></h2><p>TinyBase has <a href="#synchronize-between-devices">native CRDT</a> support, meaning that you can deterministically <a href="https://tinybase.org/guides/synchronization/">synchronize</a> and merge data across multiple sources, clients, and servers. And although TinyBase is an in-memory data store, you can easily <a href="#persist-to-storage-databases-more">persist</a> your data to file, <a href="https://tinybase.org/api/persister-browser">browser storage</a>, <a href="https://tinybase.org/api/persister-indexed-db">IndexedDB</a>, <a href="https://tinybase.org/guides/persistence/database-persistence/">SQLite or PostgreSQL databases</a>, and <a href="https://tinybase.org/guides/persistence/third-party-crdt-persistence/">more</a>.</p></section><section><h2 id="it-s-built-for-a-local-first-world">It's Built For A <em>Local-First</em> World</h2><p>TinyBase works anywhere that JavaScript does, but it's especially great for local-first apps: where data is stored locally on the user's device and that can be run offline. It's tiny by name, tiny by nature: just <a href="#did-we-say-tiny">5.3kB - 11.4kB</a> and with no dependencies - yet <a href="#well-tested-and-documented">100% tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</p></section><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends.</h2><div><a href="https://tinybase.org/guides/building-uis/getting-started-with-ui-react"><img src="https://tinybase.org/react.svg?asImg" width="48"> React</a></div><div><a href="https://tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img src="https://tinybase.org/indexeddb.svg?asImg" width="48"> IndexedDB</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/postgresql.svg?asImg" width="48"> PostgreSQL</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/pglite.svg?asImg" width="48"> PGlite</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/sqlite.svg?asImg" width="48"> SQLite</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/expo.svg?asImg" width="48"> Expo SQLite</a></div><div><a href="https://tinybase.org/guides/integrations/cloudflare-durable-objects"><img src="https://tinybase.org/cloudflare.svg?asImg" width="48"> Cloudflare</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/electric.svg?asImg" width="48"> ElectricSQL</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/turso.svg?asImg" width="48"> Turso</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img src="https://tinybase.org/powersync.svg?asImg" width="48"> PowerSync</a></div><div><a href="https://tinybase.org/api/persister-partykit-client"><img src="https://tinybase.org/partykit.svg?asImg" width="48"> PartyKit</a></div><div><a href="https://tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img src="https://tinybase.org/yjs.svg?asImg" width="48"> YJS</a></div><div><a href="https://tinybase.org/api/persister-cr-sqlite-wasm"><img src="https://tinybase.org/crsqlite.png" width="48"> CR-SQLite</a></div><div><a href="https://tinybase.org/api/persister-automerge"><img src="https://tinybase.org/automerge.svg?asImg" width="48"> Automerge</a></div><p>(Baffled by all these logos? Check out our <a href="https://tinybase.org/guides/the-basics/architectural-options">architectural options</a> guide to make sense of it all!)</p></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=GitHub&labelColor=%23d81b60&color=%23333"> </a><a href="https://bsky.app/profile/tinybase.bsky.social"><img src="https://img.shields.io/badge/Bluesky-Follow-blue?style=for-the-badge&logo=bluesky&logoColor=%23fff&color=%23333&labelColor=%230285FF"> </a><a href="https://x.com/tinybasejs" target="_blank"><img src="https://img.shields.io/badge/%2F%20Twitter-Follow-blue?style=for-the-badge&logo=x&logoColor=%23fff&color=%23333&labelColor=%23000"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&logo=discord&logoColor=%23fff&label=Discord&labelColor=%233131e8&color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Ideas&labelColor=%23d81b60&color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Issues&labelColor=%23d81b60&color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&logo=jest&logoColor=%23fff&color=%23333&labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.4.6" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&logo=npm&logoColor=%23fff&labelColor=%23bd0005&color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
|
|
2
2
|
|
|
3
3
|
```js
|
|
4
4
|
import {createStore} from 'tinybase';
|
|
@@ -294,4 +294,4 @@ export const createShop: typeof createShopDecl = () => {
|
|
|
294
294
|
};
|
|
295
295
|
```
|
|
296
296
|
|
|
297
|
-
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store/"><code>store</code></a> module alone, you'll only add a gzipped <em>5.3kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>11.4kB</em>.</p><p>The optional <a href="https://tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just <em>4.9kB</em>, the ui-react-dom components are another <em>2.6kB</em>, and everything is super fast. Life is easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th> </th><th>Minified .js.gz</th><th>Source .js</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store/">tinybase/store</a> (minimal)</th><td>5.3kB</td><td>52.5kB</td></tr><tr><th class="right">tinybase (complete)</th><td>11.4kB</td><td>119.5kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/ui-react/">ui-react</a></th><td>4.9kB</td><td>53.7kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/ui-react-dom/">ui-react-dom</a></th><td>2.6kB</td><td>20.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,290</td><td>2,290</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,474</td><td>2,474</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>988</td><td>988</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>856</td><td>856</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">7,464</td></tr><tr><th class="right">Assertions</th><td colspan="3">33,206</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/cpojer" target="_blank"><img src="https://github.com/cpojer.png?size=48" title="cpojer" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img src="https://github.com/expo.png?size=48" title="expo" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img src="https://github.com/beekeeb.png?size=48" title="beekeeb" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img src="https://github.com/cancelself.png?size=48" title="cancelself" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img src="https://github.com/WonderPanda.png?size=48" title="WonderPanda" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img src="https://github.com/arpitBhalla.png?size=48" title="arpitBhalla" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/behrends" target="_blank"><img src="https://github.com/behrends.png?size=48" title="behrends" width="48" height="48"></a><a href="https://github.com/betomoedano" target="_blank"><img src="https://github.com/betomoedano.png?size=48" title="betomoedano" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img src="https://github.com/brentvatne.png?size=48" title="brentvatne" width="48" height="48"></a><a href="https://github.com/byCedric" target="_blank"><img src="https://github.com/byCedric.png?size=48" title="byCedric" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img src="https://github.com/circadian-risk.png?size=48" title="circadian-risk" width="48" height="48"></a><a href="https://github.com/cpojer" target="_blank"><img src="https://github.com/cpojer.png?size=48" title="cpojer" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img src="https://github.com/cubecull.png?size=48" title="cubecull" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img src="https://github.com/erwinkn.png?size=48" title="erwinkn" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img src="https://github.com/expo.png?size=48" title="expo" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img src="https://github.com/ezra-en.png?size=48" title="ezra-en" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img src="https://github.com/feychenie.png?size=48" title="feychenie" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img src="https://github.com/flaming-codes.png?size=48" title="flaming-codes" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img src="https://github.com/fostertheweb.png?size=48" title="fostertheweb" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img src="https://github.com/Giulio987.png?size=48" title="Giulio987" width="48" height="48"></a><a href="https://github.com/hi-ogawa" target="_blank"><img src="https://github.com/hi-ogawa.png?size=48" title="hi-ogawa" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img src="https://github.com/itsdevcoffee.png?size=48" title="itsdevcoffee" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img src="https://github.com/jbolda.png?size=48" title="jbolda" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img src="https://github.com/Kayoo-asso.png?size=48" title="Kayoo-asso" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img src="https://github.com/kotofurumiya.png?size=48" title="kotofurumiya" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img src="https://github.com/Kudo.png?size=48" title="Kudo" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img src="https://github.com/learn-anything.png?size=48" title="learn-anything" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img src="https://github.com/lluc.png?size=48" title="lluc" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img src="https://github.com/marksteve.png?size=48" title="marksteve" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img src="https://github.com/miking-the-viking.png?size=48" title="miking-the-viking" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img src="https://github.com/mjamesderocher.png?size=48" title="mjamesderocher" width="48" height="48"></a><a href="https://github.com/mouktardev" target="_blank"><img src="https://github.com/mouktardev.png?size=48" title="mouktardev" width="48" height="48"></a><a href="https://github.com/nickmessing" target="_blank"><img src="https://github.com/nickmessing.png?size=48" title="nickmessing" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img src="https://github.com/nikitavoloboev.png?size=48" title="nikitavoloboev" width="48" height="48"></a><a href="https://github.com/nkzw-tech" target="_blank"><img src="https://github.com/nkzw-tech.png?size=48" title="nkzw-tech" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img src="https://github.com/palerdot.png?size=48" title="palerdot" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img src="https://github.com/PorcoRosso85.png?size=48" title="PorcoRosso85" width="48" height="48"></a><a href="https://github.com/primodiumxyz" target="_blank"><img src="https://github.com/primodiumxyz.png?size=48" title="primodiumxyz" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img src="https://github.com/shaneosullivan.png?size=48" title="shaneosullivan" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img src="https://github.com/sudo-self.png?size=48" title="sudo-self" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img src="https://github.com/SuperSonicHub1.png?size=48" title="SuperSonicHub1" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img src="https://github.com/threepointone.png?size=48" title="threepointone" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img src="https://github.com/uptonking.png?size=48" title="uptonking" width="48" height="48"></a><a href="https://github.com/ViktorZhurbin" target="_blank"><img src="https://github.com/ViktorZhurbin.png?size=48" title="ViktorZhurbin" width="48" height="48"></a><a href="https://github.com/wilkerlucio" target="_blank"><img src="https://github.com/wilkerlucio.png?size=48" title="wilkerlucio" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img src="https://github.com/WonderPanda.png?size=48" title="WonderPanda" width="48" height="48"></a></section><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://tinybase.org/youtube.webp"></a></section>
|
|
297
|
+
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store/"><code>store</code></a> module alone, you'll only add a gzipped <em>5.3kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>11.4kB</em>.</p><p>The optional <a href="https://tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just <em>4.9kB</em>, the ui-react-dom components are another <em>2.6kB</em>, and everything is super fast. Life is easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th> </th><th>Minified .js.gz</th><th>Source .js</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store/">tinybase/store</a> (minimal)</th><td>5.3kB</td><td>52.5kB</td></tr><tr><th class="right">tinybase (complete)</th><td>11.4kB</td><td>119.5kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/ui-react/">ui-react</a></th><td>4.9kB</td><td>53.7kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/ui-react-dom/">ui-react-dom</a></th><td>2.6kB</td><td>20.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,290</td><td>2,290</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,474</td><td>2,474</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>988</td><td>988</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>856</td><td>856</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">7,464</td></tr><tr><th class="right">Assertions</th><td colspan="3">33,210</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/cpojer" target="_blank"><img src="https://github.com/cpojer.png?size=48" title="cpojer" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img src="https://github.com/expo.png?size=48" title="expo" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img src="https://github.com/beekeeb.png?size=48" title="beekeeb" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img src="https://github.com/cancelself.png?size=48" title="cancelself" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img src="https://github.com/WonderPanda.png?size=48" title="WonderPanda" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img src="https://github.com/arpitBhalla.png?size=48" title="arpitBhalla" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/behrends" target="_blank"><img src="https://github.com/behrends.png?size=48" title="behrends" width="48" height="48"></a><a href="https://github.com/betomoedano" target="_blank"><img src="https://github.com/betomoedano.png?size=48" title="betomoedano" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img src="https://github.com/brentvatne.png?size=48" title="brentvatne" width="48" height="48"></a><a href="https://github.com/byCedric" target="_blank"><img src="https://github.com/byCedric.png?size=48" title="byCedric" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img src="https://github.com/circadian-risk.png?size=48" title="circadian-risk" width="48" height="48"></a><a href="https://github.com/cpojer" target="_blank"><img src="https://github.com/cpojer.png?size=48" title="cpojer" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img src="https://github.com/cubecull.png?size=48" title="cubecull" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img src="https://github.com/erwinkn.png?size=48" title="erwinkn" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img src="https://github.com/expo.png?size=48" title="expo" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img src="https://github.com/ezra-en.png?size=48" title="ezra-en" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img src="https://github.com/feychenie.png?size=48" title="feychenie" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img src="https://github.com/flaming-codes.png?size=48" title="flaming-codes" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img src="https://github.com/fostertheweb.png?size=48" title="fostertheweb" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img src="https://github.com/Giulio987.png?size=48" title="Giulio987" width="48" height="48"></a><a href="https://github.com/hi-ogawa" target="_blank"><img src="https://github.com/hi-ogawa.png?size=48" title="hi-ogawa" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img src="https://github.com/itsdevcoffee.png?size=48" title="itsdevcoffee" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img src="https://github.com/jbolda.png?size=48" title="jbolda" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img src="https://github.com/Kayoo-asso.png?size=48" title="Kayoo-asso" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img src="https://github.com/kotofurumiya.png?size=48" title="kotofurumiya" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img src="https://github.com/Kudo.png?size=48" title="Kudo" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img src="https://github.com/learn-anything.png?size=48" title="learn-anything" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img src="https://github.com/lluc.png?size=48" title="lluc" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img src="https://github.com/marksteve.png?size=48" title="marksteve" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img src="https://github.com/miking-the-viking.png?size=48" title="miking-the-viking" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img src="https://github.com/mjamesderocher.png?size=48" title="mjamesderocher" width="48" height="48"></a><a href="https://github.com/mouktardev" target="_blank"><img src="https://github.com/mouktardev.png?size=48" title="mouktardev" width="48" height="48"></a><a href="https://github.com/nickmessing" target="_blank"><img src="https://github.com/nickmessing.png?size=48" title="nickmessing" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img src="https://github.com/nikitavoloboev.png?size=48" title="nikitavoloboev" width="48" height="48"></a><a href="https://github.com/nkzw-tech" target="_blank"><img src="https://github.com/nkzw-tech.png?size=48" title="nkzw-tech" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img src="https://github.com/palerdot.png?size=48" title="palerdot" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img src="https://github.com/PorcoRosso85.png?size=48" title="PorcoRosso85" width="48" height="48"></a><a href="https://github.com/primodiumxyz" target="_blank"><img src="https://github.com/primodiumxyz.png?size=48" title="primodiumxyz" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img src="https://github.com/shaneosullivan.png?size=48" title="shaneosullivan" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img src="https://github.com/sudo-self.png?size=48" title="sudo-self" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img src="https://github.com/SuperSonicHub1.png?size=48" title="SuperSonicHub1" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img src="https://github.com/threepointone.png?size=48" title="threepointone" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img src="https://github.com/uptonking.png?size=48" title="uptonking" width="48" height="48"></a><a href="https://github.com/ViktorZhurbin" target="_blank"><img src="https://github.com/ViktorZhurbin.png?size=48" title="ViktorZhurbin" width="48" height="48"></a><a href="https://github.com/wilkerlucio" target="_blank"><img src="https://github.com/wilkerlucio.png?size=48" title="wilkerlucio" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img src="https://github.com/WonderPanda.png?size=48" title="WonderPanda" width="48" height="48"></a></section><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://tinybase.org/youtube.webp"></a></section>
|
package/store/index.js
CHANGED
|
@@ -64,13 +64,18 @@ const isObject = (obj) =>
|
|
|
64
64
|
);
|
|
65
65
|
const objIds = object.keys;
|
|
66
66
|
const objFreeze = object.freeze;
|
|
67
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
67
68
|
const objHas = (obj, id) => id in obj;
|
|
68
69
|
const objDel = (obj, id) => {
|
|
69
70
|
delete obj[id];
|
|
70
71
|
return obj;
|
|
71
72
|
};
|
|
73
|
+
const objForEach = (obj, cb) =>
|
|
74
|
+
arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
|
|
72
75
|
const objToArray = (obj, cb) =>
|
|
73
76
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
77
|
+
const objMap = (obj, cb) =>
|
|
78
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
74
79
|
const objSize = (obj) => size(objIds(obj));
|
|
75
80
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
76
81
|
const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
@@ -83,7 +88,7 @@ const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
|
83
88
|
onInvalidObj?.();
|
|
84
89
|
return false;
|
|
85
90
|
}
|
|
86
|
-
|
|
91
|
+
objForEach(obj, (child, id) => {
|
|
87
92
|
if (!validateChild(child, id)) {
|
|
88
93
|
objDel(obj, id);
|
|
89
94
|
}
|
|
@@ -122,7 +127,7 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
122
127
|
return mapGet(map, key);
|
|
123
128
|
};
|
|
124
129
|
const mapMatch = (map, obj, set, del = mapSet) => {
|
|
125
|
-
|
|
130
|
+
objMap(obj, (value, id) => set(map, id, value));
|
|
126
131
|
mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
|
|
127
132
|
return map;
|
|
128
133
|
};
|
|
@@ -1068,7 +1073,7 @@ const createStore = () => {
|
|
|
1068
1073
|
(tableId2, rowId2) => {
|
|
1069
1074
|
if (validateRow(tableId2, rowId2, partialRow, 1)) {
|
|
1070
1075
|
const table = getOrCreateTable(tableId2);
|
|
1071
|
-
|
|
1076
|
+
objMap(partialRow, (cell, cellId) =>
|
|
1072
1077
|
setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),
|
|
1073
1078
|
);
|
|
1074
1079
|
}
|
|
@@ -1106,7 +1111,7 @@ const createStore = () => {
|
|
|
1106
1111
|
const setPartialValues = (partialValues) =>
|
|
1107
1112
|
fluentTransaction(() =>
|
|
1108
1113
|
validateValues(partialValues, 1)
|
|
1109
|
-
?
|
|
1114
|
+
? objMap(partialValues, (value, valueId) =>
|
|
1110
1115
|
setValidValue(valueId, value),
|
|
1111
1116
|
)
|
|
1112
1117
|
: 0,
|
|
@@ -1125,18 +1130,18 @@ const createStore = () => {
|
|
|
1125
1130
|
);
|
|
1126
1131
|
const applyChanges = (changes) =>
|
|
1127
1132
|
fluentTransaction(() => {
|
|
1128
|
-
|
|
1133
|
+
objMap(changes[0], (table, tableId) =>
|
|
1129
1134
|
isUndefined(table)
|
|
1130
1135
|
? delTable(tableId)
|
|
1131
|
-
:
|
|
1136
|
+
: objMap(table, (row, rowId) =>
|
|
1132
1137
|
isUndefined(row)
|
|
1133
1138
|
? delRow(tableId, rowId)
|
|
1134
|
-
:
|
|
1139
|
+
: objMap(row, (cell, cellId) =>
|
|
1135
1140
|
setOrDelCell(store, tableId, rowId, cellId, cell),
|
|
1136
1141
|
),
|
|
1137
1142
|
),
|
|
1138
1143
|
);
|
|
1139
|
-
|
|
1144
|
+
objMap(changes[1], (value, valueId) =>
|
|
1140
1145
|
setOrDelValue(store, valueId, value),
|
|
1141
1146
|
);
|
|
1142
1147
|
});
|
|
@@ -1568,7 +1573,7 @@ const createStore = () => {
|
|
|
1568
1573
|
callListeners,
|
|
1569
1574
|
setInternalListeners,
|
|
1570
1575
|
};
|
|
1571
|
-
|
|
1576
|
+
objMap(
|
|
1572
1577
|
{
|
|
1573
1578
|
[HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
|
|
1574
1579
|
[TABLES]: [0, tablesListeners],
|