@yiin/reactive-proxy-state 1.0.31 → 1.0.32
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.cjs +26 -0
- package/dist/index.js +26 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2597,6 +2597,26 @@ function deleteValue(obj, key) {
|
|
|
2597
2597
|
else
|
|
2598
2598
|
delete obj[key];
|
|
2599
2599
|
}
|
|
2600
|
+
function validateCachedPath(root, fullPath, pathKey, cached) {
|
|
2601
|
+
if (fullPath.length === 0)
|
|
2602
|
+
return cached;
|
|
2603
|
+
const lastKey = fullPath[fullPath.length - 1];
|
|
2604
|
+
let grandparent = root;
|
|
2605
|
+
for (let i = 0;i < fullPath.length - 1; i++) {
|
|
2606
|
+
grandparent = grandparent ? getValue(grandparent, fullPath[i]) : undefined;
|
|
2607
|
+
if (grandparent === undefined)
|
|
2608
|
+
break;
|
|
2609
|
+
}
|
|
2610
|
+
if (grandparent === undefined) {
|
|
2611
|
+
evictDescendantsFromPathCache(root, pathKey);
|
|
2612
|
+
return;
|
|
2613
|
+
}
|
|
2614
|
+
const actual = getValue(grandparent, lastKey);
|
|
2615
|
+
if (actual === cached)
|
|
2616
|
+
return cached;
|
|
2617
|
+
evictDescendantsFromPathCache(root, pathKey);
|
|
2618
|
+
return;
|
|
2619
|
+
}
|
|
2600
2620
|
var actionHandlers = {
|
|
2601
2621
|
set: function(parent, key, event) {
|
|
2602
2622
|
setValue(parent, key, event.newValue);
|
|
@@ -2750,6 +2770,9 @@ function updateState(root, event) {
|
|
|
2750
2770
|
const parentPath = path.slice(0, -1);
|
|
2751
2771
|
const parentPathKey = parentPath.join(".");
|
|
2752
2772
|
let parent = pathCache.get(root)?.get(parentPathKey);
|
|
2773
|
+
if (parent !== undefined) {
|
|
2774
|
+
parent = validateCachedPath(root, parentPath, parentPathKey, parent);
|
|
2775
|
+
}
|
|
2753
2776
|
if (parent === undefined) {
|
|
2754
2777
|
parent = parentPath.reduce((acc, key) => acc ? getValue(acc, key) : undefined, root);
|
|
2755
2778
|
if (parent !== undefined)
|
|
@@ -2769,6 +2792,9 @@ function updateState(root, event) {
|
|
|
2769
2792
|
const targetPath = path;
|
|
2770
2793
|
const targetPathKey = targetPath.join(".");
|
|
2771
2794
|
let targetCollection = pathCache.get(root)?.get(targetPathKey);
|
|
2795
|
+
if (targetCollection !== undefined) {
|
|
2796
|
+
targetCollection = validateCachedPath(root, targetPath, targetPathKey, targetCollection);
|
|
2797
|
+
}
|
|
2772
2798
|
if (targetCollection === undefined) {
|
|
2773
2799
|
targetCollection = targetPath.reduce((acc, key) => acc ? getValue(acc, key) : undefined, root);
|
|
2774
2800
|
if (targetCollection !== undefined)
|
package/dist/index.js
CHANGED
|
@@ -2537,6 +2537,26 @@ function deleteValue(obj, key) {
|
|
|
2537
2537
|
else
|
|
2538
2538
|
delete obj[key];
|
|
2539
2539
|
}
|
|
2540
|
+
function validateCachedPath(root, fullPath, pathKey, cached) {
|
|
2541
|
+
if (fullPath.length === 0)
|
|
2542
|
+
return cached;
|
|
2543
|
+
const lastKey = fullPath[fullPath.length - 1];
|
|
2544
|
+
let grandparent = root;
|
|
2545
|
+
for (let i = 0;i < fullPath.length - 1; i++) {
|
|
2546
|
+
grandparent = grandparent ? getValue(grandparent, fullPath[i]) : undefined;
|
|
2547
|
+
if (grandparent === undefined)
|
|
2548
|
+
break;
|
|
2549
|
+
}
|
|
2550
|
+
if (grandparent === undefined) {
|
|
2551
|
+
evictDescendantsFromPathCache(root, pathKey);
|
|
2552
|
+
return;
|
|
2553
|
+
}
|
|
2554
|
+
const actual = getValue(grandparent, lastKey);
|
|
2555
|
+
if (actual === cached)
|
|
2556
|
+
return cached;
|
|
2557
|
+
evictDescendantsFromPathCache(root, pathKey);
|
|
2558
|
+
return;
|
|
2559
|
+
}
|
|
2540
2560
|
var actionHandlers = {
|
|
2541
2561
|
set: function(parent, key, event) {
|
|
2542
2562
|
setValue(parent, key, event.newValue);
|
|
@@ -2690,6 +2710,9 @@ function updateState(root, event) {
|
|
|
2690
2710
|
const parentPath = path.slice(0, -1);
|
|
2691
2711
|
const parentPathKey = parentPath.join(".");
|
|
2692
2712
|
let parent = pathCache.get(root)?.get(parentPathKey);
|
|
2713
|
+
if (parent !== undefined) {
|
|
2714
|
+
parent = validateCachedPath(root, parentPath, parentPathKey, parent);
|
|
2715
|
+
}
|
|
2693
2716
|
if (parent === undefined) {
|
|
2694
2717
|
parent = parentPath.reduce((acc, key) => acc ? getValue(acc, key) : undefined, root);
|
|
2695
2718
|
if (parent !== undefined)
|
|
@@ -2709,6 +2732,9 @@ function updateState(root, event) {
|
|
|
2709
2732
|
const targetPath = path;
|
|
2710
2733
|
const targetPathKey = targetPath.join(".");
|
|
2711
2734
|
let targetCollection = pathCache.get(root)?.get(targetPathKey);
|
|
2735
|
+
if (targetCollection !== undefined) {
|
|
2736
|
+
targetCollection = validateCachedPath(root, targetPath, targetPathKey, targetCollection);
|
|
2737
|
+
}
|
|
2712
2738
|
if (targetCollection === undefined) {
|
|
2713
2739
|
targetCollection = targetPath.reduce((acc, key) => acc ? getValue(acc, key) : undefined, root);
|
|
2714
2740
|
if (targetCollection !== undefined)
|