tinybase 4.0.0-beta.2 → 4.0.0-beta.4
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/persister-automerge.cjs +1 -0
- package/lib/cjs/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persister-browser.cjs +1 -1
- package/lib/cjs/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persister-file.cjs +1 -1
- package/lib/cjs/persister-file.cjs.gz +0 -0
- package/lib/cjs/persister-remote.cjs +1 -1
- package/lib/cjs/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persister-yjs.cjs +1 -1
- package/lib/cjs/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/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-es6/persister-automerge.cjs +1 -0
- package/lib/cjs-es6/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persister-file.cjs +1 -1
- package/lib/cjs-es6/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/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/debug/persister-automerge.js +257 -0
- package/lib/debug/persister-browser.js +2 -2
- package/lib/debug/persister-file.js +2 -2
- package/lib/debug/persister-remote.js +2 -2
- package/lib/debug/persister-yjs.js +3 -3
- package/lib/debug/persisters.js +2 -2
- package/lib/debug/queries.js +1 -1
- package/lib/debug/store.js +27 -13
- package/lib/debug/tinybase.js +30 -16
- package/lib/debug/tools.js +50 -2
- package/lib/es6/persister-automerge.js +1 -0
- package/lib/es6/persister-automerge.js.gz +0 -0
- package/lib/es6/persister-browser.js +1 -1
- package/lib/es6/persister-browser.js.gz +0 -0
- package/lib/es6/persister-file.js +1 -1
- package/lib/es6/persister-file.js.gz +0 -0
- package/lib/es6/persister-remote.js +1 -1
- package/lib/es6/persister-remote.js.gz +0 -0
- package/lib/es6/persister-yjs.js +1 -1
- package/lib/es6/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/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/persister-automerge.js +1 -0
- package/lib/persister-automerge.js.gz +0 -0
- package/lib/persister-browser.js +1 -1
- package/lib/persister-browser.js.gz +0 -0
- package/lib/persister-file.js +1 -1
- package/lib/persister-file.js.gz +0 -0
- package/lib/persister-remote.js +1 -1
- package/lib/persister-remote.js.gz +0 -0
- package/lib/persister-yjs.js +1 -1
- package/lib/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/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/persister-automerge.d.ts +110 -0
- package/lib/types/persister-yjs.d.ts +3 -2
- package/lib/types/persisters.d.ts +8 -8
- package/lib/types/store.d.ts +53 -0
- package/lib/types/tools.d.ts +4 -4
- package/lib/types/with-schemas/persister-automerge.d.ts +120 -0
- package/lib/types/with-schemas/persister-yjs.d.ts +3 -2
- package/lib/types/with-schemas/persisters.d.ts +8 -8
- package/lib/types/with-schemas/store.d.ts +59 -0
- package/lib/types/with-schemas/tools.d.ts +4 -4
- package/lib/umd/persister-automerge.js +1 -0
- package/lib/umd/persister-automerge.js.gz +0 -0
- package/lib/umd/persister-browser.js +1 -1
- package/lib/umd/persister-browser.js.gz +0 -0
- package/lib/umd/persister-file.js +1 -1
- package/lib/umd/persister-file.js.gz +0 -0
- package/lib/umd/persister-remote.js +1 -1
- package/lib/umd/persister-remote.js.gz +0 -0
- package/lib/umd/persister-yjs.js +1 -1
- package/lib/umd/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/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-es6/persister-automerge.js +1 -0
- package/lib/umd-es6/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persister-browser.js +1 -1
- package/lib/umd-es6/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persister-file.js +1 -1
- package/lib/umd-es6/persister-file.js.gz +0 -0
- package/lib/umd-es6/persister-remote.js +1 -1
- package/lib/umd-es6/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persister-yjs.js +1 -1
- package/lib/umd-es6/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/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/package.json +56 -26
- package/readme.md +3 -3
package/lib/types/store.d.ts
CHANGED
|
@@ -5239,6 +5239,51 @@ export interface Store {
|
|
|
5239
5239
|
mutator?: boolean,
|
|
5240
5240
|
): Id;
|
|
5241
5241
|
|
|
5242
|
+
/**
|
|
5243
|
+
* The addStartTransactionListener method registers a listener function with
|
|
5244
|
+
* the Store that will be called at the start of a transaction.
|
|
5245
|
+
*
|
|
5246
|
+
* The provided TransactionListener will receive a reference to the Store and
|
|
5247
|
+
* two booleans to indicate whether Cell or Value data has been touched during
|
|
5248
|
+
* the transaction. Since this is called at the start, they will both be
|
|
5249
|
+
* `false`!
|
|
5250
|
+
*
|
|
5251
|
+
* Note that a TransactionListener added to the Store with this method can
|
|
5252
|
+
* mutate the Store, and its changes will be treated as part of the
|
|
5253
|
+
* transaction that is starting.
|
|
5254
|
+
*
|
|
5255
|
+
* @returns A unique Id for the listener that can later be used to remove it.
|
|
5256
|
+
* @example
|
|
5257
|
+
* This example registers a listener that is called at start end of the
|
|
5258
|
+
* transaction, just before its listeners will be called.
|
|
5259
|
+
*
|
|
5260
|
+
* ```js
|
|
5261
|
+
* const store = createStore()
|
|
5262
|
+
* .setTables({
|
|
5263
|
+
* pets: {fido: {species: 'dog', color: 'brown'}},
|
|
5264
|
+
* })
|
|
5265
|
+
* .setValues({open: true, employees: 3});
|
|
5266
|
+
* const listenerId = store.addStartTransactionListener(
|
|
5267
|
+
* (store, cellsTouched, valuesTouched) => {
|
|
5268
|
+
* console.log('Transaction started');
|
|
5269
|
+
* },
|
|
5270
|
+
* );
|
|
5271
|
+
*
|
|
5272
|
+
* store.transaction(() =>
|
|
5273
|
+
* store.setCell('pets', 'fido', 'color', 'brown').setValue('employees', 3),
|
|
5274
|
+
* );
|
|
5275
|
+
* // -> 'Transaction started'
|
|
5276
|
+
*
|
|
5277
|
+
* store.callListener(listenerId);
|
|
5278
|
+
* // -> 'Transaction started'
|
|
5279
|
+
*
|
|
5280
|
+
* store.delListener(listenerId);
|
|
5281
|
+
* ```
|
|
5282
|
+
* @category Listener
|
|
5283
|
+
* @since v3.2.0
|
|
5284
|
+
*/
|
|
5285
|
+
addStartTransactionListener(listener: TransactionListener): Id;
|
|
5286
|
+
|
|
5242
5287
|
/**
|
|
5243
5288
|
* The addWillFinishTransactionListener method registers a listener function
|
|
5244
5289
|
* with the Store that will be called just before other non-mutating listeners
|
|
@@ -5259,6 +5304,11 @@ export interface Store {
|
|
|
5259
5304
|
* value of `cellsTouched` and `valuesTouched` in the listener will be `false`
|
|
5260
5305
|
* because all changes have been reverted.
|
|
5261
5306
|
*
|
|
5307
|
+
* Note that a TransactionListener added to the Store with this method can
|
|
5308
|
+
* mutate the Store itself, and its changes will be treated as part of the
|
|
5309
|
+
* transaction that is starting (and may fire non-mutating listeners after
|
|
5310
|
+
* this).
|
|
5311
|
+
*
|
|
5262
5312
|
* @returns A unique Id for the listener that can later be used to remove it.
|
|
5263
5313
|
* @example
|
|
5264
5314
|
* This example registers a listener that is called at the end of the
|
|
@@ -5353,6 +5403,9 @@ export interface Store {
|
|
|
5353
5403
|
* value of `cellsTouched` and `valuesTouched` in the listener will be `false`
|
|
5354
5404
|
* because all changes have been reverted.
|
|
5355
5405
|
*
|
|
5406
|
+
* Note that a TransactionListener added to the Store with this method
|
|
5407
|
+
* _cannot_ mutate the Store itself, and attempts to do so will fail silently.
|
|
5408
|
+
*
|
|
5356
5409
|
* @returns A unique Id for the listener that can later be used to remove it.
|
|
5357
5410
|
* @example
|
|
5358
5411
|
* This example registers a listener that is called at the end of the
|
package/lib/types/tools.d.ts
CHANGED
|
@@ -429,11 +429,11 @@ export interface Tools {
|
|
|
429
429
|
* ).getPrettyStoreApi('shop');
|
|
430
430
|
*
|
|
431
431
|
* const dTsLines = dTs.split('\n');
|
|
432
|
-
* console.log(dTsLines[
|
|
432
|
+
* console.log(dTsLines[17]);
|
|
433
433
|
* // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
|
|
434
434
|
*
|
|
435
435
|
* const tsLines = ts.split('\n');
|
|
436
|
-
* console.log(tsLines[
|
|
436
|
+
* console.log(tsLines[81]);
|
|
437
437
|
* // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
|
|
438
438
|
* ```
|
|
439
439
|
* @example
|
|
@@ -450,11 +450,11 @@ export interface Tools {
|
|
|
450
450
|
* ).getPrettyStoreApi('shop');
|
|
451
451
|
*
|
|
452
452
|
* const dTsLines = dTs.split('\n');
|
|
453
|
-
* console.log(dTsLines[
|
|
453
|
+
* console.log(dTsLines[17]);
|
|
454
454
|
* // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
|
|
455
455
|
*
|
|
456
456
|
* const tsLines = ts.split('\n');
|
|
457
|
-
* console.log(tsLines[
|
|
457
|
+
* console.log(tsLines[83]);
|
|
458
458
|
* // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
|
|
459
459
|
* ```
|
|
460
460
|
* @category Modelling
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The persister-automerge module of the TinyBase project provides a way to save
|
|
3
|
+
* and load Store data, to and from an Automerge document.
|
|
4
|
+
*
|
|
5
|
+
* A single entry point, the createAutomergePersister function, is provided,
|
|
6
|
+
* which returns a new Persister object that can bind a Store to a provided
|
|
7
|
+
* Automerge document handle (and in turn, its document).
|
|
8
|
+
*
|
|
9
|
+
* @see Synchronizing Data guide
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
* @module persister-automerge
|
|
12
|
+
* @since v4.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {OptionalSchemas, Store} from './store';
|
|
16
|
+
import {DocHandle} from 'automerge-repo';
|
|
17
|
+
import {Persister} from './persisters';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The createAutomergePersister function creates a Persister object that can
|
|
21
|
+
* persist the Store to an Automerge document.
|
|
22
|
+
*
|
|
23
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
24
|
+
*
|
|
25
|
+
* ```ts override
|
|
26
|
+
* createAutomergePersister(
|
|
27
|
+
* store: Store,
|
|
28
|
+
* docHandle: DocHandle<any>,
|
|
29
|
+
* docMapName?: string,
|
|
30
|
+
* ): Persister;
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* As well as providing a reference to the Store to persist, you must provide
|
|
34
|
+
* the Automerge document handler to persist it with.
|
|
35
|
+
*
|
|
36
|
+
* @param store The Store to persist.
|
|
37
|
+
* @param docHandle The Automerge document handler to persist the Store with.
|
|
38
|
+
* @param docMapName The name of the map used inside the Automerge document to
|
|
39
|
+
* sync the Store to (which otherwise will default to 'tinybase').
|
|
40
|
+
* @returns A reference to the new Persister object.
|
|
41
|
+
* @example
|
|
42
|
+
* This example creates a Persister object and persists the Store to an
|
|
43
|
+
* Automerge document.
|
|
44
|
+
*
|
|
45
|
+
* ```js
|
|
46
|
+
* const docHandler = new AutomergeRepo.Repo({network: []}).create();
|
|
47
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
48
|
+
* const persister = createAutomergePersister(store, docHandler);
|
|
49
|
+
*
|
|
50
|
+
* await persister.save();
|
|
51
|
+
* // Store will be saved to the document.
|
|
52
|
+
*
|
|
53
|
+
* console.log(docHandler.doc);
|
|
54
|
+
* // -> {tinybase: {t: {pets: {fido: {species: 'dog'}}}, v: {}}}
|
|
55
|
+
*
|
|
56
|
+
* persister.destroy();
|
|
57
|
+
* ```
|
|
58
|
+
* @example
|
|
59
|
+
* This more complex example uses Automerge networking to keep two Store objects
|
|
60
|
+
* (each with their own Persister objects and Automerge documents) in sync with
|
|
61
|
+
* each other using a network.
|
|
62
|
+
*
|
|
63
|
+
* ```js
|
|
64
|
+
* // Bind the first Store to a network-enabled automerge-repo
|
|
65
|
+
* const repo1 = new AutomergeRepo.Repo({
|
|
66
|
+
* network: [new BroadcastChannelNetworkAdapter()],
|
|
67
|
+
* });
|
|
68
|
+
* const docHandler1 = repo1.create();
|
|
69
|
+
* await docHandler1.value();
|
|
70
|
+
* const store1 = createStore();
|
|
71
|
+
* const persister1 = createAutomergePersister(store1, docHandler1);
|
|
72
|
+
* await persister1.startAutoLoad();
|
|
73
|
+
* await persister1.startAutoSave();
|
|
74
|
+
*
|
|
75
|
+
* // Bind the second Store to a different network-enabled automerge-repo
|
|
76
|
+
* const repo2 = new AutomergeRepo.Repo({
|
|
77
|
+
* network: [new BroadcastChannelNetworkAdapter()],
|
|
78
|
+
* });
|
|
79
|
+
* const docHandler2 = repo2.find(docHandler1.documentId);
|
|
80
|
+
* await docHandler2.value();
|
|
81
|
+
* const store2 = createStore();
|
|
82
|
+
* const persister2 = createAutomergePersister(store2, docHandler2);
|
|
83
|
+
* await persister2.startAutoLoad();
|
|
84
|
+
* await persister2.startAutoSave();
|
|
85
|
+
*
|
|
86
|
+
* // A function that waits briefly and then for the documents to synchronize
|
|
87
|
+
* // with each other, merely for the purposes of sequentiality in this example.
|
|
88
|
+
* const syncDocsWait = async () => {
|
|
89
|
+
* await new Promise((resolve) => setTimeout(() => resolve(0), 10));
|
|
90
|
+
* await docHandler1.value();
|
|
91
|
+
* await docHandler2.value();
|
|
92
|
+
* };
|
|
93
|
+
*
|
|
94
|
+
* // Wait for the documents to synchronize in their initial state.
|
|
95
|
+
* await syncDocsWait();
|
|
96
|
+
*
|
|
97
|
+
* // Make a change to each of the two Stores.
|
|
98
|
+
* store1.setTables({pets: {fido: {species: 'dog'}}});
|
|
99
|
+
* store2.setValues({open: true});
|
|
100
|
+
*
|
|
101
|
+
* // Wait for the documents to synchronize in their new state.
|
|
102
|
+
* await syncDocsWait();
|
|
103
|
+
*
|
|
104
|
+
* // Ensure the Stores are in sync.
|
|
105
|
+
* console.log(store1.getContent());
|
|
106
|
+
* // -> [{pets: {fido: {species: 'dog'}}}, {open: true}]
|
|
107
|
+
* console.log(store2.getContent());
|
|
108
|
+
* // -> [{pets: {fido: {species: 'dog'}}}, {open: true}]
|
|
109
|
+
*
|
|
110
|
+
* persister1.destroy();
|
|
111
|
+
* persister2.destroy();
|
|
112
|
+
* ```
|
|
113
|
+
* @category Creation
|
|
114
|
+
* @since v4.0
|
|
115
|
+
*/
|
|
116
|
+
export function createAutomergePersister<Schemas extends OptionalSchemas>(
|
|
117
|
+
store: Store<Schemas>,
|
|
118
|
+
docHandle: DocHandle<any>,
|
|
119
|
+
docMapName?: string,
|
|
120
|
+
): Persister<Schemas>;
|
|
@@ -36,18 +36,19 @@ import {Doc as YDoc} from 'yjs';
|
|
|
36
36
|
* @param store The Store to persist.
|
|
37
37
|
* @param yDoc The Yjs document to persist the Store to.
|
|
38
38
|
* @param yMapName The name of the Y.Map used inside the Yjs document to sync
|
|
39
|
-
* the Store
|
|
39
|
+
* the Store to (which otherwise will default to 'tinybase').
|
|
40
40
|
* @returns A reference to the new Persister object.
|
|
41
41
|
* @example
|
|
42
42
|
* This example creates a Persister object and persists the Store to a Yjs
|
|
43
43
|
* document.
|
|
44
|
+
*
|
|
44
45
|
* ```js
|
|
45
46
|
* const doc = new Y.Doc();
|
|
46
47
|
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
47
48
|
* const persister = createYjsPersister(store, doc);
|
|
48
49
|
*
|
|
49
50
|
* await persister.save();
|
|
50
|
-
* // Store
|
|
51
|
+
* // Store will be saved to the document.
|
|
51
52
|
*
|
|
52
53
|
* console.log(doc.toJSON());
|
|
53
54
|
* // -> {tinybase: {t: {pets: {fido: {species: 'dog'}}}, v: {}}}
|
|
@@ -635,14 +635,14 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
|
|
|
635
635
|
* covers. See those implementations for ideas on how to implement your own
|
|
636
636
|
* Persister types.
|
|
637
637
|
*
|
|
638
|
-
* This API changed in v4.0. Any custom persisters created on previous
|
|
639
|
-
*
|
|
640
|
-
*
|
|
641
|
-
*
|
|
642
|
-
*
|
|
643
|
-
*
|
|
644
|
-
*
|
|
645
|
-
* `
|
|
638
|
+
* This API changed in v4.0. Any custom persisters created on previous versions
|
|
639
|
+
* should be upgraded. Most notably, the `setPersisted` function parameter is
|
|
640
|
+
* provided with a `getContent` function to get the content from the Store
|
|
641
|
+
* itself, rather than being passed pre-serialized JSON. It also receives
|
|
642
|
+
* information about the changes made during a transaction. The `getPersisted`
|
|
643
|
+
* function must return the content (or nothing) rather than JSON.
|
|
644
|
+
* `startListeningToPersisted` has been renamed `addPersisterListener`, and
|
|
645
|
+
* `stopListeningToPersisted` has been renamed `delPersisterListener`.
|
|
646
646
|
*
|
|
647
647
|
* @param store The Store to persist.
|
|
648
648
|
* @param getPersisted An asynchronous function which will fetch content from
|
|
@@ -6432,6 +6432,57 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
6432
6432
|
mutator?: boolean,
|
|
6433
6433
|
): Id;
|
|
6434
6434
|
|
|
6435
|
+
/**
|
|
6436
|
+
* The addStartTransactionListener method registers a listener function with
|
|
6437
|
+
* the Store that will be called at the start of a transaction.
|
|
6438
|
+
*
|
|
6439
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
6440
|
+
*
|
|
6441
|
+
* ```ts override
|
|
6442
|
+
* addStartTransactionListener(listener: TransactionListener): Id;
|
|
6443
|
+
* ```
|
|
6444
|
+
*
|
|
6445
|
+
* The provided TransactionListener will receive a reference to the Store and
|
|
6446
|
+
* two booleans to indicate whether Cell or Value data has been touched during
|
|
6447
|
+
* the transaction. Since this is called at the start, they will both be
|
|
6448
|
+
* `false`!
|
|
6449
|
+
*
|
|
6450
|
+
* Note that a TransactionListener added to the Store with this method can
|
|
6451
|
+
* mutate the Store, and its changes will be treated as part of the
|
|
6452
|
+
* transaction that is starting.
|
|
6453
|
+
*
|
|
6454
|
+
* @returns A unique Id for the listener that can later be used to remove it.
|
|
6455
|
+
* @example
|
|
6456
|
+
* This example registers a listener that is called at start end of the
|
|
6457
|
+
* transaction, just before its listeners will be called.
|
|
6458
|
+
*
|
|
6459
|
+
* ```js
|
|
6460
|
+
* const store = createStore()
|
|
6461
|
+
* .setTables({
|
|
6462
|
+
* pets: {fido: {species: 'dog', color: 'brown'}},
|
|
6463
|
+
* })
|
|
6464
|
+
* .setValues({open: true, employees: 3});
|
|
6465
|
+
* const listenerId = store.addStartTransactionListener(
|
|
6466
|
+
* (store, cellsTouched, valuesTouched) => {
|
|
6467
|
+
* console.log('Transaction started');
|
|
6468
|
+
* },
|
|
6469
|
+
* );
|
|
6470
|
+
*
|
|
6471
|
+
* store.transaction(() =>
|
|
6472
|
+
* store.setCell('pets', 'fido', 'color', 'brown').setValue('employees', 3),
|
|
6473
|
+
* );
|
|
6474
|
+
* // -> 'Transaction started'
|
|
6475
|
+
*
|
|
6476
|
+
* store.callListener(listenerId);
|
|
6477
|
+
* // -> 'Transaction started'
|
|
6478
|
+
*
|
|
6479
|
+
* store.delListener(listenerId);
|
|
6480
|
+
* ```
|
|
6481
|
+
* @category Listener
|
|
6482
|
+
* @since v3.2.0
|
|
6483
|
+
*/
|
|
6484
|
+
addStartTransactionListener(listener: TransactionListener<Schemas>): Id;
|
|
6485
|
+
|
|
6435
6486
|
/**
|
|
6436
6487
|
* The addWillFinishTransactionListener method registers a listener function
|
|
6437
6488
|
* with the Store that will be called just before other non-mutating listeners
|
|
@@ -6458,6 +6509,11 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
6458
6509
|
* value of `cellsTouched` and `valuesTouched` in the listener will be `false`
|
|
6459
6510
|
* because all changes have been reverted.
|
|
6460
6511
|
*
|
|
6512
|
+
* Note that a TransactionListener added to the Store with this method can
|
|
6513
|
+
* mutate the Store itself, and its changes will be treated as part of the
|
|
6514
|
+
* transaction that is starting (and may fire non-mutating listeners after
|
|
6515
|
+
* this).
|
|
6516
|
+
*
|
|
6461
6517
|
* @returns A unique Id for the listener that can later be used to remove it.
|
|
6462
6518
|
* @example
|
|
6463
6519
|
* This example registers a listener that is called at the end of the
|
|
@@ -6558,6 +6614,9 @@ export interface Store<in out Schemas extends OptionalSchemas> {
|
|
|
6558
6614
|
* value of `cellsTouched` and `valuesTouched` in the listener will be `false`
|
|
6559
6615
|
* because all changes have been reverted.
|
|
6560
6616
|
*
|
|
6617
|
+
* Note that a TransactionListener added to the Store with this method
|
|
6618
|
+
* _cannot_ mutate the Store itself, and attempts to do so will fail silently.
|
|
6619
|
+
*
|
|
6561
6620
|
* @returns A unique Id for the listener that can later be used to remove it.
|
|
6562
6621
|
* @example
|
|
6563
6622
|
* This example registers a listener that is called at the end of the
|
|
@@ -428,11 +428,11 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
|
|
|
428
428
|
* ).getPrettyStoreApi('shop');
|
|
429
429
|
*
|
|
430
430
|
* const dTsLines = dTs.split('\n');
|
|
431
|
-
* console.log(dTsLines[
|
|
431
|
+
* console.log(dTsLines[17]);
|
|
432
432
|
* // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
|
|
433
433
|
*
|
|
434
434
|
* const tsLines = ts.split('\n');
|
|
435
|
-
* console.log(tsLines[
|
|
435
|
+
* console.log(tsLines[81]);
|
|
436
436
|
* // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
|
|
437
437
|
* ```
|
|
438
438
|
* @example
|
|
@@ -449,11 +449,11 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
|
|
|
449
449
|
* ).getPrettyStoreApi('shop');
|
|
450
450
|
*
|
|
451
451
|
* const dTsLines = dTs.split('\n');
|
|
452
|
-
* console.log(dTsLines[
|
|
452
|
+
* console.log(dTsLines[17]);
|
|
453
453
|
* // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
|
|
454
454
|
*
|
|
455
455
|
* const tsLines = ts.split('\n');
|
|
456
|
-
* console.log(tsLines[
|
|
456
|
+
* console.log(tsLines[83]);
|
|
457
457
|
* // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
|
|
458
458
|
* ```
|
|
459
459
|
* @category Modelling
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var t,e;t=this,e=function(t){"use strict";const e=t=>t.length,a=t=>null==t,n=(t,e,n)=>a(t)?n?.():e(t),o=Object,s=o.keys,r=o.freeze,i=(t,e)=>n(t,(t=>t[e])),c=(t,e)=>!a(i(t,e)),d=(t,e)=>delete t[e],u=(t,e)=>((t,e)=>t.map(e))(o.entries(t),(([t,a])=>e(a,t))),y=t=>{return(t=>t instanceof o&&t.constructor==o)(t)&&(a=s(t),0==e(a));var a},l=(t,e)=>[t[e].t,t[e].v],f=(t,e,n,o)=>{const s=a(e)?t:((t,e,a)=>(c(t,e)||(t[e]={}),t[e]))(t,e);let r;return u(n,((t,e)=>{o(s,e,t)&&(r=1)})),u(s,((t,e)=>{c(n,e)||(d(s,e),r=1)})),!a(e)&&y(s)&&d(t,e),r};t.createAutomergePersister=(t,o,c="tinybase")=>(o.change((t=>t[c]={})),((t,e,s,v,p)=>{let g,h,A=0,w=!1;const L=async t=>{2!=A&&(A=1,await t(),A=0)},m={load:async(a={},n={})=>(await L((async()=>{let o;try{o=await e()}catch{}t.setContent(o??[a,n])})),m),startAutoLoad:async(a={},n={})=>(m.stopAutoLoad(),await m.load(a,n),w=!0,h=(a=>{const n=({doc:a})=>(async(a,n)=>{await L((async()=>{if(n)t.setTransactionChanges(n());else try{t.setContent(a?.()??await e())}catch{}}))})((()=>l(a,c)));return o.on("change",n),n})(),m),stopAutoLoad:()=>{return w&&(t=h,o.removeListener("change",t),h=void 0,w=!1),m;var t},save:async e=>(1!=A&&(A=2,await(async(t,e)=>{o.change((o=>((t,e,o,s)=>{((t,e)=>{y(t[e])&&(t[e]={t:{},v:{}})})(t,e);const[r,c]=l(t,e),v=()=>{p=1};let p=1;if(n(s?.(),(([t,e])=>{p=0,u(t,((t,e)=>p?0:a(t)?d(r,e):n(r[e],(e=>u(t,((t,o)=>p?0:a(t)?d(e,o):n(i(e,o),(e=>u(t,((t,n)=>a(t)?d(e,n):e[n]=t))),v)))),v))),u(e,((t,e)=>p?0:a(t)?d(c,e):c[e]=t))})),p){const[t,e]=o();f(r,void 0,t,((t,e,a)=>f(r,e,a,((t,e,a)=>f(t,e,a,((t,e,a)=>{if(i(t,e)!==a)return t[e]=a,1})))))),f(c,void 0,e,((t,e,a)=>{i(c,e)!==a&&(c[e]=a)}))}})(o,c,t,e)))})(t.getContent,e),A=0),m),startAutoSave:async()=>(await m.stopAutoSave().save(),g=t.addDidFinishTransactionListener(((t,e)=>m.save(e))),m),stopAutoSave:()=>(n(g,t.delListener),m),getStore:()=>t,destroy:()=>m.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(m)})(t,(async()=>2==e(s(o.doc[c]))?l(o.doc,c):void 0)))},"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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=Object.freeze,a="storage",s=globalThis.window,n=(e,n,o)=>((e,r,i,c,d)=>{let u,l,y=0,f=!1;const p=async e=>{2!=y&&(y=1,await e(),y=0)},v={load:async(t,a)=>(await p((async()=>{let s;try{s=await r()}catch{}e.setContent(s??[t,a])})),v),startAutoLoad:async(t,i)=>(v.stopAutoLoad(),await v.load(t,i),f=!0,l=(t=>{const i=t=>{t.storageArea===o&&t.key===n&&(async(t,a)=>{await p((async()=>{if(a)e.setTransactionChanges(a());else try{e.setContent(t?.()??await r())}catch{}}))})((()=>JSON.parse(t.newValue)))};return s.addEventListener(a,i),i})(),v),stopAutoLoad:()=>{return f&&(e=l,s.removeEventListener(a,e),l=void 0,f=!1),v;var e},save:async t=>(1!=y&&(y=2,await(async e=>{return o.setItem(n,(t=e(),JSON.stringify(t,((e,t)=>{return t instanceof Map?(a=(e,[t,a])=>(e[t]=a,e),s={},[...t].reduce(a,s)):t;var a,s}))));var t})(e.getContent),y=0),v),startAutoSave:async()=>(await v.stopAutoSave().save(),u=e.addDidFinishTransactionListener(((e,t)=>v.save(t))),v),stopAutoSave:()=>{var t,a;return t=u,a=e.delListener,null==t||a(t),v},getStore:()=>e,destroy:()=>v.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return t(v)})(e,(async()=>JSON.parse(o.getItem(n))));e.createLocalPersister=(e,t)=>n(e,t,localStorage),e.createSessionPersister=(e,t)=>n(e,t,sessionStorage)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisterBrowser={});
|
|
1
|
+
var e,t;e=this,t=function(e){"use strict";const t=Object.freeze,a="storage",s=globalThis.window,n=(e,n,o)=>((e,r,i,c,d)=>{let u,l,y=0,f=!1;const p=async e=>{2!=y&&(y=1,await e(),y=0)},v={load:async(t={},a={})=>(await p((async()=>{let s;try{s=await r()}catch{}e.setContent(s??[t,a])})),v),startAutoLoad:async(t={},i={})=>(v.stopAutoLoad(),await v.load(t,i),f=!0,l=(t=>{const i=t=>{t.storageArea===o&&t.key===n&&(async(t,a)=>{await p((async()=>{if(a)e.setTransactionChanges(a());else try{e.setContent(t?.()??await r())}catch{}}))})((()=>JSON.parse(t.newValue)))};return s.addEventListener(a,i),i})(),v),stopAutoLoad:()=>{return f&&(e=l,s.removeEventListener(a,e),l=void 0,f=!1),v;var e},save:async t=>(1!=y&&(y=2,await(async e=>{return o.setItem(n,(t=e(),JSON.stringify(t,((e,t)=>{return t instanceof Map?(a=(e,[t,a])=>(e[t]=a,e),s={},[...t].reduce(a,s)):t;var a,s}))));var t})(e.getContent),y=0),v),startAutoSave:async()=>(await v.stopAutoSave().save(),u=e.addDidFinishTransactionListener(((e,t)=>v.save(t))),v),stopAutoSave:()=>{var t,a;return t=u,a=e.delListener,null==t||a(t),v},getStore:()=>e,destroy:()=>v.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return t(v)})(e,(async()=>JSON.parse(o.getItem(n))));e.createLocalPersister=(e,t)=>n(e,t,localStorage),e.createSessionPersister=(e,t)=>n(e,t,sessionStorage)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisterBrowser={});
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e,a){"use strict";const s="utf8",r=Object.freeze;t.createFilePersister=(t,o)=>((t,n,i,c,u)=>{let d,f,y=0,l=!1;const p=async t=>{2!=y&&(y=1,await t(),y=0)},v={load:async(e,a)=>(await p((async()=>{let s;try{s=await n()}catch{}t.setContent(s??[e,a])})),v),startAutoLoad:async(e,s)=>{return v.stopAutoLoad(),await v.load(e,s),l=!0,r=async(e,a)=>{await p((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await n())}catch{}}))},f=a.watch(o,(()=>r())),v;var r},stopAutoLoad:()=>{return l&&(t=f,t?.close(),f=void 0,l=!1),v;var t},save:async a=>(1!=y&&(y=2,await(async t=>{try{await e.writeFile(o,(a=t(),JSON.stringify(a,((t,e)=>{return e instanceof Map?(a=(t,[e,a])=>(t[e]=a,t),s={},[...e].reduce(a,s)):e;var a,s}))),s)}catch{}var a})(t.getContent),y=0),v),startAutoSave:async()=>(await v.stopAutoSave().save(),d=t.addDidFinishTransactionListener(((t,e)=>v.save(e))),v),stopAutoSave:()=>{var e,a;return e=d,a=t.delListener,null==e||a(e),v},getStore:()=>t,destroy:()=>v.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(v)})(t,(async()=>JSON.parse(await e.readFile(o,s))))},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("fs/promises"),require("fs")):"function"==typeof define&&define.amd?define(["exports","fs/promises","fs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterFile={},t["fs/promises"],t.fs);
|
|
1
|
+
var t,e;t=this,e=function(t,e,a){"use strict";const s="utf8",r=Object.freeze;t.createFilePersister=(t,o)=>((t,n,i,c,u)=>{let d,f,y=0,l=!1;const p=async t=>{2!=y&&(y=1,await t(),y=0)},v={load:async(e={},a={})=>(await p((async()=>{let s;try{s=await n()}catch{}t.setContent(s??[e,a])})),v),startAutoLoad:async(e={},s={})=>{return v.stopAutoLoad(),await v.load(e,s),l=!0,r=async(e,a)=>{await p((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await n())}catch{}}))},f=a.watch(o,(()=>r())),v;var r},stopAutoLoad:()=>{return l&&(t=f,t?.close(),f=void 0,l=!1),v;var t},save:async a=>(1!=y&&(y=2,await(async t=>{try{await e.writeFile(o,(a=t(),JSON.stringify(a,((t,e)=>{return e instanceof Map?(a=(t,[e,a])=>(t[e]=a,t),s={},[...e].reduce(a,s)):e;var a,s}))),s)}catch{}var a})(t.getContent),y=0),v),startAutoSave:async()=>(await v.stopAutoSave().save(),d=t.addDidFinishTransactionListener(((t,e)=>v.save(e))),v),stopAutoSave:()=>{var e,a;return e=d,a=t.delListener,null==e||a(e),v},getStore:()=>t,destroy:()=>v.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(v)})(t,(async()=>JSON.parse(await e.readFile(o,s))))},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("fs/promises"),require("fs")):"function"==typeof define&&define.amd?define(["exports","fs/promises","fs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterFile={},t["fs/promises"],t.fs);
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=Object.freeze,s=t=>t.headers.get("ETag");t.createRemotePersister=(t,n,o,r)=>{let i;return((t,c,d,u,y)=>{let f,l,p=0,v=!1;const h=async t=>{2!=p&&(p=1,await t(),p=0)},w={load:async(e,a)=>(await h((async()=>{let s;try{s=await c()}catch{}t.setContent(s??[e,a])})),w),startAutoLoad:async(a,o)=>{return w.stopAutoLoad(),await w.load(a,o),v=!0,d=async(e,a)=>{await h((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await c())}catch{}}))},l=setInterval((async()=>{const t=await fetch(n,{method:"HEAD"}),a=s(t);e(i)||e(a)||a==i||(i=a,d())}),1e3*r),w;var d},stopAutoLoad:()=>(v&&(clearInterval(l),l=void 0,v=!1),w),save:async e=>(1!=p&&(p=2,await(async t=>{return await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),JSON.stringify(e,((t,e)=>{return e instanceof Map?(a=(t,[e,a])=>(t[e]=a,t),s={},[...e].reduce(a,s)):e;var a,s})))});var e})(t.getContent),p=0),w),startAutoSave:async()=>(await w.stopAutoSave().save(),f=t.addDidFinishTransactionListener(((t,e)=>w.save(e))),w),stopAutoSave:()=>{var a,s;return a=f,s=t.delListener,e(a)||s(a),w},getStore:()=>t,destroy:()=>w.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return a(w)})(t,(async()=>{const t=await fetch(n);return i=s(t),JSON.parse(await t.text())}))}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterRemote={});
|
|
1
|
+
var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=Object.freeze,s=t=>t.headers.get("ETag");t.createRemotePersister=(t,n,o,r)=>{let i;return((t,c,d,u,y)=>{let f,l,p=0,v=!1;const h=async t=>{2!=p&&(p=1,await t(),p=0)},w={load:async(e={},a={})=>(await h((async()=>{let s;try{s=await c()}catch{}t.setContent(s??[e,a])})),w),startAutoLoad:async(a={},o={})=>{return w.stopAutoLoad(),await w.load(a,o),v=!0,d=async(e,a)=>{await h((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await c())}catch{}}))},l=setInterval((async()=>{const t=await fetch(n,{method:"HEAD"}),a=s(t);e(i)||e(a)||a==i||(i=a,d())}),1e3*r),w;var d},stopAutoLoad:()=>(v&&(clearInterval(l),l=void 0,v=!1),w),save:async e=>(1!=p&&(p=2,await(async t=>{return await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),JSON.stringify(e,((t,e)=>{return e instanceof Map?(a=(t,[e,a])=>(t[e]=a,t),s={},[...e].reduce(a,s)):e;var a,s})))});var e})(t.getContent),p=0),w),startAutoSave:async()=>(await w.stopAutoSave().save(),f=t.addDidFinishTransactionListener(((t,e)=>w.save(e))),w),stopAutoSave:()=>{var a,s;return a=f,s=t.delListener,e(a)||s(a),w},getStore:()=>t,destroy:()=>w.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return a(w)})(t,(async()=>{const t=await fetch(n);return i=s(t),JSON.parse(await t.text())}))}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterRemote={});
|
|
Binary file
|
package/lib/umd/persister-yjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e){"use strict";const s=t=>t.length,a=t=>t.shift(),n=t=>null==t,o=(t,e,s)=>n(t)?s?.():e(t),i=Object,r=i.freeze,c=()=>({}),d=(t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)),l=(t,e)=>((t,e)=>t.map(e))(i.entries(t),(([t,s])=>e(s,t))),u=(t,e,s)=>(d(t,e)||(t[e]=s()),t[e]),g=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),y="
|
|
1
|
+
var t,e;t=this,e=function(t,e){"use strict";const s=t=>t.length,a=t=>t.shift(),n=t=>null==t,o=(t,e,s)=>n(t)?s?.():e(t),i=Object,r=i.freeze,c=()=>({}),d=(t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)),l=(t,e)=>((t,e)=>t.map(e))(i.entries(t),(([t,s])=>e(s,t))),u=(t,e,s)=>(d(t,e)||(t[e]=s()),t[e]),g=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),y="t",p="delete",f=t=>[t.get(y),t.get("v")],v=(t,s,a,o)=>{const i=n(s)?t:t.get(s)??t.set(s,new e.Map);let r;return l(a,((t,e)=>{o(i,e,t)&&(r=1)})),i.forEach(((t,e)=>{d(a,e)||(i.delete(e),r=1)})),n(s)||i.size||t.delete(s),r};t.createYjsPersister=(t,i,d="tinybase")=>{const h=i.getMap(d);return((t,d,S,w,A)=>{let b,j,O=0,J=!1;const L=async t=>{2!=O&&(O=1,await t(),O=0)},N={load:async(e={},s={})=>(await L((async()=>{let a;try{a=await d()}catch{}t.setContent(a??[e,s])})),N),startAutoLoad:async(e={},n={})=>(N.stopAutoLoad(),await N.load(e,n),J=!0,j=(e=>{const n=e=>(async(e,s)=>{await L((async()=>{if(s)t.setTransactionChanges(s());else try{t.setContent(e?.()??await d())}catch{}}))})(void 0,(()=>((t,e)=>{if(1==s(e)&&(n=e[0].path,0==s(n)))return[t.get("t").toJSON(),t.get("v").toJSON()];var n;const[i,r]=f(t),d={},l={};return((t,e)=>{t.forEach((({path:t,changes:{keys:e}})=>a(t)==y?o(a(t),(s=>{const n=u(d,s,c),r=i.get(s);o(a(t),(t=>{const s=u(n,t,c),a=r.get(t);g(e,((t,{action:e})=>s[t]=e==p?null:a.get(t)))}),(()=>g(e,((t,{action:e})=>n[t]=e==p?null:r.get(t)?.toJSON()))))}),(()=>g(e,((t,{action:e})=>d[t]=e==p?null:i.get(t)?.toJSON())))):g(e,((t,{action:e})=>l[t]=e==p?null:r.get(t)))))})(e),[d,l]})(h,e)));return h.observeDeep(n),n})(),N),stopAutoLoad:()=>{return J&&(t=j,h.unobserveDeep(t),j=void 0,J=!1),N;var t},save:async s=>(1!=O&&(O=2,await(async(t,s)=>i.transact((()=>((t,s,a)=>{(t=>{t.size||(t.set(y,new e.Map),t.set("v",new e.Map))})(t);const[i,r]=f(t),c=()=>{d=1};let d=1;if(o(a?.(),(([t,e])=>{d=0,l(t,((t,e)=>d?0:n(t)?i.delete(e):o(i.get(e),(e=>l(t,((t,s)=>d?0:n(t)?e.delete(s):o(e.get(s),(e=>l(t,((t,s)=>n(t)?e.delete(s):e.set(s,t)))),c)))),c))),l(e,((t,e)=>d?0:n(t)?r.delete(e):r.set(e,t)))})),d){const[t,e]=s();v(i,void 0,t,((t,e,s)=>v(i,e,s,((t,e,s)=>v(t,e,s,((t,e,s)=>{if(t.get(e)!==s)return t.set(e,s),1})))))),v(r,void 0,e,((t,e,s)=>{r.get(e)!==s&&r.set(e,s)}))}})(h,t,s))))(t.getContent,s),O=0),N),startAutoSave:async()=>(await N.stopAutoSave().save(),b=t.addDidFinishTransactionListener(((t,e)=>N.save(e))),N),stopAutoSave:()=>(o(b,t.delListener),N),getStore:()=>t,destroy:()=>N.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(N)})(t,(async()=>h.size?[h.get(y).toJSON(),h.get("v").toJSON()]:void 0))}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("yjs")):"function"==typeof define&&define.amd?define(["exports","yjs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterYjs={},t.yjs);
|
|
Binary file
|
package/lib/umd/persisters.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t){"use strict";const e=Object.freeze;t.createCustomPersister=(t,a,s,o,n)=>{let i,r,c=0,d=!1;const u=async t=>{2!=c&&(c=1,await t(),c=0)},y={load:async(e,s)=>(await u((async()=>{let o;try{o=await a()}catch{}t.setContent(o??[e,s])})),y),startAutoLoad:async(e,s)=>(y.stopAutoLoad(),await y.load(e,s),d=!0,r=o((async(e,s)=>{await u((async()=>{if(s)t.setTransactionChanges(s());else try{t.setContent(e?.()??await a())}catch{}}))})),y),stopAutoLoad:()=>(d&&(n(r),r=void 0,d=!1),y),save:async e=>(1!=c&&(c=2,await s(t.getContent,e),c=0),y),startAutoSave:async()=>(await y.stopAutoSave().save(),i=t.addDidFinishTransactionListener(((t,e)=>y.save(e))),y),stopAutoSave:()=>{var e,a;return e=i,a=t.delListener,null==e||a(e),y},getStore:()=>t,destroy:()=>y.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return e(y)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisters={});
|
|
1
|
+
var t,e;t=this,e=function(t){"use strict";const e=Object.freeze;t.createCustomPersister=(t,a,s,o,n)=>{let i,r,c=0,d=!1;const u=async t=>{2!=c&&(c=1,await t(),c=0)},y={load:async(e={},s={})=>(await u((async()=>{let o;try{o=await a()}catch{}t.setContent(o??[e,s])})),y),startAutoLoad:async(e={},s={})=>(y.stopAutoLoad(),await y.load(e,s),d=!0,r=o((async(e,s)=>{await u((async()=>{if(s)t.setTransactionChanges(s());else try{t.setContent(e?.()??await a())}catch{}}))})),y),stopAutoLoad:()=>(d&&(n(r),r=void 0,d=!1),y),save:async e=>(1!=c&&(c=2,await s(t.getContent,e),c=0),y),startAutoSave:async()=>(await y.stopAutoSave().save(),i=t.addDidFinishTransactionListener(((t,e)=>y.save(e))),y),stopAutoSave:()=>{var e,a;return e=i,a=t.delListener,null==e||a(e),y},getStore:()=>t,destroy:()=>y.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return e(y)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisters={});
|
package/lib/umd/persisters.js.gz
CHANGED
|
Binary file
|
package/lib/umd/queries.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(!0),r=t(0),o=t(t),
|
|
1
|
+
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(!0),r=t(0),o=t(t),a="Listener",i="Result",l="Ids",d="Row",c=d+l,u="Sorted"+d+l,f="Cell",h=f+l,g=(e,t)=>e.every(t),v=(e,t)=>e.forEach(t),w=e=>R(e,((e,t)=>e+t),0),y=e=>e.length,L=e=>0==y(e),R=(e,t,n)=>e.reduce(t,n),p=(e,...t)=>e.push(...t),T=Math.max,b=Math.min,m=isFinite,C=e=>null==e,Q=(e,t,n)=>C(e)?n?.():t(e),S=e=>t(e)==o,x=e=>Array.isArray(e),I=()=>{},E=Object,M=E.freeze,j=e=>e.size,D=(e,t)=>e?.has(t)??!1,k=e=>C(e)||0==j(e),z=e=>[...e?.values()??[]],A=e=>e.clear(),F=(e,t)=>e?.forEach(t),B=(e,t)=>e?.delete(t),O=e=>new Map(e),W=(e,t)=>e?.get(t),q=(e,t)=>F(e,((e,n)=>t(n,e))),G=(e,t,n)=>C(n)?(B(e,t),e):e?.set(t,n),H=(e,t,n)=>(D(e,t)||G(e,t,n()),W(e,t)),J=(e,t,n,s,r=0)=>Q((n?H:W)(e,t[r],r>y(t)-2?n:O),(o=>{if(r>y(t)-2)return s?.(o)&&G(e,t[r]),o;const a=J(o,t,n,s,r+1);return k(o)&&G(e,t[r]),a})),K=e=>new Set(x(e)||C(e)?e:[e]),N=(e,t)=>e?.add(t),P=O([["avg",[(e,t)=>w(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>T(...e),(e,t)=>T(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:T(t,e)]],["min",[e=>b(...e),(e,t)=>b(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:b(t,e)]],["sum",[e=>w(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),U=(e=>{const o=new WeakMap;return e=>(o.has(e)||o.set(e,(e=>{const o=e.createStore,[l,w,R,T,b,,,U,,V,X,Y,Z]=((e,t,n)=>{const s=e.hasRow,r=O(),o=O(),a=O(),i=O(),l=O(),d=(t,n,...s)=>{const r=H(l,t,K);return v(s,(t=>N(r,t)&&n&&e.callListener(t))),s},c=(t,...n)=>Q(W(l,t),(s=>{v(L(n)?z(s):n,(t=>{e.delListener(t),B(s,t)})),k(s)&&G(l,t)})),u=(e,t)=>{G(r,e,t),D(o,e)||(G(o,e,!0),G(a,e,O()),G(i,e,O()))},f=e=>{G(r,e),G(o,e),G(a,e),G(i,e),c(e)};return[()=>e,()=>{return e=r,[...e?.keys()??[]];var e},e=>q(o,e),e=>D(o,e),e=>W(r,e),e=>W(o,e),(e,t)=>G(o,e,t),u,(t,r,o,l,f)=>{u(t,r);const h=O(),w=O(),L=W(a,t),R=W(i,t),p=t=>{const o=n=>e.getCell(r,t,n),a=W(L,t),i=s(r,t)?n(l(o,t)):void 0;var d,c;if(a===i||x(a)&&x(i)&&(c=i,y(d=a)===y(c)&&g(d,((e,t)=>c[t]===e)))||G(h,t,[a,i]),!C(f)){const e=W(R,t),n=s(r,t)?f(o,t):void 0;e!=n&&G(w,t,n)}},T=e=>{o((()=>{F(h,(([,e],t)=>G(L,t,e))),F(w,((e,t)=>G(R,t,e)))}),h,w,L,R,e),A(h),A(w)};q(L,p),e.hasTable(r)&&v(e.getRowIds(r),(e=>{D(L,e)||p(e)})),T(!0),c(t),d(t,0,e.addRowListener(r,null,((e,t,n)=>p(n))),e.addTableListener(r,(()=>T())))},f,()=>q(l,f),d,c]})(e,0,I),$=o(),_=o(),ee=O(),te=(e,t,...n)=>v(n,(n=>N(H(H(ee,t,O),e,K),n))),ne=e=>{Q(W(ee,e),(e=>{q(e,((e,t)=>F(t,(t=>e.delListener(t))))),A(e)})),v([_,$],(t=>t.delTable(e)))},se=(e,t,n)=>te(t,e,t.addStartTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),re={setQueryDefinition:(o,a,i)=>{U(o,a),ne(o);const l=[],d=[[null,[a,null,null,[],O()]]],c=[],u=[],f=[];i({select:(e,t)=>{const n=S(e)?[y(l)+"",e]:[C(t)?e:t,n=>n(e,t)];return p(l,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=C(n)||S(t)?null:t,r=C(s)?t:n,o=[e,[e,s,S(r)?r:e=>e(r),[],O()]];return p(d,o),{as:e=>o[0]=e}},where:(e,t,n)=>p(c,S(e)?e:C(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,r)=>{const o=[e,[e,S(t)?[t,n,s,r]:W(P,t)??[(e,t)=>t]]];return p(u,o),{as:e=>o[0]=e}},having:(e,t)=>p(f,S(e)?e:n=>n(e)===t)});const h=O(l);if(k(h))return re;const w=O(d);q(w,((e,[,t])=>Q(W(w,t),(({3:t})=>C(e)?0:p(t,e)))));const R=O(u);let T=$;if(k(R)&&L(f))T=_;else{se(o,T,_);const e=O();q(R,((t,[n,s])=>N(H(e,n,K),[t,s])));const a=K();q(h,(t=>D(e,t)?0:N(a,t)));const i=O(),l=(a,i,l,d)=>Q(a,(([c,u,h,v])=>{q(i,((o,[a])=>{const i=H(c,o,O),u=W(i,l),f=d?void 0:a;if(u!==f){const a=K([[u,f]]),d=j(i);G(i,l,f),F(W(e,o),(([e,o])=>{const l=((e,t,n,s,r,o=!1)=>{if(k(n))return;const[a,i,l,d]=r;return o||=C(e),F(s,(([n,s])=>{o||(e=C(n)?i?.(e,s,t++):C(s)?l?.(e,n,t--):d?.(e,s,n,t),o||=C(e))})),o?a(z(n),j(n)):e})(v[e],d,i,a,o);v[e]=C((e=>{const o=t(e);return(e=>e==n||e==s)(o)||o==r&&m(e)?o:void 0})(l))?null:l}))}})),k(u)||!g(f,(e=>e((e=>v[e]))))?_.delRow(o,h):C(h)?a[2]=_.addRow(o,v):_.setRow(o,h,v)}));te(T,o,T.addRowListener(o,null,((t,n,s,r)=>{const d=[],c=[],u=O(),f=T.hasRow(o,s);let h=!f;F(a,(e=>{const[t,n,a]=r(o,s,e);p(d,n),p(c,a),h||=t})),q(e,(e=>{const[t,,n]=r(o,s,e);(h||t)&&G(u,e,[n])})),h&&l(J(i,d,void 0,(([,e])=>(B(e,s),k(e)))),u,s,1),f&&l(J(i,c,(()=>{const e={};return F(a,(t=>e[t]=T.getCell(o,s,t))),[O(),K(),void 0,e]}),(([,e])=>{N(e,s)})),u,s)})))}se(o,e,T);const b=(t,n,s,r)=>{const i=t=>e.getCell(n,s,t);v(r,(n=>{const[s,,r,a,l]=W(w,n),d=r?.(i,t),[c,u]=W(l,t)??[];d!=c&&(C(u)||Z(o,u),G(l,t,C(d)?null:[d,...Y(o,1,e.addRowListener(s,d,(()=>b(t,s,d,a))))]))})),(t=>{const n=(n,s)=>e.getCell(...C(s)?[a,t,n]:n===a?[a,t,s]:[W(w,n)?.[0],W(W(w,n)?.[4],t)?.[0],s]);T.transaction((()=>g(c,(e=>e(n)))?q(h,((e,s)=>((e,t,n,s,r)=>C(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(T,o,t,e,s(n,t)))):T.delRow(o,t)))})(t)},{3:x}=W(w,null);return T.transaction((()=>Y(o,1,e.addRowListener(a,null,((t,n,s)=>{e.hasRow(a,s)?b(s,a,s,x):(T.delRow(o,s),F(w,(({4:e})=>Q(W(e,s),(([,t])=>{Z(o,t),G(e,s)})))))}))))),re},delQueryDefinition:e=>(ne(e),V(e),re),getStore:l,getQueryIds:w,forEachQuery:R,hasQuery:T,getTableId:b,delListener:e=>(_.delListener(e),re),destroy:X,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=_.getListenerStats();return s}};var oe,ae;return oe={Table:[1,1],[c]:[0,1],[u]:[0,5],[d]:[1,2],[h]:[0,2],[f]:[1,3]},ae=([e,t],n)=>{v(e?["get","has","forEach"]:["get"],(e=>re[e+i+n]=(...t)=>_[e+n](...t))),re["add"+i+n+a]=(...e)=>{return _["add"+n+a](...(s=e,0,r=t,s.slice(0,r)),((n,...s)=>e[t](re,...s)));var s,r}},((e,t)=>{e.map(t)})(E.entries(oe),(([e,t])=>ae(t,e))),M(re)})(e)),o.get(e))})();e.createQueries=U},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseQueries={});
|
package/lib/umd/queries.js.gz
CHANGED
|
Binary file
|
package/lib/umd/store.js
CHANGED
|
@@ -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),r=t(t),o="type",c="default",i="Ids",d="Table",u=d+"s",h=d+i,f="Row"+i,g="Cell",T=g+i,V="Value",b=V+"s",v=V+i,S=e=>s+e,y=(e,t)=>e.forEach(t),C=(e,t)=>e.map(t),w=e=>e.length,p=(e,t,s)=>e.slice(t,s),I=(e,...t)=>e.push(...t),R=e=>JSON.stringify(e,((e,t)=>{return L(t,Map)?(s=(e,[t,s])=>(e[t]=s,e),n={},[...t].reduce(s,n)):t;var s,n})),m=JSON.parse,J=isFinite,L=(e,t)=>e instanceof t,E=e=>null==e,F=(e,t,s)=>E(e)?s?.():t(e),x=e=>e==n||e==l,z=e=>t(e)==r,O=Object,j=O.keys,k=O.isFrozen,A=O.freeze,M=e=>L(e,O)&&e.constructor==O,N=(e,t)=>!E(((e,t)=>F(e,(e=>e[t])))(e,t)),P=(e,t)=>delete e[t],B=(e,t)=>C(O.entries(e),(([e,s])=>t(s,e))),D=e=>{return M(e)&&(t=j(e),0==w(t));var t},W=(e,t)=>e?.has(t)??!1,$=e=>E(e)||0==(e=>e.size)(e),q=e=>e.clear(),G=(e,t)=>e?.forEach(t),H=(e,t)=>e?.delete(t),K=e=>new Map(e),Q=e=>[...e?.keys()??[]],U=(e,t)=>e?.get(t),X=(e,t)=>G(e,((e,s)=>t(s,e))),Y=(e,t,s)=>E(s)?(H(e,t),e):e?.set(t,s),Z=(e,t,s)=>(W(e,t)||Y(e,t,s()),U(e,t)),_=(e,t,s)=>{const n={};return G(e,((e,l)=>{const a=t?t(e,l):e;!s?.(a,e)&&(n[l]=a)})),n},ee=(e,t,s)=>_(e,(e=>_(e,t,s)),D),te=(e,t,s)=>_(e,(e=>ee(e,t,s)),D),se=(e,t)=>{const s=K();return G(e,((e,n)=>s.set(n,t?.(e)??e))),s},ne=e=>se(e,se),le=e=>se(e,ne),ae=(e,t,s,n,l=0)=>F((s?Z:U)(e,t[l],l>w(t)-2?s:K),(a=>{if(l>w(t)-2)return n?.(a)&&Y(e,t[l]),a;const r=ae(a,t,s,n,l+1);return $(a)&&Y(e,t[l]),r})),re=e=>new Set(Array.isArray(e)||E(e)?e:[e]),oe=(e,t)=>e?.add(t),ce=/^\d+$/,ie=()=>{const e=[];let t=0;return[n=>(n?e.shift():null)??s+t++,t=>{ce.test(t)&&w(e)<1e3&&I(e,t)}]},de=e=>[e,e],ue=()=>[K(),K()],he=e=>[...e],fe=([e,t])=>e===t,ge=e=>{const s=t(e);return x(s)||s==a&&J(e)?s:void 0},Te=(e,t,s,n,l)=>E(l)?e.delCell(t,s,n,!0):e.setCell(t,s,n,l),Ve=(e,t,s)=>E(s)?e.delValue(t):e.setValue(t,s),be=(e,t,s,n=Y)=>(B(t,((t,n)=>s(e,n,t))),X(e,(s=>N(t,s)?0:n(e,s))),e),ve=(e,t,s)=>E(e)||!M(e)||D(e)||k(e)?(s?.(),!1):(B(e,((s,n)=>{t(s,n)||P(e,n)})),!D(e)),Se=(e,t,s)=>Y(e,t,U(e,t)==-s?void 0:s),ye=()=>{let e,t,n,l,r=0;const i=K(),J=K(),L=K(),O=K(),j=K(),k=K(),M=K(),ce=K(),Ce=K(),we=K(),pe=K(),Ie=K(),Re=re(),me=K(),Je=K(),Le=K(),Ee=ue(),Fe=ue(),xe=ue(),ze=ue(),Oe=ue(),je=ue(),ke=ue(),Ae=ue(),Me=ue(),Ne=ue(),Pe=ue(),Be=ue(),De=ue(),We=ue(),[$e,qe,Ge,He]=(e=>{let t;const[n,l]=ie(),a=K();return[(e,l,r,o=[],c=(()=>[]))=>{t??=as;const i=n(1);return Y(a,i,[e,l,r,o,c]),oe(ae(l,r??[s],re),i),i},(e,n,...l)=>y(((e,t=[s])=>{const n=[],l=(e,s)=>s==w(t)?I(n,e):null===t[s]?G(e,(e=>l(e,s+1))):y([t[s],null],(t=>l(U(e,t),s+1)));return l(e,0),n})(e,n),(e=>G(e,(e=>U(a,e)[0](t,...n??[],...l))))),e=>F(U(a,e),(([,t,n])=>(ae(t,n??[s],void 0,(t=>(H(t,e),$(t)?1:0))),Y(a,e),l(e),n))),e=>F(U(a,e),(([e,,s=[],n,l])=>{const a=(...r)=>{const o=w(r);o==w(s)?e(t,...r,...l(r)):E(s[o])?y(n[o]?.(...r)??[],(e=>a(...r,e))):a(...r,s[o])};a()}))]})(),Ke=e=>{if(!ve(e,((e,t)=>[o,c].includes(t))))return!1;const t=e[o];return!(!x(t)&&t!=a||(ge(e[c])!=t&&P(e,c),0))},Qe=(t,s)=>(!e||W(Ce,s)||It(s))&&ve(t,((e,t)=>Ue(s,t,e)),(()=>It(s))),Ue=(e,t,s,n)=>ve(n?s:_e(s,e,t),((n,l)=>F(Xe(e,t,l,n),(e=>(s[l]=e,!0)),(()=>!1))),(()=>It(e,t))),Xe=(t,s,n,l)=>e?F(U(U(Ce,t),n),(e=>ge(l)!=e[o]?It(t,s,n,l,e[c]):l),(()=>It(t,s,n,l))):E(ge(l))?It(t,s,n,l):l,Ye=(e,t)=>ve(t?e:et(e),((t,s)=>F(Ze(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>Rt())),Ze=(e,s)=>t?F(U(pe,e),(t=>ge(s)!=t[o]?Rt(e,s,t[c]):s),(()=>Rt(e,s))):E(ge(s))?Rt(e,s):s,_e=(e,t,s)=>(F(U(we,t),(([n,l])=>{G(n,((t,s)=>{N(e,s)||(e[s]=t)})),G(l,(n=>{N(e,n)||It(t,s,n)}))})),e),et=e=>(t&&(G(Ie,((t,s)=>{N(e,s)||(e[s]=t)})),G(Re,(t=>{N(e,t)||Rt(t)}))),e),tt=e=>be(Ce,e,((e,t,s)=>{const n=K(),l=re();be(Z(Ce,t,K),s,((e,t,s)=>{Y(e,t,s),F(s[c],(e=>Y(n,t,e)),(()=>oe(l,t)))})),Y(we,t,[n,l])}),((e,t)=>{Y(Ce,t),Y(we,t)})),st=e=>be(pe,e,((e,t,s)=>{Y(pe,t,s),F(s[c],(e=>Y(Ie,t,e)),(()=>oe(Re,t)))}),((e,t)=>{Y(pe,t),Y(Ie,t),H(Re,t)})),nt=e=>D(e)?Xt():Gt(e),lt=e=>be(Je,e,((e,t,s)=>at(t,s)),((e,t)=>gt(t))),at=(e,t)=>be(Z(Je,e,(()=>(vt(e,1),K()))),t,((t,s,n)=>rt(e,t,s,n)),((t,s)=>Tt(e,t,s))),rt=(e,t,s,n,l)=>be(Z(t,s,(()=>(St(e,s,1),K()))),n,((t,n,l)=>ot(e,s,t,n,l)),((n,a)=>Vt(e,t,s,n,a,l))),ot=(e,t,s,n,l)=>{W(s,n)||yt(e,t,n,1);const a=U(s,n);l!==a&&(Ct(e,t,n,a,l),Y(s,n,l))},ct=(e,t,s,n,l)=>F(U(t,s),(t=>ot(e,s,t,n,l)),(()=>rt(e,t,s,_e({[n]:l},e,s)))),it=e=>D(e)?_t():Ht(e),dt=e=>be(Le,e,((e,t,s)=>ut(t,s)),((e,t)=>bt(t))),ut=(e,t)=>{W(Le,e)||wt(e,1);const s=U(Le,e);t!==s&&(pt(e,s,t),Y(Le,e,t))},ht=(e,t)=>{const[s]=Z(me,e,ie),n=s(t);return W(U(Je,e),n)?ht(e,t):n},ft=e=>U(Je,e)??at(e,{}),gt=e=>at(e,{}),Tt=(e,t,s)=>{const[,n]=Z(me,e,ie);n(s),rt(e,t,s,{},!0)},Vt=(e,t,s,n,l,a)=>{const r=U(U(we,e)?.[0],l);if(!E(r)&&!a)return ot(e,s,n,l,r);const o=t=>{Ct(e,s,t,U(n,t)),yt(e,s,t,-1),Y(n,t)};E(r)?o(l):X(n,o),$(n)&&(St(e,s,-1),$(Y(t,s))&&(vt(e,-1),Y(Je,e),Y(me,e)))},bt=e=>{const t=U(Ie,e);if(!E(t))return ut(e,t);pt(e,U(Le,e)),wt(e,-1),Y(Le,e)},vt=(e,t)=>Se(i,e,t),St=(e,t,s)=>Se(Z(J,e,K),t,s),yt=(e,t,s,n)=>Se(Z(Z(L,e,K),t,K),s,n),Ct=(e,t,s,n,l)=>Z(Z(Z(O,e,K),t,K),s,(()=>[n,0]))[1]=l,wt=(e,t)=>Se(j,e,t),pt=(e,t,s)=>Z(k,e,(()=>[t,0]))[1]=s,It=(e,t,s,n,l)=>(I(Z(Z(Z(M,e,K),t,K),s,(()=>[])),n),l),Rt=(e,t,s)=>(I(Z(ce,e,(()=>[])),t),s),mt=(e,t,s)=>F(U(U(U(O,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...de(Dt(e,t,s))])),Jt=e=>F(U(k,e),(([e,t])=>[!0,e,t]),(()=>[!1,...de(qt(e))])),Lt=e=>$(M)||$(Me[e])?0:G(e?le(M):M,((t,s)=>G(t,((t,n)=>G(t,((t,l)=>qe(Me[e],[s,n,l],t))))))),Et=e=>$(ce)||$(Ne[e])?0:G(e?se(ce):ce,((t,s)=>qe(Ne[e],[s],t))),Ft=(e,t,s)=>{if(!$(t))return qe(e,s),1},xt=e=>{const t=$(Oe[e]),s=$(ke[e])&&$(ze[e])&&t&&$(Fe[e]),n=$(Ae[e])&&$(je[e])&&$(xe[e])&&$(Ee[e]);if(!s||!n){const l=e?[se(i),ne(J),le(L),le(O)]:[i,J,L,O];if(!s){G(l[2],((t,s)=>G(t,((t,n)=>Ft(ke[e],t,[s,n])))));const s=re();G(l[1],((n,l)=>{Ft(ze[e],n,[l])&&!t&&(qe(Oe[e],[l,null]),oe(s,l))})),t||G(l[3],((t,n)=>{if(!W(s,n)){const s=re();G(t,(e=>G(e,(([t,n],l)=>n!==t?oe(s,l):H(e,l))))),G(s,(t=>qe(Oe[e],[n,t])))}})),Ft(Fe[e],l[0])}if(!n){let t;G(l[3],((s,n)=>{let l;G(s,((s,a)=>{let r;G(s,(([s,o],c)=>{o!==s&&(qe(Ae[e],[n,a,c],o,s,mt),t=l=r=1)})),r&&qe(je[e],[n,a],mt)})),l&&qe(xe[e],[n],mt)})),t&&qe(Ee[e],void 0,mt)}}},zt=e=>{const t=$(Be[e]),s=$(De[e])&&$(Pe[e]);if(!t||!s){const n=e?[se(j),se(k)]:[j,k];if(t||Ft(Be[e],n[0]),!s){let t;G(n[1],(([s,n],l)=>{n!==s&&(qe(De[e],[l],n,s,Jt),t=1)})),t&&qe(Pe[e],void 0,Jt)}}},Ot=(e,...t)=>(ss((()=>e(...C(t,S)))),as),jt=()=>[_(O,((e,t)=>-1===U(i,t)?null:_(e,((e,s)=>-1===U(U(J,t),s)?null:_(e,(([,e])=>e??null),((e,t)=>fe(t)))),D)),D),_(k,(([,e])=>e??null),((e,t)=>fe(t)))],kt=()=>({cellsTouched:n,valuesTouched:l,changedCells:te(O,he,fe),invalidCells:te(M),changedValues:_(k,he,fe),invalidValues:_(ce),changedTableIds:_(i),changedRowIds:ee(J),changedCellIds:te(L),changedValueIds:_(j)}),At=()=>te(Je),Mt=()=>Q(Je),Nt=e=>Q(U(Je,S(e))),Pt=(e,t,s,n=0,l)=>{return C(p((r=U(Je,S(e)),o=(e,s)=>[E(t)?s:U(e,S(t)),s],a=([e],[t])=>(e<t?-1:1)*(s?-1:1),C([...r?.entries()??[]],(([e,t])=>o(t,e))).sort(a)),n,E(l)?l:n+l),(([,e])=>e));var a,r,o},Bt=(e,t)=>Q(U(U(Je,S(e)),S(t))),Dt=(e,t,s)=>U(U(U(Je,S(e)),S(t)),S(s)),Wt=()=>_(Le),$t=()=>Q(Le),qt=e=>U(Le,S(e)),Gt=e=>Ot((()=>(e=>ve(e,Qe,It))(e)?lt(e):0)),Ht=e=>Ot((()=>Ye(e)?dt(e):0)),Kt=e=>{try{nt(m(e))}catch{}return as},Qt=t=>Ot((()=>{if((e=ve(t,(e=>ve(e,Ke))))&&(tt(t),!$(Je))){const e=At();Xt(),Gt(e)}})),Ut=e=>Ot((()=>{if(t=(e=>ve(e,Ke))(e)){const s=Wt();ts(),_t(),t=!0,st(e),Ht(s)}})),Xt=()=>Ot((()=>lt({}))),Yt=e=>Ot((e=>W(Je,e)?gt(e):0),e),Zt=(e,t)=>Ot(((e,t)=>F(U(Je,e),(s=>W(s,t)?Tt(e,s,t):0))),e,t),_t=()=>Ot((()=>dt({}))),es=()=>Ot((()=>{tt({}),e=!1})),ts=()=>Ot((()=>{st({}),t=!1})),ss=(e,t)=>{if(-1==r)return;ns();const s=e();return ls(t),s},ns=()=>(r++,as),ls=e=>(r>0&&(r--,0==r&&(n=!$(O),l=!$(k),r=1,Lt(1),n&&xt(1),Et(1),l&&zt(1),r=-1,e?.(jt,kt)&&(r=1,G(O,((e,t)=>G(e,((e,s)=>G(e,(([e],n)=>Te(as,t,s,n,e))))))),G(k,(([e],t)=>Ve(as,t,e))),r=-1,n=l=!1),qe(We[0],void 0,jt,kt),Lt(0),n&&xt(0),Et(0),l&&zt(0),qe(We[1],void 0,jt,kt),r=0,y([i,J,L,O,M,j,k,ce],q))),as),as={getContent:()=>[At(),Wt()],getTables:At,getTableIds:Mt,getTable:e=>ee(U(Je,S(e))),getRowIds:Nt,getSortedRowIds:Pt,getRow:(e,t)=>_(U(U(Je,S(e)),S(t))),getCellIds:Bt,getCell:Dt,getValues:Wt,getValueIds:$t,getValue:qt,hasTables:()=>!$(Je),hasTable:e=>W(Je,S(e)),hasRow:(e,t)=>W(U(Je,S(e)),S(t)),hasCell:(e,t,s)=>W(U(U(Je,S(e)),S(t)),S(s)),hasValues:()=>!$(Le),hasValue:e=>W(Le,S(e)),getTablesJson:()=>R(Je),getValuesJson:()=>R(Le),getJson:()=>R([Je,Le]),getTablesSchemaJson:()=>R(Ce),getValuesSchemaJson:()=>R(pe),getSchemaJson:()=>R([Ce,pe]),setContent:([e,t])=>Ot((()=>{Gt(e),Ht(t)})),setTables:Gt,setTable:(e,t)=>Ot((e=>Qe(t,e)?at(e,t):0),e),setRow:(e,t,s)=>Ot(((e,t)=>Ue(e,t,s)?rt(e,ft(e),t,s):0),e,t),addRow:(e,t,s=!0)=>ss((()=>{let n;return Ue(e,n,t)&&(e=S(e),rt(e,ft(e),n=ht(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>Ot(((e,t)=>{if(Ue(e,t,s,1)){const n=ft(e);B(s,((s,l)=>ct(e,n,t,l,s)))}}),e,t),setCell:(e,t,s,n)=>Ot(((e,t,s)=>F(Xe(e,t,s,z(n)?n(Dt(e,t,s)):n),(n=>ct(e,ft(e),t,s,n)))),e,t,s),setValues:Ht,setPartialValues:e=>Ot((()=>Ye(e,1)?B(e,((e,t)=>ut(t,e))):0)),setValue:(e,t)=>Ot((e=>F(Ze(e,z(t)?t(qt(e)):t),(t=>ut(e,t)))),e),setTransactionChanges:e=>Ot((()=>{B(e[0],((e,t)=>E(e)?Yt(t):B(e,((e,s)=>E(e)?Zt(t,s):B(e,((e,n)=>Te(as,t,s,n,e))))))),B(e[1],((e,t)=>Ve(as,t,e)))})),setTablesJson:Kt,setValuesJson:e=>{try{it(m(e))}catch{}return as},setJson:e=>{try{const[t,s]=m(e);nt(t),it(s)}catch{Kt(e)}return as},setTablesSchema:Qt,setValuesSchema:Ut,setSchema:(e,t)=>Ot((()=>{Qt(e),Ut(t)})),delTables:Xt,delTable:Yt,delRow:Zt,delCell:(e,t,s,n)=>Ot(((e,t,s)=>F(U(Je,e),(l=>F(U(l,t),(a=>W(a,s)?Vt(e,l,t,a,s,n):0))))),e,t,s),delValues:_t,delValue:e=>Ot((e=>W(Le,e)?bt(e):0),e),delTablesSchema:es,delValuesSchema:ts,delSchema:()=>Ot((()=>{es(),ts()})),transaction:ss,startTransaction:ns,finishTransaction:ls,forEachTable:e=>G(Je,((t,s)=>e(s,(e=>G(t,((t,s)=>e(s,(e=>X(t,e))))))))),forEachRow:(e,t)=>G(U(Je,S(e)),((e,s)=>t(s,(t=>X(e,t))))),forEachCell:(e,t,s)=>X(U(U(Je,S(e)),S(t)),s),forEachValue:e=>X(Le,e),addSortedRowIdsListener:(e,t,s,n,l,a,r)=>{let o=Pt(e,t,s,n,l);return $e((()=>{const r=Pt(e,t,s,n,l);var c,i,d;i=o,w(c=r)===w(i)&&(d=(e,t)=>i[t]===e,c.every(d))||(o=r,a(as,e,t,s,n,l,o))}),Oe[r?1:0],[e,t],[Mt])},addWillFinishTransactionListener:e=>$e(e,We[0]),addDidFinishTransactionListener:e=>$e(e,We[1]),callListener:e=>(He(e),as),delListener:e=>(Ge(e),as),getListenerStats:()=>({}),createStore:ye};return B({[u]:[0,Ee],[h]:[0,Fe],[d]:[1,xe,[Mt]],[f]:[1,ze,[Mt]],Row:[2,je,[Mt,Nt]],[T]:[2,ke,[Mt,Nt]],[g]:[3,Ae,[Mt,Nt,Bt],e=>de(Dt(...e))],InvalidCell:[3,Me],[b]:[0,Pe],[v]:[0,Be],[V]:[1,De,[$t],e=>de(qt(e[0]))],InvalidValue:[1,Ne]},(([e,t,s,n],l)=>{as["add"+l+"Listener"]=(...l)=>$e(l[e],t[l[e+1]?1:0],e>0?p(l,0,e):void 0,s,n)})),A(as)};e.createStore=ye},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
|
|
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),r=t(t),o="type",c="default",i="Ids",d="Table",u=d+"s",h=d+i,f="Row"+i,g="Cell",T=g+i,V="Value",b=V+"s",v=V+i,S=e=>s+e,y=(e,t)=>e.forEach(t),C=(e,t)=>e.map(t),w=e=>e.length,p=(e,t,s)=>e.slice(t,s),I=(e,...t)=>e.push(...t),R=e=>JSON.stringify(e,((e,t)=>{return L(t,Map)?(s=(e,[t,s])=>(e[t]=s,e),n={},[...t].reduce(s,n)):t;var s,n})),m=JSON.parse,J=isFinite,L=(e,t)=>e instanceof t,E=e=>null==e,F=(e,t,s)=>E(e)?s?.():t(e),x=e=>e==n||e==l,z=e=>t(e)==r,O=Object,j=O.keys,k=O.isFrozen,A=O.freeze,M=e=>L(e,O)&&e.constructor==O,N=(e,t)=>!E(((e,t)=>F(e,(e=>e[t])))(e,t)),P=(e,t)=>delete e[t],B=(e,t)=>C(O.entries(e),(([e,s])=>t(s,e))),D=e=>{return M(e)&&(t=j(e),0==w(t));var t},W=(e,t)=>e?.has(t)??!1,$=e=>E(e)||0==(e=>e.size)(e),q=e=>e.clear(),G=(e,t)=>e?.forEach(t),H=(e,t)=>e?.delete(t),K=e=>new Map(e),Q=e=>[...e?.keys()??[]],U=(e,t)=>e?.get(t),X=(e,t)=>G(e,((e,s)=>t(s,e))),Y=(e,t,s)=>E(s)?(H(e,t),e):e?.set(t,s),Z=(e,t,s)=>(W(e,t)||Y(e,t,s()),U(e,t)),_=(e,t,s)=>{const n={};return G(e,((e,l)=>{const a=t?t(e,l):e;!s?.(a,e)&&(n[l]=a)})),n},ee=(e,t,s)=>_(e,(e=>_(e,t,s)),D),te=(e,t,s)=>_(e,(e=>ee(e,t,s)),D),se=(e,t)=>{const s=K();return G(e,((e,n)=>s.set(n,t?.(e)??e))),s},ne=e=>se(e,se),le=e=>se(e,ne),ae=(e,t,s,n,l=0)=>F((s?Z:U)(e,t[l],l>w(t)-2?s:K),(a=>{if(l>w(t)-2)return n?.(a)&&Y(e,t[l]),a;const r=ae(a,t,s,n,l+1);return $(a)&&Y(e,t[l]),r})),re=e=>new Set(Array.isArray(e)||E(e)?e:[e]),oe=(e,t)=>e?.add(t),ce=/^\d+$/,ie=()=>{const e=[];let t=0;return[n=>(n?e.shift():null)??s+t++,t=>{ce.test(t)&&w(e)<1e3&&I(e,t)}]},de=e=>[e,e],ue=()=>[K(),K()],he=e=>[...e],fe=([e,t])=>e===t,ge=e=>{const s=t(e);return x(s)||s==a&&J(e)?s:void 0},Te=(e,t,s,n,l)=>E(l)?e.delCell(t,s,n,!0):e.setCell(t,s,n,l),Ve=(e,t,s)=>E(s)?e.delValue(t):e.setValue(t,s),be=(e,t,s,n=Y)=>(B(t,((t,n)=>s(e,n,t))),X(e,(s=>N(t,s)?0:n(e,s))),e),ve=(e,t,s)=>E(e)||!M(e)||D(e)||k(e)?(s?.(),!1):(B(e,((s,n)=>{t(s,n)||P(e,n)})),!D(e)),Se=(e,t,s)=>Y(e,t,U(e,t)==-s?void 0:s),ye=()=>{let e,t,n=!1,l=!1,r=0;const i=K(),J=K(),L=K(),O=K(),j=K(),k=K(),M=K(),ce=K(),Ce=K(),we=K(),pe=K(),Ie=K(),Re=re(),me=K(),Je=K(),Le=K(),Ee=ue(),Fe=ue(),xe=ue(),ze=ue(),Oe=ue(),je=ue(),ke=ue(),Ae=ue(),Me=ue(),Ne=ue(),Pe=ue(),Be=ue(),De=ue(),We=K(),$e=ue(),[qe,Ge,He,Ke]=(e=>{let t;const[n,l]=ie(),a=K();return[(e,l,r,o=[],c=(()=>[]))=>{t??=rs;const i=n(1);return Y(a,i,[e,l,r,o,c]),oe(ae(l,r??[s],re),i),i},(e,n,...l)=>y(((e,t=[s])=>{const n=[],l=(e,s)=>s==w(t)?I(n,e):null===t[s]?G(e,(e=>l(e,s+1))):y([t[s],null],(t=>l(U(e,t),s+1)));return l(e,0),n})(e,n),(e=>G(e,(e=>U(a,e)[0](t,...n??[],...l))))),e=>F(U(a,e),(([,t,n])=>(ae(t,n??[s],void 0,(t=>(H(t,e),$(t)?1:0))),Y(a,e),l(e),n))),e=>F(U(a,e),(([e,,s=[],n,l])=>{const a=(...r)=>{const o=w(r);o==w(s)?e(t,...r,...l(r)):E(s[o])?y(n[o]?.(...r)??[],(e=>a(...r,e))):a(...r,s[o])};a()}))]})(),Qe=e=>{if(!ve(e,((e,t)=>[o,c].includes(t))))return!1;const t=e[o];return!(!x(t)&&t!=a||(ge(e[c])!=t&&P(e,c),0))},Ue=(t,s)=>(!e||W(Ce,s)||Rt(s))&&ve(t,((e,t)=>Xe(s,t,e)),(()=>Rt(s))),Xe=(e,t,s,n)=>ve(n?s:et(s,e,t),((n,l)=>F(Ye(e,t,l,n),(e=>(s[l]=e,!0)),(()=>!1))),(()=>Rt(e,t))),Ye=(t,s,n,l)=>e?F(U(U(Ce,t),n),(e=>ge(l)!=e[o]?Rt(t,s,n,l,e[c]):l),(()=>Rt(t,s,n,l))):E(ge(l))?Rt(t,s,n,l):l,Ze=(e,t)=>ve(t?e:tt(e),((t,s)=>F(_e(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>mt())),_e=(e,s)=>t?F(U(pe,e),(t=>ge(s)!=t[o]?mt(e,s,t[c]):s),(()=>mt(e,s))):E(ge(s))?mt(e,s):s,et=(e,t,s)=>(F(U(we,t),(([n,l])=>{G(n,((t,s)=>{N(e,s)||(e[s]=t)})),G(l,(n=>{N(e,n)||Rt(t,s,n)}))})),e),tt=e=>(t&&(G(Ie,((t,s)=>{N(e,s)||(e[s]=t)})),G(Re,(t=>{N(e,t)||mt(t)}))),e),st=e=>be(Ce,e,((e,t,s)=>{const n=K(),l=re();be(Z(Ce,t,K),s,((e,t,s)=>{Y(e,t,s),F(s[c],(e=>Y(n,t,e)),(()=>oe(l,t)))})),Y(we,t,[n,l])}),((e,t)=>{Y(Ce,t),Y(we,t)})),nt=e=>be(pe,e,((e,t,s)=>{Y(pe,t,s),F(s[c],(e=>Y(Ie,t,e)),(()=>oe(Re,t)))}),((e,t)=>{Y(pe,t),Y(Ie,t),H(Re,t)})),lt=e=>D(e)?Yt():Ht(e),at=e=>be(Je,e,((e,t,s)=>rt(t,s)),((e,t)=>Tt(t))),rt=(e,t)=>be(Z(Je,e,(()=>(St(e,1),K()))),t,((t,s,n)=>ot(e,t,s,n)),((t,s)=>Vt(e,t,s))),ot=(e,t,s,n,l)=>be(Z(t,s,(()=>(yt(e,s,1),K()))),n,((t,n,l)=>ct(e,s,t,n,l)),((n,a)=>bt(e,t,s,n,a,l))),ct=(e,t,s,n,l)=>{W(s,n)||Ct(e,t,n,1);const a=U(s,n);l!==a&&(wt(e,t,n,a,l),Y(s,n,l))},it=(e,t,s,n,l)=>F(U(t,s),(t=>ct(e,s,t,n,l)),(()=>ot(e,t,s,et({[n]:l},e,s)))),dt=e=>D(e)?es():Kt(e),ut=e=>be(Le,e,((e,t,s)=>ht(t,s)),((e,t)=>vt(t))),ht=(e,t)=>{W(Le,e)||pt(e,1);const s=U(Le,e);t!==s&&(It(e,s,t),Y(Le,e,t))},ft=(e,t)=>{const[s]=Z(me,e,ie),n=s(t);return W(U(Je,e),n)?ft(e,t):n},gt=e=>U(Je,e)??rt(e,{}),Tt=e=>rt(e,{}),Vt=(e,t,s)=>{const[,n]=Z(me,e,ie);n(s),ot(e,t,s,{},!0)},bt=(e,t,s,n,l,a)=>{const r=U(U(we,e)?.[0],l);if(!E(r)&&!a)return ct(e,s,n,l,r);const o=t=>{wt(e,s,t,U(n,t)),Ct(e,s,t,-1),Y(n,t)};E(r)?o(l):X(n,o),$(n)&&(yt(e,s,-1),$(Y(t,s))&&(St(e,-1),Y(Je,e),Y(me,e)))},vt=e=>{const t=U(Ie,e);if(!E(t))return ht(e,t);It(e,U(Le,e)),pt(e,-1),Y(Le,e)},St=(e,t)=>Se(i,e,t),yt=(e,t,s)=>Se(Z(J,e,K),t,s),Ct=(e,t,s,n)=>Se(Z(Z(L,e,K),t,K),s,n),wt=(e,t,s,n,l)=>Z(Z(Z(O,e,K),t,K),s,(()=>[n,0]))[1]=l,pt=(e,t)=>Se(j,e,t),It=(e,t,s)=>Z(k,e,(()=>[t,0]))[1]=s,Rt=(e,t,s,n,l)=>(I(Z(Z(Z(M,e,K),t,K),s,(()=>[])),n),l),mt=(e,t,s)=>(I(Z(ce,e,(()=>[])),t),s),Jt=(e,t,s)=>F(U(U(U(O,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...de(Wt(e,t,s))])),Lt=e=>F(U(k,e),(([e,t])=>[!0,e,t]),(()=>[!1,...de(Gt(e))])),Et=e=>$(M)||$(Me[e])?0:G(e?le(M):M,((t,s)=>G(t,((t,n)=>G(t,((t,l)=>Ge(Me[e],[s,n,l],t))))))),Ft=e=>$(ce)||$(Ne[e])?0:G(e?se(ce):ce,((t,s)=>Ge(Ne[e],[s],t))),xt=(e,t,s)=>{if(!$(t))return Ge(e,s),1},zt=e=>{const t=$(Oe[e]),s=$(ke[e])&&$(ze[e])&&t&&$(Fe[e]),n=$(Ae[e])&&$(je[e])&&$(xe[e])&&$(Ee[e]);if(!s||!n){const l=e?[se(i),ne(J),le(L),le(O)]:[i,J,L,O];if(!s){G(l[2],((t,s)=>G(t,((t,n)=>xt(ke[e],t,[s,n])))));const s=re();G(l[1],((n,l)=>{xt(ze[e],n,[l])&&!t&&(Ge(Oe[e],[l,null]),oe(s,l))})),t||G(l[3],((t,n)=>{if(!W(s,n)){const s=re();G(t,(e=>G(e,(([t,n],l)=>n!==t?oe(s,l):H(e,l))))),G(s,(t=>Ge(Oe[e],[n,t])))}})),xt(Fe[e],l[0])}if(!n){let t;G(l[3],((s,n)=>{let l;G(s,((s,a)=>{let r;G(s,(([s,o],c)=>{o!==s&&(Ge(Ae[e],[n,a,c],o,s,Jt),t=l=r=1)})),r&&Ge(je[e],[n,a],Jt)})),l&&Ge(xe[e],[n],Jt)})),t&&Ge(Ee[e],void 0,Jt)}}},Ot=e=>{const t=$(Be[e]),s=$(De[e])&&$(Pe[e]);if(!t||!s){const n=e?[se(j),se(k)]:[j,k];if(t||xt(Be[e],n[0]),!s){let t;G(n[1],(([s,n],l)=>{n!==s&&(Ge(De[e],[l],n,s,Lt),t=1)})),t&&Ge(Pe[e],void 0,Lt)}}},jt=(e,...t)=>(ns((()=>e(...C(t,S)))),rs),kt=()=>[_(O,((e,t)=>-1===U(i,t)?null:_(e,((e,s)=>-1===U(U(J,t),s)?null:_(e,(([,e])=>e??null),((e,t)=>fe(t)))),D)),D),_(k,(([,e])=>e??null),((e,t)=>fe(t)))],At=()=>({cellsTouched:n,valuesTouched:l,changedCells:te(O,he,fe),invalidCells:te(M),changedValues:_(k,he,fe),invalidValues:_(ce),changedTableIds:_(i),changedRowIds:ee(J),changedCellIds:te(L),changedValueIds:_(j)}),Mt=()=>te(Je),Nt=()=>Q(Je),Pt=e=>Q(U(Je,S(e))),Bt=(e,t,s,n=0,l)=>{return C(p((r=U(Je,S(e)),o=(e,s)=>[E(t)?s:U(e,S(t)),s],a=([e],[t])=>(e<t?-1:1)*(s?-1:1),C([...r?.entries()??[]],(([e,t])=>o(t,e))).sort(a)),n,E(l)?l:n+l),(([,e])=>e));var a,r,o},Dt=(e,t)=>Q(U(U(Je,S(e)),S(t))),Wt=(e,t,s)=>U(U(U(Je,S(e)),S(t)),S(s)),$t=()=>_(Le),qt=()=>Q(Le),Gt=e=>U(Le,S(e)),Ht=e=>jt((()=>(e=>ve(e,Ue,Rt))(e)?at(e):0)),Kt=e=>jt((()=>Ze(e)?ut(e):0)),Qt=e=>{try{lt(m(e))}catch{}return rs},Ut=t=>jt((()=>{if((e=ve(t,(e=>ve(e,Qe))))&&(st(t),!$(Je))){const e=Mt();Yt(),Ht(e)}})),Xt=e=>jt((()=>{if(t=(e=>ve(e,Qe))(e)){const s=$t();ss(),es(),t=!0,nt(e),Kt(s)}})),Yt=()=>jt((()=>at({}))),Zt=e=>jt((e=>W(Je,e)?Tt(e):0),e),_t=(e,t)=>jt(((e,t)=>F(U(Je,e),(s=>W(s,t)?Vt(e,s,t):0))),e,t),es=()=>jt((()=>ut({}))),ts=()=>jt((()=>{st({}),e=!1})),ss=()=>jt((()=>{nt({}),t=!1})),ns=(e,t)=>{if(-1!=r){ls();const s=e();return as(t),s}},ls=()=>(-1!=r&&r++,1==r&&Ge(We,void 0,kt,At),rs),as=e=>(r>0&&(r--,0==r&&(n=!$(O),l=!$(k),r=1,Et(1),n&&zt(1),Ft(1),l&&Ot(1),e?.(kt,At)&&(G(O,((e,t)=>G(e,((e,s)=>G(e,(([e],n)=>Te(rs,t,s,n,e))))))),G(k,(([e],t)=>Ve(rs,t,e))),n=l=!1),Ge($e[0],void 0,kt,At),r=-1,Et(0),n&&zt(0),Ft(0),l&&Ot(0),Ge($e[1],void 0,kt,At),r=0,n=l=!1,y([i,J,L,O,M,j,k,ce],q))),rs),rs={getContent:()=>[Mt(),$t()],getTables:Mt,getTableIds:Nt,getTable:e=>ee(U(Je,S(e))),getRowIds:Pt,getSortedRowIds:Bt,getRow:(e,t)=>_(U(U(Je,S(e)),S(t))),getCellIds:Dt,getCell:Wt,getValues:$t,getValueIds:qt,getValue:Gt,hasTables:()=>!$(Je),hasTable:e=>W(Je,S(e)),hasRow:(e,t)=>W(U(Je,S(e)),S(t)),hasCell:(e,t,s)=>W(U(U(Je,S(e)),S(t)),S(s)),hasValues:()=>!$(Le),hasValue:e=>W(Le,S(e)),getTablesJson:()=>R(Je),getValuesJson:()=>R(Le),getJson:()=>R([Je,Le]),getTablesSchemaJson:()=>R(Ce),getValuesSchemaJson:()=>R(pe),getSchemaJson:()=>R([Ce,pe]),setContent:([e,t])=>jt((()=>{Ht(e),Kt(t)})),setTables:Ht,setTable:(e,t)=>jt((e=>Ue(t,e)?rt(e,t):0),e),setRow:(e,t,s)=>jt(((e,t)=>Xe(e,t,s)?ot(e,gt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>ns((()=>{let n;return Xe(e,n,t)&&(e=S(e),ot(e,gt(e),n=ft(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>jt(((e,t)=>{if(Xe(e,t,s,1)){const n=gt(e);B(s,((s,l)=>it(e,n,t,l,s)))}}),e,t),setCell:(e,t,s,n)=>jt(((e,t,s)=>F(Ye(e,t,s,z(n)?n(Wt(e,t,s)):n),(n=>it(e,gt(e),t,s,n)))),e,t,s),setValues:Kt,setPartialValues:e=>jt((()=>Ze(e,1)?B(e,((e,t)=>ht(t,e))):0)),setValue:(e,t)=>jt((e=>F(_e(e,z(t)?t(Gt(e)):t),(t=>ht(e,t)))),e),setTransactionChanges:e=>jt((()=>{B(e[0],((e,t)=>E(e)?Zt(t):B(e,((e,s)=>E(e)?_t(t,s):B(e,((e,n)=>Te(rs,t,s,n,e))))))),B(e[1],((e,t)=>Ve(rs,t,e)))})),setTablesJson:Qt,setValuesJson:e=>{try{dt(m(e))}catch{}return rs},setJson:e=>{try{const[t,s]=m(e);lt(t),dt(s)}catch{Qt(e)}return rs},setTablesSchema:Ut,setValuesSchema:Xt,setSchema:(e,t)=>jt((()=>{Ut(e),Xt(t)})),delTables:Yt,delTable:Zt,delRow:_t,delCell:(e,t,s,n)=>jt(((e,t,s)=>F(U(Je,e),(l=>F(U(l,t),(a=>W(a,s)?bt(e,l,t,a,s,n):0))))),e,t,s),delValues:es,delValue:e=>jt((e=>W(Le,e)?vt(e):0),e),delTablesSchema:ts,delValuesSchema:ss,delSchema:()=>jt((()=>{ts(),ss()})),transaction:ns,startTransaction:ls,finishTransaction:as,forEachTable:e=>G(Je,((t,s)=>e(s,(e=>G(t,((t,s)=>e(s,(e=>X(t,e))))))))),forEachRow:(e,t)=>G(U(Je,S(e)),((e,s)=>t(s,(t=>X(e,t))))),forEachCell:(e,t,s)=>X(U(U(Je,S(e)),S(t)),s),forEachValue:e=>X(Le,e),addSortedRowIdsListener:(e,t,s,n,l,a,r)=>{let o=Bt(e,t,s,n,l);return qe((()=>{const r=Bt(e,t,s,n,l);var c,i,d;i=o,w(c=r)===w(i)&&(d=(e,t)=>i[t]===e,c.every(d))||(o=r,a(rs,e,t,s,n,l,o))}),Oe[r?1:0],[e,t],[Nt])},addStartTransactionListener:e=>qe(e,We),addWillFinishTransactionListener:e=>qe(e,$e[0]),addDidFinishTransactionListener:e=>qe(e,$e[1]),callListener:e=>(Ke(e),rs),delListener:e=>(He(e),rs),getListenerStats:()=>({}),createStore:ye};return B({[u]:[0,Ee],[h]:[0,Fe],[d]:[1,xe,[Nt]],[f]:[1,ze,[Nt]],Row:[2,je,[Nt,Pt]],[T]:[2,ke,[Nt,Pt]],[g]:[3,Ae,[Nt,Pt,Dt],e=>de(Wt(...e))],InvalidCell:[3,Me],[b]:[0,Pe],[v]:[0,Be],[V]:[1,De,[qt],e=>de(Gt(e[0]))],InvalidValue:[1,Ne]},(([e,t,s,n],l)=>{rs["add"+l+"Listener"]=(...l)=>qe(l[e],t[l[e+1]?1:0],e>0?p(l,0,e):void 0,s,n)})),A(rs)};e.createStore=ye},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
|
package/lib/umd/store.js.gz
CHANGED
|
Binary file
|