@legendapp/state 3.0.0-beta.3 → 3.0.0-beta.30
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 +33 -4
- package/index.d.ts +33 -4
- package/index.js +191 -29
- package/index.mjs +191 -29
- 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 +36 -23
- package/react.mjs +37 -25
- 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;
|
|
@@ -1963,6 +2113,9 @@ function activateNodeFunction(node, lazyFn) {
|
|
|
1963
2113
|
value = (_d = (_c = activated2.get) == null ? void 0 : _c.call(activated2)) != null ? _d : activated2.initial;
|
|
1964
2114
|
}
|
|
1965
2115
|
}
|
|
2116
|
+
if (ignoreThisUpdate) {
|
|
2117
|
+
activatedValue = value;
|
|
2118
|
+
}
|
|
1966
2119
|
wasPromise = wasPromise || isPromise(value);
|
|
1967
2120
|
return value;
|
|
1968
2121
|
},
|
|
@@ -2274,7 +2427,14 @@ function syncState(obs) {
|
|
|
2274
2427
|
syncCount: 0,
|
|
2275
2428
|
resetPersistence: void 0,
|
|
2276
2429
|
reset: () => Promise.resolve(),
|
|
2277
|
-
sync: () =>
|
|
2430
|
+
sync: () => {
|
|
2431
|
+
var _a;
|
|
2432
|
+
obs.peek();
|
|
2433
|
+
if ((_a = node.state) == null ? void 0 : _a.isGetting.peek()) {
|
|
2434
|
+
return when(node.state.isLoaded);
|
|
2435
|
+
}
|
|
2436
|
+
return Promise.resolve();
|
|
2437
|
+
},
|
|
2278
2438
|
getPendingChanges: () => ({}),
|
|
2279
2439
|
// TODOV3 remove
|
|
2280
2440
|
clearPersist: void 0
|
|
@@ -2292,6 +2452,7 @@ var internal = {
|
|
|
2292
2452
|
ensureNodeValue,
|
|
2293
2453
|
findIDKey,
|
|
2294
2454
|
get,
|
|
2455
|
+
getKeys,
|
|
2295
2456
|
getNode,
|
|
2296
2457
|
getNodeValue,
|
|
2297
2458
|
getPathType,
|
|
@@ -2304,6 +2465,7 @@ var internal = {
|
|
|
2304
2465
|
observableFns,
|
|
2305
2466
|
optimized,
|
|
2306
2467
|
peek,
|
|
2468
|
+
registerMiddleware,
|
|
2307
2469
|
safeParse,
|
|
2308
2470
|
safeStringify,
|
|
2309
2471
|
set,
|