@legendapp/state 3.0.0-beta.3 → 3.0.0-beta.31
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/.DS_Store +0 -0
- package/config/enableReactComponents.js +3 -1
- package/config/enableReactComponents.mjs +3 -1
- package/config/enableReactTracking.d.mts +2 -1
- package/config/enableReactTracking.d.ts +2 -1
- package/config/enableReactTracking.js +32 -13
- package/config/enableReactTracking.mjs +32 -13
- package/index.d.mts +38 -5
- package/index.d.ts +38 -5
- package/index.js +202 -31
- package/index.mjs +202 -31
- package/package.json +35 -1
- package/persist-plugins/async-storage.js +17 -9
- package/persist-plugins/async-storage.mjs +17 -9
- package/persist-plugins/expo-sqlite.d.mts +19 -0
- package/persist-plugins/expo-sqlite.d.ts +19 -0
- package/persist-plugins/expo-sqlite.js +72 -0
- package/persist-plugins/expo-sqlite.mjs +69 -0
- package/react-native.d.mts +4 -0
- package/react-native.d.ts +4 -0
- package/react-native.js +53 -0
- package/react-native.mjs +40 -0
- package/react-reactive/Components.d.mts +19 -0
- package/react-reactive/Components.d.ts +19 -0
- package/react-reactive/Components.js +53 -0
- package/react-reactive/Components.mjs +40 -0
- package/react-reactive/enableReactComponents.d.mts +3 -2
- package/react-reactive/enableReactComponents.d.ts +3 -2
- package/react-reactive/enableReactComponents.js +10 -3
- package/react-reactive/enableReactComponents.mjs +10 -3
- package/react-reactive/enableReactNativeComponents.d.mts +3 -20
- package/react-reactive/enableReactNativeComponents.d.ts +3 -20
- package/react-reactive/enableReactNativeComponents.js +8 -3
- package/react-reactive/enableReactNativeComponents.mjs +8 -3
- package/react-reactive/enableReactive.js +10 -3
- package/react-reactive/enableReactive.mjs +10 -3
- package/react-reactive/enableReactive.native.js +8 -3
- package/react-reactive/enableReactive.native.mjs +8 -3
- package/react-reactive/enableReactive.web.js +8 -3
- package/react-reactive/enableReactive.web.mjs +8 -3
- package/react-web.d.mts +6 -0
- package/react-web.d.ts +6 -0
- package/react-web.js +39 -0
- package/react-web.mjs +37 -0
- package/react.d.mts +41 -21
- package/react.d.ts +41 -21
- package/react.js +86 -63
- package/react.mjs +87 -65
- package/sync-plugins/crud.d.mts +24 -9
- package/sync-plugins/crud.d.ts +24 -9
- package/sync-plugins/crud.js +250 -116
- package/sync-plugins/crud.mjs +251 -117
- package/sync-plugins/firebase.d.mts +7 -3
- package/sync-plugins/firebase.d.ts +7 -3
- package/sync-plugins/firebase.js +4 -2
- package/sync-plugins/firebase.mjs +4 -2
- package/sync-plugins/keel.d.mts +12 -13
- package/sync-plugins/keel.d.ts +12 -13
- package/sync-plugins/keel.js +60 -52
- package/sync-plugins/keel.mjs +61 -48
- package/sync-plugins/supabase.d.mts +7 -3
- package/sync-plugins/supabase.d.ts +7 -3
- package/sync-plugins/supabase.js +90 -33
- package/sync-plugins/supabase.mjs +91 -34
- package/sync-plugins/tanstack-query.d.mts +3 -3
- package/sync-plugins/tanstack-query.d.ts +3 -3
- package/sync.d.mts +16 -8
- package/sync.d.ts +16 -8
- package/sync.js +324 -215
- package/sync.mjs +323 -215
- package/trace.js +5 -6
- package/trace.mjs +5 -6
- package/types/reactive-native.d.ts +19 -0
- package/types/reactive-web.d.ts +7 -0
package/index.js
CHANGED
|
@@ -181,7 +181,7 @@ function setNodeValue(node, newValue) {
|
|
|
181
181
|
parentNode.isSetting--;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
return { prevValue, newValue };
|
|
184
|
+
return { prevValue, newValue, parentValue };
|
|
185
185
|
}
|
|
186
186
|
var arrNodeKeys = [];
|
|
187
187
|
function getNodeValue(node) {
|
|
@@ -257,6 +257,9 @@ function extractFunction(node, key, fnOrComputed) {
|
|
|
257
257
|
function equals(a, b) {
|
|
258
258
|
return a === b || isDate(a) && isDate(b) && +a === +b;
|
|
259
259
|
}
|
|
260
|
+
function getKeys(obj, isArr, isMap2, isSet2) {
|
|
261
|
+
return isArr ? void 0 : obj ? isSet2 ? Array.from(obj) : isMap2 ? Array.from(obj.keys()) : Object.keys(obj) : [];
|
|
262
|
+
}
|
|
260
263
|
|
|
261
264
|
// src/ObservableHint.ts
|
|
262
265
|
function addSymbol(value, symbol) {
|
|
@@ -276,16 +279,19 @@ var ObservableHint = {
|
|
|
276
279
|
},
|
|
277
280
|
plain: function plainObject(value) {
|
|
278
281
|
return addSymbol(value, symbolPlain);
|
|
282
|
+
},
|
|
283
|
+
function: function plainObject2(value) {
|
|
284
|
+
return addSymbol(value, symbolPlain);
|
|
279
285
|
}
|
|
280
286
|
};
|
|
281
287
|
|
|
282
288
|
// src/helpers.ts
|
|
283
|
-
function computeSelector(selector, e, retainObservable) {
|
|
289
|
+
function computeSelector(selector, getOptions, e, retainObservable) {
|
|
284
290
|
let c = selector;
|
|
285
291
|
if (!isObservable(c) && isFunction(c)) {
|
|
286
292
|
c = e ? c(e) : c();
|
|
287
293
|
}
|
|
288
|
-
return isObservable(c) && !retainObservable ? c.get() : c;
|
|
294
|
+
return isObservable(c) && !retainObservable ? c.get(getOptions) : c;
|
|
289
295
|
}
|
|
290
296
|
function getObservableIndex(value$) {
|
|
291
297
|
const node = getNode(value$);
|
|
@@ -384,7 +390,7 @@ function _mergeIntoObservable(target, source, levelsDeep) {
|
|
|
384
390
|
const isSourceSet = isSet(source);
|
|
385
391
|
if (isSourceSet && isSet(targetValue)) {
|
|
386
392
|
target.set(/* @__PURE__ */ new Set([...source, ...targetValue]));
|
|
387
|
-
} else if (isTargetObj && isObject(source)
|
|
393
|
+
} else if (isTargetObj && isObject(source) || isTargetArr && targetValue.length > 0) {
|
|
388
394
|
const keys = isSourceMap || isSourceSet ? Array.from(source.keys()) : Object.keys(source);
|
|
389
395
|
for (let i = 0; i < keys.length; i++) {
|
|
390
396
|
const key = keys[i];
|
|
@@ -590,6 +596,7 @@ function computeChangesAtNode(changesInBatch, node, isFromPersist, isFromSync, v
|
|
|
590
596
|
if (!isArraySubset(changes[0].path, change.path)) {
|
|
591
597
|
changes.push(change);
|
|
592
598
|
changeInBatch.level = Math.min(changeInBatch.level, level);
|
|
599
|
+
changeInBatch.whenOptimizedOnlyIf || (changeInBatch.whenOptimizedOnlyIf = whenOptimizedOnlyIf);
|
|
593
600
|
}
|
|
594
601
|
} else {
|
|
595
602
|
changesInBatch.set(node, {
|
|
@@ -811,6 +818,109 @@ function linked(params, options) {
|
|
|
811
818
|
return ret;
|
|
812
819
|
}
|
|
813
820
|
|
|
821
|
+
// src/middleware.ts
|
|
822
|
+
var nodeMiddlewareHandlers = /* @__PURE__ */ new WeakMap();
|
|
823
|
+
var queuedNodes = [];
|
|
824
|
+
var queuedListeners = [];
|
|
825
|
+
var queuedTypes = [];
|
|
826
|
+
var queueSize = 0;
|
|
827
|
+
var isMicrotaskScheduled = false;
|
|
828
|
+
function registerMiddleware(node, type, handler) {
|
|
829
|
+
let handlersMap = nodeMiddlewareHandlers.get(node);
|
|
830
|
+
if (!handlersMap) {
|
|
831
|
+
handlersMap = /* @__PURE__ */ new Map();
|
|
832
|
+
nodeMiddlewareHandlers.set(node, handlersMap);
|
|
833
|
+
}
|
|
834
|
+
let handlers = handlersMap.get(type);
|
|
835
|
+
if (!handlers) {
|
|
836
|
+
handlers = /* @__PURE__ */ new Set();
|
|
837
|
+
handlersMap.set(type, handlers);
|
|
838
|
+
}
|
|
839
|
+
handlers.add(handler);
|
|
840
|
+
return () => {
|
|
841
|
+
const handlersMap2 = nodeMiddlewareHandlers.get(node);
|
|
842
|
+
if (!handlersMap2)
|
|
843
|
+
return;
|
|
844
|
+
const handlers2 = handlersMap2.get(type);
|
|
845
|
+
if (!handlers2)
|
|
846
|
+
return;
|
|
847
|
+
handlers2.delete(handler);
|
|
848
|
+
if (handlers2.size === 0) {
|
|
849
|
+
handlersMap2.delete(type);
|
|
850
|
+
if (handlersMap2.size === 0) {
|
|
851
|
+
nodeMiddlewareHandlers.delete(node);
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
};
|
|
855
|
+
}
|
|
856
|
+
function dispatchMiddlewareEvent(node, listener, type) {
|
|
857
|
+
const handlersMap = nodeMiddlewareHandlers.get(node);
|
|
858
|
+
if (!handlersMap || !handlersMap.has(type)) {
|
|
859
|
+
return;
|
|
860
|
+
}
|
|
861
|
+
const handlers = handlersMap.get(type);
|
|
862
|
+
if (!handlers || handlers.size === 0) {
|
|
863
|
+
return;
|
|
864
|
+
}
|
|
865
|
+
queuedNodes[queueSize] = node;
|
|
866
|
+
queuedListeners[queueSize] = listener;
|
|
867
|
+
queuedTypes[queueSize] = type;
|
|
868
|
+
queueSize++;
|
|
869
|
+
if (!isMicrotaskScheduled) {
|
|
870
|
+
isMicrotaskScheduled = true;
|
|
871
|
+
queueMicrotask(processQueuedEvents);
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
var eventObj = {
|
|
875
|
+
type: "listener-added",
|
|
876
|
+
node: null,
|
|
877
|
+
listener: void 0,
|
|
878
|
+
timestamp: 0
|
|
879
|
+
};
|
|
880
|
+
function processQueuedEvents() {
|
|
881
|
+
isMicrotaskScheduled = false;
|
|
882
|
+
const timestamp = typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
883
|
+
eventObj.timestamp = timestamp;
|
|
884
|
+
for (let i = 0; i < queueSize; i++) {
|
|
885
|
+
const node = queuedNodes[i];
|
|
886
|
+
const listener = queuedListeners[i];
|
|
887
|
+
const type = queuedTypes[i];
|
|
888
|
+
const handlersMap = nodeMiddlewareHandlers.get(node);
|
|
889
|
+
if (!handlersMap)
|
|
890
|
+
continue;
|
|
891
|
+
const handlers = handlersMap.get(type);
|
|
892
|
+
if (!handlers || handlers.size === 0)
|
|
893
|
+
continue;
|
|
894
|
+
const nodeListeners = node.listeners;
|
|
895
|
+
const nodeListenersImmediate = node.listenersImmediate;
|
|
896
|
+
if (!nodeListeners && !nodeListenersImmediate) {
|
|
897
|
+
continue;
|
|
898
|
+
}
|
|
899
|
+
let isValid = false;
|
|
900
|
+
if (type === "listener-added") {
|
|
901
|
+
isValid = !!(nodeListeners == null ? void 0 : nodeListeners.has(listener)) || !!(nodeListenersImmediate == null ? void 0 : nodeListenersImmediate.has(listener));
|
|
902
|
+
} else if (type === "listener-removed") {
|
|
903
|
+
isValid = !(nodeListeners == null ? void 0 : nodeListeners.has(listener)) && !(nodeListenersImmediate == null ? void 0 : nodeListenersImmediate.has(listener));
|
|
904
|
+
} else {
|
|
905
|
+
isValid = !(nodeListeners == null ? void 0 : nodeListeners.size) && !(nodeListenersImmediate == null ? void 0 : nodeListenersImmediate.size);
|
|
906
|
+
}
|
|
907
|
+
if (isValid) {
|
|
908
|
+
eventObj.type = type;
|
|
909
|
+
eventObj.node = node;
|
|
910
|
+
eventObj.listener = listener;
|
|
911
|
+
const iterableHandlers = Array.from(handlers);
|
|
912
|
+
for (let j = 0; j < iterableHandlers.length; j++) {
|
|
913
|
+
try {
|
|
914
|
+
iterableHandlers[j](eventObj);
|
|
915
|
+
} catch (error) {
|
|
916
|
+
console.error(`Error in middleware handler for ${type}:`, error);
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
queueSize = 0;
|
|
922
|
+
}
|
|
923
|
+
|
|
814
924
|
// src/onChange.ts
|
|
815
925
|
function onChange(node, callback, options = {}, fromLinks) {
|
|
816
926
|
var _a;
|
|
@@ -881,6 +991,7 @@ function onChange(node, callback, options = {}, fromLinks) {
|
|
|
881
991
|
pathParent = [parent.key, ...pathParent];
|
|
882
992
|
parent = parent.parent;
|
|
883
993
|
}
|
|
994
|
+
dispatchMiddlewareEvent(node, listener, "listener-added");
|
|
884
995
|
return () => {
|
|
885
996
|
listeners.delete(listener);
|
|
886
997
|
extraDisposes == null ? void 0 : extraDisposes.forEach((fn) => fn());
|
|
@@ -889,6 +1000,10 @@ function onChange(node, callback, options = {}, fromLinks) {
|
|
|
889
1000
|
parent2.numListenersRecursive--;
|
|
890
1001
|
parent2 = parent2.parent;
|
|
891
1002
|
}
|
|
1003
|
+
dispatchMiddlewareEvent(node, listener, "listener-removed");
|
|
1004
|
+
if (listeners.size === 0) {
|
|
1005
|
+
dispatchMiddlewareEvent(node, void 0, "listeners-cleared");
|
|
1006
|
+
}
|
|
892
1007
|
};
|
|
893
1008
|
}
|
|
894
1009
|
function createCb(linkedFromNode, path, callback) {
|
|
@@ -969,13 +1084,13 @@ function updateTracking(node, track) {
|
|
|
969
1084
|
}
|
|
970
1085
|
|
|
971
1086
|
// src/trackSelector.ts
|
|
972
|
-
function trackSelector(selector, update, observeEvent, observeOptions, createResubscribe) {
|
|
1087
|
+
function trackSelector(selector, update, getOptions, observeEvent, observeOptions, createResubscribe) {
|
|
973
1088
|
var _a;
|
|
974
1089
|
let dispose;
|
|
975
1090
|
let resubscribe;
|
|
976
1091
|
let updateFn = update;
|
|
977
1092
|
beginTracking();
|
|
978
|
-
const value = selector ? computeSelector(selector, observeEvent, observeOptions == null ? void 0 : observeOptions.fromComputed) : selector;
|
|
1093
|
+
const value = selector ? computeSelector(selector, getOptions, observeEvent, observeOptions == null ? void 0 : observeOptions.fromComputed) : selector;
|
|
979
1094
|
const tracker = tracking.current;
|
|
980
1095
|
const nodes = tracker.nodes;
|
|
981
1096
|
endTracking();
|
|
@@ -1023,7 +1138,11 @@ function observe(selectorOrRun, reactionOrOptions, options) {
|
|
|
1023
1138
|
beginBatch();
|
|
1024
1139
|
delete e.value;
|
|
1025
1140
|
dispose == null ? void 0 : dispose();
|
|
1026
|
-
const {
|
|
1141
|
+
const {
|
|
1142
|
+
dispose: _dispose,
|
|
1143
|
+
value,
|
|
1144
|
+
nodes
|
|
1145
|
+
} = trackSelector(selectorOrRun, update, void 0, e, options);
|
|
1027
1146
|
dispose = _dispose;
|
|
1028
1147
|
e.value = value;
|
|
1029
1148
|
e.nodes = nodes;
|
|
@@ -1068,10 +1187,13 @@ function _when(predicate, effect, checkReady) {
|
|
|
1068
1187
|
let isOk = true;
|
|
1069
1188
|
if (isArray(ret)) {
|
|
1070
1189
|
for (let i = 0; i < ret.length; i++) {
|
|
1071
|
-
|
|
1072
|
-
|
|
1190
|
+
let item = ret[i];
|
|
1191
|
+
if (isObservable(item)) {
|
|
1192
|
+
item = computeSelector(item);
|
|
1193
|
+
} else if (isFunction(item)) {
|
|
1194
|
+
item = item();
|
|
1073
1195
|
}
|
|
1074
|
-
isOk = isOk && !!(checkReady ? isObservableValueReady(
|
|
1196
|
+
isOk = isOk && !!(checkReady ? isObservableValueReady(item) : item);
|
|
1075
1197
|
}
|
|
1076
1198
|
} else {
|
|
1077
1199
|
isOk = checkReady ? isObservableValueReady(ret) : ret;
|
|
@@ -1170,9 +1292,6 @@ function collectionSetter(node, target, prop, ...args) {
|
|
|
1170
1292
|
return ret;
|
|
1171
1293
|
}
|
|
1172
1294
|
}
|
|
1173
|
-
function getKeys(obj, isArr, isMap2) {
|
|
1174
|
-
return isArr ? void 0 : obj ? isMap2 ? Array.from(obj.keys()) : Object.keys(obj) : [];
|
|
1175
|
-
}
|
|
1176
1295
|
function updateNodes(parent, obj, prevValue) {
|
|
1177
1296
|
var _a, _b, _c;
|
|
1178
1297
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && typeof __devUpdateNodes !== "undefined" && isObject(obj)) {
|
|
@@ -1201,9 +1320,11 @@ function updateNodes(parent, obj, prevValue) {
|
|
|
1201
1320
|
let prevChildrenById;
|
|
1202
1321
|
let moved;
|
|
1203
1322
|
const isCurMap = isMap(obj);
|
|
1323
|
+
const isCurSet = isSet(obj);
|
|
1204
1324
|
const isPrevMap = isMap(prevValue);
|
|
1205
|
-
const
|
|
1206
|
-
const
|
|
1325
|
+
const isPrevSet = isSet(prevValue);
|
|
1326
|
+
const keys = getKeys(obj, isArr, isCurMap, isCurSet);
|
|
1327
|
+
const keysPrev = getKeys(prevValue, isArr, isPrevMap, isPrevSet);
|
|
1207
1328
|
const length = ((_a = keys || obj) == null ? void 0 : _a.length) || 0;
|
|
1208
1329
|
const lengthPrev = ((_b = keysPrev || prevValue) == null ? void 0 : _b.length) || 0;
|
|
1209
1330
|
let idField;
|
|
@@ -1553,7 +1674,9 @@ var proxyHandler = {
|
|
|
1553
1674
|
if (isObservable(thisArg)) {
|
|
1554
1675
|
thisArg = thisArg.peek();
|
|
1555
1676
|
}
|
|
1556
|
-
|
|
1677
|
+
const fnRaw = getNodeValue(target);
|
|
1678
|
+
const fn = isFunction(fnRaw) ? fnRaw : target.lazyFn || target;
|
|
1679
|
+
return Reflect.apply(fn, thisArg, argArray);
|
|
1557
1680
|
}
|
|
1558
1681
|
};
|
|
1559
1682
|
function set(node, newValue) {
|
|
@@ -1585,8 +1708,8 @@ function setKey(node, key, newValue, level) {
|
|
|
1585
1708
|
if (isObservable(newValue)) {
|
|
1586
1709
|
setToObservable(childNode, newValue);
|
|
1587
1710
|
} else {
|
|
1588
|
-
const { newValue: savedValue, prevValue } = setNodeValue(childNode, newValue);
|
|
1589
|
-
const isPrim = isPrimitive(savedValue) || savedValue instanceof Date;
|
|
1711
|
+
const { newValue: savedValue, prevValue, parentValue } = setNodeValue(childNode, newValue);
|
|
1712
|
+
const isPrim = isPrimitive(prevValue) || prevValue instanceof Date || isPrimitive(savedValue) || savedValue instanceof Date;
|
|
1590
1713
|
if (!isPrim) {
|
|
1591
1714
|
let parent = childNode;
|
|
1592
1715
|
do {
|
|
@@ -1597,7 +1720,17 @@ function setKey(node, key, newValue, level) {
|
|
|
1597
1720
|
const notify2 = !equals(savedValue, prevValue);
|
|
1598
1721
|
const forceNotify = !notify2 && childNode.isComputing && !isPrim;
|
|
1599
1722
|
if (notify2 || forceNotify) {
|
|
1600
|
-
updateNodesAndNotify(
|
|
1723
|
+
updateNodesAndNotify(
|
|
1724
|
+
node,
|
|
1725
|
+
savedValue,
|
|
1726
|
+
prevValue,
|
|
1727
|
+
childNode,
|
|
1728
|
+
parentValue,
|
|
1729
|
+
isPrim,
|
|
1730
|
+
isRoot,
|
|
1731
|
+
level,
|
|
1732
|
+
forceNotify
|
|
1733
|
+
);
|
|
1601
1734
|
}
|
|
1602
1735
|
extractFunctionOrComputed(node, key, savedValue);
|
|
1603
1736
|
}
|
|
@@ -1652,7 +1785,7 @@ function handlerMapSet(node, p, value) {
|
|
|
1652
1785
|
} else if (isFunction(vProp)) {
|
|
1653
1786
|
return function(a, b, c) {
|
|
1654
1787
|
const l = arguments.length;
|
|
1655
|
-
const
|
|
1788
|
+
const valueMapOrSet = value;
|
|
1656
1789
|
if (p === "get") {
|
|
1657
1790
|
if (l > 0 && typeof a !== "boolean" && a !== optimized) {
|
|
1658
1791
|
return getProxy(node, a);
|
|
@@ -1666,14 +1799,14 @@ function handlerMapSet(node, p, value) {
|
|
|
1666
1799
|
return getProxy(node);
|
|
1667
1800
|
} else if (p === "delete") {
|
|
1668
1801
|
if (l > 0) {
|
|
1669
|
-
const prev = value.get ?
|
|
1802
|
+
const prev = value.get ? valueMapOrSet.get(a) : a;
|
|
1670
1803
|
deleteFn(node, a);
|
|
1671
1804
|
return prev !== void 0;
|
|
1672
1805
|
}
|
|
1673
1806
|
} else if (p === "clear") {
|
|
1674
|
-
const prev = new Map(
|
|
1675
|
-
const size =
|
|
1676
|
-
|
|
1807
|
+
const prev = isSet(valueMapOrSet) ? new Set(valueMapOrSet) : new Map(valueMapOrSet);
|
|
1808
|
+
const size = valueMapOrSet.size;
|
|
1809
|
+
valueMapOrSet.clear();
|
|
1677
1810
|
if (size) {
|
|
1678
1811
|
updateNodesAndNotify(node, value, prev);
|
|
1679
1812
|
}
|
|
@@ -1704,7 +1837,7 @@ function handlerMapSet(node, p, value) {
|
|
|
1704
1837
|
};
|
|
1705
1838
|
}
|
|
1706
1839
|
}
|
|
1707
|
-
function updateNodesAndNotify(node, newValue, prevValue, childNode, isPrim, isRoot, level, forceNotify) {
|
|
1840
|
+
function updateNodesAndNotify(node, newValue, prevValue, childNode, parentValue, isPrim, isRoot, level, forceNotify) {
|
|
1708
1841
|
if (!childNode)
|
|
1709
1842
|
childNode = node;
|
|
1710
1843
|
beginBatch();
|
|
@@ -1713,15 +1846,29 @@ function updateNodesAndNotify(node, newValue, prevValue, childNode, isPrim, isRo
|
|
|
1713
1846
|
}
|
|
1714
1847
|
let hasADiff = forceNotify || isPrim;
|
|
1715
1848
|
let whenOptimizedOnlyIf = false;
|
|
1849
|
+
let valueAsArr;
|
|
1850
|
+
let valueAsMap;
|
|
1716
1851
|
if (!isPrim || prevValue && !isPrimitive(prevValue)) {
|
|
1717
1852
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && typeof __devUpdateNodes !== "undefined") {
|
|
1718
1853
|
__devUpdateNodes.clear();
|
|
1719
1854
|
}
|
|
1720
1855
|
hasADiff = hasADiff || updateNodes(childNode, newValue, prevValue);
|
|
1721
1856
|
if (isArray(newValue)) {
|
|
1722
|
-
|
|
1857
|
+
valueAsArr = newValue;
|
|
1858
|
+
} else if (isMap(newValue) || isSet(newValue)) {
|
|
1859
|
+
valueAsMap = newValue;
|
|
1723
1860
|
}
|
|
1724
1861
|
}
|
|
1862
|
+
if (isArray(parentValue)) {
|
|
1863
|
+
valueAsArr = parentValue;
|
|
1864
|
+
} else if (isMap(parentValue) || isSet(parentValue)) {
|
|
1865
|
+
valueAsMap = parentValue;
|
|
1866
|
+
}
|
|
1867
|
+
if (valueAsArr) {
|
|
1868
|
+
whenOptimizedOnlyIf = (valueAsArr == null ? void 0 : valueAsArr.length) !== (prevValue == null ? void 0 : prevValue.length);
|
|
1869
|
+
} else if (valueAsMap) {
|
|
1870
|
+
whenOptimizedOnlyIf = (valueAsMap == null ? void 0 : valueAsMap.size) !== (prevValue == null ? void 0 : prevValue.size);
|
|
1871
|
+
}
|
|
1725
1872
|
if (isPrim || !newValue || isEmpty(newValue) && !isEmpty(prevValue) ? newValue !== prevValue : hasADiff) {
|
|
1726
1873
|
notify(
|
|
1727
1874
|
isPrim && isRoot ? node : childNode,
|
|
@@ -1788,7 +1935,7 @@ function peek(node) {
|
|
|
1788
1935
|
}
|
|
1789
1936
|
var isFlushing = false;
|
|
1790
1937
|
function peekInternal(node, activateRecursive) {
|
|
1791
|
-
var _a;
|
|
1938
|
+
var _a, _b;
|
|
1792
1939
|
isFlushing = true;
|
|
1793
1940
|
if (activateRecursive && ((_a = node.dirtyChildren) == null ? void 0 : _a.size)) {
|
|
1794
1941
|
const dirty = Array.from(node.dirtyChildren);
|
|
@@ -1803,7 +1950,10 @@ function peekInternal(node, activateRecursive) {
|
|
|
1803
1950
|
}
|
|
1804
1951
|
isFlushing = false;
|
|
1805
1952
|
let value = getNodeValue(node);
|
|
1806
|
-
if (
|
|
1953
|
+
if (((_b = node.parent) == null ? void 0 : _b.isPlain) || isHintPlain(value)) {
|
|
1954
|
+
node.isPlain = true;
|
|
1955
|
+
}
|
|
1956
|
+
if (!node.root.isLoadingLocal && !node.isPlain) {
|
|
1807
1957
|
value = checkLazy(node, value, !!activateRecursive);
|
|
1808
1958
|
}
|
|
1809
1959
|
return value;
|
|
@@ -1857,11 +2007,14 @@ function checkProperty(value, key) {
|
|
|
1857
2007
|
return value[key];
|
|
1858
2008
|
}
|
|
1859
2009
|
}
|
|
1860
|
-
function
|
|
2010
|
+
function deactivateNode(node) {
|
|
1861
2011
|
var _a, _b;
|
|
1862
2012
|
(_a = node.activatedObserveDispose) == null ? void 0 : _a.call(node);
|
|
1863
2013
|
(_b = node.linkedToNodeDispose) == null ? void 0 : _b.call(node);
|
|
1864
2014
|
node.activatedObserveDispose = node.linkedToNodeDispose = node.linkedToNode = void 0;
|
|
2015
|
+
}
|
|
2016
|
+
function reactivateNode(node, lazyFn) {
|
|
2017
|
+
deactivateNode(node);
|
|
1865
2018
|
node.lazyFn = lazyFn;
|
|
1866
2019
|
node.lazy = true;
|
|
1867
2020
|
}
|
|
@@ -1909,7 +2062,7 @@ function activateNodeFunction(node, lazyFn) {
|
|
|
1909
2062
|
node.dirtyFn = refreshFn;
|
|
1910
2063
|
globalState.dirtyNodes.add(node);
|
|
1911
2064
|
}
|
|
1912
|
-
|
|
2065
|
+
const observeDispose = observe(
|
|
1913
2066
|
() => {
|
|
1914
2067
|
var _a, _b, _c, _d;
|
|
1915
2068
|
if (isFirst) {
|
|
@@ -1963,6 +2116,9 @@ function activateNodeFunction(node, lazyFn) {
|
|
|
1963
2116
|
value = (_d = (_c = activated2.get) == null ? void 0 : _c.call(activated2)) != null ? _d : activated2.initial;
|
|
1964
2117
|
}
|
|
1965
2118
|
}
|
|
2119
|
+
if (ignoreThisUpdate) {
|
|
2120
|
+
activatedValue = value;
|
|
2121
|
+
}
|
|
1966
2122
|
wasPromise = wasPromise || isPromise(value);
|
|
1967
2123
|
return value;
|
|
1968
2124
|
},
|
|
@@ -2009,6 +2165,10 @@ function activateNodeFunction(node, lazyFn) {
|
|
|
2009
2165
|
},
|
|
2010
2166
|
{ fromComputed: true }
|
|
2011
2167
|
);
|
|
2168
|
+
node.activatedObserveDispose = () => {
|
|
2169
|
+
observeDispose == null ? void 0 : observeDispose();
|
|
2170
|
+
disposes.forEach((fn) => fn());
|
|
2171
|
+
};
|
|
2012
2172
|
return activatedValue;
|
|
2013
2173
|
}
|
|
2014
2174
|
function activateNodeBase(node, value) {
|
|
@@ -2274,7 +2434,14 @@ function syncState(obs) {
|
|
|
2274
2434
|
syncCount: 0,
|
|
2275
2435
|
resetPersistence: void 0,
|
|
2276
2436
|
reset: () => Promise.resolve(),
|
|
2277
|
-
sync: () =>
|
|
2437
|
+
sync: () => {
|
|
2438
|
+
var _a;
|
|
2439
|
+
obs.peek();
|
|
2440
|
+
if ((_a = node.state) == null ? void 0 : _a.isGetting.peek()) {
|
|
2441
|
+
return when(node.state.isLoaded);
|
|
2442
|
+
}
|
|
2443
|
+
return Promise.resolve();
|
|
2444
|
+
},
|
|
2278
2445
|
getPendingChanges: () => ({}),
|
|
2279
2446
|
// TODOV3 remove
|
|
2280
2447
|
clearPersist: void 0
|
|
@@ -2288,10 +2455,12 @@ function syncState(obs) {
|
|
|
2288
2455
|
var internal = {
|
|
2289
2456
|
createPreviousHandler,
|
|
2290
2457
|
clone,
|
|
2458
|
+
deactivateNode,
|
|
2291
2459
|
deepMerge,
|
|
2292
2460
|
ensureNodeValue,
|
|
2293
2461
|
findIDKey,
|
|
2294
2462
|
get,
|
|
2463
|
+
getKeys,
|
|
2295
2464
|
getNode,
|
|
2296
2465
|
getNodeValue,
|
|
2297
2466
|
getPathType,
|
|
@@ -2304,6 +2473,8 @@ var internal = {
|
|
|
2304
2473
|
observableFns,
|
|
2305
2474
|
optimized,
|
|
2306
2475
|
peek,
|
|
2476
|
+
reactivateNode,
|
|
2477
|
+
registerMiddleware,
|
|
2307
2478
|
safeParse,
|
|
2308
2479
|
safeStringify,
|
|
2309
2480
|
set,
|