valdres 0.2.0-alpha.75 → 0.2.0-alpha.76
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/dist/index.js +221 -132
- package/dist/types/src/indexConstructor.d.ts +3 -1
- package/dist/types/src/lib/deleteFamilyAtom.d.ts +3 -0
- package/dist/types/src/lib/getState.d.ts +2 -1
- package/dist/types/src/lib/initAtom.d.ts +1 -1
- package/dist/types/src/lib/initSelector.d.ts +1 -1
- package/dist/types/src/lib/propagateUpdatedAtoms.d.ts +3 -2
- package/dist/types/src/lib/setValueInData.d.ts +2 -1
- package/dist/types/src/lib/stringifyFamilyArgs.d.ts +1 -1
- package/dist/types/src/lib/transaction.d.ts +1 -1
- package/dist/types/src/types/AtomFamily.d.ts +2 -4
- package/dist/types/src/types/AtomFamilyAtom.d.ts +2 -1
- package/dist/types/src/types/AtomFamilySelector.d.ts +1 -1
- package/dist/types/src/types/GetValue.d.ts +2 -1
- package/dist/types/src/types/Selector.d.ts +1 -1
- package/dist/types/src/types/Store.d.ts +2 -0
- package/dist/types/src/types/StoreData.d.ts +1 -1
- package/dist/types/src/types/TransactionInterface.d.ts +2 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -92,6 +92,9 @@ var equal = (a, b) => {
|
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
94
|
|
|
95
|
+
// src/utils/isAtomFamily.ts
|
|
96
|
+
var isAtomFamily = (state) => state && Object.hasOwn(state, "__valdresAtomFamilyMap");
|
|
97
|
+
|
|
95
98
|
// src/utils/isAtom.ts
|
|
96
99
|
var isAtom = (state) => Object.hasOwn(state, "defaultValue");
|
|
97
100
|
|
|
@@ -101,32 +104,11 @@ var isFamilyState = (state) => state && Object.hasOwn(state, "family");
|
|
|
101
104
|
// src/utils/isFamilyAtom.ts
|
|
102
105
|
var isFamilyAtom = (state) => isFamilyState(state) && isAtom(state);
|
|
103
106
|
|
|
104
|
-
// src/lib/updateStateSubscribers.ts
|
|
105
|
-
var updateStateSubscribers = (state, data) => {
|
|
106
|
-
const subscribtions = data.subscriptions.get(state);
|
|
107
|
-
if (subscribtions?.size) {
|
|
108
|
-
for (const subscribtion of subscribtions) {
|
|
109
|
-
subscribtion.callback();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
if (isFamilyState(state)) {
|
|
113
|
-
const familySubscriptions = data.subscriptions.get(state.family);
|
|
114
|
-
if (familySubscriptions?.size) {
|
|
115
|
-
for (const subscribtion of familySubscriptions) {
|
|
116
|
-
subscribtion.callback(...state.familyKey);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
|
|
122
107
|
// src/utils/isPromiseLike.ts
|
|
123
108
|
var isPromiseLike = (object) => {
|
|
124
109
|
return object && object.then && typeof object.then === "function";
|
|
125
110
|
};
|
|
126
111
|
|
|
127
|
-
// src/utils/isAtomFamily.ts
|
|
128
|
-
var isAtomFamily = (state) => state && Object.hasOwn(state, "__valdresAtomFamilyMap");
|
|
129
|
-
|
|
130
112
|
// src/utils/isSelector.ts
|
|
131
113
|
var isSelector = (state) => state && Object.hasOwn(state, "get");
|
|
132
114
|
|
|
@@ -193,6 +175,7 @@ var setAtom = (atom, newValue, data, skipOnSet = false) => {
|
|
|
193
175
|
if (currentValue?.__isEmptyAtomPromise__) {
|
|
194
176
|
currentValue.__resolveEmptyAtomPromise__(newValue);
|
|
195
177
|
}
|
|
178
|
+
if (isFamilyAtom(atom)) {}
|
|
196
179
|
propagateUpdatedAtoms([atom], data);
|
|
197
180
|
return newValue;
|
|
198
181
|
};
|
|
@@ -226,11 +209,10 @@ var initAtom = (atom, data) => {
|
|
|
226
209
|
const tmpVal = getAtomInitValue(atom, data);
|
|
227
210
|
let value = setValueInData(atom, tmpVal, data);
|
|
228
211
|
if (isFamilyAtom(atom)) {
|
|
229
|
-
const
|
|
230
|
-
if (!
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
setAtom(atom.family.__keysAtom, newSet, data);
|
|
212
|
+
const currentAtoms = data.values.get(atom.family) || [];
|
|
213
|
+
if (!currentAtoms.includes(atom)) {
|
|
214
|
+
data.values.set(atom.family, [...currentAtoms, atom]);
|
|
215
|
+
propagateUpdatedAtoms([atom.family], data);
|
|
234
216
|
}
|
|
235
217
|
}
|
|
236
218
|
if (atom.onInit)
|
|
@@ -250,14 +232,17 @@ function getState(state, data, circularDependencySet) {
|
|
|
250
232
|
return getState(state, data.parent, circularDependencySet);
|
|
251
233
|
return initAtom(state, data);
|
|
252
234
|
}
|
|
253
|
-
if (isSelector(state))
|
|
254
|
-
|
|
235
|
+
if (isSelector(state)) {
|
|
236
|
+
initSelector(state, data, circularDependencySet);
|
|
237
|
+
return data.values.get(state);
|
|
238
|
+
}
|
|
255
239
|
if (isAtomFamily(state)) {
|
|
256
240
|
if ("parent" in data) {
|
|
257
|
-
const closestData = findClosestStoreWithAtomInitialized(state
|
|
258
|
-
return getState(state
|
|
241
|
+
const closestData = findClosestStoreWithAtomInitialized(state, data);
|
|
242
|
+
return getState(state, closestData, circularDependencySet);
|
|
259
243
|
}
|
|
260
|
-
|
|
244
|
+
data.values.set(state, []);
|
|
245
|
+
return data.values.get(state);
|
|
261
246
|
}
|
|
262
247
|
if (isSelectorFamily(state)) {
|
|
263
248
|
const array = Array.from(state.__valdresSelectorFamilyMap.keys());
|
|
@@ -276,6 +261,24 @@ var findClosestStoreWithAtomInitialized = (atom, data) => {
|
|
|
276
261
|
return findClosestStoreWithAtomInitialized(atom, data.parent);
|
|
277
262
|
};
|
|
278
263
|
|
|
264
|
+
// src/lib/updateStateSubscribers.ts
|
|
265
|
+
var updateStateSubscribers = (state, data) => {
|
|
266
|
+
const subscribtions = data.subscriptions.get(state);
|
|
267
|
+
if (subscribtions?.size) {
|
|
268
|
+
for (const subscribtion of subscribtions) {
|
|
269
|
+
subscribtion.callback();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (isFamilyState(state)) {
|
|
273
|
+
const familySubscriptions = data.subscriptions.get(state.family);
|
|
274
|
+
if (familySubscriptions?.size) {
|
|
275
|
+
for (const subscribtion of familySubscriptions) {
|
|
276
|
+
subscribtion.callback(...state.familyArgs);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
279
282
|
// src/errors/lib/generateSelectorTrace.ts
|
|
280
283
|
var generateSelectorTrace = (selectors) => {
|
|
281
284
|
const lastIndex = selectors.length - 1;
|
|
@@ -331,11 +334,11 @@ class SuspendAndWaitForResolveError extends Error {
|
|
|
331
334
|
}
|
|
332
335
|
}
|
|
333
336
|
var getOrInitConsumersSet = (state, data) => {
|
|
334
|
-
const set = data.
|
|
337
|
+
const set = data.stateDependents.get(state);
|
|
335
338
|
if (set)
|
|
336
339
|
return set;
|
|
337
340
|
const newSet = new Set;
|
|
338
|
-
data.
|
|
341
|
+
data.stateDependents.set(state, newSet);
|
|
339
342
|
return newSet;
|
|
340
343
|
};
|
|
341
344
|
var evaluateSelector = (selector, data, circularDependencyMap = new WeakSet) => {
|
|
@@ -392,6 +395,16 @@ var handleSelectorResult = (value, selector, data) => {
|
|
|
392
395
|
}
|
|
393
396
|
};
|
|
394
397
|
var initSelector = (selector, data, circularDependencySet = new WeakSet) => {
|
|
398
|
+
const existingValue = data.values.get(selector);
|
|
399
|
+
const udpatedValue = evaluate(selector, data, circularDependencySet);
|
|
400
|
+
if (selector.equal(existingValue, udpatedValue)) {
|
|
401
|
+
return false;
|
|
402
|
+
} else {
|
|
403
|
+
setValueInData(selector, udpatedValue, data);
|
|
404
|
+
return true;
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
var evaluate = (selector, data, circularDependencySet) => {
|
|
395
408
|
let tmpValue;
|
|
396
409
|
try {
|
|
397
410
|
tmpValue = evaluateSelector(selector, data, circularDependencySet);
|
|
@@ -400,14 +413,7 @@ var initSelector = (selector, data, circularDependencySet = new WeakSet) => {
|
|
|
400
413
|
e.track(selector);
|
|
401
414
|
throw e;
|
|
402
415
|
}
|
|
403
|
-
|
|
404
|
-
if (data.expiredValues.has(selector)) {
|
|
405
|
-
const expiredValue = data.expiredValues.get(selector);
|
|
406
|
-
if (selector.equal(expiredValue, value)) {
|
|
407
|
-
return setValueInData(selector, expiredValue, data);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
return setValueInData(selector, value, data);
|
|
416
|
+
return handleSelectorResult(tmpValue, selector, data);
|
|
411
417
|
};
|
|
412
418
|
|
|
413
419
|
// src/lib/updateSelectorSubscribers.ts
|
|
@@ -416,14 +422,6 @@ var updateSelectorSubscribers = (selector, data) => {
|
|
|
416
422
|
const familySubscriptions = selector.family && data.subscriptions.get(selector.family);
|
|
417
423
|
if (!subscribtions?.size && !familySubscriptions?.size)
|
|
418
424
|
return;
|
|
419
|
-
if (subscribtions?.size && data.subscriptionsRequireEqualCheck.get(selector) || familySubscriptions?.size && selector.family && data.subscriptionsRequireEqualCheck.get(selector.family)) {
|
|
420
|
-
try {
|
|
421
|
-
const oldValue = data.expiredValues.get(selector);
|
|
422
|
-
const newValue = initSelector(selector, data);
|
|
423
|
-
if (selector.equal(newValue, oldValue))
|
|
424
|
-
return;
|
|
425
|
-
} catch (e) {}
|
|
426
|
-
}
|
|
427
425
|
if (subscribtions?.size) {
|
|
428
426
|
for (const subscribtion of subscribtions) {
|
|
429
427
|
subscribtion.callback();
|
|
@@ -431,21 +429,53 @@ var updateSelectorSubscribers = (selector, data) => {
|
|
|
431
429
|
}
|
|
432
430
|
if (familySubscriptions?.size) {
|
|
433
431
|
for (const subscribtion of familySubscriptions) {
|
|
434
|
-
subscribtion.callback(...selector.
|
|
432
|
+
subscribtion.callback(...selector.familyArgs);
|
|
435
433
|
}
|
|
436
434
|
}
|
|
437
435
|
};
|
|
438
436
|
|
|
439
437
|
// src/lib/propagateUpdatedAtoms.ts
|
|
438
|
+
var revalidate = (selector, data) => {
|
|
439
|
+
try {
|
|
440
|
+
return initSelector(selector, data);
|
|
441
|
+
} catch (e) {
|
|
442
|
+
data.expiredValues.set(selector, data.values.get(selector));
|
|
443
|
+
data.values.delete(selector);
|
|
444
|
+
return true;
|
|
445
|
+
}
|
|
446
|
+
};
|
|
440
447
|
var recursivlyResetSelectorTree = (selectors, data, clearedSelectors) => {
|
|
441
448
|
for (const selector of selectors) {
|
|
442
449
|
if (!clearedSelectors.has(selector)) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
450
|
+
const subscribers = data.subscriptions.get(selector);
|
|
451
|
+
const dependents = data.stateDependents.get(selector);
|
|
452
|
+
if (!dependents && !subscribers) {
|
|
453
|
+
data.expiredValues.set(selector, data.values.get(selector));
|
|
454
|
+
data.values.delete(selector);
|
|
455
|
+
} else if (dependents && subscribers) {
|
|
456
|
+
if (dependents.size === 0)
|
|
457
|
+
throw new Error("Should not happen");
|
|
458
|
+
if (subscribers.size === 0)
|
|
459
|
+
throw new Error("Should not happen");
|
|
460
|
+
const isValueUpdated = revalidate(selector, data);
|
|
461
|
+
if (isValueUpdated) {
|
|
462
|
+
recursivlyResetSelectorTree(dependents, data, clearedSelectors);
|
|
463
|
+
updateSelectorSubscribers(selector, data);
|
|
464
|
+
}
|
|
465
|
+
} else if (dependents) {
|
|
466
|
+
if (dependents.size === 0)
|
|
467
|
+
throw new Error("Should not happen");
|
|
468
|
+
const valueUpdated = revalidate(selector, data);
|
|
469
|
+
if (valueUpdated) {
|
|
470
|
+
recursivlyResetSelectorTree(dependents, data, clearedSelectors);
|
|
471
|
+
}
|
|
472
|
+
} else if (subscribers) {
|
|
473
|
+
if (subscribers.size === 0)
|
|
474
|
+
throw new Error("Should not happen");
|
|
475
|
+
const isValueUpdated = revalidate(selector, data);
|
|
476
|
+
if (isValueUpdated) {
|
|
477
|
+
updateSelectorSubscribers(selector, data);
|
|
478
|
+
}
|
|
449
479
|
}
|
|
450
480
|
}
|
|
451
481
|
}
|
|
@@ -453,21 +483,20 @@ var recursivlyResetSelectorTree = (selectors, data, clearedSelectors) => {
|
|
|
453
483
|
var propagateUpdatedAtoms = (atoms, data) => {
|
|
454
484
|
const clearedSelectors = new Set;
|
|
455
485
|
for (const atom of atoms) {
|
|
456
|
-
const
|
|
457
|
-
if (
|
|
458
|
-
recursivlyResetSelectorTree(
|
|
486
|
+
const dependents = data.stateDependents.get(atom);
|
|
487
|
+
if (dependents && dependents.size) {
|
|
488
|
+
recursivlyResetSelectorTree(dependents, data, clearedSelectors);
|
|
459
489
|
}
|
|
460
490
|
if (isFamilyAtom(atom)) {
|
|
461
|
-
const consumersFamily = data.
|
|
491
|
+
const consumersFamily = data.stateDependents.get(atom.family);
|
|
462
492
|
if (consumersFamily?.size) {
|
|
463
493
|
recursivlyResetSelectorTree(consumersFamily, data, clearedSelectors);
|
|
464
494
|
}
|
|
465
495
|
}
|
|
466
496
|
}
|
|
467
|
-
for (const selector of clearedSelectors) {
|
|
468
|
-
updateSelectorSubscribers(selector, data);
|
|
469
|
-
}
|
|
470
497
|
for (const atom of atoms) {
|
|
498
|
+
if (isAtomFamily(atom))
|
|
499
|
+
continue;
|
|
471
500
|
updateStateSubscribers(atom, data);
|
|
472
501
|
}
|
|
473
502
|
};
|
|
@@ -481,7 +510,7 @@ var generateStoreData = (id = generateId()) => {
|
|
|
481
510
|
expiredValues: new WeakMap,
|
|
482
511
|
subscriptions: new WeakMap,
|
|
483
512
|
subscriptionsRequireEqualCheck: new WeakMap,
|
|
484
|
-
|
|
513
|
+
stateDependents: new WeakMap,
|
|
485
514
|
stateDependencies: new WeakMap,
|
|
486
515
|
scopes: {}
|
|
487
516
|
};
|
|
@@ -498,6 +527,20 @@ function createStoreData(id, parent) {
|
|
|
498
527
|
}
|
|
499
528
|
}
|
|
500
529
|
|
|
530
|
+
// src/lib/deleteFamilyAtom.ts
|
|
531
|
+
var deleteFamilyAtom = (atom, data) => {
|
|
532
|
+
const array = data.values.get(atom.family);
|
|
533
|
+
const index = array.indexOf(atom);
|
|
534
|
+
const newArray = [
|
|
535
|
+
...array.slice(0, index),
|
|
536
|
+
...array.slice(index + 1)
|
|
537
|
+
];
|
|
538
|
+
data.values.delete(atom);
|
|
539
|
+
propagateUpdatedAtoms([atom], data);
|
|
540
|
+
setValueInData(atom.family, newArray, data);
|
|
541
|
+
propagateUpdatedAtoms([atom.family], data);
|
|
542
|
+
};
|
|
543
|
+
|
|
501
544
|
// src/lib/resetAtom.ts
|
|
502
545
|
var resetAtom = (atom, data) => {
|
|
503
546
|
let value = getAtomInitValue(atom, data);
|
|
@@ -651,17 +694,18 @@ var setAtoms = (pairs, data) => {
|
|
|
651
694
|
|
|
652
695
|
// src/lib/transaction.ts
|
|
653
696
|
var findDependencies = (state, data, result = new Set) => {
|
|
654
|
-
const
|
|
655
|
-
if (
|
|
656
|
-
for (const
|
|
657
|
-
if (!result.has(
|
|
658
|
-
result.add(
|
|
659
|
-
findDependencies(
|
|
697
|
+
const dependents = data.stateDependents.get(state);
|
|
698
|
+
if (dependents?.size) {
|
|
699
|
+
for (const dependent of dependents) {
|
|
700
|
+
if (!result.has(dependent)) {
|
|
701
|
+
result.add(dependent);
|
|
702
|
+
findDependencies(dependent, data, result);
|
|
660
703
|
}
|
|
661
704
|
}
|
|
662
705
|
}
|
|
663
706
|
return result;
|
|
664
707
|
};
|
|
708
|
+
var DELETE_SYMBOL = Symbol("DELETE_SYMBOL");
|
|
665
709
|
var recursivlyResetTxnSelectorCache = (state, txnSubscribers, txnSelectorCache) => {
|
|
666
710
|
for (const dep of txnSubscribers.get(state)) {
|
|
667
711
|
txnSelectorCache.delete(dep);
|
|
@@ -670,33 +714,39 @@ var recursivlyResetTxnSelectorCache = (state, txnSubscribers, txnSelectorCache)
|
|
|
670
714
|
}
|
|
671
715
|
}
|
|
672
716
|
};
|
|
673
|
-
var captureScopedTransaction = (scopedData,
|
|
717
|
+
var captureScopedTransaction = (scopedData, parentGetInTxnOrData) => {
|
|
674
718
|
let txn;
|
|
675
719
|
transaction((scopedTxn) => {
|
|
676
720
|
txn = scopedTxn;
|
|
677
|
-
}, scopedData, false,
|
|
721
|
+
}, scopedData, false, parentGetInTxnOrData);
|
|
678
722
|
return txn;
|
|
679
723
|
};
|
|
680
|
-
var
|
|
724
|
+
var deleteAtomFamilyAtoms = (set, data) => {
|
|
725
|
+
set.forEach((atom) => {
|
|
726
|
+
data.values.delete(atom);
|
|
727
|
+
});
|
|
728
|
+
};
|
|
729
|
+
var transaction = (callback, data, autoCommit = true, parentGetInTxnOrData) => {
|
|
681
730
|
const txnAtomMap = new Map;
|
|
731
|
+
const txnAtomDeleteSet = new Set;
|
|
682
732
|
const txnSelectorCache = new Map;
|
|
683
733
|
const txnSubscribers = new Map;
|
|
684
734
|
const dirtySelectors = new Set;
|
|
685
735
|
let scopedTransactions;
|
|
686
|
-
const
|
|
736
|
+
const getInTxnOrData = (state) => {
|
|
687
737
|
if (txnAtomMap.has(state)) {
|
|
688
738
|
return txnAtomMap.get(state);
|
|
689
739
|
}
|
|
690
740
|
if (data.values.has(state)) {
|
|
691
741
|
return data.values.get(state);
|
|
692
742
|
}
|
|
693
|
-
if (
|
|
694
|
-
return
|
|
743
|
+
if (parentGetInTxnOrData) {
|
|
744
|
+
return parentGetInTxnOrData(state);
|
|
695
745
|
}
|
|
696
746
|
};
|
|
697
747
|
const txnGet = (state) => {
|
|
698
748
|
if (isAtom(state)) {
|
|
699
|
-
const value =
|
|
749
|
+
const value = getInTxnOrData(state);
|
|
700
750
|
if (value)
|
|
701
751
|
return value;
|
|
702
752
|
return getState(state, data);
|
|
@@ -718,7 +768,10 @@ var transaction = (callback, data, autoCommit = true, parentGetFromTxnOrData) =>
|
|
|
718
768
|
txnSelectorCache.set(state, res);
|
|
719
769
|
return res;
|
|
720
770
|
} else if (isAtomFamily(state)) {
|
|
721
|
-
|
|
771
|
+
const value = getInTxnOrData(state);
|
|
772
|
+
if (value)
|
|
773
|
+
return value;
|
|
774
|
+
return getState(state, data);
|
|
722
775
|
} else {
|
|
723
776
|
throw new Error("Unsupported state");
|
|
724
777
|
}
|
|
@@ -743,11 +796,10 @@ var transaction = (callback, data, autoCommit = true, parentGetFromTxnOrData) =>
|
|
|
743
796
|
txnAtomMap.set(atom, deepFreeze(value));
|
|
744
797
|
}
|
|
745
798
|
if (isFamilyAtom(atom)) {
|
|
746
|
-
const
|
|
747
|
-
if (!
|
|
748
|
-
const
|
|
749
|
-
|
|
750
|
-
txnSet(atom.family.__keysAtom, newSet);
|
|
799
|
+
const currentFamilyList = txnGet(atom.family);
|
|
800
|
+
if (!currentFamilyList.includes(atom)) {
|
|
801
|
+
const newArr = [...currentFamilyList, atom];
|
|
802
|
+
txnAtomMap.set(atom.family, newArr);
|
|
751
803
|
}
|
|
752
804
|
}
|
|
753
805
|
return value;
|
|
@@ -757,8 +809,26 @@ var transaction = (callback, data, autoCommit = true, parentGetFromTxnOrData) =>
|
|
|
757
809
|
txnAtomMap.set(atom, value);
|
|
758
810
|
return value;
|
|
759
811
|
};
|
|
812
|
+
const txnDel = (atom) => {
|
|
813
|
+
const array = txnGet(atom.family);
|
|
814
|
+
const index = array.indexOf(atom);
|
|
815
|
+
const newArr = [
|
|
816
|
+
...array.slice(0, index),
|
|
817
|
+
...array.slice(index + 1)
|
|
818
|
+
];
|
|
819
|
+
txnAtomMap.set(atom.family, newArr);
|
|
820
|
+
if (data.values.has(atom)) {
|
|
821
|
+
txnAtomDeleteSet.add(atom);
|
|
822
|
+
}
|
|
823
|
+
if (txnAtomMap.has(atom)) {
|
|
824
|
+
txnAtomMap.delete(atom);
|
|
825
|
+
}
|
|
826
|
+
};
|
|
760
827
|
const commit = () => {
|
|
761
828
|
setAtoms(txnAtomMap, data);
|
|
829
|
+
if (txnAtomDeleteSet.size) {
|
|
830
|
+
deleteAtomFamilyAtoms(txnAtomDeleteSet, data);
|
|
831
|
+
}
|
|
762
832
|
dirtySelectors.clear();
|
|
763
833
|
if (scopedTransactions) {
|
|
764
834
|
for (const scopedTxn of Object.values(scopedTransactions)) {
|
|
@@ -769,6 +839,7 @@ var transaction = (callback, data, autoCommit = true, parentGetFromTxnOrData) =>
|
|
|
769
839
|
const result = callback({
|
|
770
840
|
set: txnSet,
|
|
771
841
|
get: txnGet,
|
|
842
|
+
del: txnDel,
|
|
772
843
|
reset: txnReset,
|
|
773
844
|
commit,
|
|
774
845
|
scope: (scopeId, callback2) => {
|
|
@@ -778,7 +849,7 @@ var transaction = (callback, data, autoCommit = true, parentGetFromTxnOrData) =>
|
|
|
778
849
|
scopedTransactions = {};
|
|
779
850
|
}
|
|
780
851
|
if (scopedTransactions[scopeId] === undefined) {
|
|
781
|
-
scopedTransactions[scopeId] = captureScopedTransaction(scopedData,
|
|
852
|
+
scopedTransactions[scopeId] = captureScopedTransaction(scopedData, getInTxnOrData);
|
|
782
853
|
}
|
|
783
854
|
return callback2(scopedTransactions[scopeId]);
|
|
784
855
|
} else {
|
|
@@ -810,6 +881,7 @@ function storeFromStoreData(data, detach) {
|
|
|
810
881
|
throw new Error(InvalidStateSetError);
|
|
811
882
|
};
|
|
812
883
|
const reset = (atom) => resetAtom(atom, data);
|
|
884
|
+
const deleteFn = (atom) => deleteFamilyAtom(atom, data);
|
|
813
885
|
const sub = (state, callback, deepEqualCheckBeforeCallback = true) => subscribe(state, callback, deepEqualCheckBeforeCallback, data);
|
|
814
886
|
const txn = (callback) => transaction(callback, data);
|
|
815
887
|
const scope = (scopeId) => {
|
|
@@ -837,6 +909,7 @@ function storeFromStoreData(data, detach) {
|
|
|
837
909
|
sub,
|
|
838
910
|
txn,
|
|
839
911
|
reset,
|
|
912
|
+
delete: deleteFn,
|
|
840
913
|
data,
|
|
841
914
|
scope,
|
|
842
915
|
detach
|
|
@@ -848,6 +921,7 @@ function storeFromStoreData(data, detach) {
|
|
|
848
921
|
sub,
|
|
849
922
|
txn,
|
|
850
923
|
reset,
|
|
924
|
+
delete: deleteFn,
|
|
851
925
|
data,
|
|
852
926
|
scope
|
|
853
927
|
};
|
|
@@ -941,13 +1015,6 @@ function atom(defaultValue, options) {
|
|
|
941
1015
|
...options
|
|
942
1016
|
};
|
|
943
1017
|
}
|
|
944
|
-
// src/selector.ts
|
|
945
|
-
var selector = (get, options) => {
|
|
946
|
-
if (!options)
|
|
947
|
-
return { equal, get };
|
|
948
|
-
return { equal, ...options, get };
|
|
949
|
-
};
|
|
950
|
-
|
|
951
1018
|
// src/lib/atomFamilyAtom.ts
|
|
952
1019
|
function atomFamilyAtom(defaultValue, options) {
|
|
953
1020
|
if (options.global) {
|
|
@@ -1014,22 +1081,23 @@ var stableStringify = (x) => {
|
|
|
1014
1081
|
};
|
|
1015
1082
|
|
|
1016
1083
|
// src/lib/stringifyFamilyArgs.ts
|
|
1017
|
-
var stringifyFamilyArgs = (
|
|
1084
|
+
var stringifyFamilyArgs = (args) => {
|
|
1018
1085
|
return args.length === 1 ? stableStringify(args[0]) : stableStringify(args);
|
|
1019
1086
|
};
|
|
1020
1087
|
|
|
1021
1088
|
// src/lib/createAtomFamily.ts
|
|
1022
|
-
var createOptions = (options = {}, family,
|
|
1089
|
+
var createOptions = (options = {}, family, familyArgs, familyArgsStringified) => {
|
|
1023
1090
|
if (options.name) {
|
|
1024
1091
|
return {
|
|
1025
1092
|
equal,
|
|
1026
1093
|
...options,
|
|
1027
|
-
name: options?.name + "_" +
|
|
1094
|
+
name: options?.name + "_" + familyArgsStringified,
|
|
1028
1095
|
family,
|
|
1029
|
-
|
|
1096
|
+
familyArgs,
|
|
1097
|
+
familyArgsStringified
|
|
1030
1098
|
};
|
|
1031
1099
|
} else {
|
|
1032
|
-
return { equal, ...options, family,
|
|
1100
|
+
return { equal, ...options, family, familyArgs, familyArgsStringified };
|
|
1033
1101
|
}
|
|
1034
1102
|
};
|
|
1035
1103
|
var handleDefaultValue = (defaultValue, ...args) => {
|
|
@@ -1041,20 +1109,18 @@ var handleDefaultValue = (defaultValue, ...args) => {
|
|
|
1041
1109
|
};
|
|
1042
1110
|
var createAtomFamily = (defaultValue, options) => {
|
|
1043
1111
|
const map = new Map;
|
|
1044
|
-
const keysAtom = atom(new Set);
|
|
1045
1112
|
const atomFamily = Object.assign((...args) => {
|
|
1046
|
-
const
|
|
1047
|
-
if (map.has(
|
|
1048
|
-
return map.get(
|
|
1113
|
+
const argsStringified = stringifyFamilyArgs(args);
|
|
1114
|
+
if (map.has(argsStringified)) {
|
|
1115
|
+
return map.get(argsStringified);
|
|
1049
1116
|
}
|
|
1050
|
-
const familyAtom = atomFamilyAtom(handleDefaultValue(defaultValue, ...args), createOptions(options, atomFamily, args,
|
|
1051
|
-
map.set(
|
|
1117
|
+
const familyAtom = atomFamilyAtom(handleDefaultValue(defaultValue, ...args), createOptions(options, atomFamily, args, argsStringified));
|
|
1118
|
+
map.set(argsStringified, familyAtom);
|
|
1052
1119
|
return familyAtom;
|
|
1053
1120
|
}, {
|
|
1054
1121
|
__valdresAtomFamilyMap: map,
|
|
1055
|
-
release: (...args) => map.delete(stringifyFamilyArgs(
|
|
1056
|
-
|
|
1057
|
-
__keysSelector: selector((get) => Array.from(get(keysAtom)))
|
|
1122
|
+
release: (...args) => map.delete(stringifyFamilyArgs(args)),
|
|
1123
|
+
equal
|
|
1058
1124
|
});
|
|
1059
1125
|
if (options?.name)
|
|
1060
1126
|
Object.defineProperty(atomFamily, "name", {
|
|
@@ -1083,8 +1149,8 @@ function atomFamily(defaultValue, options) {
|
|
|
1083
1149
|
return createAtomFamily(defaultValue, options);
|
|
1084
1150
|
}
|
|
1085
1151
|
// src/createStoreWithSelectorSet.ts
|
|
1086
|
-
var setSelector = (
|
|
1087
|
-
return
|
|
1152
|
+
var setSelector = (selector, values, store2) => {
|
|
1153
|
+
return selector.set(store2.set, store2.get, store2.reset, ...values);
|
|
1088
1154
|
};
|
|
1089
1155
|
var createStoreWithSelectorSet = (id) => {
|
|
1090
1156
|
const data = createStoreData(id);
|
|
@@ -1099,59 +1165,82 @@ var createStoreWithSelectorSet = (id) => {
|
|
|
1099
1165
|
store2.kind = "storeWithSelectorSet";
|
|
1100
1166
|
return store2;
|
|
1101
1167
|
};
|
|
1168
|
+
// src/selector.ts
|
|
1169
|
+
var selector = (get, options) => {
|
|
1170
|
+
if (!options)
|
|
1171
|
+
return { equal, get };
|
|
1172
|
+
return { equal, ...options, get };
|
|
1173
|
+
};
|
|
1174
|
+
|
|
1102
1175
|
// src/indexConstructor.ts
|
|
1103
|
-
var index = (family, callback) => {
|
|
1176
|
+
var index = (family, callback, options) => {
|
|
1104
1177
|
const map = new Map;
|
|
1105
|
-
|
|
1178
|
+
const indexFn = (term) => {
|
|
1106
1179
|
const termKey = stableStringify(term);
|
|
1107
1180
|
if (map.has(termKey))
|
|
1108
1181
|
return map.get(termKey);
|
|
1109
|
-
const
|
|
1110
|
-
const
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1182
|
+
const termIndexSelectorSet = new Set;
|
|
1183
|
+
const termIndexSelectorMap = new Map;
|
|
1184
|
+
const termIndexSelector = selector((get) => {
|
|
1185
|
+
const allFamilyAtoms = new Set(get(family));
|
|
1186
|
+
const deletedAtoms = termIndexSelectorSet.symmetricDifference(allFamilyAtoms);
|
|
1187
|
+
const addedAtoms = allFamilyAtoms.difference(termIndexSelectorSet);
|
|
1188
|
+
if (deletedAtoms.size || addedAtoms.size) {
|
|
1189
|
+
deletedAtoms.forEach((atom2) => {
|
|
1190
|
+
termIndexSelectorSet.delete(atom2);
|
|
1191
|
+
termIndexSelectorMap.delete(atom2);
|
|
1192
|
+
});
|
|
1193
|
+
addedAtoms.forEach((atom2) => {
|
|
1194
|
+
termIndexSelectorSet.add(atom2);
|
|
1195
|
+
termIndexSelectorMap.set(atom2, selector((get2) => callback(get2(atom2), term), {
|
|
1196
|
+
name: `index:callback:selector:${atom2.name}`
|
|
1197
|
+
}));
|
|
1198
|
+
});
|
|
1199
|
+
}
|
|
1200
|
+
return termIndexSelectorSet;
|
|
1201
|
+
}, { name: `index:${options?.name}:${termKey}` });
|
|
1119
1202
|
const filteredSelector = selector((get) => {
|
|
1120
|
-
const
|
|
1203
|
+
const set = get(termIndexSelector);
|
|
1121
1204
|
const res = [];
|
|
1122
|
-
|
|
1123
|
-
if (get(
|
|
1124
|
-
res.push(
|
|
1205
|
+
set.forEach((atom2) => {
|
|
1206
|
+
if (get(termIndexSelectorMap.get(atom2))) {
|
|
1207
|
+
res.push(atom2);
|
|
1125
1208
|
}
|
|
1126
1209
|
});
|
|
1127
1210
|
return res;
|
|
1211
|
+
}, {
|
|
1212
|
+
name: `index:${options?.name}:${termKey}:termSelector`
|
|
1128
1213
|
});
|
|
1129
1214
|
map.set(termKey, filteredSelector);
|
|
1130
1215
|
return filteredSelector;
|
|
1131
1216
|
};
|
|
1217
|
+
return Object.assign(indexFn, {
|
|
1218
|
+
map
|
|
1219
|
+
});
|
|
1132
1220
|
};
|
|
1133
1221
|
// src/selectorFamily.ts
|
|
1134
|
-
var createOptions2 = (options = {}, family,
|
|
1222
|
+
var createOptions2 = (options = {}, family, familyArgs, familyArgsStringified) => {
|
|
1135
1223
|
if (options.name) {
|
|
1136
1224
|
return {
|
|
1137
1225
|
equal,
|
|
1138
1226
|
...options,
|
|
1139
|
-
name: options?.name + "_" +
|
|
1227
|
+
name: options?.name + "_" + familyArgsStringified,
|
|
1140
1228
|
family,
|
|
1141
|
-
|
|
1229
|
+
familyArgs,
|
|
1230
|
+
familyArgsStringified
|
|
1142
1231
|
};
|
|
1143
1232
|
} else {
|
|
1144
|
-
return { equal, ...options, family,
|
|
1233
|
+
return { equal, ...options, family, familyArgs, familyArgsStringified };
|
|
1145
1234
|
}
|
|
1146
1235
|
};
|
|
1147
1236
|
var selectorFamily = (callback, options) => {
|
|
1148
1237
|
const map = new Map;
|
|
1149
1238
|
const selectorFamily2 = (...args) => {
|
|
1150
|
-
const
|
|
1151
|
-
if (map.has(
|
|
1152
|
-
return map.get(
|
|
1153
|
-
const newSelector = selector((selectorArgs) => callback(...args)(selectorArgs), createOptions2(options, selectorFamily2, args,
|
|
1154
|
-
map.set(
|
|
1239
|
+
const argsStringified = stringifyFamilyArgs(args);
|
|
1240
|
+
if (map.has(argsStringified))
|
|
1241
|
+
return map.get(argsStringified);
|
|
1242
|
+
const newSelector = selector((selectorArgs) => callback(...args)(selectorArgs), createOptions2(options, selectorFamily2, args, argsStringified));
|
|
1243
|
+
map.set(argsStringified, newSelector);
|
|
1155
1244
|
return newSelector;
|
|
1156
1245
|
};
|
|
1157
1246
|
selectorFamily2.__valdresSelectorFamilyMap = map;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { AtomFamily } from "./types/AtomFamily";
|
|
2
2
|
import type { Selector } from "./types/Selector";
|
|
3
|
-
export declare const index: <Term, Value extends unknown, FamilyArgs extends [any, ...any[]] = [any, ...any[]]>(family: AtomFamily<Value, FamilyArgs>, callback: (value: Value, term: Term) => boolean
|
|
3
|
+
export declare const index: <Term, Value extends unknown, FamilyArgs extends [any, ...any[]] = [any, ...any[]]>(family: AtomFamily<Value, FamilyArgs>, callback: (value: Value, term: Term) => boolean, options?: {
|
|
4
|
+
name?: string;
|
|
5
|
+
}) => ((term: Term) => Selector<Term[]>);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { AtomFamilyAtom } from "../types/AtomFamilyAtom";
|
|
2
|
+
import type { StoreData } from "../types/StoreData";
|
|
3
|
+
export declare const deleteFamilyAtom: <Value extends unknown, Args extends [any, ...any[]] = [any, ...any[]]>(atom: AtomFamilyAtom<Value, Args>, data: StoreData) => void;
|
|
@@ -2,6 +2,7 @@ import type { Atom } from "../types/Atom";
|
|
|
2
2
|
import type { AtomFamily } from "../types/AtomFamily";
|
|
3
3
|
import type { Selector } from "../types/Selector";
|
|
4
4
|
import type { StoreData } from "../types/StoreData";
|
|
5
|
+
import type { AtomFamilyAtom } from "../types/AtomFamilyAtom";
|
|
5
6
|
export declare function getState<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(atom: Atom<Value>, data: StoreData, circularDependencySet?: WeakSet<Selector>): Value;
|
|
6
7
|
export declare function getState<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(selector: Selector<Value>, data: StoreData, circularDependencySet?: WeakSet<Selector>): Value;
|
|
7
|
-
export declare function getState<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(family: AtomFamily<Value, Args>, data: StoreData, circularDependencySet?: WeakSet<Selector>): Args[];
|
|
8
|
+
export declare function getState<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(family: AtomFamily<Value, Args>, data: StoreData, circularDependencySet?: WeakSet<Selector>): AtomFamilyAtom<Value, Args>[];
|
|
@@ -2,4 +2,4 @@ import type { Atom } from "../types/Atom";
|
|
|
2
2
|
import type { AtomFamilyAtom } from "../types/AtomFamilyAtom";
|
|
3
3
|
import type { StoreData } from "../types/StoreData";
|
|
4
4
|
export declare const getAtomInitValue: <V = any>(atom: Atom<V>, data: StoreData) => any;
|
|
5
|
-
export declare const initAtom: <Value extends unknown, Args extends [any, ...any[]] = [any, ...any[]]>(atom: Atom<Value> | AtomFamilyAtom<Value, Args>, data: StoreData) =>
|
|
5
|
+
export declare const initAtom: <Value extends unknown, Args extends [any, ...any[]] = [any, ...any[]]>(atom: Atom<Value> | AtomFamilyAtom<Value, Args>, data: StoreData) => any;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { StoreData } from "../types/StoreData";
|
|
2
2
|
import type { Selector } from "../types/Selector";
|
|
3
|
-
export declare const initSelector: <V>(selector: Selector<V>, data: StoreData, circularDependencySet?: WeakSet<WeakKey>) =>
|
|
3
|
+
export declare const initSelector: <V>(selector: Selector<V>, data: StoreData, circularDependencySet?: WeakSet<WeakKey>) => boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Atom } from "../types/Atom";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AtomFamily } from "../types/AtomFamily";
|
|
3
3
|
import type { AtomFamilyAtom } from "../types/AtomFamilyAtom";
|
|
4
|
-
|
|
4
|
+
import type { StoreData } from "../types/StoreData";
|
|
5
|
+
export declare const propagateUpdatedAtoms: (atoms: (Atom<any> | AtomFamilyAtom<any, any> | AtomFamily<any, any>)[], data: StoreData) => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { Atom } from "../types/Atom";
|
|
2
|
+
import type { AtomFamily } from "../types/AtomFamily";
|
|
2
3
|
import type { StoreData } from "../types/StoreData";
|
|
3
|
-
export declare const setValueInData: <Value
|
|
4
|
+
export declare const setValueInData: <Value extends unknown>(atom: Atom<Value> | AtomFamily<any, any>, value: Value, data: StoreData) => Value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const stringifyFamilyArgs: (
|
|
1
|
+
export declare const stringifyFamilyArgs: (args: any[]) => string | number | boolean;
|
|
@@ -4,5 +4,5 @@ import type { TransactionFn } from "../types/TransactionFn";
|
|
|
4
4
|
type GetAtomValue = {
|
|
5
5
|
<V>(atom: Atom<V>): V;
|
|
6
6
|
};
|
|
7
|
-
export declare const transaction: (callback: TransactionFn, data: StoreData, autoCommit?: boolean,
|
|
7
|
+
export declare const transaction: (callback: TransactionFn, data: StoreData, autoCommit?: boolean, parentGetInTxnOrData?: GetAtomValue) => any;
|
|
8
8
|
export {};
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { Atom } from "./Atom";
|
|
2
1
|
import type { AtomFamilyAtom } from "./AtomFamilyAtom";
|
|
3
|
-
import type {
|
|
2
|
+
import type { EqualFunc } from "./EqualFunc";
|
|
4
3
|
export type AtomFamily<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]> = {
|
|
5
4
|
(...args: Args): AtomFamilyAtom<Value, Args>;
|
|
6
5
|
release: (...args: Args) => void;
|
|
6
|
+
equal: EqualFunc<Value>;
|
|
7
7
|
name?: string;
|
|
8
8
|
__valdresAtomFamilyMap: Map<Value, AtomFamilyAtom<Value, Args>>;
|
|
9
|
-
__keysAtom: Atom<Set<Args>>;
|
|
10
|
-
__keysSelector: Selector<Args[]>;
|
|
11
9
|
};
|
|
@@ -2,5 +2,6 @@ import type { Atom } from "./Atom";
|
|
|
2
2
|
import type { AtomFamily } from "./AtomFamily";
|
|
3
3
|
export type AtomFamilyAtom<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]> = Atom<Value> & {
|
|
4
4
|
family: AtomFamily<Value, Args>;
|
|
5
|
-
|
|
5
|
+
familyArgs: Args;
|
|
6
|
+
familyArgsStringified: string;
|
|
6
7
|
};
|
|
@@ -2,5 +2,5 @@ import type { Selector } from "./Selector";
|
|
|
2
2
|
import type { SelectorFamily } from "./SelectorFamily";
|
|
3
3
|
export type AtomFamilySelector<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]> = Selector<Value> & {
|
|
4
4
|
family: SelectorFamily<Value, Args>;
|
|
5
|
-
|
|
5
|
+
familyArgs: Args;
|
|
6
6
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Atom } from "./Atom";
|
|
2
2
|
import type { AtomFamily } from "./AtomFamily";
|
|
3
|
+
import type { AtomFamilyAtom } from "./AtomFamilyAtom";
|
|
3
4
|
import type { Selector } from "./Selector";
|
|
4
5
|
export type GetValue = {
|
|
5
6
|
<Value extends any>(atom: Atom<Value>): Value;
|
|
6
7
|
<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(selector: Selector<Value, Args>): Value;
|
|
7
|
-
<Value extends any, Args extends [any, ...any[]]>(family: AtomFamily<Value, Args>): Args[];
|
|
8
|
+
<Value extends any, Args extends [any, ...any[]]>(family: AtomFamily<Value, Args>): AtomFamilyAtom<Value, Args>[];
|
|
8
9
|
};
|
|
@@ -6,6 +6,6 @@ export type Selector<Value extends any = any, FamilyArgs extends [any, ...any[]]
|
|
|
6
6
|
equal: EqualFunc<Value>;
|
|
7
7
|
name?: string;
|
|
8
8
|
family?: SelectorFamily<Value, FamilyArgs>;
|
|
9
|
-
|
|
9
|
+
familyArgs?: FamilyArgs;
|
|
10
10
|
onMount?: () => void | (() => void);
|
|
11
11
|
};
|
|
@@ -9,12 +9,14 @@ type SetAtom = {
|
|
|
9
9
|
<Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(atom: AtomFamilyAtom<Value, Args>, value: Value): void;
|
|
10
10
|
<Value extends any>(atom: Atom<Value>, value: Value): void;
|
|
11
11
|
};
|
|
12
|
+
type DeleteAtom = <Value extends any, Args extends [any, ...any[]] = [any, ...any[]]>(atom: AtomFamilyAtom<Value, Args>) => void;
|
|
12
13
|
export type Store<T = StoreData> = {
|
|
13
14
|
data: T;
|
|
14
15
|
get: GetValue;
|
|
15
16
|
set: SetAtom;
|
|
16
17
|
sub: SubscribeFn;
|
|
17
18
|
reset: ResetAtom;
|
|
19
|
+
delete: DeleteAtom;
|
|
18
20
|
txn: (callback: TransactionFn) => void;
|
|
19
21
|
scope: (scopeId: string) => ScopedStore;
|
|
20
22
|
};
|
|
@@ -4,7 +4,7 @@ export type RootStoreData = {
|
|
|
4
4
|
expiredValues: WeakMap<WeakKey, any>;
|
|
5
5
|
subscriptions: WeakMap<WeakKey, Set<any>>;
|
|
6
6
|
subscriptionsRequireEqualCheck: WeakMap<WeakKey, boolean>;
|
|
7
|
-
|
|
7
|
+
stateDependents: WeakMap<WeakKey, any>;
|
|
8
8
|
stateDependencies: WeakMap<WeakKey, any>;
|
|
9
9
|
scopes: {
|
|
10
10
|
[scopeId: string]: ScopedStoreData;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Atom } from "./Atom";
|
|
2
|
+
import type { AtomFamilyAtom } from "./AtomFamilyAtom";
|
|
2
3
|
import type { GetValue } from "./GetValue";
|
|
3
4
|
import type { ResetAtom } from "./ResetAtom";
|
|
4
5
|
import type { SetAtom } from "./SetAtom";
|
|
@@ -10,6 +11,7 @@ export type SetAtom2 = {
|
|
|
10
11
|
export type TransactionInterface = {
|
|
11
12
|
set: SetAtom;
|
|
12
13
|
get: GetValue;
|
|
14
|
+
del: (atom: AtomFamilyAtom<any, any>) => void;
|
|
13
15
|
reset: ResetAtom;
|
|
14
16
|
commit: () => void;
|
|
15
17
|
scope: <Callback extends TransactionFn>(scopeId: string, callback: Callback) => ReturnType<Callback>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valdres",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.76",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Eigil Sagafos"
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"access": "public",
|
|
37
37
|
"registry": "https://registry.npmjs.org/"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "184b86a8548d25cb8df609184718cf62de9d97c8"
|
|
40
40
|
}
|