tinybase 5.0.0-beta.1 → 5.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/mergeable-store.cjs +1 -0
- package/lib/cjs/mergeable-store.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs-es6/mergeable-store.cjs +1 -0
- package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
- package/lib/debug/mergeable-store.js +1863 -0
- package/lib/debug/persisters/persister-automerge.js +54 -53
- package/lib/debug/persisters/persister-browser.js +28 -18
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +80 -57
- package/lib/debug/persisters/persister-electric-sql.js +80 -57
- package/lib/debug/persisters/persister-expo-sqlite-next.js +80 -57
- package/lib/debug/persisters/persister-expo-sqlite.js +80 -57
- package/lib/debug/persisters/persister-file.js +27 -18
- package/lib/debug/persisters/persister-indexed-db.js +34 -23
- package/lib/debug/persisters/persister-partykit-client.js +26 -23
- package/lib/debug/persisters/persister-partykit-server.js +11 -21
- package/lib/debug/persisters/persister-remote.js +28 -18
- package/lib/debug/persisters/persister-sqlite-wasm.js +80 -57
- package/lib/debug/persisters/persister-sqlite3.js +80 -57
- package/lib/debug/persisters/persister-yjs.js +50 -48
- package/lib/debug/persisters.js +27 -18
- package/lib/debug/queries.js +2 -2
- package/lib/debug/store.js +63 -71
- package/lib/debug/tinybase.js +354 -90
- package/lib/debug/tools.js +13 -15
- package/lib/debug/ui-react-dom.js +115 -119
- package/lib/es6/mergeable-store.js +1 -0
- package/lib/es6/mergeable-store.js.gz +0 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-server.js +1 -1
- package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react-dom.js +1 -1
- package/lib/es6/ui-react-dom.js.gz +0 -0
- package/lib/mergeable-store.js +1 -0
- package/lib/mergeable-store.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-partykit-server.js +1 -1
- package/lib/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/mergeable-store.d.ts +79 -0
- package/lib/types/persisters/persister-automerge.d.ts +8 -7
- package/lib/types/persisters/persister-browser.d.ts +2 -0
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +1 -0
- package/lib/types/persisters/persister-electric-sql.d.ts +1 -0
- package/lib/types/persisters/persister-expo-sqlite-next.d.ts +1 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +1 -0
- package/lib/types/persisters/persister-file.d.ts +1 -0
- package/lib/types/persisters/persister-indexed-db.d.ts +1 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +1 -0
- package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
- package/lib/types/persisters/persister-remote.d.ts +1 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +1 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +1 -0
- package/lib/types/persisters/persister-yjs.d.ts +1 -0
- package/lib/types/persisters.d.ts +50 -30
- package/lib/types/store.d.ts +241 -186
- package/lib/types/tinybase.d.ts +1 -0
- package/lib/types/tools.d.ts +2 -2
- package/lib/types/ui-react.d.ts +1 -0
- package/lib/types/with-schemas/internal/store.d.ts +4 -0
- package/lib/types/with-schemas/mergeable-store.d.ts +112 -0
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +8 -7
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +2 -0
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-file.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +1 -0
- package/lib/types/with-schemas/persisters.d.ts +81 -45
- package/lib/types/with-schemas/store.d.ts +364 -273
- package/lib/types/with-schemas/tinybase.d.ts +1 -0
- package/lib/types/with-schemas/tools.d.ts +2 -2
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- package/lib/umd/mergeable-store.js +1 -0
- package/lib/umd/mergeable-store.js.gz +0 -0
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-server.js +1 -1
- package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react-dom.js +1 -1
- package/lib/umd/ui-react-dom.js.gz +0 -0
- package/lib/umd-es6/mergeable-store.js +1 -0
- package/lib/umd-es6/mergeable-store.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.js.gz +0 -0
- package/package.json +39 -35
- package/readme.md +2 -2
package/lib/debug/tools.js
CHANGED
|
@@ -69,7 +69,7 @@ const isObject = (obj) =>
|
|
|
69
69
|
/* istanbul ignore next */
|
|
70
70
|
() => true,
|
|
71
71
|
);
|
|
72
|
-
const
|
|
72
|
+
const objToArray = (obj, cb) =>
|
|
73
73
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
74
74
|
const objSize = (obj) => size(objIds(obj));
|
|
75
75
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
@@ -101,6 +101,7 @@ const A_FUNCTION_FOR = 'A function for';
|
|
|
101
101
|
const AND_REGISTERS =
|
|
102
102
|
', and registers a listener so that any changes to that result will cause a re-render';
|
|
103
103
|
const CALLBACK = 'Callback';
|
|
104
|
+
const CHANGES = 'Changes';
|
|
104
105
|
const COUNT = 'Count';
|
|
105
106
|
const DEL = 'Del';
|
|
106
107
|
const DEPS = 'Deps';
|
|
@@ -128,7 +129,6 @@ const SORTED_ARGS = ', descending?: boolean, offset?: number, limit?: number';
|
|
|
128
129
|
const SQUARE_BRACKETS = '[]';
|
|
129
130
|
const THE_STORE = 'the Store';
|
|
130
131
|
const TRANSACTION = 'Transaction';
|
|
131
|
-
const TRANSACTION_CHANGES = TRANSACTION + 'Changes';
|
|
132
132
|
const TRANSACTION_ = lower(TRANSACTION);
|
|
133
133
|
const TRANSACTION_DOC =
|
|
134
134
|
'Execute a ' + TRANSACTION_ + ' to make multiple mutations';
|
|
@@ -407,7 +407,7 @@ const getCreateFunction = (getFunction, initFunction) => {
|
|
|
407
407
|
|
|
408
408
|
const getSchemaFunctions = (tablesSchema, valuesSchema, addConstant) => {
|
|
409
409
|
const mapTablesSchema = (callback) =>
|
|
410
|
-
|
|
410
|
+
objToArray(tablesSchema, (_, tableId) => {
|
|
411
411
|
return callback(
|
|
412
412
|
tableId,
|
|
413
413
|
camel(tableId, 1),
|
|
@@ -415,7 +415,7 @@ const getSchemaFunctions = (tablesSchema, valuesSchema, addConstant) => {
|
|
|
415
415
|
);
|
|
416
416
|
});
|
|
417
417
|
const mapCellSchema = (tableId, callback) =>
|
|
418
|
-
|
|
418
|
+
objToArray(tablesSchema[tableId], (cellSchema, cellId) =>
|
|
419
419
|
callback(
|
|
420
420
|
cellId,
|
|
421
421
|
cellSchema[TYPE],
|
|
@@ -425,7 +425,7 @@ const getSchemaFunctions = (tablesSchema, valuesSchema, addConstant) => {
|
|
|
425
425
|
),
|
|
426
426
|
);
|
|
427
427
|
const mapValuesSchema = (callback) =>
|
|
428
|
-
|
|
428
|
+
objToArray(valuesSchema, (valueSchema, valueId) =>
|
|
429
429
|
callback(
|
|
430
430
|
valueId,
|
|
431
431
|
valueSchema[TYPE],
|
|
@@ -890,8 +890,7 @@ const getTypeFunctions = (
|
|
|
890
890
|
const getTransactionListenerType = (storeInstance, storeType) =>
|
|
891
891
|
addType(
|
|
892
892
|
TRANSACTION + LISTENER,
|
|
893
|
-
`(${storeInstance}: ${storeType}
|
|
894
|
-
RETURNS_VOID,
|
|
893
|
+
`(${storeInstance}: ${storeType})` + RETURNS_VOID,
|
|
895
894
|
A_FUNCTION_FOR + ' listening to the completion of a ' + TRANSACTION_,
|
|
896
895
|
);
|
|
897
896
|
return [getTablesTypes, getValuesTypes, getTransactionListenerType];
|
|
@@ -1701,13 +1700,13 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
|
|
|
1701
1700
|
'[tables, values]',
|
|
1702
1701
|
);
|
|
1703
1702
|
addProxyMethod(
|
|
1704
|
-
|
|
1703
|
+
7,
|
|
1705
1704
|
EMPTY_STRING,
|
|
1706
|
-
|
|
1705
|
+
'applyChanges',
|
|
1707
1706
|
storeType,
|
|
1708
|
-
`Applies a set of ${
|
|
1709
|
-
'
|
|
1710
|
-
'
|
|
1707
|
+
`Applies a set of ${CHANGES} to the Store`,
|
|
1708
|
+
'changes: ' + CHANGES,
|
|
1709
|
+
'changes',
|
|
1711
1710
|
);
|
|
1712
1711
|
mapForEach(mapCellOrValueTypes, (type, mapCellType) =>
|
|
1713
1712
|
addType(
|
|
@@ -1724,9 +1723,8 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
|
|
|
1724
1723
|
'IdOrNull',
|
|
1725
1724
|
JSON$1,
|
|
1726
1725
|
'Store',
|
|
1727
|
-
|
|
1726
|
+
CHANGES,
|
|
1728
1727
|
);
|
|
1729
|
-
addImport(0, TINYBASE, 'Get' + TRANSACTION_CHANGES, 'GetTransactionLog');
|
|
1730
1728
|
addProxyMethod(
|
|
1731
1729
|
0,
|
|
1732
1730
|
EMPTY_STRING,
|
|
@@ -3111,7 +3109,7 @@ const getStoreUiReactApi = (
|
|
|
3111
3109
|
PROVIDER,
|
|
3112
3110
|
`{${storeInstance}, ${storeInstance}ById, children}: ` +
|
|
3113
3111
|
providerPropsType +
|
|
3114
|
-
' & {children: React.ReactNode}',
|
|
3112
|
+
' & {readonly children: React.ReactNode}',
|
|
3115
3113
|
[
|
|
3116
3114
|
'{',
|
|
3117
3115
|
USE_CONTEXT,
|
|
@@ -138,14 +138,15 @@ const isObject = (obj) =>
|
|
|
138
138
|
() => true,
|
|
139
139
|
);
|
|
140
140
|
const objNew = (entries = []) => object.fromEntries(entries);
|
|
141
|
-
const
|
|
142
|
-
const objHas = (obj, id) => !isUndefined(objGet(obj, id));
|
|
141
|
+
const objHas = (obj, id) => id in obj;
|
|
143
142
|
const objDel = (obj, id) => {
|
|
144
143
|
delete obj[id];
|
|
145
144
|
return obj;
|
|
146
145
|
};
|
|
147
|
-
const
|
|
146
|
+
const objToArray = (obj, cb) =>
|
|
148
147
|
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
148
|
+
const objMap = (obj, cb) =>
|
|
149
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
149
150
|
const objSize = (obj) => size(objIds(obj));
|
|
150
151
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
151
152
|
|
|
@@ -207,7 +208,7 @@ const DONE_SVG = PRE + `<path d='${PENCIL}M20 20l60 60' />` + POST;
|
|
|
207
208
|
|
|
208
209
|
const SCROLLBAR = '*::-webkit-scrollbar';
|
|
209
210
|
const APP_STYLESHEET = arrayJoin(
|
|
210
|
-
|
|
211
|
+
objToArray(
|
|
211
212
|
{
|
|
212
213
|
'': 'all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999',
|
|
213
214
|
'*': 'all:revert',
|
|
@@ -433,21 +434,16 @@ const useSortingAndPagination = (
|
|
|
433
434
|
const useCells = (defaultCellIds, customCells, defaultCellComponent) =>
|
|
434
435
|
useMemo(() => {
|
|
435
436
|
const cellIds = customCells ?? defaultCellIds;
|
|
436
|
-
return
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
{
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
? {label: labelOrCustomCell}
|
|
447
|
-
: labelOrCustomCell),
|
|
448
|
-
},
|
|
449
|
-
],
|
|
450
|
-
),
|
|
437
|
+
return objMap(
|
|
438
|
+
isArray(cellIds)
|
|
439
|
+
? objNew(arrayMap(cellIds, (cellId) => [cellId, cellId]))
|
|
440
|
+
: cellIds,
|
|
441
|
+
(labelOrCustomCell, cellId) => ({
|
|
442
|
+
...{label: cellId, component: defaultCellComponent},
|
|
443
|
+
...(isString(labelOrCustomCell)
|
|
444
|
+
? {label: labelOrCustomCell}
|
|
445
|
+
: labelOrCustomCell),
|
|
446
|
+
}),
|
|
451
447
|
);
|
|
452
448
|
}, [customCells, defaultCellComponent, defaultCellIds]);
|
|
453
449
|
const HtmlTable = ({
|
|
@@ -484,7 +480,7 @@ const HtmlTable = ({
|
|
|
484
480
|
label: 'Id',
|
|
485
481
|
onClick: handleSort,
|
|
486
482
|
}),
|
|
487
|
-
|
|
483
|
+
objToArray(cells, ({label}, cellId) =>
|
|
488
484
|
/* @__PURE__ */ createElement(HtmlHeaderCell, {
|
|
489
485
|
key: cellId,
|
|
490
486
|
cellId,
|
|
@@ -505,17 +501,19 @@ const HtmlTable = ({
|
|
|
505
501
|
idColumn === false
|
|
506
502
|
? null
|
|
507
503
|
: /* @__PURE__ */ createElement('th', null, rowId),
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
504
|
+
objToArray(
|
|
505
|
+
cells,
|
|
506
|
+
({component: CellView2, getComponentProps}, cellId) =>
|
|
507
|
+
/* @__PURE__ */ createElement(
|
|
508
|
+
'td',
|
|
509
|
+
{key: cellId},
|
|
510
|
+
/* @__PURE__ */ createElement(CellView2, {
|
|
511
|
+
...getProps(getComponentProps, rowId, cellId),
|
|
512
|
+
...cellComponentProps,
|
|
513
|
+
rowId,
|
|
514
|
+
cellId,
|
|
515
|
+
}),
|
|
516
|
+
),
|
|
519
517
|
),
|
|
520
518
|
),
|
|
521
519
|
),
|
|
@@ -569,7 +567,7 @@ const RelationshipInHtmlRow = ({
|
|
|
569
567
|
/* @__PURE__ */ createElement('th', null, localRowId),
|
|
570
568
|
/* @__PURE__ */ createElement('th', null, remoteRowId),
|
|
571
569
|
),
|
|
572
|
-
|
|
570
|
+
objToArray(
|
|
573
571
|
cells,
|
|
574
572
|
({component: CellView2, getComponentProps}, compoundCellId) => {
|
|
575
573
|
const [tableId, cellId] = compoundCellId.split(DOT, 2);
|
|
@@ -885,7 +883,7 @@ const RelationshipInHtmlTable = ({
|
|
|
885
883
|
'.Id',
|
|
886
884
|
),
|
|
887
885
|
),
|
|
888
|
-
|
|
886
|
+
objToArray(cells, ({label}, cellId) =>
|
|
889
887
|
/* @__PURE__ */ createElement('th', {key: cellId}, label),
|
|
890
888
|
),
|
|
891
889
|
),
|
|
@@ -1538,7 +1536,7 @@ const mapEnsure = (map, key, getDefaultValue) => {
|
|
|
1538
1536
|
return mapGet(map, key);
|
|
1539
1537
|
};
|
|
1540
1538
|
const mapMatch = (map, obj, set, del = mapSet) => {
|
|
1541
|
-
|
|
1539
|
+
objToArray(obj, (value, id) => set(map, id, value));
|
|
1542
1540
|
mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
|
|
1543
1541
|
return map;
|
|
1544
1542
|
};
|
|
@@ -1600,6 +1598,7 @@ const createCustomPersister = (
|
|
|
1600
1598
|
addPersisterListener,
|
|
1601
1599
|
delPersisterListener,
|
|
1602
1600
|
onIgnoredError,
|
|
1601
|
+
supportsMergeableStore,
|
|
1603
1602
|
[getThing, thing] = [],
|
|
1604
1603
|
scheduleId = [],
|
|
1605
1604
|
) => {
|
|
@@ -1612,6 +1611,10 @@ const createCustomPersister = (
|
|
|
1612
1611
|
let listeningHandle;
|
|
1613
1612
|
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
1614
1613
|
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
1614
|
+
const getContent =
|
|
1615
|
+
(supportsMergeableStore ? store.getMergeableContent : null) ??
|
|
1616
|
+
store.getContent;
|
|
1617
|
+
const getChanges = store.getTransactionChanges;
|
|
1615
1618
|
const run = async () => {
|
|
1616
1619
|
/* istanbul ignore else */
|
|
1617
1620
|
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
@@ -1647,7 +1650,10 @@ const createCustomPersister = (
|
|
|
1647
1650
|
load: async (initialTables, initialValues) =>
|
|
1648
1651
|
await loadLock(async () => {
|
|
1649
1652
|
try {
|
|
1650
|
-
|
|
1653
|
+
const content = await getPersisted();
|
|
1654
|
+
(supportsMergeableStore && isString(content[0])
|
|
1655
|
+
? store.applyMergeableChanges
|
|
1656
|
+
: store.setContent)(content);
|
|
1651
1657
|
} catch {
|
|
1652
1658
|
store.setContent([initialTables, initialValues]);
|
|
1653
1659
|
}
|
|
@@ -1657,16 +1663,14 @@ const createCustomPersister = (
|
|
|
1657
1663
|
await persister.load(initialTables, initialValues);
|
|
1658
1664
|
listening = 1;
|
|
1659
1665
|
listeningHandle = addPersisterListener(
|
|
1660
|
-
async (
|
|
1661
|
-
if (
|
|
1662
|
-
const
|
|
1663
|
-
await loadLock(async () =>
|
|
1664
|
-
store.setTransactionChanges(transactionChanges),
|
|
1665
|
-
);
|
|
1666
|
+
async (getContent2, getChanges2) => {
|
|
1667
|
+
if (getChanges2) {
|
|
1668
|
+
const changes = getChanges2();
|
|
1669
|
+
await loadLock(async () => store.applyChanges(changes));
|
|
1666
1670
|
} else {
|
|
1667
1671
|
await loadLock(async () => {
|
|
1668
1672
|
try {
|
|
1669
|
-
store.setContent(
|
|
1673
|
+
store.setContent(getContent2?.() ?? (await getPersisted()));
|
|
1670
1674
|
} catch (error) {
|
|
1671
1675
|
onIgnoredError?.(error);
|
|
1672
1676
|
}
|
|
@@ -1684,7 +1688,7 @@ const createCustomPersister = (
|
|
|
1684
1688
|
}
|
|
1685
1689
|
return persister;
|
|
1686
1690
|
},
|
|
1687
|
-
save: async (
|
|
1691
|
+
save: async (getChanges2) => {
|
|
1688
1692
|
/* istanbul ignore else */
|
|
1689
1693
|
if (loadSave != 1) {
|
|
1690
1694
|
loadSave = 2;
|
|
@@ -1693,7 +1697,7 @@ const createCustomPersister = (
|
|
|
1693
1697
|
}
|
|
1694
1698
|
await persister.schedule(async () => {
|
|
1695
1699
|
try {
|
|
1696
|
-
await setPersisted(
|
|
1700
|
+
await setPersisted(getContent, getChanges2);
|
|
1697
1701
|
} catch (error) {
|
|
1698
1702
|
/* istanbul ignore next */
|
|
1699
1703
|
onIgnoredError?.(error);
|
|
@@ -1705,14 +1709,12 @@ const createCustomPersister = (
|
|
|
1705
1709
|
},
|
|
1706
1710
|
startAutoSave: async () => {
|
|
1707
1711
|
await persister.stopAutoSave().save();
|
|
1708
|
-
listenerId = store.addDidFinishTransactionListener(
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
},
|
|
1715
|
-
);
|
|
1712
|
+
listenerId = store.addDidFinishTransactionListener(() => {
|
|
1713
|
+
const [tableChanges, valueChanges] = getChanges();
|
|
1714
|
+
if (!objIsEmpty(tableChanges) || !objIsEmpty(valueChanges)) {
|
|
1715
|
+
persister.save(() => [tableChanges, valueChanges]);
|
|
1716
|
+
}
|
|
1717
|
+
});
|
|
1716
1718
|
return persister;
|
|
1717
1719
|
},
|
|
1718
1720
|
stopAutoSave: () => {
|
|
@@ -1764,6 +1766,7 @@ const createStoragePersister = (
|
|
|
1764
1766
|
addPersisterListener,
|
|
1765
1767
|
delPersisterListener,
|
|
1766
1768
|
onIgnoredError,
|
|
1769
|
+
false,
|
|
1767
1770
|
['getStorageName', storageName],
|
|
1768
1771
|
);
|
|
1769
1772
|
};
|
|
@@ -1876,7 +1879,7 @@ const validate = (obj, validateChild, onInvalidObj) => {
|
|
|
1876
1879
|
onInvalidObj?.();
|
|
1877
1880
|
return false;
|
|
1878
1881
|
}
|
|
1879
|
-
|
|
1882
|
+
objToArray(obj, (child, id2) => {
|
|
1880
1883
|
if (!validateChild(child, id2)) {
|
|
1881
1884
|
objDel(obj, id2);
|
|
1882
1885
|
}
|
|
@@ -1897,6 +1900,7 @@ const createStore = () => {
|
|
|
1897
1900
|
let hadTables = false;
|
|
1898
1901
|
let hadValues = false;
|
|
1899
1902
|
let transactions = 0;
|
|
1903
|
+
let postTransactionListener;
|
|
1900
1904
|
const changedTableIds = mapNew();
|
|
1901
1905
|
const changedTableCellIds = mapNew();
|
|
1902
1906
|
const changedRowCount = mapNew();
|
|
@@ -2538,44 +2542,6 @@ const createStore = () => {
|
|
|
2538
2542
|
transaction(() => actions(...arrayMap(args, id)));
|
|
2539
2543
|
return store;
|
|
2540
2544
|
};
|
|
2541
|
-
const getTransactionChanges = () => [
|
|
2542
|
-
mapToObj(
|
|
2543
|
-
changedCells,
|
|
2544
|
-
(table, tableId) =>
|
|
2545
|
-
mapGet(changedTableIds, tableId) === -1
|
|
2546
|
-
? null
|
|
2547
|
-
: mapToObj(
|
|
2548
|
-
table,
|
|
2549
|
-
(row, rowId) =>
|
|
2550
|
-
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
2551
|
-
? null
|
|
2552
|
-
: mapToObj(
|
|
2553
|
-
row,
|
|
2554
|
-
([, newCell]) => newCell ?? null,
|
|
2555
|
-
(_, changedCell) => pairIsEqual(changedCell),
|
|
2556
|
-
),
|
|
2557
|
-
objIsEmpty,
|
|
2558
|
-
),
|
|
2559
|
-
objIsEmpty,
|
|
2560
|
-
),
|
|
2561
|
-
mapToObj(
|
|
2562
|
-
changedValues,
|
|
2563
|
-
([, newValue]) => newValue ?? null,
|
|
2564
|
-
(_, changedValue) => pairIsEqual(changedValue),
|
|
2565
|
-
),
|
|
2566
|
-
];
|
|
2567
|
-
const getTransactionLog = () => ({
|
|
2568
|
-
cellsTouched,
|
|
2569
|
-
valuesTouched,
|
|
2570
|
-
changedCells: mapToObj3(changedCells, pairClone, pairIsEqual),
|
|
2571
|
-
invalidCells: mapToObj3(invalidCells),
|
|
2572
|
-
changedValues: mapToObj(changedValues, pairClone, pairIsEqual),
|
|
2573
|
-
invalidValues: mapToObj(invalidValues),
|
|
2574
|
-
changedTableIds: mapToObj(changedTableIds),
|
|
2575
|
-
changedRowIds: mapToObj2(changedRowIds),
|
|
2576
|
-
changedCellIds: mapToObj3(changedCellIds),
|
|
2577
|
-
changedValueIds: mapToObj(changedValueIds),
|
|
2578
|
-
});
|
|
2579
2545
|
const getContent = () => [getTables(), getValues()];
|
|
2580
2546
|
const getTables = () => mapToObj3(tablesMap);
|
|
2581
2547
|
const getTableIds = () => mapKeys(tablesMap);
|
|
@@ -2668,7 +2634,7 @@ const createStore = () => {
|
|
|
2668
2634
|
(tableId2, rowId2) => {
|
|
2669
2635
|
if (validateRow(tableId2, rowId2, partialRow, 1)) {
|
|
2670
2636
|
const table = getOrCreateTable(tableId2);
|
|
2671
|
-
|
|
2637
|
+
objToArray(partialRow, (cell, cellId) =>
|
|
2672
2638
|
setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),
|
|
2673
2639
|
);
|
|
2674
2640
|
}
|
|
@@ -2706,7 +2672,7 @@ const createStore = () => {
|
|
|
2706
2672
|
const setPartialValues = (partialValues) =>
|
|
2707
2673
|
fluentTransaction(() =>
|
|
2708
2674
|
validateValues(partialValues, 1)
|
|
2709
|
-
?
|
|
2675
|
+
? objToArray(partialValues, (value, valueId) =>
|
|
2710
2676
|
setValidValue(valueId, value),
|
|
2711
2677
|
)
|
|
2712
2678
|
: 0,
|
|
@@ -2723,20 +2689,20 @@ const createStore = () => {
|
|
|
2723
2689
|
),
|
|
2724
2690
|
valueId,
|
|
2725
2691
|
);
|
|
2726
|
-
const
|
|
2692
|
+
const applyChanges = (changes) =>
|
|
2727
2693
|
fluentTransaction(() => {
|
|
2728
|
-
|
|
2694
|
+
objToArray(changes[0], (table, tableId) =>
|
|
2729
2695
|
isUndefined(table)
|
|
2730
2696
|
? delTable(tableId)
|
|
2731
|
-
:
|
|
2697
|
+
: objToArray(table, (row, rowId) =>
|
|
2732
2698
|
isUndefined(row)
|
|
2733
2699
|
? delRow(tableId, rowId)
|
|
2734
|
-
:
|
|
2700
|
+
: objToArray(row, (cell, cellId) =>
|
|
2735
2701
|
setOrDelCell(store, tableId, rowId, cellId, cell),
|
|
2736
2702
|
),
|
|
2737
2703
|
),
|
|
2738
2704
|
);
|
|
2739
|
-
|
|
2705
|
+
objToArray(changes[1], (value, valueId) =>
|
|
2740
2706
|
setOrDelValue(store, valueId, value),
|
|
2741
2707
|
);
|
|
2742
2708
|
});
|
|
@@ -2863,15 +2829,48 @@ const createStore = () => {
|
|
|
2863
2829
|
transactions++;
|
|
2864
2830
|
}
|
|
2865
2831
|
if (transactions == 1) {
|
|
2866
|
-
callListeners(
|
|
2867
|
-
startTransactionListeners,
|
|
2868
|
-
void 0,
|
|
2869
|
-
getTransactionChanges,
|
|
2870
|
-
getTransactionLog,
|
|
2871
|
-
);
|
|
2832
|
+
callListeners(startTransactionListeners, void 0);
|
|
2872
2833
|
}
|
|
2873
2834
|
return store;
|
|
2874
2835
|
};
|
|
2836
|
+
const getTransactionChanges = () => [
|
|
2837
|
+
mapToObj(
|
|
2838
|
+
changedCells,
|
|
2839
|
+
(table, tableId) =>
|
|
2840
|
+
mapGet(changedTableIds, tableId) === -1
|
|
2841
|
+
? void 0
|
|
2842
|
+
: mapToObj(
|
|
2843
|
+
table,
|
|
2844
|
+
(row, rowId) =>
|
|
2845
|
+
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
2846
|
+
? void 0
|
|
2847
|
+
: mapToObj(
|
|
2848
|
+
row,
|
|
2849
|
+
([, newCell]) => newCell,
|
|
2850
|
+
(_, changedCell) => pairIsEqual(changedCell),
|
|
2851
|
+
),
|
|
2852
|
+
objIsEmpty,
|
|
2853
|
+
),
|
|
2854
|
+
objIsEmpty,
|
|
2855
|
+
),
|
|
2856
|
+
mapToObj(
|
|
2857
|
+
changedValues,
|
|
2858
|
+
([, newValue]) => newValue,
|
|
2859
|
+
(_, changedValue) => pairIsEqual(changedValue),
|
|
2860
|
+
),
|
|
2861
|
+
];
|
|
2862
|
+
const getTransactionLog = () => [
|
|
2863
|
+
cellsTouched,
|
|
2864
|
+
valuesTouched,
|
|
2865
|
+
mapToObj3(changedCells, pairClone, pairIsEqual),
|
|
2866
|
+
mapToObj3(invalidCells),
|
|
2867
|
+
mapToObj(changedValues, pairClone, pairIsEqual),
|
|
2868
|
+
mapToObj(invalidValues),
|
|
2869
|
+
mapToObj(changedTableIds),
|
|
2870
|
+
mapToObj2(changedRowIds),
|
|
2871
|
+
mapToObj3(changedCellIds),
|
|
2872
|
+
mapToObj(changedValueIds),
|
|
2873
|
+
];
|
|
2875
2874
|
const finishTransaction = (doRollback) => {
|
|
2876
2875
|
if (transactions > 0) {
|
|
2877
2876
|
transactions--;
|
|
@@ -2887,7 +2886,7 @@ const createStore = () => {
|
|
|
2887
2886
|
if (valuesTouched) {
|
|
2888
2887
|
callValuesListenersForChanges(1);
|
|
2889
2888
|
}
|
|
2890
|
-
if (doRollback?.(
|
|
2889
|
+
if (doRollback?.(store)) {
|
|
2891
2890
|
collForEach(changedCells, (table, tableId) =>
|
|
2892
2891
|
collForEach(table, (row, rowId) =>
|
|
2893
2892
|
collForEach(row, ([oldCell], cellId) =>
|
|
@@ -2900,12 +2899,7 @@ const createStore = () => {
|
|
|
2900
2899
|
);
|
|
2901
2900
|
cellsTouched = valuesTouched = false;
|
|
2902
2901
|
}
|
|
2903
|
-
callListeners(
|
|
2904
|
-
finishTransactionListeners[0],
|
|
2905
|
-
void 0,
|
|
2906
|
-
getTransactionChanges,
|
|
2907
|
-
getTransactionLog,
|
|
2908
|
-
);
|
|
2902
|
+
callListeners(finishTransactionListeners[0], void 0);
|
|
2909
2903
|
transactions = -1;
|
|
2910
2904
|
callInvalidCellListeners(0);
|
|
2911
2905
|
if (cellsTouched) {
|
|
@@ -2915,12 +2909,8 @@ const createStore = () => {
|
|
|
2915
2909
|
if (valuesTouched) {
|
|
2916
2910
|
callValuesListenersForChanges(0);
|
|
2917
2911
|
}
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
void 0,
|
|
2921
|
-
getTransactionChanges,
|
|
2922
|
-
getTransactionLog,
|
|
2923
|
-
);
|
|
2912
|
+
postTransactionListener?.(store);
|
|
2913
|
+
callListeners(finishTransactionListeners[1], void 0);
|
|
2924
2914
|
transactions = 0;
|
|
2925
2915
|
cellsTouched = valuesTouched = false;
|
|
2926
2916
|
hadTables = hasTables();
|
|
@@ -3047,6 +3037,9 @@ const createStore = () => {
|
|
|
3047
3037
|
collSize2(startTransactionListeners) +
|
|
3048
3038
|
pairCollSize2(finishTransactionListeners),
|
|
3049
3039
|
});
|
|
3040
|
+
const addPostTransactionListener = (listener) => {
|
|
3041
|
+
postTransactionListener = listener;
|
|
3042
|
+
};
|
|
3050
3043
|
const store = {
|
|
3051
3044
|
getContent,
|
|
3052
3045
|
getTables,
|
|
@@ -3087,7 +3080,7 @@ const createStore = () => {
|
|
|
3087
3080
|
setValues,
|
|
3088
3081
|
setPartialValues,
|
|
3089
3082
|
setValue,
|
|
3090
|
-
|
|
3083
|
+
applyChanges,
|
|
3091
3084
|
setTablesJson,
|
|
3092
3085
|
setValuesJson,
|
|
3093
3086
|
setJson,
|
|
@@ -3105,6 +3098,8 @@ const createStore = () => {
|
|
|
3105
3098
|
delSchema,
|
|
3106
3099
|
transaction,
|
|
3107
3100
|
startTransaction,
|
|
3101
|
+
getTransactionChanges,
|
|
3102
|
+
getTransactionLog,
|
|
3108
3103
|
finishTransaction,
|
|
3109
3104
|
forEachTable,
|
|
3110
3105
|
forEachTableCell,
|
|
@@ -3122,8 +3117,9 @@ const createStore = () => {
|
|
|
3122
3117
|
createStore,
|
|
3123
3118
|
addListener,
|
|
3124
3119
|
callListeners,
|
|
3120
|
+
addPostTransactionListener,
|
|
3125
3121
|
};
|
|
3126
|
-
|
|
3122
|
+
objToArray(
|
|
3127
3123
|
{
|
|
3128
3124
|
[HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
|
|
3129
3125
|
[TABLES]: [0, tablesListeners],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=e=>typeof e,t="",l=e(t),n=e(!0),s=e(0),a=e(e),r="type",o="default",u="Has",i="Ids",c="Table",d=c+"s",v=c+i,h="Row",g=h+"Count",C=h+i,T="Cell",f=T+i,b="Value",V=b+"s",p=b+i,w=e=>t+e,S=(e,t)=>e.startsWith(t),m=(e,t)=>e.endsWith(t),y=(e,t=0)=>e.charCodeAt(t),R=isFinite,I=e=>null==e,L=(e,t,l)=>I(e)?null==l?void 0:l():t(e),J=e=>e==l||e==n,M=t=>e(t)==a,E=(e,t,l)=>e.slice(t,l),H=e=>e.length,P=(e,t)=>e.forEach(t),F=(e,t)=>e.map(t),O=(e,...t)=>e.push(...t),x=Object,z=e=>x.getPrototypeOf(e),A=x.entries,W=x.keys,k=x.isFrozen,D=x.freeze,N=e=>!I(e)&&L(z(e),(e=>e==x.prototype||I(z(e))),(()=>!0)),j=(e,t)=>t in e,$=(e,t)=>(delete e[t],e),q=(e,t)=>P(A(e),(([e,l])=>t(l,e))),B=(e,t)=>F(A(e),(([e,l])=>t(l,e))),G=e=>N(e)&&0==(e=>H(W(e)))(e),K=e=>{var t;return null!=(t=null==e?void 0:e.size)?t:0},Q=(e,t)=>{var l;return null!=(l=null==e?void 0:e.has(t))&&l},U=e=>I(e)||0==K(e),X=e=>e.clear(),Y=(e,t)=>null==e?void 0:e.forEach(t),Z=(e,t)=>null==e?void 0:e.delete(t),_=e=>new Map(e),ee=e=>{var t;return[...null!=(t=null==e?void 0:e.keys())?t:[]]},te=(e,t)=>null==e?void 0:e.get(t),le=(e,t)=>Y(e,((e,l)=>t(l,e))),ne=(e,t,l)=>I(l)?(Z(e,t),e):null==e?void 0:e.set(t,l),se=(e,t,l)=>(Q(e,t)||ne(e,t,l()),te(e,t)),ae=(e,t,l,n=ne)=>(B(t,((t,n)=>l(e,n,t))),le(e,(l=>j(t,l)?0:n(e,l))),e),re=(e,t,l)=>{const n={};return Y(e,((e,s)=>{const a=t?t(e,s):e;!(null==l?void 0:l(a,e))&&(n[s]=a)})),n},oe=(e,t,l)=>re(e,(e=>re(e,t,l)),G),ue=(e,t,l)=>re(e,(e=>oe(e,t,l)),G),ie=(e,t)=>{const l=_();return Y(e,((e,n)=>{var s;return l.set(n,null!=(s=null==t?void 0:t(e))?s:e)})),l},ce=e=>ie(e,ie),de=e=>ie(e,ce),ve=(e,t,l,n,s=0)=>L((l?se:te)(e,t[s],s>H(t)-2?l:_),(a=>{if(s>H(t)-2)return(null==n?void 0:n(a))&&ne(e,t[s]),a;const r=ve(a,t,l,n,s+1);return U(a)&&ne(e,t[s]),r})),he=()=>[t,void 0],ge=()=>[t,_()],Ce=([e,t],l)=>[e,l(t,e)],Te=(e,t)=>Ce(e,(e=>re(e,t))),fe=(e,t,l,n)=>q(e,((e,s)=>be(e,se(t,s,ge),l[s]=((e=[])=>x.fromEntries(e))(),n))),be=([e,t],l,n,s)=>{e>l[0]&&(l[0]=e),s(t,l[1],n)},Ve=(e,t,l)=>q(e,(([e,n],s)=>{const a=se(t,s,he);e>a[0]&&(a[0]=e,a[1]=l[s]=n)})),pe=e=>new Set(Array.isArray(e)||I(e)?e:[e]),we=(e,t)=>null==e?void 0:e.add(t),Se=/^\d+$/,me=()=>{const e=[];let l=0;return[n=>{var s;return null!=(s=n?e.shift():null)?s:t+l++},t=>{Se.test(t)&&H(e)<1e3&&O(e,t)}]},ye=e=>[e,e],Re=()=>[_(),_()],Ie=e=>[...e],Le=([e,t])=>e===t,Je=t=>{const l=e(t);return J(l)||l==s&&R(t)?l:void 0},Me=(e,t,l,n,s)=>I(s)?e.delCell(t,l,n,!0):e.setCell(t,l,n,s),Ee=(e,t,l)=>I(l)?e.delValue(t):e.setValue(t,l),He=e=>JSON.stringify(e,((e,t)=>t instanceof Map?x.fromEntries([...t]):t)),Pe=JSON.parse,Fe=(e,t,l)=>I(e)||!N(e)||G(e)||k(e)?(null==l||l(),!1):(B(e,((l,n)=>{t(l,n)||$(e,n)})),!G(e)),Oe=(e,t,l)=>ne(e,t,te(e,t)==-l?void 0:l),xe=()=>{let e,l,n,a=!1,i=!1,S=!1,m=!1,y=0;const R=_(),x=_(),z=_(),A=_(),W=_(),k=_(),N=_(),q=_(),he=_(),ge=_(),Ce=_(),Te=_(),fe=_(),be=_(),Ve=pe(),Se=_(),ze=_(),Ae=_(),We=_(),ke=Re(),De=Re(),Ne=Re(),je=Re(),$e=Re(),qe=Re(),Be=Re(),Ge=Re(),Ke=Re(),Qe=Re(),Ue=Re(),Xe=Re(),Ye=Re(),Ze=Re(),_e=Re(),et=Re(),tt=Re(),lt=Re(),nt=Re(),st=Re(),at=Re(),rt=Re(),ot=_(),ut=Re(),[it,ct,dt,vt]=(e=>{let l;const[n,s]=me(),a=_();return[(e,s,r,o=[],u=(()=>[]))=>{null!=l||(l=Pl);const i=n(1);return ne(a,i,[e,s,r,o,u]),we(ve(s,null!=r?r:[t],pe),i),i},(e,n,...s)=>P(((e,l=[t])=>{const n=[],s=(e,t)=>t==H(l)?O(n,e):null===l[t]?Y(e,(e=>s(e,t+1))):P([l[t],null],(l=>s(te(e,l),t+1)));return s(e,0),n})(e,n),(e=>Y(e,(e=>te(a,e)[0](l,...null!=n?n:[],...s))))),e=>L(te(a,e),(([,l,n])=>(ve(l,null!=n?n:[t],void 0,(t=>(Z(t,e),U(t)?1:0))),ne(a,e),s(e),n))),e=>L(te(a,e),(([e,,t=[],n,s])=>{const a=(...r)=>{var o,u;const i=H(r);i==H(t)?e(l,...r,...s(r)):I(t[i])?P(null!=(u=null==(o=n[i])?void 0:o.call(n,...r))?u:[],(e=>a(...r,e))):a(...r,t[i])};a()}))]})(),ht=e=>{if(!Fe(e,((e,t)=>[r,o].includes(t))))return!1;const t=e[r];return!(!J(t)&&t!=s||(Je(e[o])!=t&&$(e,o),0))},gt=(t,l)=>(!e||Q(Ce,l)||qt(l))&&Fe(t,((e,t)=>Ct(l,t,e)),(()=>qt(l))),Ct=(e,t,l,n)=>Fe(n?l:Vt(l,e,t),((n,s)=>L(Tt(e,t,s,n),(e=>(l[s]=e,!0)),(()=>!1))),(()=>qt(e,t))),Tt=(t,l,n,s)=>e?L(te(te(Ce,t),n),(e=>Je(s)!=e[r]?qt(t,l,n,s,e[o]):s),(()=>qt(t,l,n,s))):I(Je(s))?qt(t,l,n,s):s,ft=(e,t)=>Fe(t?e:pt(e),((t,l)=>L(bt(l,t),(t=>(e[l]=t,!0)),(()=>!1))),(()=>Bt())),bt=(e,t)=>l?L(te(fe,e),(l=>Je(t)!=l[r]?Bt(e,t,l[o]):t),(()=>Bt(e,t))):I(Je(t))?Bt(e,t):t,Vt=(e,t,l)=>(L(te(Te,t),(([n,s])=>{Y(n,((t,l)=>{j(e,l)||(e[l]=t)})),Y(s,(n=>{j(e,n)||qt(t,l,n)}))})),e),pt=e=>(l&&(Y(be,((t,l)=>{j(e,l)||(e[l]=t)})),Y(Ve,(t=>{j(e,t)||Bt(t)}))),e),wt=e=>ae(Ce,e,((e,t,l)=>{const n=_(),s=pe();ae(se(Ce,t,_),l,((e,t,l)=>{ne(e,t,l),L(l[o],(e=>ne(n,t,e)),(()=>we(s,t)))})),ne(Te,t,[n,s])}),((e,t)=>{ne(Ce,t),ne(Te,t)})),St=e=>ae(fe,e,((e,t,l)=>{ne(fe,t,l),L(l[o],(e=>ne(be,t,e)),(()=>we(Ve,t)))}),((e,t)=>{ne(fe,t),ne(be,t),Z(Ve,t)})),mt=e=>G(e)?ml():bl(e),yt=e=>ae(Ae,e,((e,t,l)=>Rt(t,l)),((e,t)=>Ot(t))),Rt=(e,t)=>ae(se(Ae,e,(()=>(Wt(e,1),ne(Se,e,me()),ne(ze,e,_()),_()))),t,((t,l,n)=>It(e,t,l,n)),((t,l)=>xt(e,t,l))),It=(e,t,l,n,s)=>ae(se(t,l,(()=>(kt(e,l,1),_()))),n,((t,n,s)=>Lt(e,l,t,n,s)),((n,a)=>zt(e,t,l,n,a,s))),Lt=(e,t,l,n,s)=>{Q(l,n)||Dt(e,t,n,1);const a=te(l,n);s!==a&&(Nt(e,t,n,a,s),ne(l,n,s))},Jt=(e,t,l,n,s)=>L(te(t,l),(t=>Lt(e,l,t,n,s)),(()=>It(e,t,l,Vt({[n]:s},e,l)))),Mt=e=>G(e)?Il():Vl(e),Et=e=>ae(We,e,((e,t,l)=>Ht(t,l)),((e,t)=>At(t))),Ht=(e,t)=>{Q(We,e)||jt(e,1);const l=te(We,e);t!==l&&($t(e,l,t),ne(We,e,t))},Pt=(e,t)=>{const[l]=te(Se,e),n=l(t);return Q(te(Ae,e),n)?Pt(e,t):n},Ft=e=>{var t;return null!=(t=te(Ae,e))?t:Rt(e,{})},Ot=e=>Rt(e,{}),xt=(e,t,l)=>{const[,n]=te(Se,e);n(l),It(e,t,l,{},!0)},zt=(e,t,l,n,s,a)=>{var r;const o=te(null==(r=te(Te,e))?void 0:r[0],s);if(!I(o)&&!a)return Lt(e,l,n,s,o);const u=t=>{Nt(e,l,t,te(n,t)),Dt(e,l,t,-1),ne(n,t)};I(o)?u(s):le(n,u),U(n)&&(kt(e,l,-1),U(ne(t,l))&&(Wt(e,-1),ne(Ae,e),ne(Se,e),ne(ze,e)))},At=e=>{const t=te(be,e);if(!I(t))return Ht(e,t);$t(e,te(We,e)),jt(e,-1),ne(We,e)},Wt=(e,t)=>Oe(R,e,t),kt=(e,t,l)=>Oe(se(A,e,_),t,l)&&ne(z,e,se(z,e,(()=>0))+l),Dt=(e,t,l,n)=>{var s;const a=te(ze,e),r=null!=(s=te(a,l))?s:0;(0==r&&1==n||1==r&&-1==n)&&Oe(se(x,e,_),l,n),ne(a,l,r!=-n?r+n:null),Oe(se(se(W,e,_),t,_),l,n)},Nt=(e,t,l,n,s)=>se(se(se(k,e,_),t,_),l,(()=>[n,0]))[1]=s,jt=(e,t)=>Oe(N,e,t),$t=(e,t,l)=>se(q,e,(()=>[t,0]))[1]=l,qt=(e,t,l,n,s)=>(O(se(se(se(he,e,_),t,_),l,(()=>[])),n),s),Bt=(e,t,l)=>(O(se(ge,e,(()=>[])),t),l),Gt=(e,t,l)=>L(te(te(te(k,e),t),l),(([e,t])=>[!0,e,t]),(()=>[!1,...ye(ol(e,t,l))])),Kt=e=>L(te(q,e),(([e,t])=>[!0,e,t]),(()=>[!1,...ye(cl(e))])),Qt=e=>U(he)||U(et[e])?0:Y(e?de(he):he,((t,l)=>Y(t,((t,n)=>Y(t,((t,s)=>ct(et[e],[l,n,s],t))))))),Ut=e=>U(ge)||U(tt[e])?0:Y(e?ie(ge):ge,((t,l)=>ct(tt[e],[l],t))),Xt=(e,t,l,n)=>{if(!U(e))return ct(t,n,(()=>re(e))),le(e,((e,t)=>ct(l,[...null!=n?n:[],e],1==t))),1},Yt=e=>{const t=dl();t!=S&&ct(ke[e],void 0,t);const l=U(Qe[e]),n=U(Ye[e])&&U(Ze[e])&&U(Ke[e])&&U(Ue[e])&&U(qe[e])&&U(Be[e])&&U(Ge[e])&&l&&U(Ne[e])&&U(je[e]),s=U(_e[e])&&U(Xe[e])&&U($e[e])&&U(De[e]);if(!n||!s){const t=e?[ie(R),ce(x),ie(z),ce(A),de(W),de(k)]:[R,x,z,A,W,k];if(!n){Xt(t[0],Ne[e],je[e]),Y(t[1],((t,l)=>Xt(t,qe[e],Be[e],[l]))),Y(t[2],((t,l)=>{0!=t&&ct(Ge[e],[l],nl(l))}));const n=pe();Y(t[3],((t,s)=>{Xt(t,Ke[e],Ue[e],[s])&&!l&&(ct(Qe[e],[s,null]),we(n,s))})),l||Y(t[5],((t,l)=>{if(!Q(n,l)){const n=pe();Y(t,(e=>Y(e,(([t,l],s)=>l!==t?we(n,s):Z(e,s))))),Y(n,(t=>ct(Qe[e],[l,t])))}})),Y(t[4],((t,l)=>Y(t,((t,n)=>Xt(t,Ye[e],Ze[e],[l,n])))))}if(!s){let l;Y(t[5],((t,n)=>{let s;Y(t,((t,a)=>{let r;Y(t,(([t,o],u)=>{o!==t&&(ct(_e[e],[n,a,u],o,t,Gt),l=s=r=1)})),r&&ct(Xe[e],[n,a],Gt)})),s&&ct($e[e],[n],Gt)})),l&&ct(De[e],void 0,Gt)}}},Zt=e=>{const t=Tl();t!=m&&ct(lt[e],void 0,t);const l=U(st[e])&&U(at[e]),n=U(rt[e])&&U(nt[e]);if(!l||!n){const t=e?[ie(N),ie(q)]:[N,q];if(l||Xt(t[0],st[e],at[e]),!n){let l;Y(t[1],(([t,n],s)=>{n!==t&&(ct(rt[e],[s],n,t,Kt),l=1)})),l&&ct(nt[e],void 0,Kt)}}},_t=(e,...t)=>(Ml((()=>e(...F(t,w)))),Pl),el=()=>ue(Ae),tl=()=>ee(Ae),ll=e=>ee(te(ze,w(e))),nl=e=>K(te(Ae,w(e))),sl=e=>ee(te(Ae,w(e))),al=(e,t,l,n=0,s)=>{return F(E((r=te(Ae,w(e)),o=(e,l)=>[I(t)?l:te(e,w(t)),l],a=([e],[t])=>{return((null!=(n=e)?n:0)<(null!=(s=t)?s:0)?-1:1)*(l?-1:1);var n,s},F([...null!=(u=null==r?void 0:r.entries())?u:[]],(([e,t])=>o(t,e))).sort(a)),n,I(s)?s:n+s),(([,e])=>e));var a,r,o,u},rl=(e,t)=>ee(te(te(Ae,w(e)),w(t))),ol=(e,t,l)=>te(te(te(Ae,w(e)),w(t)),w(l)),ul=()=>re(We),il=()=>ee(We),cl=e=>te(We,w(e)),dl=()=>!U(Ae),vl=e=>Q(Ae,w(e)),hl=(e,t)=>Q(te(ze,w(e)),w(t)),gl=(e,t)=>Q(te(Ae,w(e)),w(t)),Cl=(e,t,l)=>Q(te(te(Ae,w(e)),w(t)),w(l)),Tl=()=>!U(We),fl=e=>Q(We,w(e)),bl=e=>_t((()=>(e=>Fe(e,gt,qt))(e)?yt(e):0)),Vl=e=>_t((()=>ft(e)?Et(e):0)),pl=e=>{try{mt(Pe(e))}catch(e){}return Pl},wl=t=>_t((()=>{if((e=Fe(t,(e=>Fe(e,ht))))&&(wt(t),!U(Ae))){const e=el();ml(),bl(e)}})),Sl=e=>_t((()=>{if(l=(e=>Fe(e,ht))(e)){const t=ul();Jl(),Il(),l=!0,St(e),Vl(t)}})),ml=()=>_t((()=>yt({}))),yl=e=>_t((e=>Q(Ae,e)?Ot(e):0),e),Rl=(e,t)=>_t(((e,t)=>L(te(Ae,e),(l=>Q(l,t)?xt(e,l,t):0))),e,t),Il=()=>_t((()=>Et({}))),Ll=()=>_t((()=>{wt({}),e=!1})),Jl=()=>_t((()=>{St({}),l=!1})),Ml=(e,t)=>{if(-1!=y){El();const l=e();return Hl(t),l}},El=()=>(-1!=y&&y++,1==y&&ct(ot,void 0),Pl),Hl=e=>(y>0&&(y--,0==y&&(a=!U(k),i=!U(q),y=1,Qt(1),a&&Yt(1),Ut(1),i&&Zt(1),(null==e?void 0:e(Pl))&&(Y(k,((e,t)=>Y(e,((e,l)=>Y(e,(([e],n)=>Me(Pl,t,l,n,e))))))),Y(q,(([e],t)=>Ee(Pl,t,e))),a=i=!1),ct(ut[0],void 0),y=-1,Qt(0),a&&Yt(0),Ut(0),i&&Zt(0),null==n||n(Pl),ct(ut[1],void 0),y=0,a=i=!1,S=dl(),m=Tl(),P([R,x,z,A,W,k,he,N,q,ge],X))),Pl),Pl={getContent:()=>[el(),ul()],getTables:el,getTableIds:tl,getTable:e=>oe(te(Ae,w(e))),getTableCellIds:ll,getRowCount:nl,getRowIds:sl,getSortedRowIds:al,getRow:(e,t)=>re(te(te(Ae,w(e)),w(t))),getCellIds:rl,getCell:ol,getValues:ul,getValueIds:il,getValue:cl,hasTables:dl,hasTable:vl,hasTableCell:hl,hasRow:gl,hasCell:Cl,hasValues:Tl,hasValue:fl,getTablesJson:()=>He(Ae),getValuesJson:()=>He(We),getJson:()=>He([Ae,We]),getTablesSchemaJson:()=>He(Ce),getValuesSchemaJson:()=>He(fe),getSchemaJson:()=>He([Ce,fe]),hasTablesSchema:()=>e,hasValuesSchema:()=>l,setContent:([e,t])=>_t((()=>{(G(e)?ml:bl)(e),(G(t)?Il:Vl)(t)})),setTables:bl,setTable:(e,t)=>_t((e=>gt(t,e)?Rt(e,t):0),e),setRow:(e,t,l)=>_t(((e,t)=>Ct(e,t,l)?It(e,Ft(e),t,l):0),e,t),addRow:(e,t,l=!0)=>Ml((()=>{let n;return Ct(e,n,t)&&(e=w(e),It(e,Ft(e),n=Pt(e,l?1:0),t)),n})),setPartialRow:(e,t,l)=>_t(((e,t)=>{if(Ct(e,t,l,1)){const n=Ft(e);B(l,((l,s)=>Jt(e,n,t,s,l)))}}),e,t),setCell:(e,t,l,n)=>_t(((e,t,l)=>L(Tt(e,t,l,M(n)?n(ol(e,t,l)):n),(n=>Jt(e,Ft(e),t,l,n)))),e,t,l),setValues:Vl,setPartialValues:e=>_t((()=>ft(e,1)?B(e,((e,t)=>Ht(t,e))):0)),setValue:(e,t)=>_t((e=>L(bt(e,M(t)?t(cl(e)):t),(t=>Ht(e,t)))),e),applyChanges:e=>_t((()=>{B(e[0],((e,t)=>I(e)?yl(t):B(e,((e,l)=>I(e)?Rl(t,l):B(e,((e,n)=>Me(Pl,t,l,n,e))))))),B(e[1],((e,t)=>Ee(Pl,t,e)))})),setTablesJson:pl,setValuesJson:e=>{try{Mt(Pe(e))}catch(e){}return Pl},setJson:e=>_t((()=>{try{const[t,l]=Pe(e);mt(t),Mt(l)}catch(t){pl(e)}})),setTablesSchema:wl,setValuesSchema:Sl,setSchema:(e,t)=>_t((()=>{wl(e),Sl(t)})),delTables:ml,delTable:yl,delRow:Rl,delCell:(e,t,l,n)=>_t(((e,t,l)=>L(te(Ae,e),(s=>L(te(s,t),(a=>Q(a,l)?zt(e,s,t,a,l,n):0))))),e,t,l),delValues:Il,delValue:e=>_t((e=>Q(We,e)?At(e):0),e),delTablesSchema:Ll,delValuesSchema:Jl,delSchema:()=>_t((()=>{Ll(),Jl()})),transaction:Ml,startTransaction:El,getTransactionChanges:()=>[re(k,((e,t)=>-1===te(R,t)?void 0:re(e,((e,l)=>-1===te(te(A,t),l)?void 0:re(e,(([,e])=>e),((e,t)=>Le(t)))),G)),G),re(q,(([,e])=>e),((e,t)=>Le(t)))],getTransactionLog:()=>[a,i,ue(k,Ie,Le),ue(he),re(q,Ie,Le),re(ge),re(R),oe(A),ue(W),re(N)],finishTransaction:Hl,forEachTable:e=>Y(Ae,((t,l)=>e(l,(e=>Y(t,((t,l)=>e(l,(e=>le(t,e))))))))),forEachTableCell:(e,t)=>le(te(ze,w(e)),t),forEachRow:(e,t)=>Y(te(Ae,w(e)),((e,l)=>t(l,(t=>le(e,t))))),forEachCell:(e,t,l)=>le(te(te(Ae,w(e)),w(t)),l),forEachValue:e=>le(We,e),addSortedRowIdsListener:(e,t,l,n,s,a,r)=>{let o=al(e,t,l,n,s);return it((()=>{const r=al(e,t,l,n,s);var u,i,c;i=o,H(u=r)===H(i)&&(c=(e,t)=>i[t]===e,u.every(c))||(o=r,a(Pl,e,t,l,n,s,o))}),Qe[r?1:0],[e,t],[tl])},addStartTransactionListener:e=>it(e,ot),addWillFinishTransactionListener:e=>it(e,ut[0]),addDidFinishTransactionListener:e=>it(e,ut[1]),callListener:e=>(vt(e),Pl),delListener:e=>(dt(e),Pl),getListenerStats:()=>({}),createStore:xe,addListener:it,callListeners:ct,addPostTransactionListener:e=>{n=e}};return B({[u+d]:[0,ke,[],()=>[dl()]],[d]:[0,De],[v]:[0,Ne],[u+c]:[1,je,[tl],e=>[vl(...e)]],[c]:[1,$e,[tl]],[c+f]:[1,qe,[tl]],[u+c+T]:[2,Be,[tl,ll],e=>[hl(...e)]],[g]:[1,Ge,[tl]],[C]:[1,Ke,[tl]],[u+h]:[2,Ue,[tl,sl],e=>[gl(...e)]],[h]:[2,Xe,[tl,sl]],[f]:[2,Ye,[tl,sl]],[u+T]:[3,Ze,[tl,sl,rl],e=>[Cl(...e)]],[T]:[3,_e,[tl,sl,rl],e=>ye(ol(...e))],InvalidCell:[3,et],[u+V]:[0,lt,[],()=>[Tl()]],[V]:[0,nt],[p]:[0,st],[u+b]:[1,at,[il],e=>[fl(...e)]],[b]:[1,rt,[il],e=>ye(cl(e[0]))],InvalidValue:[1,tt]},(([e,t,l,n],s)=>{Pl["add"+s+"Listener"]=(...s)=>it(s[e],t[s[e+1]?1:0],e>0?E(s,0,e):void 0,l,n)})),D(Pl)};var ze=Math.pow;const Ae=ze(2,36),We=ze(2,30),ke=ze(2,24),De=ze(2,18),Ne=ze(2,12),je=ze(2,6),$e=e=>String.fromCharCode(48+(63&e)),qe=(e,t)=>y(e,t)-48,Be={HasTable:1,Table:1,TableCellIds:1,HasTableCell:2,RowCount:1,RowIds:1,SortedRowIds:5,HasRow:2,Row:2,CellIds:2,HasCell:3,Cell:3,HasValue:1,Value:1,InvalidCell:3,InvalidValue:1},Ge=()=>[t,[ge(),ge()]],Ke=e=>{let t=1,l=Ge();const[n,s]=(e=>{let t=0,l=0;const n=(s=(e,t)=>(e<<5)+e^y(t),((e,t="",l)=>e.split(t,l))(e).reduce(s,5381)>>>0);var s;const a=e=>{const n=t,[s,a]=I(e)?[0,0]:[qe(r=e,0)*Ae+qe(r,1)*We+qe(r,2)*ke+qe(r,3)*De+qe(r,4)*Ne+qe(r,5)*je+qe(r,6),qe(r,7)*De+qe(r,8)*Ne+qe(r,9)*je+qe(r,10),qe(r,11)*ke+qe(r,12)*De+qe(r,13)*Ne+qe(r,14)*je+qe(r,15)];var r;t=Math.max(n,s,Date.now()),l=t==n?t==s?Math.max(l,a):l:t==s?a:-1};return[()=>{return a(),s=++l,r=n,$e((e=t)/Ae)+$e(e/We)+$e(e/ke)+$e(e/De)+$e(e/Ne)+$e(e/je)+$e(e)+$e(s/De)+$e(s/Ne)+$e(s/je)+$e(s)+$e(r/ke)+$e(r/De)+$e(r/Ne)+$e(r/je)+$e(r);var e,s,r},a]})(e),a=xe(),r=e=>{const l=t;t=0,e(),t=l},o=e=>{const t=[{},{}];return s(e[0]),be(e,l,t,(([e,t],[l,n],[s,a])=>{be(e,l,s,((e,t,l)=>fe(e,t,l,((e,t,l)=>fe(e,t,l,Ve))))),be(t,n,a,Ve)})),r((()=>a.applyChanges(t))),u},u={getMergeableContent:()=>Ce(l,(([e,t])=>[Te(e,(e=>Te(e,(e=>Te(e,Ie))))),Te(t,Ie)])),setMergeableContent:e=>(r((()=>a.transaction((()=>{a.delTables().delValues(),l=Ge()})))),o(e),u),applyMergeableChanges:o,merge:e=>{const t=u.getMergeableContent(),l=e.getMergeableContent();return e.applyMergeableChanges(t),o(l)}};return a.addPostTransactionListener((()=>{if(t){const e=n(),[t,s,r,,o]=a.getTransactionLog(),[u,i]=l[1];l[0]=e,t&&(u[0]=e,B(r,((t,l)=>{var n;const s=se(u[1],l,he),a=null!=(n=s[1])?n:s[1]=_();s[0]=e,B(t,((t,l)=>{var n;const s=se(a,l,he),r=null!=(n=s[1])?n:s[1]=_();s[0]=e,B(t,(([,t],l)=>ne(r,l,[e,t])))}))}))),s&&(i[0]=e,B(o,(([,t],l)=>{ne(i[1],l,[e,t])})))}})),B(a,((e,t)=>u[t]=S(t,"set")||S(t,"del")||S(t,"apply")||m(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),u):S(t,"add")&&m(t,"Listener")?(...l)=>{var n;const s=null!=(n=Be[E(t,3,-8)])?n:0,a=l[s];return l[s]=(e,...t)=>a(u,...t),e(...l)}:e)),D(u)};export{Ke as createMergeableStore};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=t=>
|
|
1
|
+
const t=t=>typeof t,e=t(""),n=t=>null==t,o=(t,e,o)=>n(t)?null==o?void 0:o():e(t),l=Object,i=t=>l.getPrototypeOf(t),u=l.entries,r=l.keys,d=l.freeze,a=(t,e)=>o(t,(t=>t[e])),c=(t,e)=>e in t,s=(t,e)=>(delete t[e],t),v=(t,e)=>((t,e)=>t.map(e))(u(t),(([t,n])=>e(n,t))),y=t=>r(t).length,h=t=>(t=>!n(t)&&o(i(t),(t=>t==l.prototype||n(i(t))),(()=>!0)))(t)&&0==y(t),f=t=>new Map(t),p=(t,e)=>null==t?void 0:t.get(e),g=(t,e,o)=>{return n(o)?(i=e,null==(l=t)||l.delete(i),t):null==t?void 0:t.set(e,o);var l,i},A=(t,e,n)=>{var o,l,i;return l=e,null!=(i=null==(o=t)?void 0:o.has(l))&&i||g(t,e,n()),p(t,e)};var C=(t,e,n)=>new Promise(((o,l)=>{var i=t=>{try{r(n.next(t))}catch(t){l(t)}},u=t=>{try{r(n.throw(t))}catch(t){l(t)}},r=t=>t.done?o(t.value):Promise.resolve(t.value).then(i,u);r((n=n.apply(t,e)).next())}));const L=f(),m=f();var S=(t,e,n)=>new Promise(((o,l)=>{var i=t=>{try{r(n.next(t))}catch(t){l(t)}},u=t=>{try{r(n.throw(t))}catch(t){l(t)}},r=t=>t.done?o(t.value):Promise.resolve(t.value).then(i,u);r((n=n.apply(t,e)).next())}));const w=(t,e)=>[t[e].t,t[e].v],x=(t,e,o,l)=>{const i=n(e)?t:((t,e,n)=>(c(t,e)||(t[e]={}),t[e]))(t,e);let u;return v(o,((t,e)=>{l(i,e,t)&&(u=1)})),v(i,((t,e)=>{c(o,e)||(s(i,e),u=1)})),!n(e)&&h(i)&&s(t,e),u},P=(l,i,u="tinybase",r)=>(i.change((t=>t[u]={})),((l,i,u,r,a,c,s,[v,y]=[],f=[])=>{var S;let w,x,P,b=0,M=0;A(L,f,(()=>0)),A(m,f,(()=>[]));const D=null!=(S=s?l.getMergeableContent:null)?S:l.getContent,O=l.getTransactionChanges,T=t=>C(void 0,null,(function*(){return 2!=b&&(b=1,yield j.schedule((()=>C(void 0,null,(function*(){yield t(),b=0}))))),j})),j={load:(n,o)=>C(void 0,null,(function*(){return yield T((()=>C(void 0,null,(function*(){try{const n=yield i();(s&&(n=>t(n)==e)(n[0])?l.applyMergeableChanges:l.setContent)(n)}catch(t){l.setContent([n,o])}}))))})),startAutoLoad:(...t)=>C(void 0,[...t],(function*(t={},e={}){return j.stopAutoLoad(),yield j.load(t,e),M=1,P=r(((t,e)=>C(void 0,null,(function*(){if(e){const t=e();yield T((()=>C(void 0,null,(function*(){return l.applyChanges(t)}))))}else yield T((()=>C(void 0,null,(function*(){var e;try{l.setContent(null!=(e=null==t?void 0:t())?e:yield i())}catch(t){null==c||c(t)}}))))})))),j})),stopAutoLoad:()=>(M&&(a(P),P=void 0,M=0),j),save:t=>C(void 0,null,(function*(){return 1!=b&&(b=2,yield j.schedule((()=>C(void 0,null,(function*(){try{yield u(D,t)}catch(t){null==c||c(t)}b=0}))))),j})),startAutoSave:()=>C(void 0,null,(function*(){return yield j.stopAutoSave().save(),w=l.addDidFinishTransactionListener((()=>{const[t,e]=O();h(t)&&h(e)||j.save((()=>[t,e]))})),j})),stopAutoSave:()=>(o(w,l.delListener),w=void 0,j),schedule:(...t)=>C(void 0,null,(function*(){return((t,...e)=>{t.push(...e)})(p(m,f),...t),yield C(void 0,null,(function*(){if(!p(L,f)){for(g(L,f,1);!n((t=p(m,f),x=t.shift()));)try{yield x()}catch(t){null==c||c(t)}g(L,f,0)}var t})),j})),getStore:()=>l,destroy:()=>j.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return v&&(j[v]=()=>y),d(j)})(l,(()=>S(void 0,null,(function*(){const t=yield i.doc();return 2==y(t[u])?w(t,u):void 0}))),((t,e)=>S(void 0,null,(function*(){return i.change((l=>((t,e,l,i)=>{((t,e)=>{h(t[e])&&(t[e]={t:{},v:{}})})(t,e);const[u,r]=w(t,e),d=()=>{c=1};let c=1;if(o(null==i?void 0:i(),(([t,e])=>{c=0,v(t,((t,e)=>c?0:n(t)?s(u,e):o(u[e],(e=>v(t,((t,l)=>c?0:n(t)?s(e,l):o(a(e,l),(e=>v(t,((t,o)=>n(t)?s(e,o):e[o]=t))),d)))),d))),v(e,((t,e)=>c?0:n(t)?s(r,e):r[e]=t))})),c){const[t,e]=l();x(u,void 0,t,((t,e,n)=>x(u,e,n,((t,e,n)=>x(t,e,n,((t,e,n)=>{if(a(t,e)!==n)return t[e]=n,1})))))),x(r,void 0,e,((t,e,n)=>{a(r,e)!==n&&(r[e]=n)}))}})(l,u,t,e)))}))),(t=>{const e=({doc:e})=>t((()=>w(e,u)));return i.on("change",e),e}),(t=>{i.removeListener("change",t)}),r,!1,["getDocHandle",i]));export{P as createAutomergePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=
|
|
1
|
+
const e=e=>typeof e,t=e(""),n=e=>null==e,o=(e,t,o)=>n(e)?null==o?void 0:o():t(e),l=Object,r=e=>l.getPrototypeOf(e),i=l.keys,u=l.freeze,a=e=>(e=>!n(e)&&o(r(e),(e=>e==l.prototype||n(r(e))),(()=>!0)))(e)&&0==(e=>i(e).length)(e),s=JSON.parse,d=e=>new Map(e),v=(e,t)=>null==e?void 0:e.get(t),c=(e,t,o)=>{return n(o)?(r=t,null==(l=e)||l.delete(r),e):null==e?void 0:e.set(t,o);var l,r},y=(e,t,n)=>{var o,l,r;return l=t,null!=(r=null==(o=e)?void 0:o.has(l))&&r||c(e,t,n()),v(e,t)};var f=(e,t,n)=>new Promise(((o,l)=>{var r=e=>{try{u(n.next(e))}catch(e){l(e)}},i=e=>{try{u(n.throw(e))}catch(e){l(e)}},u=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,i);u((n=n.apply(e,t)).next())}));const h=d(),p=d();var g=(e,t,n)=>new Promise(((o,l)=>{var r=e=>{try{u(n.next(e))}catch(e){l(e)}},i=e=>{try{u(n.throw(e))}catch(e){l(e)}},u=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,i);u((n=n.apply(e,t)).next())}));const S="storage",m=globalThis.window,A=(r,i,d,A)=>((l,r,i,s,d,g,S,[m,A]=[],w=[])=>{var C;let L,x,P,b=0,M=0;y(h,w,(()=>0)),y(p,w,(()=>[]));const O=null!=(C=S?l.getMergeableContent:null)?C:l.getContent,E=l.getTransactionChanges,N=e=>f(void 0,null,(function*(){return 2!=b&&(b=1,yield T.schedule((()=>f(void 0,null,(function*(){yield e(),b=0}))))),T})),T={load:(n,o)=>f(void 0,null,(function*(){return yield N((()=>f(void 0,null,(function*(){try{const n=yield r();(S&&(n=>e(n)==t)(n[0])?l.applyMergeableChanges:l.setContent)(n)}catch(e){l.setContent([n,o])}}))))})),startAutoLoad:(...e)=>f(void 0,[...e],(function*(e={},t={}){return T.stopAutoLoad(),yield T.load(e,t),M=1,P=s(((e,t)=>f(void 0,null,(function*(){if(t){const e=t();yield N((()=>f(void 0,null,(function*(){return l.applyChanges(e)}))))}else yield N((()=>f(void 0,null,(function*(){var t;try{l.setContent(null!=(t=null==e?void 0:e())?t:yield r())}catch(e){null==g||g(e)}}))))})))),T})),stopAutoLoad:()=>(M&&(d(P),P=void 0,M=0),T),save:e=>f(void 0,null,(function*(){return 1!=b&&(b=2,yield T.schedule((()=>f(void 0,null,(function*(){try{yield i(O,e)}catch(e){null==g||g(e)}b=0}))))),T})),startAutoSave:()=>f(void 0,null,(function*(){return yield T.stopAutoSave().save(),L=l.addDidFinishTransactionListener((()=>{const[e,t]=E();a(e)&&a(t)||T.save((()=>[e,t]))})),T})),stopAutoSave:()=>(o(L,l.delListener),L=void 0,T),schedule:(...e)=>f(void 0,null,(function*(){return((e,...t)=>{e.push(...t)})(v(p,w),...e),yield f(void 0,null,(function*(){if(!v(h,w)){for(c(h,w,1);!n((e=v(p,w),x=e.shift()));)try{yield x()}catch(e){null==g||g(e)}c(h,w,0)}var e})),T})),getStore:()=>l,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return m&&(T[m]=()=>A),u(T)})(r,(()=>g(void 0,null,(function*(){return s(d.getItem(i))}))),(e=>g(void 0,null,(function*(){return d.setItem(i,(t=e(),JSON.stringify(t,((e,t)=>t instanceof Map?l.fromEntries([...t]):t))));var t}))),(e=>{const t=t=>{t.storageArea===d&&t.key===i&&e((()=>s(t.newValue)))};return m.addEventListener(S,t),t}),(e=>m.removeEventListener(S,e)),A,!1,["getStorageName",i]),w=(e,t,n)=>A(e,t,localStorage,n),C=(e,t,n)=>A(e,t,sessionStorage,n);export{w as createLocalPersister,C as createSessionPersister};
|
|
Binary file
|