tinybase 5.0.0-beta.13 → 5.0.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-libsql.cjs +1 -1
- package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-powersync.cjs +1 -1
- package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -1
- package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -1
- package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs/synchronizers.cjs +1 -1
- package/lib/cjs/synchronizers.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -1
- package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -1
- package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
- package/lib/cjs-es6/synchronizers.cjs +1 -1
- package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/debug/persisters/persister-automerge.js +1 -1
- package/lib/debug/persisters/persister-browser.js +5 -8
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +56 -49
- package/lib/debug/persisters/persister-electric-sql.js +56 -49
- package/lib/debug/persisters/persister-expo-sqlite-next.js +56 -49
- package/lib/debug/persisters/persister-expo-sqlite.js +56 -49
- package/lib/debug/persisters/persister-file.js +4 -8
- package/lib/debug/persisters/persister-indexed-db.js +1 -1
- package/lib/debug/persisters/persister-libsql.js +56 -49
- package/lib/debug/persisters/persister-partykit-client.js +1 -1
- package/lib/debug/persisters/persister-powersync.js +56 -49
- package/lib/debug/persisters/persister-remote.js +1 -1
- package/lib/debug/persisters/persister-sqlite-wasm.js +56 -49
- package/lib/debug/persisters/persister-sqlite3.js +56 -49
- package/lib/debug/persisters/persister-yjs.js +1 -1
- package/lib/debug/persisters.js +1 -1
- package/lib/debug/synchronizers/synchronizer-local.js +1 -1
- package/lib/debug/synchronizers/synchronizer-ws-client.js +4 -8
- package/lib/debug/synchronizers.js +1 -1
- package/lib/debug/tinybase.js +1 -1
- package/lib/debug/ui-react-dom.js +8 -9
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-libsql.js +1 -1
- package/lib/es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-powersync.js +1 -1
- package/lib/es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-local.js +1 -1
- package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/es6/synchronizers.js +1 -1
- package/lib/es6/synchronizers.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-libsql.js +1 -1
- package/lib/persisters/persister-libsql.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-powersync.js +1 -1
- package/lib/persisters/persister-powersync.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/synchronizers/synchronizer-local.js +1 -1
- package/lib/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/synchronizers.js +1 -1
- package/lib/synchronizers.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/types/mergeable-store.d.ts +1 -1
- package/lib/types/persisters/persister-expo-sqlite-next.d.ts +1 -1
- package/lib/types/persisters/persister-expo-sqlite.d.ts +1 -1
- package/lib/types/persisters/persister-libsql.d.ts +1 -1
- package/lib/types/persisters/persister-powersync.d.ts +1 -1
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +1 -1
- package/lib/types/persisters/persister-sqlite3.d.ts +1 -1
- package/lib/types/persisters.d.ts +23 -11
- package/lib/types/relationships.d.ts +1 -1
- package/lib/types/synchronizers/synchronizer-local.d.ts +2 -2
- package/lib/types/synchronizers/synchronizer-ws-client.d.ts +2 -2
- package/lib/types/synchronizers/synchronizer-ws-server.d.ts +2 -2
- package/lib/types/synchronizers.d.ts +13 -9
- package/lib/types/ui-react.d.ts +6 -6
- package/lib/types/with-schemas/mergeable-store.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +1 -1
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +1 -1
- package/lib/types/with-schemas/persisters/persister-libsql.d.ts +1 -1
- package/lib/types/with-schemas/persisters/persister-powersync.d.ts +2 -2
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +1 -1
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +1 -1
- package/lib/types/with-schemas/persisters.d.ts +22 -10
- package/lib/types/with-schemas/relationships.d.ts +1 -1
- package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +3 -3
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +3 -3
- package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +2 -2
- package/lib/types/with-schemas/synchronizers.d.ts +13 -9
- package/lib/types/with-schemas/ui-react.d.ts +6 -6
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-libsql.js +1 -1
- package/lib/umd/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-powersync.js +1 -1
- package/lib/umd/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-local.js +1 -1
- package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd/synchronizers.js +1 -1
- package/lib/umd/synchronizers.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-libsql.js +1 -1
- package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-powersync.js +1 -1
- package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -1
- package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -1
- package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
- package/lib/umd-es6/synchronizers.js +1 -1
- package/lib/umd-es6/synchronizers.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/package.json +24 -24
- package/readme.md +2 -2
|
@@ -3,6 +3,7 @@ const TINYBASE = 'tinybase';
|
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
5
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
|
+
const UNDEFINED = '\uFFFC';
|
|
6
7
|
const strRepeat = (str, count) => str.repeat(count);
|
|
7
8
|
|
|
8
9
|
const promise = Promise;
|
|
@@ -11,7 +12,6 @@ const startInterval = (callback, sec, immediate) => {
|
|
|
11
12
|
return setInterval(callback, sec * 1e3);
|
|
12
13
|
};
|
|
13
14
|
const stopInterval = clearInterval;
|
|
14
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
15
15
|
const isUndefined = (thing) => thing == void 0;
|
|
16
16
|
const ifNotUndefined = (value, then, otherwise) =>
|
|
17
17
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
@@ -21,11 +21,6 @@ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
|
21
21
|
const size = (arrayOrString) => arrayOrString.length;
|
|
22
22
|
const promiseAll = async (promises) => promise.all(promises);
|
|
23
23
|
|
|
24
|
-
const SINGLE_ROW_ID = '_';
|
|
25
|
-
const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
|
|
26
|
-
const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
|
|
27
|
-
const SELECT = 'SELECT';
|
|
28
|
-
|
|
29
24
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
30
25
|
const arrayMap = (array, cb) => array.map(cb);
|
|
31
26
|
const arrayIsEmpty = (array) => size(array) == 0;
|
|
@@ -87,6 +82,11 @@ const mapMatch = (map, obj, set, del = mapSet) => {
|
|
|
87
82
|
return map;
|
|
88
83
|
};
|
|
89
84
|
|
|
85
|
+
const SINGLE_ROW_ID = '_';
|
|
86
|
+
const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
|
|
87
|
+
const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
|
|
88
|
+
const SELECT = 'SELECT';
|
|
89
|
+
|
|
90
90
|
const setNew = (entryOrEntries) =>
|
|
91
91
|
new Set(
|
|
92
92
|
isArray(entryOrEntries) || isUndefined(entryOrEntries)
|
|
@@ -378,16 +378,15 @@ const getPlaceholders = (array) =>
|
|
|
378
378
|
COMMA,
|
|
379
379
|
);
|
|
380
380
|
|
|
381
|
-
const
|
|
382
|
-
JSON.stringify(obj, (_key, value) =>
|
|
383
|
-
|
|
384
|
-
);
|
|
385
|
-
const jsonParse = JSON.parse;
|
|
381
|
+
const jsonStringWithUndefined = (obj) =>
|
|
382
|
+
JSON.stringify(obj, (_key, value) => (value === void 0 ? UNDEFINED : value));
|
|
383
|
+
const jsonParseWithUndefined = (str) =>
|
|
384
|
+
JSON.parse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
|
|
386
385
|
|
|
387
386
|
const scheduleRunning = mapNew();
|
|
388
387
|
const scheduleActions = mapNew();
|
|
389
388
|
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
390
|
-
supportedStoreType > 1 && '
|
|
389
|
+
supportedStoreType > 1 && 'merge' in store
|
|
391
390
|
? [
|
|
392
391
|
1,
|
|
393
392
|
store.getMergeableContent,
|
|
@@ -568,14 +567,14 @@ const createCustomPersister = (
|
|
|
568
567
|
return objFreeze(persister);
|
|
569
568
|
};
|
|
570
569
|
|
|
571
|
-
const STORE_COLUMN = 'store';
|
|
572
570
|
const createJsonSqlitePersister = (
|
|
573
571
|
store,
|
|
574
572
|
cmd,
|
|
575
573
|
addPersisterListener,
|
|
576
574
|
delPersisterListener,
|
|
577
575
|
onIgnoredError,
|
|
578
|
-
|
|
576
|
+
supportedStoreType,
|
|
577
|
+
[storeTableName, storeIdColumnName, storeColumnName],
|
|
579
578
|
managedTableNames,
|
|
580
579
|
db,
|
|
581
580
|
getThing,
|
|
@@ -586,10 +585,10 @@ const createJsonSqlitePersister = (
|
|
|
586
585
|
const getPersisted = async () =>
|
|
587
586
|
await transaction(async () => {
|
|
588
587
|
await refreshSchema();
|
|
589
|
-
return
|
|
590
|
-
(await loadTable(storeTableName,
|
|
591
|
-
|
|
592
|
-
]
|
|
588
|
+
return jsonParseWithUndefined(
|
|
589
|
+
(await loadTable(storeTableName, storeIdColumnName))[SINGLE_ROW_ID]?.[
|
|
590
|
+
storeColumnName
|
|
591
|
+
] ?? 'null',
|
|
593
592
|
);
|
|
594
593
|
});
|
|
595
594
|
const setPersisted = async (getContent) =>
|
|
@@ -597,10 +596,10 @@ const createJsonSqlitePersister = (
|
|
|
597
596
|
await refreshSchema();
|
|
598
597
|
await saveTable(
|
|
599
598
|
storeTableName,
|
|
600
|
-
|
|
599
|
+
storeIdColumnName,
|
|
601
600
|
{
|
|
602
601
|
[SINGLE_ROW_ID]: {
|
|
603
|
-
[
|
|
602
|
+
[storeColumnName]: jsonStringWithUndefined(getContent() ?? null),
|
|
604
603
|
},
|
|
605
604
|
},
|
|
606
605
|
true,
|
|
@@ -614,7 +613,7 @@ const createJsonSqlitePersister = (
|
|
|
614
613
|
addPersisterListener,
|
|
615
614
|
delPersisterListener,
|
|
616
615
|
onIgnoredError,
|
|
617
|
-
|
|
616
|
+
supportedStoreType,
|
|
618
617
|
{[getThing]: () => db},
|
|
619
618
|
db,
|
|
620
619
|
);
|
|
@@ -627,6 +626,7 @@ const createTabularSqlitePersister = (
|
|
|
627
626
|
addPersisterListener,
|
|
628
627
|
delPersisterListener,
|
|
629
628
|
onIgnoredError,
|
|
629
|
+
supportedStoreType,
|
|
630
630
|
[
|
|
631
631
|
tablesLoadConfig,
|
|
632
632
|
tablesSaveConfig,
|
|
@@ -720,17 +720,21 @@ const createTabularSqlitePersister = (
|
|
|
720
720
|
addPersisterListener,
|
|
721
721
|
delPersisterListener,
|
|
722
722
|
onIgnoredError,
|
|
723
|
-
|
|
723
|
+
supportedStoreType,
|
|
724
724
|
{[getThing]: () => db},
|
|
725
725
|
db,
|
|
726
726
|
);
|
|
727
727
|
return persister;
|
|
728
728
|
};
|
|
729
729
|
|
|
730
|
+
const COLUMN_NAME = 'ColumnName';
|
|
731
|
+
const STORE = 'store';
|
|
730
732
|
const JSON$1 = 'json';
|
|
733
|
+
const STORE_TABLE_NAME = STORE + 'TableName';
|
|
734
|
+
const STORE_ID_COLUMN_NAME = STORE + 'Id' + COLUMN_NAME;
|
|
735
|
+
const STORE_COLUMN_NAME = STORE + COLUMN_NAME;
|
|
731
736
|
const AUTO_LOAD_INTERVAL_SECONDS = 'autoLoadIntervalSeconds';
|
|
732
|
-
const
|
|
733
|
-
const ROW_ID_COLUMN_NAME = 'rowIdColumnName';
|
|
737
|
+
const ROW_ID_COLUMN_NAME = 'rowId' + COLUMN_NAME;
|
|
734
738
|
const TABLE_ID = 'tableId';
|
|
735
739
|
const TABLE_NAME = 'tableName';
|
|
736
740
|
const DELETE_EMPTY_COLUMNS = 'deleteEmptyColumns';
|
|
@@ -755,7 +759,8 @@ const getDefaultedTabularConfigMap = (
|
|
|
755
759
|
configsObj,
|
|
756
760
|
defaultObj,
|
|
757
761
|
tableField,
|
|
758
|
-
|
|
762
|
+
exclude,
|
|
763
|
+
then,
|
|
759
764
|
) => {
|
|
760
765
|
const configMap = mapNew();
|
|
761
766
|
objToArray(configsObj, (configObj, id) => {
|
|
@@ -769,7 +774,8 @@ const getDefaultedTabularConfigMap = (
|
|
|
769
774
|
0,
|
|
770
775
|
objSize(defaultObj),
|
|
771
776
|
);
|
|
772
|
-
if (!isUndefined(defaultedConfig[0]) && !
|
|
777
|
+
if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
778
|
+
then(id, defaultedConfig[0]);
|
|
773
779
|
mapSet(configMap, id, defaultedConfig);
|
|
774
780
|
}
|
|
775
781
|
});
|
|
@@ -779,11 +785,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
779
785
|
const config = getDefaultedConfig(configOrStoreTableName);
|
|
780
786
|
const autoLoadIntervalSeconds = config[AUTO_LOAD_INTERVAL_SECONDS];
|
|
781
787
|
if (config.mode == JSON$1) {
|
|
782
|
-
const
|
|
788
|
+
const storeTableName = config[STORE_TABLE_NAME] ?? TINYBASE;
|
|
783
789
|
return [
|
|
784
790
|
1,
|
|
785
791
|
autoLoadIntervalSeconds,
|
|
786
|
-
[
|
|
792
|
+
[
|
|
793
|
+
storeTableName,
|
|
794
|
+
config[STORE_ID_COLUMN_NAME] ?? DEFAULT_ROW_ID_COLUMN_NAME,
|
|
795
|
+
config[STORE_COLUMN_NAME] ?? STORE,
|
|
796
|
+
],
|
|
787
797
|
setNew(storeTableName),
|
|
788
798
|
];
|
|
789
799
|
}
|
|
@@ -795,13 +805,14 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
795
805
|
);
|
|
796
806
|
const valuesTable = valuesConfig[2];
|
|
797
807
|
const managedTableNames = setNew(valuesTable);
|
|
808
|
+
const excludedTableNames = setNew(valuesTable);
|
|
798
809
|
const tabularConfig = [
|
|
799
810
|
getDefaultedTabularConfigMap(
|
|
800
811
|
load,
|
|
801
812
|
{[TABLE_ID]: null, [ROW_ID_COLUMN_NAME]: DEFAULT_ROW_ID_COLUMN_NAME},
|
|
802
813
|
TABLE_ID,
|
|
803
|
-
(tableName) =>
|
|
804
|
-
|
|
814
|
+
(tableName) => collHas(excludedTableNames, tableName),
|
|
815
|
+
(tableName) => setAdd(managedTableNames, tableName),
|
|
805
816
|
),
|
|
806
817
|
getDefaultedTabularConfigMap(
|
|
807
818
|
save,
|
|
@@ -812,15 +823,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
812
823
|
[DELETE_EMPTY_TABLE]: 0,
|
|
813
824
|
},
|
|
814
825
|
TABLE_NAME,
|
|
815
|
-
(_, tableName) =>
|
|
816
|
-
|
|
826
|
+
(_, tableName) => collHas(excludedTableNames, tableName),
|
|
827
|
+
(_, tableName) => setAdd(managedTableNames, tableName),
|
|
817
828
|
),
|
|
818
829
|
valuesConfig,
|
|
819
830
|
];
|
|
820
831
|
return [0, autoLoadIntervalSeconds, tabularConfig, managedTableNames];
|
|
821
832
|
};
|
|
822
833
|
|
|
823
|
-
const PRAGMA = '
|
|
834
|
+
const PRAGMA = 'pragma_';
|
|
824
835
|
const DATA_VERSION = 'data_version';
|
|
825
836
|
const SCHEMA_VERSION = 'schema_version';
|
|
826
837
|
const createSqlitePersister = (
|
|
@@ -831,6 +842,7 @@ const createSqlitePersister = (
|
|
|
831
842
|
delUpdateListener,
|
|
832
843
|
onSqlCommand,
|
|
833
844
|
onIgnoredError,
|
|
845
|
+
supportedStoreType,
|
|
834
846
|
db,
|
|
835
847
|
getThing = 'getDb',
|
|
836
848
|
useOnConflict,
|
|
@@ -838,7 +850,6 @@ const createSqlitePersister = (
|
|
|
838
850
|
let dataVersion;
|
|
839
851
|
let schemaVersion;
|
|
840
852
|
let totalChanges;
|
|
841
|
-
const CHANGES_COLUMN = 'c';
|
|
842
853
|
const [
|
|
843
854
|
isJson,
|
|
844
855
|
autoLoadIntervalSeconds,
|
|
@@ -848,23 +859,17 @@ const createSqlitePersister = (
|
|
|
848
859
|
const addPersisterListener = (listener) => [
|
|
849
860
|
startInterval(async () => {
|
|
850
861
|
try {
|
|
851
|
-
const
|
|
852
|
-
DATA_VERSION
|
|
853
|
-
|
|
854
|
-
const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
|
|
855
|
-
SCHEMA_VERSION
|
|
856
|
-
];
|
|
857
|
-
const newTotalChanges = (
|
|
858
|
-
await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
|
|
859
|
-
)[0][CHANGES_COLUMN];
|
|
862
|
+
const [{d, s, c}] = await cmd(
|
|
863
|
+
`SELECT ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
864
|
+
);
|
|
860
865
|
if (
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
866
|
+
d != (dataVersion ??= d) ||
|
|
867
|
+
s != (schemaVersion ??= s) ||
|
|
868
|
+
c != (totalChanges ??= c)
|
|
864
869
|
) {
|
|
865
870
|
listener();
|
|
866
|
-
dataVersion =
|
|
867
|
-
schemaVersion =
|
|
871
|
+
dataVersion = d;
|
|
872
|
+
schemaVersion = s;
|
|
868
873
|
}
|
|
869
874
|
} catch {}
|
|
870
875
|
}, autoLoadIntervalSeconds),
|
|
@@ -874,7 +879,7 @@ const createSqlitePersister = (
|
|
|
874
879
|
];
|
|
875
880
|
const delPersisterListener = ([interval, listeningHandle]) => {
|
|
876
881
|
stopInterval(interval);
|
|
877
|
-
dataVersion = schemaVersion = null;
|
|
882
|
+
dataVersion = schemaVersion = totalChanges = null;
|
|
878
883
|
delUpdateListener(listeningHandle);
|
|
879
884
|
};
|
|
880
885
|
return (isJson ? createJsonSqlitePersister : createTabularSqlitePersister)(
|
|
@@ -888,6 +893,7 @@ const createSqlitePersister = (
|
|
|
888
893
|
addPersisterListener,
|
|
889
894
|
delPersisterListener,
|
|
890
895
|
onIgnoredError,
|
|
896
|
+
supportedStoreType,
|
|
891
897
|
defaultedConfig,
|
|
892
898
|
collValues(managedTableNamesSet),
|
|
893
899
|
db,
|
|
@@ -911,6 +917,7 @@ const createLibSqlPersister = (
|
|
|
911
917
|
(unsubscribeFunction) => unsubscribeFunction(),
|
|
912
918
|
onSqlCommand,
|
|
913
919
|
onIgnoredError,
|
|
920
|
+
1,
|
|
914
921
|
client,
|
|
915
922
|
'getClient',
|
|
916
923
|
);
|
|
@@ -70,7 +70,7 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
70
70
|
const scheduleRunning = mapNew();
|
|
71
71
|
const scheduleActions = mapNew();
|
|
72
72
|
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
73
|
-
supportedStoreType > 1 && '
|
|
73
|
+
supportedStoreType > 1 && 'merge' in store
|
|
74
74
|
? [
|
|
75
75
|
1,
|
|
76
76
|
store.getMergeableContent,
|
|
@@ -3,6 +3,7 @@ const TINYBASE = 'tinybase';
|
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
5
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
|
+
const UNDEFINED = '\uFFFC';
|
|
6
7
|
const strRepeat = (str, count) => str.repeat(count);
|
|
7
8
|
|
|
8
9
|
const promise = Promise;
|
|
@@ -11,7 +12,6 @@ const startInterval = (callback, sec, immediate) => {
|
|
|
11
12
|
return setInterval(callback, sec * 1e3);
|
|
12
13
|
};
|
|
13
14
|
const stopInterval = clearInterval;
|
|
14
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
15
15
|
const isUndefined = (thing) => thing == void 0;
|
|
16
16
|
const ifNotUndefined = (value, then, otherwise) =>
|
|
17
17
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
@@ -21,11 +21,6 @@ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
|
21
21
|
const size = (arrayOrString) => arrayOrString.length;
|
|
22
22
|
const promiseAll = async (promises) => promise.all(promises);
|
|
23
23
|
|
|
24
|
-
const SINGLE_ROW_ID = '_';
|
|
25
|
-
const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
|
|
26
|
-
const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
|
|
27
|
-
const SELECT = 'SELECT';
|
|
28
|
-
|
|
29
24
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
30
25
|
const arrayMap = (array, cb) => array.map(cb);
|
|
31
26
|
const arrayIsEmpty = (array) => size(array) == 0;
|
|
@@ -87,6 +82,11 @@ const mapMatch = (map, obj, set, del = mapSet) => {
|
|
|
87
82
|
return map;
|
|
88
83
|
};
|
|
89
84
|
|
|
85
|
+
const SINGLE_ROW_ID = '_';
|
|
86
|
+
const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
|
|
87
|
+
const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
|
|
88
|
+
const SELECT = 'SELECT';
|
|
89
|
+
|
|
90
90
|
const setNew = (entryOrEntries) =>
|
|
91
91
|
new Set(
|
|
92
92
|
isArray(entryOrEntries) || isUndefined(entryOrEntries)
|
|
@@ -378,16 +378,15 @@ const getPlaceholders = (array) =>
|
|
|
378
378
|
COMMA,
|
|
379
379
|
);
|
|
380
380
|
|
|
381
|
-
const
|
|
382
|
-
JSON.stringify(obj, (_key, value) =>
|
|
383
|
-
|
|
384
|
-
);
|
|
385
|
-
const jsonParse = JSON.parse;
|
|
381
|
+
const jsonStringWithUndefined = (obj) =>
|
|
382
|
+
JSON.stringify(obj, (_key, value) => (value === void 0 ? UNDEFINED : value));
|
|
383
|
+
const jsonParseWithUndefined = (str) =>
|
|
384
|
+
JSON.parse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
|
|
386
385
|
|
|
387
386
|
const scheduleRunning = mapNew();
|
|
388
387
|
const scheduleActions = mapNew();
|
|
389
388
|
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
390
|
-
supportedStoreType > 1 && '
|
|
389
|
+
supportedStoreType > 1 && 'merge' in store
|
|
391
390
|
? [
|
|
392
391
|
1,
|
|
393
392
|
store.getMergeableContent,
|
|
@@ -568,14 +567,14 @@ const createCustomPersister = (
|
|
|
568
567
|
return objFreeze(persister);
|
|
569
568
|
};
|
|
570
569
|
|
|
571
|
-
const STORE_COLUMN = 'store';
|
|
572
570
|
const createJsonSqlitePersister = (
|
|
573
571
|
store,
|
|
574
572
|
cmd,
|
|
575
573
|
addPersisterListener,
|
|
576
574
|
delPersisterListener,
|
|
577
575
|
onIgnoredError,
|
|
578
|
-
|
|
576
|
+
supportedStoreType,
|
|
577
|
+
[storeTableName, storeIdColumnName, storeColumnName],
|
|
579
578
|
managedTableNames,
|
|
580
579
|
db,
|
|
581
580
|
getThing,
|
|
@@ -586,10 +585,10 @@ const createJsonSqlitePersister = (
|
|
|
586
585
|
const getPersisted = async () =>
|
|
587
586
|
await transaction(async () => {
|
|
588
587
|
await refreshSchema();
|
|
589
|
-
return
|
|
590
|
-
(await loadTable(storeTableName,
|
|
591
|
-
|
|
592
|
-
]
|
|
588
|
+
return jsonParseWithUndefined(
|
|
589
|
+
(await loadTable(storeTableName, storeIdColumnName))[SINGLE_ROW_ID]?.[
|
|
590
|
+
storeColumnName
|
|
591
|
+
] ?? 'null',
|
|
593
592
|
);
|
|
594
593
|
});
|
|
595
594
|
const setPersisted = async (getContent) =>
|
|
@@ -597,10 +596,10 @@ const createJsonSqlitePersister = (
|
|
|
597
596
|
await refreshSchema();
|
|
598
597
|
await saveTable(
|
|
599
598
|
storeTableName,
|
|
600
|
-
|
|
599
|
+
storeIdColumnName,
|
|
601
600
|
{
|
|
602
601
|
[SINGLE_ROW_ID]: {
|
|
603
|
-
[
|
|
602
|
+
[storeColumnName]: jsonStringWithUndefined(getContent() ?? null),
|
|
604
603
|
},
|
|
605
604
|
},
|
|
606
605
|
true,
|
|
@@ -614,7 +613,7 @@ const createJsonSqlitePersister = (
|
|
|
614
613
|
addPersisterListener,
|
|
615
614
|
delPersisterListener,
|
|
616
615
|
onIgnoredError,
|
|
617
|
-
|
|
616
|
+
supportedStoreType,
|
|
618
617
|
{[getThing]: () => db},
|
|
619
618
|
db,
|
|
620
619
|
);
|
|
@@ -627,6 +626,7 @@ const createTabularSqlitePersister = (
|
|
|
627
626
|
addPersisterListener,
|
|
628
627
|
delPersisterListener,
|
|
629
628
|
onIgnoredError,
|
|
629
|
+
supportedStoreType,
|
|
630
630
|
[
|
|
631
631
|
tablesLoadConfig,
|
|
632
632
|
tablesSaveConfig,
|
|
@@ -720,17 +720,21 @@ const createTabularSqlitePersister = (
|
|
|
720
720
|
addPersisterListener,
|
|
721
721
|
delPersisterListener,
|
|
722
722
|
onIgnoredError,
|
|
723
|
-
|
|
723
|
+
supportedStoreType,
|
|
724
724
|
{[getThing]: () => db},
|
|
725
725
|
db,
|
|
726
726
|
);
|
|
727
727
|
return persister;
|
|
728
728
|
};
|
|
729
729
|
|
|
730
|
+
const COLUMN_NAME = 'ColumnName';
|
|
731
|
+
const STORE = 'store';
|
|
730
732
|
const JSON$1 = 'json';
|
|
733
|
+
const STORE_TABLE_NAME = STORE + 'TableName';
|
|
734
|
+
const STORE_ID_COLUMN_NAME = STORE + 'Id' + COLUMN_NAME;
|
|
735
|
+
const STORE_COLUMN_NAME = STORE + COLUMN_NAME;
|
|
731
736
|
const AUTO_LOAD_INTERVAL_SECONDS = 'autoLoadIntervalSeconds';
|
|
732
|
-
const
|
|
733
|
-
const ROW_ID_COLUMN_NAME = 'rowIdColumnName';
|
|
737
|
+
const ROW_ID_COLUMN_NAME = 'rowId' + COLUMN_NAME;
|
|
734
738
|
const TABLE_ID = 'tableId';
|
|
735
739
|
const TABLE_NAME = 'tableName';
|
|
736
740
|
const DELETE_EMPTY_COLUMNS = 'deleteEmptyColumns';
|
|
@@ -755,7 +759,8 @@ const getDefaultedTabularConfigMap = (
|
|
|
755
759
|
configsObj,
|
|
756
760
|
defaultObj,
|
|
757
761
|
tableField,
|
|
758
|
-
|
|
762
|
+
exclude,
|
|
763
|
+
then,
|
|
759
764
|
) => {
|
|
760
765
|
const configMap = mapNew();
|
|
761
766
|
objToArray(configsObj, (configObj, id) => {
|
|
@@ -769,7 +774,8 @@ const getDefaultedTabularConfigMap = (
|
|
|
769
774
|
0,
|
|
770
775
|
objSize(defaultObj),
|
|
771
776
|
);
|
|
772
|
-
if (!isUndefined(defaultedConfig[0]) && !
|
|
777
|
+
if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
778
|
+
then(id, defaultedConfig[0]);
|
|
773
779
|
mapSet(configMap, id, defaultedConfig);
|
|
774
780
|
}
|
|
775
781
|
});
|
|
@@ -779,11 +785,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
779
785
|
const config = getDefaultedConfig(configOrStoreTableName);
|
|
780
786
|
const autoLoadIntervalSeconds = config[AUTO_LOAD_INTERVAL_SECONDS];
|
|
781
787
|
if (config.mode == JSON$1) {
|
|
782
|
-
const
|
|
788
|
+
const storeTableName = config[STORE_TABLE_NAME] ?? TINYBASE;
|
|
783
789
|
return [
|
|
784
790
|
1,
|
|
785
791
|
autoLoadIntervalSeconds,
|
|
786
|
-
[
|
|
792
|
+
[
|
|
793
|
+
storeTableName,
|
|
794
|
+
config[STORE_ID_COLUMN_NAME] ?? DEFAULT_ROW_ID_COLUMN_NAME,
|
|
795
|
+
config[STORE_COLUMN_NAME] ?? STORE,
|
|
796
|
+
],
|
|
787
797
|
setNew(storeTableName),
|
|
788
798
|
];
|
|
789
799
|
}
|
|
@@ -795,13 +805,14 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
795
805
|
);
|
|
796
806
|
const valuesTable = valuesConfig[2];
|
|
797
807
|
const managedTableNames = setNew(valuesTable);
|
|
808
|
+
const excludedTableNames = setNew(valuesTable);
|
|
798
809
|
const tabularConfig = [
|
|
799
810
|
getDefaultedTabularConfigMap(
|
|
800
811
|
load,
|
|
801
812
|
{[TABLE_ID]: null, [ROW_ID_COLUMN_NAME]: DEFAULT_ROW_ID_COLUMN_NAME},
|
|
802
813
|
TABLE_ID,
|
|
803
|
-
(tableName) =>
|
|
804
|
-
|
|
814
|
+
(tableName) => collHas(excludedTableNames, tableName),
|
|
815
|
+
(tableName) => setAdd(managedTableNames, tableName),
|
|
805
816
|
),
|
|
806
817
|
getDefaultedTabularConfigMap(
|
|
807
818
|
save,
|
|
@@ -812,15 +823,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
812
823
|
[DELETE_EMPTY_TABLE]: 0,
|
|
813
824
|
},
|
|
814
825
|
TABLE_NAME,
|
|
815
|
-
(_, tableName) =>
|
|
816
|
-
|
|
826
|
+
(_, tableName) => collHas(excludedTableNames, tableName),
|
|
827
|
+
(_, tableName) => setAdd(managedTableNames, tableName),
|
|
817
828
|
),
|
|
818
829
|
valuesConfig,
|
|
819
830
|
];
|
|
820
831
|
return [0, autoLoadIntervalSeconds, tabularConfig, managedTableNames];
|
|
821
832
|
};
|
|
822
833
|
|
|
823
|
-
const PRAGMA = '
|
|
834
|
+
const PRAGMA = 'pragma_';
|
|
824
835
|
const DATA_VERSION = 'data_version';
|
|
825
836
|
const SCHEMA_VERSION = 'schema_version';
|
|
826
837
|
const createSqlitePersister = (
|
|
@@ -831,6 +842,7 @@ const createSqlitePersister = (
|
|
|
831
842
|
delUpdateListener,
|
|
832
843
|
onSqlCommand,
|
|
833
844
|
onIgnoredError,
|
|
845
|
+
supportedStoreType,
|
|
834
846
|
db,
|
|
835
847
|
getThing = 'getDb',
|
|
836
848
|
useOnConflict,
|
|
@@ -838,7 +850,6 @@ const createSqlitePersister = (
|
|
|
838
850
|
let dataVersion;
|
|
839
851
|
let schemaVersion;
|
|
840
852
|
let totalChanges;
|
|
841
|
-
const CHANGES_COLUMN = 'c';
|
|
842
853
|
const [
|
|
843
854
|
isJson,
|
|
844
855
|
autoLoadIntervalSeconds,
|
|
@@ -848,23 +859,17 @@ const createSqlitePersister = (
|
|
|
848
859
|
const addPersisterListener = (listener) => [
|
|
849
860
|
startInterval(async () => {
|
|
850
861
|
try {
|
|
851
|
-
const
|
|
852
|
-
DATA_VERSION
|
|
853
|
-
|
|
854
|
-
const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
|
|
855
|
-
SCHEMA_VERSION
|
|
856
|
-
];
|
|
857
|
-
const newTotalChanges = (
|
|
858
|
-
await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
|
|
859
|
-
)[0][CHANGES_COLUMN];
|
|
862
|
+
const [{d, s, c}] = await cmd(
|
|
863
|
+
`SELECT ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
864
|
+
);
|
|
860
865
|
if (
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
866
|
+
d != (dataVersion ??= d) ||
|
|
867
|
+
s != (schemaVersion ??= s) ||
|
|
868
|
+
c != (totalChanges ??= c)
|
|
864
869
|
) {
|
|
865
870
|
listener();
|
|
866
|
-
dataVersion =
|
|
867
|
-
schemaVersion =
|
|
871
|
+
dataVersion = d;
|
|
872
|
+
schemaVersion = s;
|
|
868
873
|
}
|
|
869
874
|
} catch {}
|
|
870
875
|
}, autoLoadIntervalSeconds),
|
|
@@ -874,7 +879,7 @@ const createSqlitePersister = (
|
|
|
874
879
|
];
|
|
875
880
|
const delPersisterListener = ([interval, listeningHandle]) => {
|
|
876
881
|
stopInterval(interval);
|
|
877
|
-
dataVersion = schemaVersion = null;
|
|
882
|
+
dataVersion = schemaVersion = totalChanges = null;
|
|
878
883
|
delUpdateListener(listeningHandle);
|
|
879
884
|
};
|
|
880
885
|
return (isJson ? createJsonSqlitePersister : createTabularSqlitePersister)(
|
|
@@ -888,6 +893,7 @@ const createSqlitePersister = (
|
|
|
888
893
|
addPersisterListener,
|
|
889
894
|
delPersisterListener,
|
|
890
895
|
onIgnoredError,
|
|
896
|
+
supportedStoreType,
|
|
891
897
|
defaultedConfig,
|
|
892
898
|
collValues(managedTableNamesSet),
|
|
893
899
|
db,
|
|
@@ -925,6 +931,7 @@ const createPowerSyncPersister = (
|
|
|
925
931
|
(abortController) => abortController.abort(),
|
|
926
932
|
onSqlCommand,
|
|
927
933
|
onIgnoredError,
|
|
934
|
+
1,
|
|
928
935
|
powerSync,
|
|
929
936
|
'getPowerSync',
|
|
930
937
|
useOnConflict,
|
|
@@ -52,7 +52,7 @@ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
|
52
52
|
const scheduleRunning = mapNew();
|
|
53
53
|
const scheduleActions = mapNew();
|
|
54
54
|
const getStoreFunctions = (supportedStoreType = 1, store) =>
|
|
55
|
-
supportedStoreType > 1 && '
|
|
55
|
+
supportedStoreType > 1 && 'merge' in store
|
|
56
56
|
? [
|
|
57
57
|
1,
|
|
58
58
|
store.getMergeableContent,
|