tinybase 5.0.0-beta.2 → 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 -1
- package/lib/cjs/mergeable-store.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-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-es6/mergeable-store.cjs +1 -1
- package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-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/debug/mergeable-store.js +158 -187
- package/lib/debug/persisters/persister-automerge.js +42 -43
- package/lib/debug/persisters/persister-browser.js +28 -18
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +77 -54
- package/lib/debug/persisters/persister-electric-sql.js +77 -54
- package/lib/debug/persisters/persister-expo-sqlite-next.js +77 -54
- package/lib/debug/persisters/persister-expo-sqlite.js +77 -54
- package/lib/debug/persisters/persister-file.js +27 -18
- package/lib/debug/persisters/persister-indexed-db.js +28 -20
- package/lib/debug/persisters/persister-partykit-client.js +26 -23
- package/lib/debug/persisters/persister-partykit-server.js +8 -18
- package/lib/debug/persisters/persister-remote.js +28 -18
- package/lib/debug/persisters/persister-sqlite-wasm.js +77 -54
- package/lib/debug/persisters/persister-sqlite3.js +77 -54
- package/lib/debug/persisters/persister-yjs.js +44 -42
- package/lib/debug/persisters.js +27 -18
- package/lib/debug/store.js +50 -68
- package/lib/debug/tinybase.js +180 -205
- package/lib/debug/tools.js +9 -11
- package/lib/debug/ui-react-dom.js +73 -86
- package/lib/es6/mergeable-store.js +1 -1
- package/lib/es6/mergeable-store.js.gz +0 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-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/mergeable-store.js +1 -1
- package/lib/mergeable-store.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-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 +37 -13
- package/lib/types/persisters/persister-partykit-server.d.ts +7 -8
- package/lib/types/persisters.d.ts +47 -27
- package/lib/types/store.d.ts +153 -111
- package/lib/types/tools.d.ts +2 -2
- package/lib/types/with-schemas/mergeable-store.d.ts +40 -13
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +10 -11
- package/lib/types/with-schemas/persisters.d.ts +78 -42
- package/lib/types/with-schemas/store.d.ts +165 -136
- package/lib/types/with-schemas/tools.d.ts +2 -2
- package/lib/umd/mergeable-store.js +1 -1
- package/lib/umd/mergeable-store.js.gz +0 -0
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-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-es6/mergeable-store.js +1 -1
- package/lib/umd-es6/mergeable-store.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-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/package.json +26 -22
- package/readme.md +2 -2
|
@@ -167,6 +167,12 @@ export type OptionalSchemas = [OptionalTablesSchema, OptionalValuesSchema];
|
|
|
167
167
|
*/
|
|
168
168
|
export type NoSchemas = [NoTablesSchema, NoValuesSchema];
|
|
169
169
|
|
|
170
|
+
// Content
|
|
171
|
+
export type Content<
|
|
172
|
+
Schemas extends OptionalSchemas,
|
|
173
|
+
WhenSet extends boolean = false,
|
|
174
|
+
> = [Tables<Schemas[0], WhenSet>, Values<Schemas[1], WhenSet>];
|
|
175
|
+
|
|
170
176
|
/**
|
|
171
177
|
* The Tables type is the data structure representing all of the data in a
|
|
172
178
|
* Store.
|
|
@@ -788,28 +794,20 @@ export type ChangedValueIds<Schema extends OptionalValuesSchema> = {
|
|
|
788
794
|
* This has schema-based typing. The following is a simplified representation:
|
|
789
795
|
*
|
|
790
796
|
* ```ts override
|
|
791
|
-
* (
|
|
792
|
-
* getTransactionChanges: GetTransactionChanges,
|
|
793
|
-
* getTransactionLog: GetTransactionLog,
|
|
794
|
-
* ) => boolean;
|
|
797
|
+
* (store: Store) => boolean;
|
|
795
798
|
* ```
|
|
796
799
|
*
|
|
797
800
|
* A DoRollback can be provided when calling the transaction method or the
|
|
798
801
|
* finishTransaction method. See those methods for specific examples.
|
|
799
802
|
*
|
|
800
|
-
* Since
|
|
801
|
-
*
|
|
802
|
-
*
|
|
803
|
-
*
|
|
804
|
-
* @param getTransactionChanges A function to be called to get the changes made
|
|
805
|
-
* to the Store during the transaction, since v4.0.
|
|
806
|
-
* @param getTransactionChanges A function to be called to get a more detailed
|
|
807
|
-
* log of the changes made or attempted during the transaction, since v4.0.
|
|
803
|
+
* Since v5.0, this function is called with the Store as a single argument. You
|
|
804
|
+
* can use the getTransactionChanges method and getTransactionLog method of the
|
|
805
|
+
* Store directly to decide whether to do the rollback.
|
|
806
|
+
* @param store A reference to the Store that is completing a transaction.
|
|
808
807
|
* @category Callback
|
|
809
808
|
*/
|
|
810
809
|
export type DoRollback<Schemas extends OptionalSchemas> = (
|
|
811
|
-
|
|
812
|
-
getTransactionLog: GetTransactionLog<Schemas>,
|
|
810
|
+
store: Store<Schemas>,
|
|
813
811
|
) => boolean;
|
|
814
812
|
|
|
815
813
|
/**
|
|
@@ -821,8 +819,6 @@ export type DoRollback<Schemas extends OptionalSchemas> = (
|
|
|
821
819
|
* ```ts override
|
|
822
820
|
* export type TransactionListener<Store extends StoreAlias = StoreAlias> = (
|
|
823
821
|
* store: Store,
|
|
824
|
-
* getTransactionChanges: GetTransactionChanges,
|
|
825
|
-
* getTransactionLog: GetTransactionLog,
|
|
826
822
|
* ) => void;
|
|
827
823
|
* ```
|
|
828
824
|
*
|
|
@@ -830,25 +826,17 @@ export type DoRollback<Schemas extends OptionalSchemas> = (
|
|
|
830
826
|
* addWillFinishTransactionListener and addDidFinishTransactionListener methods.
|
|
831
827
|
* See those methods for specific examples.
|
|
832
828
|
*
|
|
833
|
-
*
|
|
834
|
-
*
|
|
835
|
-
*
|
|
836
|
-
*
|
|
829
|
+
* Since v5.0, this listener is called with no arguments other than the Store.
|
|
830
|
+
* You can use the getTransactionChanges method and getTransactionLog method of
|
|
831
|
+
* the Store directly to get information about the changes made within the
|
|
832
|
+
* transaction.
|
|
837
833
|
* @param store A reference to the Store that is completing a transaction.
|
|
838
|
-
* @param getTransactionChanges A function to be called to get the changes made
|
|
839
|
-
* to the Store during the transaction, since v4.0.
|
|
840
|
-
* @param getTransactionChanges A function to be called to get a more detailed
|
|
841
|
-
* log of the changes made or attempted during the transaction, since v4.0.
|
|
842
834
|
* @category Listener
|
|
843
835
|
*/
|
|
844
836
|
export type TransactionListener<
|
|
845
837
|
Schemas extends OptionalSchemas,
|
|
846
838
|
Store extends StoreAlias<Schemas> = StoreAlias<Schemas>,
|
|
847
|
-
> = (
|
|
848
|
-
store: Store,
|
|
849
|
-
getTransactionChanges: GetTransactionChanges<Schemas>,
|
|
850
|
-
getTransactionLog: GetTransactionLog<Schemas>,
|
|
851
|
-
) => void;
|
|
839
|
+
> = (store: Store) => void;
|
|
852
840
|
|
|
853
841
|
/**
|
|
854
842
|
* The HasTablesListener type describes a function that is used to listen to
|
|
@@ -2085,7 +2073,7 @@ export type ChangedCells<Schema extends OptionalTablesSchema> = {
|
|
|
2085
2073
|
* This has schema-based typing. The following is a simplified representation:
|
|
2086
2074
|
*
|
|
2087
2075
|
* ```ts override
|
|
2088
|
-
* [CellOrUndefined, CellOrUndefined];
|
|
2076
|
+
* [oldCell: CellOrUndefined, newCell: CellOrUndefined];
|
|
2089
2077
|
* ```
|
|
2090
2078
|
*
|
|
2091
2079
|
* It provides both the old and new Cell values in a two-part array. These are
|
|
@@ -2174,7 +2162,10 @@ export type ChangedValues<Schema extends OptionalValuesSchema> = {
|
|
|
2174
2162
|
* This has schema-based typing. The following is a simplified representation:
|
|
2175
2163
|
*
|
|
2176
2164
|
* ```ts override
|
|
2177
|
-
* [
|
|
2165
|
+
* [
|
|
2166
|
+
* oldValue: ValueOrUndefined,
|
|
2167
|
+
* newValue: ValueOrUndefined,
|
|
2168
|
+
* ];
|
|
2178
2169
|
* ```
|
|
2179
2170
|
*
|
|
2180
2171
|
* It provides both the the old and new Values in a two-part array. These
|
|
@@ -2216,8 +2207,8 @@ export type ChangedValue<
|
|
|
2216
2207
|
*/
|
|
2217
2208
|
export type InvalidValues = {[valueId: Id]: any[]};
|
|
2218
2209
|
|
|
2219
|
-
//
|
|
2220
|
-
export type
|
|
2210
|
+
// Changes
|
|
2211
|
+
export type Changes<Schemas extends OptionalSchemas> = [
|
|
2221
2212
|
{
|
|
2222
2213
|
[TableId in TableIdFromSchema<Schemas[0]>]?: {
|
|
2223
2214
|
[rowId: Id]:
|
|
@@ -2239,25 +2230,6 @@ export type TransactionChanges<Schemas extends OptionalSchemas> = [
|
|
|
2239
2230
|
},
|
|
2240
2231
|
];
|
|
2241
2232
|
|
|
2242
|
-
/**
|
|
2243
|
-
* The GetTransactionChanges type describes a function that returns the net
|
|
2244
|
-
* meaningful changes that were made to a Store during a transaction.
|
|
2245
|
-
*
|
|
2246
|
-
* This has schema-based typing. The following is a simplified representation:
|
|
2247
|
-
*
|
|
2248
|
-
* ```ts override
|
|
2249
|
-
* () => TransactionChanges;
|
|
2250
|
-
* ```
|
|
2251
|
-
*
|
|
2252
|
-
* It is provided to the DoRollback callback and to a TransactionListener
|
|
2253
|
-
* listener when a transaction completes. See the TransactionChanges type for
|
|
2254
|
-
* more information and an example of the returned data structure.
|
|
2255
|
-
* @category Transaction
|
|
2256
|
-
* @since v4.0.0
|
|
2257
|
-
*/
|
|
2258
|
-
export type GetTransactionChanges<Schemas extends OptionalSchemas> =
|
|
2259
|
-
() => TransactionChanges<Schemas>;
|
|
2260
|
-
|
|
2261
2233
|
/**
|
|
2262
2234
|
* The TransactionLog type describes the changes that were made to a Store
|
|
2263
2235
|
* during a transaction in detail.
|
|
@@ -2265,21 +2237,21 @@ export type GetTransactionChanges<Schemas extends OptionalSchemas> =
|
|
|
2265
2237
|
* This has schema-based typing. The following is a simplified representation:
|
|
2266
2238
|
*
|
|
2267
2239
|
* ```ts override
|
|
2268
|
-
*
|
|
2269
|
-
* cellsTouched: boolean
|
|
2270
|
-
* valuesTouched: boolean
|
|
2271
|
-
* changedCells: ChangedCells
|
|
2272
|
-
* invalidCells: InvalidCells
|
|
2273
|
-
* changedValues: ChangedValues
|
|
2274
|
-
* invalidValues: InvalidValues
|
|
2275
|
-
* changedTableIds: ChangedTableIds
|
|
2276
|
-
* changedRowIds: ChangedRowIds
|
|
2277
|
-
* changedCellIds: ChangedCellIds
|
|
2278
|
-
* changedValueIds: ChangedValueIds
|
|
2279
|
-
*
|
|
2240
|
+
* [
|
|
2241
|
+
* cellsTouched: boolean,
|
|
2242
|
+
* valuesTouched: boolean,
|
|
2243
|
+
* changedCells: ChangedCells,
|
|
2244
|
+
* invalidCells: InvalidCells,
|
|
2245
|
+
* changedValues: ChangedValues,
|
|
2246
|
+
* invalidValues: InvalidValues,
|
|
2247
|
+
* changedTableIds: ChangedTableIds,
|
|
2248
|
+
* changedRowIds: ChangedRowIds,
|
|
2249
|
+
* changedCellIds: ChangedCellIds,
|
|
2250
|
+
* changedValueIds: ChangedValueIds,
|
|
2251
|
+
* ];
|
|
2280
2252
|
* ```
|
|
2281
2253
|
*
|
|
2282
|
-
* This contains equivalent information to a
|
|
2254
|
+
* This contains equivalent information to a Changes object, but also
|
|
2283
2255
|
* information about what the previous state of the Store was. The changedCells
|
|
2284
2256
|
* and changedValues entries contain information about all changes to those
|
|
2285
2257
|
* parts of the Store, with their before and after values, for example.
|
|
@@ -2295,6 +2267,9 @@ export type GetTransactionChanges<Schemas extends OptionalSchemas> =
|
|
|
2295
2267
|
* of `cellsTouched` and `valuesTouched` in the listener will be `false` because
|
|
2296
2268
|
* all changes have been reverted.
|
|
2297
2269
|
*
|
|
2270
|
+
* In v5.0, this type changed from an object to an array, but still contains the
|
|
2271
|
+
* same values.
|
|
2272
|
+
*
|
|
2298
2273
|
* See the documentation for the types of the inner objects for other details.
|
|
2299
2274
|
* @category Transaction
|
|
2300
2275
|
* @since v4.0.0
|
|
@@ -2312,25 +2287,6 @@ export type TransactionLog<Schemas extends OptionalSchemas> = {
|
|
|
2312
2287
|
changedValueIds: ChangedValueIds<Schemas[1]>;
|
|
2313
2288
|
};
|
|
2314
2289
|
|
|
2315
|
-
/**
|
|
2316
|
-
* The GetTransactionLog type describes a function that returns the changes that
|
|
2317
|
-
* were made to a Store during a transaction in detail.
|
|
2318
|
-
*
|
|
2319
|
-
* This has schema-based typing. The following is a simplified representation:
|
|
2320
|
-
*
|
|
2321
|
-
* ```ts override
|
|
2322
|
-
* () => TransactionLog;
|
|
2323
|
-
* ```
|
|
2324
|
-
*
|
|
2325
|
-
* It is provided to the DoRollback callback and to a TransactionListener
|
|
2326
|
-
* listener when a transaction completes. See the TransactionLog type for more
|
|
2327
|
-
* information.
|
|
2328
|
-
* @category Transaction
|
|
2329
|
-
* @since v4.0.0
|
|
2330
|
-
*/
|
|
2331
|
-
export type GetTransactionLog<Schemas extends OptionalSchemas> =
|
|
2332
|
-
() => TransactionLog<Schemas>;
|
|
2333
|
-
|
|
2334
2290
|
/**
|
|
2335
2291
|
* The StoreListenerStats type describes the number of listeners registered with
|
|
2336
2292
|
* the Store, and can be used for debugging purposes.
|
|
@@ -2640,7 +2596,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
2640
2596
|
* This has schema-based typing. The following is a simplified representation:
|
|
2641
2597
|
*
|
|
2642
2598
|
* ```ts override
|
|
2643
|
-
* getContent():
|
|
2599
|
+
* getContent(): Content;
|
|
2644
2600
|
* ```
|
|
2645
2601
|
*
|
|
2646
2602
|
* Note that this returns a copy of, rather than a reference to the underlying
|
|
@@ -2669,7 +2625,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
2669
2625
|
* @category Getter
|
|
2670
2626
|
* @since v4.0.0
|
|
2671
2627
|
*/
|
|
2672
|
-
getContent():
|
|
2628
|
+
getContent(): Content<Schemas>;
|
|
2673
2629
|
|
|
2674
2630
|
/**
|
|
2675
2631
|
* The getTables method returns a Tables object containing the entire tabular
|
|
@@ -3681,7 +3637,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
3681
3637
|
* This has schema-based typing. The following is a simplified representation:
|
|
3682
3638
|
*
|
|
3683
3639
|
* ```ts override
|
|
3684
|
-
* setContent(
|
|
3640
|
+
* setContent(content: Content): this;
|
|
3685
3641
|
* ```
|
|
3686
3642
|
*
|
|
3687
3643
|
* This method will cause listeners to be called for any Table, Row, Cell,
|
|
@@ -3736,10 +3692,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
3736
3692
|
* @category Setter
|
|
3737
3693
|
* @since v4.0.0
|
|
3738
3694
|
*/
|
|
3739
|
-
setContent(
|
|
3740
|
-
Tables<Schemas[0], true>,
|
|
3741
|
-
Values<Schemas[1], true>,
|
|
3742
|
-
]): Store<Schemas>;
|
|
3695
|
+
setContent(content: Content<Schemas, true>): Store<Schemas>;
|
|
3743
3696
|
|
|
3744
3697
|
/**
|
|
3745
3698
|
* The setTables method takes an object and sets the entire tabular data of
|
|
@@ -4289,31 +4242,32 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
4289
4242
|
): Store<Schemas>;
|
|
4290
4243
|
|
|
4291
4244
|
/**
|
|
4292
|
-
* The
|
|
4293
|
-
* Store.
|
|
4245
|
+
* The applyChanges method applies a set of Changes to the Store.
|
|
4294
4246
|
*
|
|
4295
4247
|
* This has schema-based typing. The following is a simplified representation:
|
|
4296
4248
|
*
|
|
4297
4249
|
* ```ts override
|
|
4298
|
-
*
|
|
4250
|
+
* applyChanges(changes: Changes): this;
|
|
4299
4251
|
* ```
|
|
4300
4252
|
*
|
|
4301
|
-
* This method will take a
|
|
4302
|
-
*
|
|
4303
|
-
*
|
|
4304
|
-
*
|
|
4305
|
-
*
|
|
4253
|
+
* This method will take a Changes object (which is available at the end of a
|
|
4254
|
+
* transaction) and apply it to a Store. The most likely need to do this is to
|
|
4255
|
+
* take the changes made during the transaction of one Store, and apply it to
|
|
4256
|
+
* the content of _another_ Store - such as when persisting and synchronizing
|
|
4257
|
+
* data.
|
|
4306
4258
|
*
|
|
4307
|
-
* Any part of the provided
|
|
4308
|
-
*
|
|
4309
|
-
*
|
|
4259
|
+
* Any part of the provided Changes object are invalid (either because of its
|
|
4260
|
+
* type, or because it does not match the schemas associated with the Store)
|
|
4261
|
+
* will be ignored silently.
|
|
4310
4262
|
*
|
|
4311
4263
|
* The method returns a reference to the Store so that subsequent operations
|
|
4312
4264
|
* can be chained in a fluent style.
|
|
4313
|
-
*
|
|
4265
|
+
*
|
|
4266
|
+
* Prior to v5.0, this method was named `setTransactionChanges`.
|
|
4267
|
+
* @param changes The Changes to apply to the Store.
|
|
4314
4268
|
* @returns A reference to the Store.
|
|
4315
4269
|
* @example
|
|
4316
|
-
* This example applies a
|
|
4270
|
+
* This example applies a Changes object that sets a Cell and
|
|
4317
4271
|
* removes a Value.
|
|
4318
4272
|
*
|
|
4319
4273
|
* ```js
|
|
@@ -4321,21 +4275,16 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
4321
4275
|
* .setTables({pets: {fido: {species: 'dog', color: 'brown'}}})
|
|
4322
4276
|
* .setValues({open: true});
|
|
4323
4277
|
*
|
|
4324
|
-
* store.
|
|
4325
|
-
* {pets: {fido: {color: 'black'}}},
|
|
4326
|
-
* {open: null},
|
|
4327
|
-
* ]);
|
|
4278
|
+
* store.applyChanges([{pets: {fido: {color: 'black'}}}, {open: null}]);
|
|
4328
4279
|
* console.log(store.getTables());
|
|
4329
4280
|
* // -> {pets: {fido: {species: 'dog', color: 'black'}}}
|
|
4330
4281
|
* console.log(store.getValues());
|
|
4331
4282
|
* // -> {}
|
|
4332
4283
|
* ```
|
|
4333
4284
|
* @category Setter
|
|
4334
|
-
* @since
|
|
4285
|
+
* @since v5.0.0
|
|
4335
4286
|
*/
|
|
4336
|
-
|
|
4337
|
-
transactionChanges: TransactionChanges<Schemas>,
|
|
4338
|
-
): Store<Schemas>;
|
|
4287
|
+
applyChanges(changes: Changes<Schemas>): Store<Schemas>;
|
|
4339
4288
|
|
|
4340
4289
|
/**
|
|
4341
4290
|
* The setTablesJson method takes a string serialization of all of the Tables
|
|
@@ -5009,10 +4958,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
5009
4958
|
*
|
|
5010
4959
|
* The second, optional parameter, `doRollback` is a DoRollback callback that
|
|
5011
4960
|
* you can use to rollback the transaction if it did not complete to your
|
|
5012
|
-
* satisfaction.
|
|
5013
|
-
* `getTransactionLog` parameters, which inform you of the net changes that
|
|
5014
|
-
* have been made during the transaction, at different levels of detail. See
|
|
5015
|
-
* the DoRollback documentation for more details.
|
|
4961
|
+
* satisfaction. See the DoRollback documentation for more details.
|
|
5016
4962
|
* @param actions The function to be executed as a transaction.
|
|
5017
4963
|
* @param doRollback An optional callback that should return `true` if you
|
|
5018
4964
|
* want to rollback the transaction at the end. Since v1.2.
|
|
@@ -5088,9 +5034,9 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
5088
5034
|
* .setCell('pets', 'fido', 'info', {sold: null})
|
|
5089
5035
|
* .setValue('open', false)
|
|
5090
5036
|
* .setValue('employees', ['alice', 'bob']),
|
|
5091
|
-
* (
|
|
5092
|
-
* const
|
|
5093
|
-
* getTransactionLog();
|
|
5037
|
+
* () => {
|
|
5038
|
+
* const [, , changedCells, invalidCells, changedValues, invalidValues] =
|
|
5039
|
+
* store.getTransactionLog();
|
|
5094
5040
|
* console.log(store.getTables());
|
|
5095
5041
|
* console.log(changedCells);
|
|
5096
5042
|
* console.log(invalidCells);
|
|
@@ -5173,6 +5119,93 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
5173
5119
|
*/
|
|
5174
5120
|
startTransaction(): Store<Schemas>;
|
|
5175
5121
|
|
|
5122
|
+
/**
|
|
5123
|
+
* The getTransactionChanges method returns the net meaningful changes that
|
|
5124
|
+
* have been made to a Store during a transaction.
|
|
5125
|
+
*
|
|
5126
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
5127
|
+
*
|
|
5128
|
+
* ```ts override
|
|
5129
|
+
* getTransactionChanges(): Changes;
|
|
5130
|
+
* ```
|
|
5131
|
+
*
|
|
5132
|
+
* This is useful for deciding whether to rollback a transaction, for example.
|
|
5133
|
+
* The returned object is only meaningful if the method is called when the
|
|
5134
|
+
* Store is in a transaction - such as in a TransactionListener.
|
|
5135
|
+
* @example
|
|
5136
|
+
* This example makes changes to the Store. At the end of the transaction,
|
|
5137
|
+
* detail about what changed is enumerated.
|
|
5138
|
+
*
|
|
5139
|
+
* ```js
|
|
5140
|
+
* const store = createStore()
|
|
5141
|
+
* .setTables({pets: {fido: {species: 'dog', color: 'brown'}}})
|
|
5142
|
+
* .setValues({open: true});
|
|
5143
|
+
*
|
|
5144
|
+
* store
|
|
5145
|
+
* .startTransaction()
|
|
5146
|
+
* .setCell('pets', 'fido', 'color', 'black')
|
|
5147
|
+
* .setValue('open', false)
|
|
5148
|
+
* .finishTransaction(() => {
|
|
5149
|
+
* const [changedCells, changedValues] = store.getTransactionChanges();
|
|
5150
|
+
* console.log(changedCells);
|
|
5151
|
+
* console.log(changedValues);
|
|
5152
|
+
* });
|
|
5153
|
+
* // -> {pets: {fido: {color: 'black'}}}
|
|
5154
|
+
* // -> {open: false}
|
|
5155
|
+
* ```
|
|
5156
|
+
* @category Transaction
|
|
5157
|
+
* @since v5.0.0
|
|
5158
|
+
*/
|
|
5159
|
+
getTransactionChanges(): Changes<Schemas>;
|
|
5160
|
+
|
|
5161
|
+
/**
|
|
5162
|
+
* The getTransactionLog method returns the changes that were made to a Store
|
|
5163
|
+
* during a transaction in more detail, including invalid changes, and what
|
|
5164
|
+
* previous values were.
|
|
5165
|
+
*
|
|
5166
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
5167
|
+
*
|
|
5168
|
+
* ```ts override
|
|
5169
|
+
* getTransactionLog(): TransactionLog;
|
|
5170
|
+
* ```
|
|
5171
|
+
*
|
|
5172
|
+
* This is useful for deciding whether to rollback a transaction, for example.
|
|
5173
|
+
* The returned object is only meaningful if the method is called when the
|
|
5174
|
+
* Store is in a transaction - such as in a TransactionListener.
|
|
5175
|
+
* @example
|
|
5176
|
+
* This example makes changes to the Store. At the end of the transaction,
|
|
5177
|
+
* detail about what changed is enumerated.
|
|
5178
|
+
*
|
|
5179
|
+
* ```js
|
|
5180
|
+
* const store = createStore()
|
|
5181
|
+
* .setTables({pets: {fido: {species: 'dog', color: 'brown'}}})
|
|
5182
|
+
* .setValues({open: true});
|
|
5183
|
+
*
|
|
5184
|
+
* store
|
|
5185
|
+
* .startTransaction()
|
|
5186
|
+
* .setCell('pets', 'fido', 'color', 'black')
|
|
5187
|
+
* .setCell('pets', 'fido', 'eyes', ['left', 'right'])
|
|
5188
|
+
* .setCell('pets', 'fido', 'info', {sold: null})
|
|
5189
|
+
* .setValue('open', false)
|
|
5190
|
+
* .setValue('employees', ['alice', 'bob'])
|
|
5191
|
+
* .finishTransaction(() => {
|
|
5192
|
+
* const [, , changedCells, invalidCells, changedValues, invalidValues] =
|
|
5193
|
+
* store.getTransactionLog();
|
|
5194
|
+
* console.log(changedCells);
|
|
5195
|
+
* console.log(invalidCells);
|
|
5196
|
+
* console.log(changedValues);
|
|
5197
|
+
* console.log(invalidValues);
|
|
5198
|
+
* });
|
|
5199
|
+
* // -> {pets: {fido: {color: ['brown', 'black']}}}
|
|
5200
|
+
* // -> {pets: {fido: {eyes: [['left', 'right']], info: [{sold: null}]}}}
|
|
5201
|
+
* // -> {open: [true, false]}
|
|
5202
|
+
* // -> {employees: [['alice', 'bob']]}
|
|
5203
|
+
* ```
|
|
5204
|
+
* @category Transaction
|
|
5205
|
+
* @since v5.0.0
|
|
5206
|
+
*/
|
|
5207
|
+
getTransactionLog(): TransactionLog<Schemas>;
|
|
5208
|
+
|
|
5176
5209
|
/**
|
|
5177
5210
|
* The finishTransaction method allows you to explicitly finish a transaction
|
|
5178
5211
|
* that has made multiple mutations to the Store, triggering all calls to the
|
|
@@ -5250,9 +5283,9 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
5250
5283
|
* .setCell('pets', 'fido', 'info', {sold: null})
|
|
5251
5284
|
* .setValue('open', false)
|
|
5252
5285
|
* .setValue('employees', ['alice', 'bob'])
|
|
5253
|
-
* .finishTransaction((
|
|
5254
|
-
* const
|
|
5255
|
-
* getTransactionLog();
|
|
5286
|
+
* .finishTransaction(() => {
|
|
5287
|
+
* const [, , changedCells, invalidCells, changedValues, invalidValues] =
|
|
5288
|
+
* store.getTransactionLog();
|
|
5256
5289
|
* console.log(store.getTables());
|
|
5257
5290
|
* console.log(changedCells);
|
|
5258
5291
|
* console.log(invalidCells);
|
|
@@ -8230,12 +8263,10 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
8230
8263
|
* pets: {fido: {species: 'dog', color: 'brown'}},
|
|
8231
8264
|
* })
|
|
8232
8265
|
* .setValues({open: true, employees: 3});
|
|
8233
|
-
* const listenerId = store.addWillFinishTransactionListener(
|
|
8234
|
-
*
|
|
8235
|
-
*
|
|
8236
|
-
*
|
|
8237
|
-
* },
|
|
8238
|
-
* );
|
|
8266
|
+
* const listenerId = store.addWillFinishTransactionListener((store) => {
|
|
8267
|
+
* const [cellsTouched, valuesTouched] = store.getTransactionLog() ?? {};
|
|
8268
|
+
* console.log(`Cells/Values touched: ${cellsTouched}/${valuesTouched}`);
|
|
8269
|
+
* });
|
|
8239
8270
|
* const listenerId2 = store.addTablesListener(() =>
|
|
8240
8271
|
* console.log('Tables changed'),
|
|
8241
8272
|
* );
|
|
@@ -8277,7 +8308,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
8277
8308
|
* // Transaction was rolled back.
|
|
8278
8309
|
*
|
|
8279
8310
|
* store.callListener(listenerId);
|
|
8280
|
-
* // -> 'Cells/Values touched:
|
|
8311
|
+
* // -> 'Cells/Values touched: false/false'
|
|
8281
8312
|
* // It is meaningless to call this listener directly.
|
|
8282
8313
|
*
|
|
8283
8314
|
* store
|
|
@@ -8336,12 +8367,10 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
8336
8367
|
* pets: {fido: {species: 'dog', color: 'brown'}},
|
|
8337
8368
|
* })
|
|
8338
8369
|
* .setValues({open: true, employees: 3});
|
|
8339
|
-
* const listenerId = store.addDidFinishTransactionListener(
|
|
8340
|
-
*
|
|
8341
|
-
*
|
|
8342
|
-
*
|
|
8343
|
-
* },
|
|
8344
|
-
* );
|
|
8370
|
+
* const listenerId = store.addDidFinishTransactionListener((store) => {
|
|
8371
|
+
* const [cellsTouched, valuesTouched] = store.getTransactionLog() ?? {};
|
|
8372
|
+
* console.log(`Cells/Values touched: ${cellsTouched}/${valuesTouched}`);
|
|
8373
|
+
* });
|
|
8345
8374
|
* const listenerId2 = store.addTablesListener(() =>
|
|
8346
8375
|
* console.log('Tables changed'),
|
|
8347
8376
|
* );
|
|
@@ -8383,7 +8412,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
8383
8412
|
* // Transaction was rolled back.
|
|
8384
8413
|
*
|
|
8385
8414
|
* store.callListener(listenerId);
|
|
8386
|
-
* // -> 'Cells/Values touched:
|
|
8415
|
+
* // -> 'Cells/Values touched: false/false'
|
|
8387
8416
|
* // It is meaningless to call this listener directly.
|
|
8388
8417
|
*
|
|
8389
8418
|
* store
|
|
@@ -416,7 +416,7 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
|
|
|
416
416
|
* await createTools(store).getPrettyStoreApi('shop');
|
|
417
417
|
*
|
|
418
418
|
* const dTsLines = dTs.split('\n');
|
|
419
|
-
* console.log(dTsLines[
|
|
419
|
+
* console.log(dTsLines[15]);
|
|
420
420
|
* // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
|
|
421
421
|
*
|
|
422
422
|
* const tsLines = ts.split('\n');
|
|
@@ -436,7 +436,7 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
|
|
|
436
436
|
* await createTools(store).getPrettyStoreApi('shop');
|
|
437
437
|
*
|
|
438
438
|
* const dTsLines = dTs.split('\n');
|
|
439
|
-
* console.log(dTsLines[
|
|
439
|
+
* console.log(dTsLines[15]);
|
|
440
440
|
* // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
|
|
441
441
|
*
|
|
442
442
|
* const tsLines = ts.split('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s="",n=t(s),l=t(!0),a=t(0),o=t(t),r="type",c="default",i="Has",d="Ids",u="Table",h=u+"s",f=u+d,g="Row",T=g+"Count",C=g+d,b="Cell",V=b+d,v="Value",S=v+"s",p=v+d,w=e=>s+e,y=(e,t)=>e.startsWith(t),I=(e,t)=>e.endsWith(t),m=(e,t=0)=>e.charCodeAt(t),R=isFinite,L=e=>null==e,J=(e,t,s)=>L(e)?s?.():t(e),M=e=>e==n||e==l,E=e=>t(e)==o,H=(e,t,s)=>e.slice(t,s),x=e=>e.length,P=(e,t)=>e.forEach(t),F=(e,t)=>e.map(t),O=(e,...t)=>e.push(...t),z=Object,A=e=>z.getPrototypeOf(e),W=z.entries,j=z.keys,k=z.isFrozen,D=z.freeze,N=e=>!L(e)&&J(A(e),(e=>e==z.prototype||L(A(e))),(()=>!0)),B=(e,t)=>!L(((e,t)=>J(e,(e=>e[t])))(e,t)),$=(e,t)=>(delete e[t],e),q=(e,t)=>F(W(e),(([e,s])=>t(s,e))),G=e=>N(e)&&0==(e=>x(j(e)))(e),K=e=>e?.size??0,Q=(e,t)=>e?.has(t)??!1,U=e=>L(e)||0==K(e),X=e=>e.clear(),Y=(e,t)=>e?.forEach(t),Z=(e,t)=>e?.delete(t),_=e=>new Map(e),ee=e=>[...e?.keys()??[]],te=(e,t)=>e?.get(t),se=(e,t)=>Y(e,((e,s)=>t(s,e))),ne=(e,t,s)=>L(s)?(Z(e,t),e):e?.set(t,s),le=(e,t,s)=>(Q(e,t)||ne(e,t,s()),te(e,t)),ae=(e,t,s,n=ne)=>(q(t,((t,n)=>s(e,n,t))),se(e,(s=>B(t,s)?0:n(e,s))),e),oe=(e,t,s)=>{const n={};return Y(e,((e,l)=>{const a=t?t(e,l):e;!s?.(a,e)&&(n[l]=a)})),n},re=(e,t,s)=>oe(e,(e=>oe(e,t,s)),G),ce=(e,t,s)=>oe(e,(e=>re(e,t,s)),G),ie=(e,t)=>{const s=_();return Y(e,((e,n)=>s.set(n,t?.(e)??e))),s},de=e=>ie(e,ie),ue=e=>ie(e,de),he=(e,t,s,n,l=0)=>J((s?le:te)(e,t[l],l>x(t)-2?s:_),(a=>{if(l>x(t)-2)return n?.(a)&&ne(e,t[l]),a;const o=he(a,t,s,n,l+1);return U(a)&&ne(e,t[l]),o})),fe=()=>[s,null],ge=()=>[s,_()],Te=(e,t)=>Ce(e,((e,s)=>[s,L(e)?null:oe(e,t)])),Ce=([e,t],s)=>s(t,e),be=([e,t],s,n,l=0)=>{const a=e>s[0];return(!l&&null!==s[1]||a)&&(s[1]=n(t,s[1])),a&&(s[0]=e),s},Ve=(e,t,s,n)=>{var l;return l=(e,l)=>be(e,le(t,l,fe),((e,t)=>!n||L(e)?s[l]=e??null:(t??=_(),s[l]={},n(e,t,l),t)),n?0:1),P(W(e),(([e,t])=>l(t,e))),t},ve=e=>new Set(Array.isArray(e)||L(e)?e:[e]),Se=(e,t)=>e?.add(t),pe=/^\d+$/,we=()=>{const e=[];let t=0;return[n=>(n?e.shift():null)??s+t++,t=>{pe.test(t)&&x(e)<1e3&&O(e,t)}]},ye=e=>[e,e],Ie=()=>[_(),_()],me=e=>[...e],Re=([e,t])=>e===t,Le=e=>{const s=t(e);return M(s)||s==a&&R(e)?s:void 0},Je=(e,t,s,n,l)=>L(l)?e.delCell(t,s,n,!0):e.setCell(t,s,n,l),Me=(e,t,s)=>L(s)?e.delValue(t):e.setValue(t,s),Ee=e=>JSON.stringify(e,((e,t)=>t instanceof Map?z.fromEntries([...t]):t)),He=JSON.parse,xe=(e,t,s)=>L(e)||!N(e)||G(e)||k(e)?(s?.(),!1):(q(e,((s,n)=>{t(s,n)||$(e,n)})),!G(e)),Pe=(e,t,s)=>ne(e,t,te(e,t)==-s?void 0:s),Fe=()=>{let e,t,n,l=!1,o=!1,d=!1,y=!1,I=0;const m=_(),R=_(),z=_(),A=_(),W=_(),j=_(),k=_(),N=_(),fe=_(),ge=_(),Te=_(),Ce=_(),be=_(),Ve=_(),pe=ve(),Oe=_(),ze=_(),Ae=_(),We=_(),je=Ie(),ke=Ie(),De=Ie(),Ne=Ie(),Be=Ie(),$e=Ie(),qe=Ie(),Ge=Ie(),Ke=Ie(),Qe=Ie(),Ue=Ie(),Xe=Ie(),Ye=Ie(),Ze=Ie(),_e=Ie(),et=Ie(),tt=Ie(),st=Ie(),nt=Ie(),lt=Ie(),at=Ie(),ot=Ie(),rt=_(),ct=Ie(),[it,dt,ut,ht]=(e=>{let t;const[n,l]=we(),a=_();return[(e,l,o,r=[],c=(()=>[]))=>{t??=Fs;const i=n(1);return ne(a,i,[e,l,o,r,c]),Se(he(l,o??[s],ve),i),i},(e,n,...l)=>P(((e,t=[s])=>{const n=[],l=(e,s)=>s==x(t)?O(n,e):null===t[s]?Y(e,(e=>l(e,s+1))):P([t[s],null],(t=>l(te(e,t),s+1)));return l(e,0),n})(e,n),(e=>Y(e,(e=>te(a,e)[0](t,...n??[],...l))))),e=>J(te(a,e),(([,t,n])=>(he(t,n??[s],void 0,(t=>(Z(t,e),U(t)?1:0))),ne(a,e),l(e),n))),e=>J(te(a,e),(([e,,s=[],n,l])=>{const a=(...o)=>{const r=x(o);r==x(s)?e(t,...o,...l(o)):L(s[r])?P(n[r]?.(...o)??[],(e=>a(...o,e))):a(...o,s[r])};a()}))]})(),ft=e=>{if(!xe(e,((e,t)=>[r,c].includes(t))))return!1;const t=e[r];return!(!M(t)&&t!=a||(Le(e[c])!=t&&$(e,c),0))},gt=(t,s)=>(!e||Q(Te,s)||$t(s))&&xe(t,((e,t)=>Tt(s,t,e)),(()=>$t(s))),Tt=(e,t,s,n)=>xe(n?s:vt(s,e,t),((n,l)=>J(Ct(e,t,l,n),(e=>(s[l]=e,!0)),(()=>!1))),(()=>$t(e,t))),Ct=(t,s,n,l)=>e?J(te(te(Te,t),n),(e=>Le(l)!=e[r]?$t(t,s,n,l,e[c]):l),(()=>$t(t,s,n,l))):L(Le(l))?$t(t,s,n,l):l,bt=(e,t)=>xe(t?e:St(e),((t,s)=>J(Vt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>qt())),Vt=(e,s)=>t?J(te(be,e),(t=>Le(s)!=t[r]?qt(e,s,t[c]):s),(()=>qt(e,s))):L(Le(s))?qt(e,s):s,vt=(e,t,s)=>(J(te(Ce,t),(([n,l])=>{Y(n,((t,s)=>{B(e,s)||(e[s]=t)})),Y(l,(n=>{B(e,n)||$t(t,s,n)}))})),e),St=e=>(t&&(Y(Ve,((t,s)=>{B(e,s)||(e[s]=t)})),Y(pe,(t=>{B(e,t)||qt(t)}))),e),pt=e=>ae(Te,e,((e,t,s)=>{const n=_(),l=ve();ae(le(Te,t,_),s,((e,t,s)=>{ne(e,t,s),J(s[c],(e=>ne(n,t,e)),(()=>Se(l,t)))})),ne(Ce,t,[n,l])}),((e,t)=>{ne(Te,t),ne(Ce,t)})),wt=e=>ae(be,e,((e,t,s)=>{ne(be,t,s),J(s[c],(e=>ne(Ve,t,e)),(()=>Se(pe,t)))}),((e,t)=>{ne(be,t),ne(Ve,t),Z(pe,t)})),yt=e=>G(e)?ms():Ss(e),It=e=>ae(Ae,e,((e,t,s)=>mt(t,s)),((e,t)=>Ft(t))),mt=(e,t)=>ae(le(Ae,e,(()=>(Wt(e,1),ne(Oe,e,we()),ne(ze,e,_()),_()))),t,((t,s,n)=>Rt(e,t,s,n)),((t,s)=>Ot(e,t,s))),Rt=(e,t,s,n,l)=>ae(le(t,s,(()=>(jt(e,s,1),_()))),n,((t,n,l)=>Lt(e,s,t,n,l)),((n,a)=>zt(e,t,s,n,a,l))),Lt=(e,t,s,n,l)=>{Q(s,n)||kt(e,t,n,1);const a=te(s,n);l!==a&&(Dt(e,t,n,a,l),ne(s,n,l))},Jt=(e,t,s,n,l)=>J(te(t,s),(t=>Lt(e,s,t,n,l)),(()=>Rt(e,t,s,vt({[n]:l},e,s)))),Mt=e=>G(e)?Js():ps(e),Et=e=>ae(We,e,((e,t,s)=>Ht(t,s)),((e,t)=>At(t))),Ht=(e,t)=>{Q(We,e)||Nt(e,1);const s=te(We,e);t!==s&&(Bt(e,s,t),ne(We,e,t))},xt=(e,t)=>{const[s]=te(Oe,e),n=s(t);return Q(te(Ae,e),n)?xt(e,t):n},Pt=e=>te(Ae,e)??mt(e,{}),Ft=e=>mt(e,{}),Ot=(e,t,s)=>{const[,n]=te(Oe,e);n(s),Rt(e,t,s,{},!0)},zt=(e,t,s,n,l,a)=>{const o=te(te(Ce,e)?.[0],l);if(!L(o)&&!a)return Lt(e,s,n,l,o);const r=t=>{Dt(e,s,t,te(n,t)),kt(e,s,t,-1),ne(n,t)};L(o)?r(l):se(n,r),U(n)&&(jt(e,s,-1),U(ne(t,s))&&(Wt(e,-1),ne(Ae,e),ne(Oe,e),ne(ze,e)))},At=e=>{const t=te(Ve,e);if(!L(t))return Ht(e,t);Bt(e,te(We,e)),Nt(e,-1),ne(We,e)},Wt=(e,t)=>Pe(m,e,t),jt=(e,t,s)=>Pe(le(A,e,_),t,s)&&ne(z,e,le(z,e,(()=>0))+s),kt=(e,t,s,n)=>{const l=te(ze,e),a=te(l,s)??0;(0==a&&1==n||1==a&&-1==n)&&Pe(le(R,e,_),s,n),ne(l,s,a!=-n?a+n:null),Pe(le(le(W,e,_),t,_),s,n)},Dt=(e,t,s,n,l)=>le(le(le(j,e,_),t,_),s,(()=>[n,0]))[1]=l,Nt=(e,t)=>Pe(k,e,t),Bt=(e,t,s)=>le(N,e,(()=>[t,0]))[1]=s,$t=(e,t,s,n,l)=>(O(le(le(le(fe,e,_),t,_),s,(()=>[])),n),l),qt=(e,t,s)=>(O(le(ge,e,(()=>[])),t),s),Gt=(e,t,s)=>J(te(te(te(j,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...ye(is(e,t,s))])),Kt=e=>J(te(N,e),(([e,t])=>[!0,e,t]),(()=>[!1,...ye(hs(e))])),Qt=e=>U(fe)||U(et[e])?0:Y(e?ue(fe):fe,((t,s)=>Y(t,((t,n)=>Y(t,((t,l)=>dt(et[e],[s,n,l],t))))))),Ut=e=>U(ge)||U(tt[e])?0:Y(e?ie(ge):ge,((t,s)=>dt(tt[e],[s],t))),Xt=(e,t,s,n)=>{if(!U(e))return dt(t,n,(()=>oe(e))),se(e,((e,t)=>dt(s,[...n??[],e],1==t))),1},Yt=e=>{const t=fs();t!=d&&dt(je[e],void 0,t);const s=U(Qe[e]),n=U(Ye[e])&&U(Ze[e])&&U(Ke[e])&&U(Ue[e])&&U($e[e])&&U(qe[e])&&U(Ge[e])&&s&&U(De[e])&&U(Ne[e]),l=U(_e[e])&&U(Xe[e])&&U(Be[e])&&U(ke[e]);if(!n||!l){const t=e?[ie(m),de(R),ie(z),de(A),ue(W),ue(j)]:[m,R,z,A,W,j];if(!n){Xt(t[0],De[e],Ne[e]),Y(t[1],((t,s)=>Xt(t,$e[e],qe[e],[s]))),Y(t[2],((t,s)=>{0!=t&&dt(Ge[e],[s],as(s))}));const n=ve();Y(t[3],((t,l)=>{Xt(t,Ke[e],Ue[e],[l])&&!s&&(dt(Qe[e],[l,null]),Se(n,l))})),s||Y(t[5],((t,s)=>{if(!Q(n,s)){const n=ve();Y(t,(e=>Y(e,(([t,s],l)=>s!==t?Se(n,l):Z(e,l))))),Y(n,(t=>dt(Qe[e],[s,t])))}})),Y(t[4],((t,s)=>Y(t,((t,n)=>Xt(t,Ye[e],Ze[e],[s,n])))))}if(!l){let s;Y(t[5],((t,n)=>{let l;Y(t,((t,a)=>{let o;Y(t,(([t,r],c)=>{r!==t&&(dt(_e[e],[n,a,c],r,t,Gt),s=l=o=1)})),o&&dt(Xe[e],[n,a],Gt)})),l&&dt(Be[e],[n],Gt)})),s&&dt(ke[e],void 0,Gt)}}},Zt=e=>{const t=Vs();t!=y&&dt(st[e],void 0,t);const s=U(lt[e])&&U(at[e]),n=U(ot[e])&&U(nt[e]);if(!s||!n){const t=e?[ie(k),ie(N)]:[k,N];if(s||Xt(t[0],lt[e],at[e]),!n){let s;Y(t[1],(([t,n],l)=>{n!==t&&(dt(ot[e],[l],n,t,Kt),s=1)})),s&&dt(nt[e],void 0,Kt)}}},_t=(e,...t)=>(Hs((()=>e(...F(t,w)))),Fs),es=()=>[oe(j,((e,t)=>-1===te(m,t)?null:oe(e,((e,s)=>-1===te(te(A,t),s)?null:oe(e,(([,e])=>e??null),((e,t)=>Re(t)))),G)),G),oe(N,(([,e])=>e??null),((e,t)=>Re(t)))],ts=()=>({cellsTouched:l,valuesTouched:o,changedCells:ce(j,me,Re),invalidCells:ce(fe),changedValues:oe(N,me,Re),invalidValues:oe(ge),changedTableIds:oe(m),changedRowIds:re(A),changedCellIds:ce(W),changedValueIds:oe(k)}),ss=()=>ce(Ae),ns=()=>ee(Ae),ls=e=>ee(te(ze,w(e))),as=e=>K(te(Ae,w(e))),os=e=>ee(te(Ae,w(e))),rs=(e,t,s,n=0,l)=>{return F(H((o=te(Ae,w(e)),r=(e,s)=>[L(t)?s:te(e,w(t)),s],a=([e],[t])=>((e??0)<(t??0)?-1:1)*(s?-1:1),F([...o?.entries()??[]],(([e,t])=>r(t,e))).sort(a)),n,L(l)?l:n+l),(([,e])=>e));var a,o,r},cs=(e,t)=>ee(te(te(Ae,w(e)),w(t))),is=(e,t,s)=>te(te(te(Ae,w(e)),w(t)),w(s)),ds=()=>oe(We),us=()=>ee(We),hs=e=>te(We,w(e)),fs=()=>!U(Ae),gs=e=>Q(Ae,w(e)),Ts=(e,t)=>Q(te(ze,w(e)),w(t)),Cs=(e,t)=>Q(te(Ae,w(e)),w(t)),bs=(e,t,s)=>Q(te(te(Ae,w(e)),w(t)),w(s)),Vs=()=>!U(We),vs=e=>Q(We,w(e)),Ss=e=>_t((()=>(e=>xe(e,gt,$t))(e)?It(e):0)),ps=e=>_t((()=>bt(e)?Et(e):0)),ws=e=>{try{yt(He(e))}catch{}return Fs},ys=t=>_t((()=>{if((e=xe(t,(e=>xe(e,ft))))&&(pt(t),!U(Ae))){const e=ss();ms(),Ss(e)}})),Is=e=>_t((()=>{if(t=(e=>xe(e,ft))(e)){const s=ds();Es(),Js(),t=!0,wt(e),ps(s)}})),ms=()=>_t((()=>It({}))),Rs=e=>_t((e=>Q(Ae,e)?Ft(e):0),e),Ls=(e,t)=>_t(((e,t)=>J(te(Ae,e),(s=>Q(s,t)?Ot(e,s,t):0))),e,t),Js=()=>_t((()=>Et({}))),Ms=()=>_t((()=>{pt({}),e=!1})),Es=()=>_t((()=>{wt({}),t=!1})),Hs=(e,t)=>{if(-1!=I){xs();const s=e();return Ps(t),s}},xs=()=>(-1!=I&&I++,1==I&&dt(rt,void 0,es,ts),Fs),Ps=e=>(I>0&&(I--,0==I&&(l=!U(j),o=!U(N),I=1,Qt(1),l&&Yt(1),Ut(1),o&&Zt(1),e?.(es,ts)&&(Y(j,((e,t)=>Y(e,((e,s)=>Y(e,(([e],n)=>Je(Fs,t,s,n,e))))))),Y(N,(([e],t)=>Me(Fs,t,e))),l=o=!1),dt(ct[0],void 0,es,ts),I=-1,Qt(0),l&&Yt(0),Ut(0),o&&Zt(0),dt(ct[1],void 0,es,ts),n?.(Fs,es,ts),I=0,l=o=!1,d=fs(),y=Vs(),P([m,R,z,A,W,j,fe,k,N,ge],X))),Fs),Fs={getContent:()=>[ss(),ds()],getTables:ss,getTableIds:ns,getTable:e=>re(te(Ae,w(e))),getTableCellIds:ls,getRowCount:as,getRowIds:os,getSortedRowIds:rs,getRow:(e,t)=>oe(te(te(Ae,w(e)),w(t))),getCellIds:cs,getCell:is,getValues:ds,getValueIds:us,getValue:hs,hasTables:fs,hasTable:gs,hasTableCell:Ts,hasRow:Cs,hasCell:bs,hasValues:Vs,hasValue:vs,getTablesJson:()=>Ee(Ae),getValuesJson:()=>Ee(We),getJson:()=>Ee([Ae,We]),getTablesSchemaJson:()=>Ee(Te),getValuesSchemaJson:()=>Ee(be),getSchemaJson:()=>Ee([Te,be]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>_t((()=>{(G(e)?ms:Ss)(e),(G(t)?Js:ps)(t)})),setTables:Ss,setTable:(e,t)=>_t((e=>gt(t,e)?mt(e,t):0),e),setRow:(e,t,s)=>_t(((e,t)=>Tt(e,t,s)?Rt(e,Pt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>Hs((()=>{let n;return Tt(e,n,t)&&(e=w(e),Rt(e,Pt(e),n=xt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>_t(((e,t)=>{if(Tt(e,t,s,1)){const n=Pt(e);q(s,((s,l)=>Jt(e,n,t,l,s)))}}),e,t),setCell:(e,t,s,n)=>_t(((e,t,s)=>J(Ct(e,t,s,E(n)?n(is(e,t,s)):n),(n=>Jt(e,Pt(e),t,s,n)))),e,t,s),setValues:ps,setPartialValues:e=>_t((()=>bt(e,1)?q(e,((e,t)=>Ht(t,e))):0)),setValue:(e,t)=>_t((e=>J(Vt(e,E(t)?t(hs(e)):t),(t=>Ht(e,t)))),e),setTransactionChanges:e=>_t((()=>{q(e[0],((e,t)=>L(e)?Rs(t):q(e,((e,s)=>L(e)?Ls(t,s):q(e,((e,n)=>Je(Fs,t,s,n,e))))))),q(e[1],((e,t)=>Me(Fs,t,e)))})),setTablesJson:ws,setValuesJson:e=>{try{Mt(He(e))}catch{}return Fs},setJson:e=>_t((()=>{try{const[t,s]=He(e);yt(t),Mt(s)}catch{ws(e)}})),setTablesSchema:ys,setValuesSchema:Is,setSchema:(e,t)=>_t((()=>{ys(e),Is(t)})),delTables:ms,delTable:Rs,delRow:Ls,delCell:(e,t,s,n)=>_t(((e,t,s)=>J(te(Ae,e),(l=>J(te(l,t),(a=>Q(a,s)?zt(e,l,t,a,s,n):0))))),e,t,s),delValues:Js,delValue:e=>_t((e=>Q(We,e)?At(e):0),e),delTablesSchema:Ms,delValuesSchema:Es,delSchema:()=>_t((()=>{Ms(),Es()})),transaction:Hs,startTransaction:xs,finishTransaction:Ps,forEachTable:e=>Y(Ae,((t,s)=>e(s,(e=>Y(t,((t,s)=>e(s,(e=>se(t,e))))))))),forEachTableCell:(e,t)=>se(te(ze,w(e)),t),forEachRow:(e,t)=>Y(te(Ae,w(e)),((e,s)=>t(s,(t=>se(e,t))))),forEachCell:(e,t,s)=>se(te(te(Ae,w(e)),w(t)),s),forEachValue:e=>se(We,e),addSortedRowIdsListener:(e,t,s,n,l,a,o)=>{let r=rs(e,t,s,n,l);return it((()=>{const o=rs(e,t,s,n,l);var c,i,d;i=r,x(c=o)===x(i)&&(d=(e,t)=>i[t]===e,c.every(d))||(r=o,a(Fs,e,t,s,n,l,r))}),Qe[o?1:0],[e,t],[ns])},addStartTransactionListener:e=>it(e,rt),addWillFinishTransactionListener:e=>it(e,ct[0]),addDidFinishTransactionListener:e=>it(e,ct[1]),callListener:e=>(ht(e),Fs),delListener:e=>(ut(e),Fs),getListenerStats:()=>({}),createStore:Fe,addListener:it,callListeners:dt,addPostTransactionListener:e=>{n=e}};return q({[i+h]:[0,je,[],()=>[fs()]],[h]:[0,ke],[f]:[0,De],[i+u]:[1,Ne,[ns],e=>[gs(...e)]],[u]:[1,Be,[ns]],[u+V]:[1,$e,[ns]],[i+u+b]:[2,qe,[ns,ls],e=>[Ts(...e)]],[T]:[1,Ge,[ns]],[C]:[1,Ke,[ns]],[i+g]:[2,Ue,[ns,os],e=>[Cs(...e)]],[g]:[2,Xe,[ns,os]],[V]:[2,Ye,[ns,os]],[i+b]:[3,Ze,[ns,os,cs],e=>[bs(...e)]],[b]:[3,_e,[ns,os,cs],e=>ye(is(...e))],InvalidCell:[3,et],[i+S]:[0,st,[],()=>[Vs()]],[S]:[0,nt],[p]:[0,lt],[i+v]:[1,at,[us],e=>[vs(...e)]],[v]:[1,ot,[us],e=>ye(hs(e[0]))],InvalidValue:[1,tt]},(([e,t,s,n],l)=>{Fs["add"+l+"Listener"]=(...l)=>it(l[e],t[l[e+1]?1:0],e>0?H(l,0,e):void 0,s,n)})),D(Fs)},Oe=2**36,ze=2**30,Ae=2**24,We=2**18,je=4096,ke=64,De=e=>String.fromCharCode(48+(63&e)),Ne=(e,t)=>m(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};e.createMergeableStore=e=>{let t=1;const[n,l]=(e=>{let t=0,s=0;const n=(l=(e,t)=>(e<<5)+e^m(t),((e,t="",s)=>e.split(t,s))(e).reduce(l,5381)>>>0);var l;const a=e=>{const n=t,[l,a]=L(e)?[0,0]:[Ne(o=e,0)*Oe+Ne(o,1)*ze+Ne(o,2)*Ae+Ne(o,3)*We+Ne(o,4)*je+Ne(o,5)*ke+Ne(o,6),Ne(o,7)*We+Ne(o,8)*je+Ne(o,9)*ke+Ne(o,10),Ne(o,11)*Ae+Ne(o,12)*We+Ne(o,13)*je+Ne(o,14)*ke+Ne(o,15)];var o;t=Math.max(n,l,Date.now()),s=t==n?t==l?Math.max(s,a):s:t==l?a:-1};return[()=>{return a(),l=++s,o=n,De((e=t)/Oe)+De(e/ze)+De(e/Ae)+De(e/We)+De(e/je)+De(e/ke)+De(e)+De(l/We)+De(l/je)+De(l/ke)+De(l)+De(o/Ae)+De(o/We)+De(o/je)+De(o/ke)+De(o);var e,l,o},a]})(e),a=Fe(),o=[s,[ge(),ge()]],r=e=>{const s=[{},{}];return l(e[0]),be(e,o,(([e,t],[n,l])=>[be(e,n,((e,t)=>Ve(e,t,s[0],((e,t,n)=>Ve(e,t,s[0][n],((e,t,l)=>Ve(e,t,s[0][n][l]))))))),be(t,l,((e,t)=>Ve(e,t,s[1])))])),t=0,a.setTransactionChanges(s),t=1,c},c={getMergeableContent:()=>Ce(o,(([e,t],s)=>[s,[Te(e,(e=>Te(e,(e=>Te(e,me))))),Te(t,me)]])),applyMergeableContent:r,merge:e=>{const t=c.getMergeableContent(),s=e.getMergeableContent();return e.applyMergeableContent(t),r(s)}};return a.addPostTransactionListener(((e,s)=>{if(t){const e=n(),[t,l]=s(),[a,r]=o[1];o[0]=e,G(t)||(a[0]=e,q(t,((t,s)=>{const n=le(a[1],s,fe);if(n[0]=e,L(t))n[1]=null;else{const s=n[1]??=_();q(t,((t,n)=>{const l=le(s,n,fe);if(l[0]=e,L(t))l[1]=null;else{const s=l[1]??=_();q(t,((t,n)=>ne(s,n,[e,t])))}}))}}))),G(l)||(r[0]=e,q(l,((t,s)=>{ne(r[1],s,[e,t])})))}})),q(a,((e,t)=>c[t]=y(t,"set")||y(t,"del")||I(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),c):y(t,"add")&&I(t,"Listener")?(...s)=>{const n=Be[H(t,3,-8)]??0,l=s[n];return s[n]=(e,...t)=>l(c,...t),e(...s)}:e)),D(c)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMergeableStore={});
|
|
1
|
+
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s="",n=t(s),a=t(!0),l=t(0),o=t(t),r="type",i="default",c="Has",d="Ids",u="Table",h=u+"s",g=u+d,f="Row",T=f+"Count",b=f+d,C="Cell",p=C+d,v="Value",V=v+"s",y=v+d,S=e=>s+e,m=(e,t)=>e.startsWith(t),w=(e,t)=>e.endsWith(t),R=(e,t=0)=>e.charCodeAt(t),I=isFinite,L=e=>null==e,M=(e,t,s)=>L(e)?s?.():t(e),J=e=>e==n||e==a,E=e=>t(e)==o,H=(e,t,s)=>e.slice(t,s),x=e=>e.length,P=(e,t)=>e.forEach(t),F=(e,t)=>e.map(t),O=(e,...t)=>e.push(...t),z=Object,A=e=>z.getPrototypeOf(e),W=z.entries,j=z.keys,k=z.isFrozen,D=z.freeze,N=e=>!L(e)&&M(A(e),(e=>e==z.prototype||L(A(e))),(()=>!0)),B=(e,t)=>t in e,$=(e,t)=>(delete e[t],e),q=(e,t)=>P(W(e),(([e,s])=>t(s,e))),G=(e,t)=>F(W(e),(([e,s])=>t(s,e))),K=e=>N(e)&&0==(e=>x(j(e)))(e),Q=e=>e?.size??0,U=(e,t)=>e?.has(t)??!1,X=e=>L(e)||0==Q(e),Y=e=>e.clear(),Z=(e,t)=>e?.forEach(t),_=(e,t)=>e?.delete(t),ee=e=>new Map(e),te=e=>[...e?.keys()??[]],se=(e,t)=>e?.get(t),ne=(e,t)=>Z(e,((e,s)=>t(s,e))),ae=(e,t,s)=>L(s)?(_(e,t),e):e?.set(t,s),le=(e,t,s)=>(U(e,t)||ae(e,t,s()),se(e,t)),oe=(e,t,s,n=ae)=>(G(t,((t,n)=>s(e,n,t))),ne(e,(s=>B(t,s)?0:n(e,s))),e),re=(e,t,s)=>{const n={};return Z(e,((e,a)=>{const l=t?t(e,a):e;!s?.(l,e)&&(n[a]=l)})),n},ie=(e,t,s)=>re(e,(e=>re(e,t,s)),K),ce=(e,t,s)=>re(e,(e=>ie(e,t,s)),K),de=(e,t)=>{const s=ee();return Z(e,((e,n)=>s.set(n,t?.(e)??e))),s},ue=e=>de(e,de),he=e=>de(e,ue),ge=(e,t,s,n,a=0)=>M((s?le:se)(e,t[a],a>x(t)-2?s:ee),(l=>{if(a>x(t)-2)return n?.(l)&&ae(e,t[a]),l;const o=ge(l,t,s,n,a+1);return X(l)&&ae(e,t[a]),o})),fe=()=>[s,void 0],Te=()=>[s,ee()],be=([e,t],s)=>[e,s(t,e)],Ce=(e,t)=>be(e,(e=>re(e,t))),pe=(e,t,s,n)=>q(e,((e,a)=>ve(e,le(t,a,Te),s[a]=((e=[])=>z.fromEntries(e))(),n))),ve=([e,t],s,n,a)=>{e>s[0]&&(s[0]=e),a(t,s[1],n)},Ve=(e,t,s)=>q(e,(([e,n],a)=>{const l=le(t,a,fe);e>l[0]&&(l[0]=e,l[1]=s[a]=n)})),ye=e=>new Set(Array.isArray(e)||L(e)?e:[e]),Se=(e,t)=>e?.add(t),me=/^\d+$/,we=()=>{const e=[];let t=0;return[n=>(n?e.shift():null)??s+t++,t=>{me.test(t)&&x(e)<1e3&&O(e,t)}]},Re=e=>[e,e],Ie=()=>[ee(),ee()],Le=e=>[...e],Me=([e,t])=>e===t,Je=e=>{const s=t(e);return J(s)||s==l&&I(e)?s:void 0},Ee=(e,t,s,n,a)=>L(a)?e.delCell(t,s,n,!0):e.setCell(t,s,n,a),He=(e,t,s)=>L(s)?e.delValue(t):e.setValue(t,s),xe=e=>JSON.stringify(e,((e,t)=>t instanceof Map?z.fromEntries([...t]):t)),Pe=JSON.parse,Fe=(e,t,s)=>L(e)||!N(e)||K(e)||k(e)?(s?.(),!1):(G(e,((s,n)=>{t(s,n)||$(e,n)})),!K(e)),Oe=(e,t,s)=>ae(e,t,se(e,t)==-s?void 0:s),ze=()=>{let e,t,n,a=!1,o=!1,d=!1,m=!1,w=0;const R=ee(),I=ee(),z=ee(),A=ee(),W=ee(),j=ee(),k=ee(),N=ee(),q=ee(),fe=ee(),Te=ee(),be=ee(),Ce=ee(),pe=ee(),ve=ye(),Ve=ee(),me=ee(),Ae=ee(),We=ee(),je=Ie(),ke=Ie(),De=Ie(),Ne=Ie(),Be=Ie(),$e=Ie(),qe=Ie(),Ge=Ie(),Ke=Ie(),Qe=Ie(),Ue=Ie(),Xe=Ie(),Ye=Ie(),Ze=Ie(),_e=Ie(),et=Ie(),tt=Ie(),st=Ie(),nt=Ie(),at=Ie(),lt=Ie(),ot=Ie(),rt=ee(),it=Ie(),[ct,dt,ut,ht]=(e=>{let t;const[n,a]=we(),l=ee();return[(e,a,o,r=[],i=(()=>[]))=>{t??=xs;const c=n(1);return ae(l,c,[e,a,o,r,i]),Se(ge(a,o??[s],ye),c),c},(e,n,...a)=>P(((e,t=[s])=>{const n=[],a=(e,s)=>s==x(t)?O(n,e):null===t[s]?Z(e,(e=>a(e,s+1))):P([t[s],null],(t=>a(se(e,t),s+1)));return a(e,0),n})(e,n),(e=>Z(e,(e=>se(l,e)[0](t,...n??[],...a))))),e=>M(se(l,e),(([,t,n])=>(ge(t,n??[s],void 0,(t=>(_(t,e),X(t)?1:0))),ae(l,e),a(e),n))),e=>M(se(l,e),(([e,,s=[],n,a])=>{const l=(...o)=>{const r=x(o);r==x(s)?e(t,...o,...a(o)):L(s[r])?P(n[r]?.(...o)??[],(e=>l(...o,e))):l(...o,s[r])};l()}))]})(),gt=e=>{if(!Fe(e,((e,t)=>[r,i].includes(t))))return!1;const t=e[r];return!(!J(t)&&t!=l||(Je(e[i])!=t&&$(e,i),0))},ft=(t,s)=>(!e||U(Te,s)||$t(s))&&Fe(t,((e,t)=>Tt(s,t,e)),(()=>$t(s))),Tt=(e,t,s,n)=>Fe(n?s:vt(s,e,t),((n,a)=>M(bt(e,t,a,n),(e=>(s[a]=e,!0)),(()=>!1))),(()=>$t(e,t))),bt=(t,s,n,a)=>e?M(se(se(Te,t),n),(e=>Je(a)!=e[r]?$t(t,s,n,a,e[i]):a),(()=>$t(t,s,n,a))):L(Je(a))?$t(t,s,n,a):a,Ct=(e,t)=>Fe(t?e:Vt(e),((t,s)=>M(pt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>qt())),pt=(e,s)=>t?M(se(Ce,e),(t=>Je(s)!=t[r]?qt(e,s,t[i]):s),(()=>qt(e,s))):L(Je(s))?qt(e,s):s,vt=(e,t,s)=>(M(se(be,t),(([n,a])=>{Z(n,((t,s)=>{B(e,s)||(e[s]=t)})),Z(a,(n=>{B(e,n)||$t(t,s,n)}))})),e),Vt=e=>(t&&(Z(pe,((t,s)=>{B(e,s)||(e[s]=t)})),Z(ve,(t=>{B(e,t)||qt(t)}))),e),yt=e=>oe(Te,e,((e,t,s)=>{const n=ee(),a=ye();oe(le(Te,t,ee),s,((e,t,s)=>{ae(e,t,s),M(s[i],(e=>ae(n,t,e)),(()=>Se(a,t)))})),ae(be,t,[n,a])}),((e,t)=>{ae(Te,t),ae(be,t)})),St=e=>oe(Ce,e,((e,t,s)=>{ae(Ce,t,s),M(s[i],(e=>ae(pe,t,e)),(()=>Se(ve,t)))}),((e,t)=>{ae(Ce,t),ae(pe,t),_(ve,t)})),mt=e=>K(e)?ms():ps(e),wt=e=>oe(Ae,e,((e,t,s)=>Rt(t,s)),((e,t)=>Ft(t))),Rt=(e,t)=>oe(le(Ae,e,(()=>(Wt(e,1),ae(Ve,e,we()),ae(me,e,ee()),ee()))),t,((t,s,n)=>It(e,t,s,n)),((t,s)=>Ot(e,t,s))),It=(e,t,s,n,a)=>oe(le(t,s,(()=>(jt(e,s,1),ee()))),n,((t,n,a)=>Lt(e,s,t,n,a)),((n,l)=>zt(e,t,s,n,l,a))),Lt=(e,t,s,n,a)=>{U(s,n)||kt(e,t,n,1);const l=se(s,n);a!==l&&(Dt(e,t,n,l,a),ae(s,n,a))},Mt=(e,t,s,n,a)=>M(se(t,s),(t=>Lt(e,s,t,n,a)),(()=>It(e,t,s,vt({[n]:a},e,s)))),Jt=e=>K(e)?Is():vs(e),Et=e=>oe(We,e,((e,t,s)=>Ht(t,s)),((e,t)=>At(t))),Ht=(e,t)=>{U(We,e)||Nt(e,1);const s=se(We,e);t!==s&&(Bt(e,s,t),ae(We,e,t))},xt=(e,t)=>{const[s]=se(Ve,e),n=s(t);return U(se(Ae,e),n)?xt(e,t):n},Pt=e=>se(Ae,e)??Rt(e,{}),Ft=e=>Rt(e,{}),Ot=(e,t,s)=>{const[,n]=se(Ve,e);n(s),It(e,t,s,{},!0)},zt=(e,t,s,n,a,l)=>{const o=se(se(be,e)?.[0],a);if(!L(o)&&!l)return Lt(e,s,n,a,o);const r=t=>{Dt(e,s,t,se(n,t)),kt(e,s,t,-1),ae(n,t)};L(o)?r(a):ne(n,r),X(n)&&(jt(e,s,-1),X(ae(t,s))&&(Wt(e,-1),ae(Ae,e),ae(Ve,e),ae(me,e)))},At=e=>{const t=se(pe,e);if(!L(t))return Ht(e,t);Bt(e,se(We,e)),Nt(e,-1),ae(We,e)},Wt=(e,t)=>Oe(R,e,t),jt=(e,t,s)=>Oe(le(A,e,ee),t,s)&&ae(z,e,le(z,e,(()=>0))+s),kt=(e,t,s,n)=>{const a=se(me,e),l=se(a,s)??0;(0==l&&1==n||1==l&&-1==n)&&Oe(le(I,e,ee),s,n),ae(a,s,l!=-n?l+n:null),Oe(le(le(W,e,ee),t,ee),s,n)},Dt=(e,t,s,n,a)=>le(le(le(j,e,ee),t,ee),s,(()=>[n,0]))[1]=a,Nt=(e,t)=>Oe(k,e,t),Bt=(e,t,s)=>le(N,e,(()=>[t,0]))[1]=s,$t=(e,t,s,n,a)=>(O(le(le(le(q,e,ee),t,ee),s,(()=>[])),n),a),qt=(e,t,s)=>(O(le(fe,e,(()=>[])),t),s),Gt=(e,t,s)=>M(se(se(se(j,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Re(rs(e,t,s))])),Kt=e=>M(se(N,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Re(ds(e))])),Qt=e=>X(q)||X(et[e])?0:Z(e?he(q):q,((t,s)=>Z(t,((t,n)=>Z(t,((t,a)=>dt(et[e],[s,n,a],t))))))),Ut=e=>X(fe)||X(tt[e])?0:Z(e?de(fe):fe,((t,s)=>dt(tt[e],[s],t))),Xt=(e,t,s,n)=>{if(!X(e))return dt(t,n,(()=>re(e))),ne(e,((e,t)=>dt(s,[...n??[],e],1==t))),1},Yt=e=>{const t=us();t!=d&&dt(je[e],void 0,t);const s=X(Qe[e]),n=X(Ye[e])&&X(Ze[e])&&X(Ke[e])&&X(Ue[e])&&X($e[e])&&X(qe[e])&&X(Ge[e])&&s&&X(De[e])&&X(Ne[e]),a=X(_e[e])&&X(Xe[e])&&X(Be[e])&&X(ke[e]);if(!n||!a){const t=e?[de(R),ue(I),de(z),ue(A),he(W),he(j)]:[R,I,z,A,W,j];if(!n){Xt(t[0],De[e],Ne[e]),Z(t[1],((t,s)=>Xt(t,$e[e],qe[e],[s]))),Z(t[2],((t,s)=>{0!=t&&dt(Ge[e],[s],ns(s))}));const n=ye();Z(t[3],((t,a)=>{Xt(t,Ke[e],Ue[e],[a])&&!s&&(dt(Qe[e],[a,null]),Se(n,a))})),s||Z(t[5],((t,s)=>{if(!U(n,s)){const n=ye();Z(t,(e=>Z(e,(([t,s],a)=>s!==t?Se(n,a):_(e,a))))),Z(n,(t=>dt(Qe[e],[s,t])))}})),Z(t[4],((t,s)=>Z(t,((t,n)=>Xt(t,Ye[e],Ze[e],[s,n])))))}if(!a){let s;Z(t[5],((t,n)=>{let a;Z(t,((t,l)=>{let o;Z(t,(([t,r],i)=>{r!==t&&(dt(_e[e],[n,l,i],r,t,Gt),s=a=o=1)})),o&&dt(Xe[e],[n,l],Gt)})),a&&dt(Be[e],[n],Gt)})),s&&dt(ke[e],void 0,Gt)}}},Zt=e=>{const t=bs();t!=m&&dt(st[e],void 0,t);const s=X(at[e])&&X(lt[e]),n=X(ot[e])&&X(nt[e]);if(!s||!n){const t=e?[de(k),de(N)]:[k,N];if(s||Xt(t[0],at[e],lt[e]),!n){let s;Z(t[1],(([t,n],a)=>{n!==t&&(dt(ot[e],[a],n,t,Kt),s=1)})),s&&dt(nt[e],void 0,Kt)}}},_t=(e,...t)=>(Js((()=>e(...F(t,S)))),xs),es=()=>ce(Ae),ts=()=>te(Ae),ss=e=>te(se(me,S(e))),ns=e=>Q(se(Ae,S(e))),as=e=>te(se(Ae,S(e))),ls=(e,t,s,n=0,a)=>{return F(H((o=se(Ae,S(e)),r=(e,s)=>[L(t)?s:se(e,S(t)),s],l=([e],[t])=>((e??0)<(t??0)?-1:1)*(s?-1:1),F([...o?.entries()??[]],(([e,t])=>r(t,e))).sort(l)),n,L(a)?a:n+a),(([,e])=>e));var l,o,r},os=(e,t)=>te(se(se(Ae,S(e)),S(t))),rs=(e,t,s)=>se(se(se(Ae,S(e)),S(t)),S(s)),is=()=>re(We),cs=()=>te(We),ds=e=>se(We,S(e)),us=()=>!X(Ae),hs=e=>U(Ae,S(e)),gs=(e,t)=>U(se(me,S(e)),S(t)),fs=(e,t)=>U(se(Ae,S(e)),S(t)),Ts=(e,t,s)=>U(se(se(Ae,S(e)),S(t)),S(s)),bs=()=>!X(We),Cs=e=>U(We,S(e)),ps=e=>_t((()=>(e=>Fe(e,ft,$t))(e)?wt(e):0)),vs=e=>_t((()=>Ct(e)?Et(e):0)),Vs=e=>{try{mt(Pe(e))}catch{}return xs},ys=t=>_t((()=>{if((e=Fe(t,(e=>Fe(e,gt))))&&(yt(t),!X(Ae))){const e=es();ms(),ps(e)}})),Ss=e=>_t((()=>{if(t=(e=>Fe(e,gt))(e)){const s=is();Ms(),Is(),t=!0,St(e),vs(s)}})),ms=()=>_t((()=>wt({}))),ws=e=>_t((e=>U(Ae,e)?Ft(e):0),e),Rs=(e,t)=>_t(((e,t)=>M(se(Ae,e),(s=>U(s,t)?Ot(e,s,t):0))),e,t),Is=()=>_t((()=>Et({}))),Ls=()=>_t((()=>{yt({}),e=!1})),Ms=()=>_t((()=>{St({}),t=!1})),Js=(e,t)=>{if(-1!=w){Es();const s=e();return Hs(t),s}},Es=()=>(-1!=w&&w++,1==w&&dt(rt,void 0),xs),Hs=e=>(w>0&&(w--,0==w&&(a=!X(j),o=!X(N),w=1,Qt(1),a&&Yt(1),Ut(1),o&&Zt(1),e?.(xs)&&(Z(j,((e,t)=>Z(e,((e,s)=>Z(e,(([e],n)=>Ee(xs,t,s,n,e))))))),Z(N,(([e],t)=>He(xs,t,e))),a=o=!1),dt(it[0],void 0),w=-1,Qt(0),a&&Yt(0),Ut(0),o&&Zt(0),n?.(xs),dt(it[1],void 0),w=0,a=o=!1,d=us(),m=bs(),P([R,I,z,A,W,j,q,k,N,fe],Y))),xs),xs={getContent:()=>[es(),is()],getTables:es,getTableIds:ts,getTable:e=>ie(se(Ae,S(e))),getTableCellIds:ss,getRowCount:ns,getRowIds:as,getSortedRowIds:ls,getRow:(e,t)=>re(se(se(Ae,S(e)),S(t))),getCellIds:os,getCell:rs,getValues:is,getValueIds:cs,getValue:ds,hasTables:us,hasTable:hs,hasTableCell:gs,hasRow:fs,hasCell:Ts,hasValues:bs,hasValue:Cs,getTablesJson:()=>xe(Ae),getValuesJson:()=>xe(We),getJson:()=>xe([Ae,We]),getTablesSchemaJson:()=>xe(Te),getValuesSchemaJson:()=>xe(Ce),getSchemaJson:()=>xe([Te,Ce]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>_t((()=>{(K(e)?ms:ps)(e),(K(t)?Is:vs)(t)})),setTables:ps,setTable:(e,t)=>_t((e=>ft(t,e)?Rt(e,t):0),e),setRow:(e,t,s)=>_t(((e,t)=>Tt(e,t,s)?It(e,Pt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>Js((()=>{let n;return Tt(e,n,t)&&(e=S(e),It(e,Pt(e),n=xt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>_t(((e,t)=>{if(Tt(e,t,s,1)){const n=Pt(e);G(s,((s,a)=>Mt(e,n,t,a,s)))}}),e,t),setCell:(e,t,s,n)=>_t(((e,t,s)=>M(bt(e,t,s,E(n)?n(rs(e,t,s)):n),(n=>Mt(e,Pt(e),t,s,n)))),e,t,s),setValues:vs,setPartialValues:e=>_t((()=>Ct(e,1)?G(e,((e,t)=>Ht(t,e))):0)),setValue:(e,t)=>_t((e=>M(pt(e,E(t)?t(ds(e)):t),(t=>Ht(e,t)))),e),applyChanges:e=>_t((()=>{G(e[0],((e,t)=>L(e)?ws(t):G(e,((e,s)=>L(e)?Rs(t,s):G(e,((e,n)=>Ee(xs,t,s,n,e))))))),G(e[1],((e,t)=>He(xs,t,e)))})),setTablesJson:Vs,setValuesJson:e=>{try{Jt(Pe(e))}catch{}return xs},setJson:e=>_t((()=>{try{const[t,s]=Pe(e);mt(t),Jt(s)}catch{Vs(e)}})),setTablesSchema:ys,setValuesSchema:Ss,setSchema:(e,t)=>_t((()=>{ys(e),Ss(t)})),delTables:ms,delTable:ws,delRow:Rs,delCell:(e,t,s,n)=>_t(((e,t,s)=>M(se(Ae,e),(a=>M(se(a,t),(l=>U(l,s)?zt(e,a,t,l,s,n):0))))),e,t,s),delValues:Is,delValue:e=>_t((e=>U(We,e)?At(e):0),e),delTablesSchema:Ls,delValuesSchema:Ms,delSchema:()=>_t((()=>{Ls(),Ms()})),transaction:Js,startTransaction:Es,getTransactionChanges:()=>[re(j,((e,t)=>-1===se(R,t)?void 0:re(e,((e,s)=>-1===se(se(A,t),s)?void 0:re(e,(([,e])=>e),((e,t)=>Me(t)))),K)),K),re(N,(([,e])=>e),((e,t)=>Me(t)))],getTransactionLog:()=>[a,o,ce(j,Le,Me),ce(q),re(N,Le,Me),re(fe),re(R),ie(A),ce(W),re(k)],finishTransaction:Hs,forEachTable:e=>Z(Ae,((t,s)=>e(s,(e=>Z(t,((t,s)=>e(s,(e=>ne(t,e))))))))),forEachTableCell:(e,t)=>ne(se(me,S(e)),t),forEachRow:(e,t)=>Z(se(Ae,S(e)),((e,s)=>t(s,(t=>ne(e,t))))),forEachCell:(e,t,s)=>ne(se(se(Ae,S(e)),S(t)),s),forEachValue:e=>ne(We,e),addSortedRowIdsListener:(e,t,s,n,a,l,o)=>{let r=ls(e,t,s,n,a);return ct((()=>{const o=ls(e,t,s,n,a);var i,c,d;c=r,x(i=o)===x(c)&&(d=(e,t)=>c[t]===e,i.every(d))||(r=o,l(xs,e,t,s,n,a,r))}),Qe[o?1:0],[e,t],[ts])},addStartTransactionListener:e=>ct(e,rt),addWillFinishTransactionListener:e=>ct(e,it[0]),addDidFinishTransactionListener:e=>ct(e,it[1]),callListener:e=>(ht(e),xs),delListener:e=>(ut(e),xs),getListenerStats:()=>({}),createStore:ze,addListener:ct,callListeners:dt,addPostTransactionListener:e=>{n=e}};return G({[c+h]:[0,je,[],()=>[us()]],[h]:[0,ke],[g]:[0,De],[c+u]:[1,Ne,[ts],e=>[hs(...e)]],[u]:[1,Be,[ts]],[u+p]:[1,$e,[ts]],[c+u+C]:[2,qe,[ts,ss],e=>[gs(...e)]],[T]:[1,Ge,[ts]],[b]:[1,Ke,[ts]],[c+f]:[2,Ue,[ts,as],e=>[fs(...e)]],[f]:[2,Xe,[ts,as]],[p]:[2,Ye,[ts,as]],[c+C]:[3,Ze,[ts,as,os],e=>[Ts(...e)]],[C]:[3,_e,[ts,as,os],e=>Re(rs(...e))],InvalidCell:[3,et],[c+V]:[0,st,[],()=>[bs()]],[V]:[0,nt],[y]:[0,at],[c+v]:[1,lt,[cs],e=>[Cs(...e)]],[v]:[1,ot,[cs],e=>Re(ds(e[0]))],InvalidValue:[1,tt]},(([e,t,s,n],a)=>{xs["add"+a+"Listener"]=(...a)=>ct(a[e],t[a[e+1]?1:0],e>0?H(a,0,e):void 0,s,n)})),D(xs)},Ae=2**36,We=2**30,je=2**24,ke=2**18,De=4096,Ne=64,Be=e=>String.fromCharCode(48+(63&e)),$e=(e,t)=>R(e,t)-48,qe={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=()=>[s,[Te(),Te()]];e.createMergeableStore=e=>{let t=1,s=Ge();const[n,a]=(e=>{let t=0,s=0;const n=(a=(e,t)=>(e<<5)+e^R(t),((e,t="",s)=>e.split(t,s))(e).reduce(a,5381)>>>0);var a;const l=e=>{const n=t,[a,l]=L(e)?[0,0]:[$e(o=e,0)*Ae+$e(o,1)*We+$e(o,2)*je+$e(o,3)*ke+$e(o,4)*De+$e(o,5)*Ne+$e(o,6),$e(o,7)*ke+$e(o,8)*De+$e(o,9)*Ne+$e(o,10),$e(o,11)*je+$e(o,12)*ke+$e(o,13)*De+$e(o,14)*Ne+$e(o,15)];var o;t=Math.max(n,a,Date.now()),s=t==n?t==a?Math.max(s,l):s:t==a?l:-1};return[()=>{return l(),a=++s,o=n,Be((e=t)/Ae)+Be(e/We)+Be(e/je)+Be(e/ke)+Be(e/De)+Be(e/Ne)+Be(e)+Be(a/ke)+Be(a/De)+Be(a/Ne)+Be(a)+Be(o/je)+Be(o/ke)+Be(o/De)+Be(o/Ne)+Be(o);var e,a,o},l]})(e),l=ze(),o=e=>{const s=t;t=0,e(),t=s},r=e=>{const t=[{},{}];return a(e[0]),ve(e,s,t,(([e,t],[s,n],[a,l])=>{ve(e,s,a,((e,t,s)=>pe(e,t,s,((e,t,s)=>pe(e,t,s,Ve))))),ve(t,n,l,Ve)})),o((()=>l.applyChanges(t))),i},i={getMergeableContent:()=>be(s,(([e,t])=>[Ce(e,(e=>Ce(e,(e=>Ce(e,Le))))),Ce(t,Le)])),setMergeableContent:e=>(o((()=>l.transaction((()=>{l.delTables().delValues(),s=Ge()})))),r(e),i),applyMergeableChanges:r,merge:e=>{const t=i.getMergeableContent(),s=e.getMergeableContent();return e.applyMergeableChanges(t),r(s)}};return l.addPostTransactionListener((()=>{if(t){const e=n(),[t,a,o,,r]=l.getTransactionLog(),[i,c]=s[1];s[0]=e,t&&(i[0]=e,G(o,((t,s)=>{const n=le(i[1],s,fe),a=n[1]??=ee();n[0]=e,G(t,((t,s)=>{const n=le(a,s,fe),l=n[1]??=ee();n[0]=e,G(t,(([,t],s)=>ae(l,s,[e,t])))}))}))),a&&(c[0]=e,G(r,(([,t],s)=>{ae(c[1],s,[e,t])})))}})),G(l,((e,t)=>i[t]=m(t,"set")||m(t,"del")||m(t,"apply")||w(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),i):m(t,"add")&&w(t,"Listener")?(...s)=>{const n=qe[H(t,3,-8)]??0,a=s[n];return s[n]=(e,...t)=>a(i,...t),e(...s)}:e)),D(i)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMergeableStore={});
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,
|
|
1
|
+
var t,e;t=this,e=function(t){"use strict";const e=t=>typeof t,a=e(""),n=t=>null==t,s=(t,e,a)=>n(t)?a?.():e(t),o=Object,c=t=>o.getPrototypeOf(t),r=o.entries,i=o.keys,d=o.freeze,y=(t,e)=>s(t,(t=>t[e])),u=(t,e)=>e in t,l=(t,e)=>(delete t[e],t),p=(t,e)=>((t,e)=>t.map(e))(r(t),(([t,a])=>e(a,t))),g=t=>i(t).length,h=t=>(t=>!n(t)&&s(c(t),(t=>t==o.prototype||n(c(t))),(()=>!0)))(t)&&0==g(t),f=t=>new Map(t),v=(t,e)=>t?.get(e),w=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},A=(t,e,a)=>{var n,s;return n=t,s=e,n?.has(s)||w(t,e,a()),v(t,e)},C=f(),b=f(),L=(t,e)=>[t[e].t,t[e].v],m=(t,e,a,s)=>{const o=n(e)?t:((t,e,a)=>(u(t,e)||(t[e]={}),t[e]))(t,e);let c;return p(a,((t,e)=>{s(o,e,t)&&(c=1)})),p(o,((t,e)=>{u(a,e)||(l(o,e),c=1)})),!n(e)&&h(o)&&l(t,e),c};t.createAutomergePersister=(t,o,c="tinybase",r)=>(o.change((t=>t[c]={})),((t,o,c,r,i,y,u,[l,p]=[],g=[])=>{let f,L,m,S=0,T=0;A(C,g,(()=>0)),A(b,g,(()=>[]));const x=(u?t.getMergeableContent:null)??t.getContent,M=t.getTransactionChanges,P=async t=>(2!=S&&(S=1,await j.schedule((async()=>{await t(),S=0}))),j),j={load:async(n,s)=>await P((async()=>{try{const n=await o();(u&&(t=>e(t)==a)(n[0])?t.applyMergeableChanges:t.setContent)(n)}catch{t.setContent([n,s])}})),startAutoLoad:async(e={},a={})=>(j.stopAutoLoad(),await j.load(e,a),T=1,m=r((async(e,a)=>{if(a){const e=a();await P((async()=>t.applyChanges(e)))}else await P((async()=>{try{t.setContent(e?.()??await o())}catch(t){y?.(t)}}))})),j),stopAutoLoad:()=>(T&&(i(m),m=void 0,T=0),j),save:async t=>(1!=S&&(S=2,await j.schedule((async()=>{try{await c(x,t)}catch(t){y?.(t)}S=0}))),j),startAutoSave:async()=>(await j.stopAutoSave().save(),f=t.addDidFinishTransactionListener((()=>{const[t,e]=M();h(t)&&h(e)||j.save((()=>[t,e]))})),j),stopAutoSave:()=>(s(f,t.delListener),f=void 0,j),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(v(b,g),...t),await(async()=>{if(!v(C,g)){for(w(C,g,1);!n((t=v(b,g),L=t.shift()));)try{await L()}catch(t){y?.(t)}w(C,g,0)}var t})(),j),getStore:()=>t,destroy:()=>j.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return l&&(j[l]=()=>p),d(j)})(t,(async()=>{const t=await o.doc();return 2==g(t[c])?L(t,c):void 0}),(async(t,e)=>o.change((a=>((t,e,a,o)=>{((t,e)=>{h(t[e])&&(t[e]={t:{},v:{}})})(t,e);const[c,r]=L(t,e),i=()=>{d=1};let d=1;if(s(o?.(),(([t,e])=>{d=0,p(t,((t,e)=>d?0:n(t)?l(c,e):s(c[e],(e=>p(t,((t,a)=>d?0:n(t)?l(e,a):s(y(e,a),(e=>p(t,((t,a)=>n(t)?l(e,a):e[a]=t))),i)))),i))),p(e,((t,e)=>d?0:n(t)?l(r,e):r[e]=t))})),d){const[t,e]=a();m(c,void 0,t,((t,e,a)=>m(c,e,a,((t,e,a)=>m(t,e,a,((t,e,a)=>{if(y(t,e)!==a)return t[e]=a,1})))))),m(r,void 0,e,((t,e,a)=>{y(r,e)!==a&&(r[e]=a)}))}})(a,c,t,e)))),(t=>{const e=({doc:e})=>t((()=>L(e,c)));return o.on("change",e),e}),(t=>{o.removeListener("change",t)}),r,!1,["getDocHandle",o]))},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterAutomerge={});
|
|
Binary file
|