valdres 0.2.0-alpha.69 → 0.2.0-alpha.70
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
CHANGED
|
@@ -136,6 +136,43 @@ var isSelectorFamily = (state) => state && Object.hasOwn(state, "__valdresSelect
|
|
|
136
136
|
// src/lib/isFunction.ts
|
|
137
137
|
var isFunction = (value) => typeof value === "function";
|
|
138
138
|
|
|
139
|
+
// src/utils/deepFreeze.ts
|
|
140
|
+
var deepFreeze = (obj, seen = new WeakSet) => {
|
|
141
|
+
if (seen.has(obj))
|
|
142
|
+
return obj;
|
|
143
|
+
if (obj && typeof obj === "object")
|
|
144
|
+
seen.add(obj);
|
|
145
|
+
if (Array.isArray(obj)) {
|
|
146
|
+
for (const item of obj) {
|
|
147
|
+
if (item && typeof item === "object") {
|
|
148
|
+
deepFreeze(item, seen);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
} else {
|
|
152
|
+
const propNames = Object.getOwnPropertyNames(obj);
|
|
153
|
+
for (const name of propNames) {
|
|
154
|
+
const value = obj[name];
|
|
155
|
+
if (value && typeof value === "object") {
|
|
156
|
+
deepFreeze(value, seen);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return Object.freeze(obj);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// src/lib/setValueInData.ts
|
|
164
|
+
var isProd = true;
|
|
165
|
+
var setValueInData = (atom, value, data) => {
|
|
166
|
+
if (isProd) {
|
|
167
|
+
data.values.set(atom, value);
|
|
168
|
+
return value;
|
|
169
|
+
} else {
|
|
170
|
+
const frozenValue = deepFreeze(value);
|
|
171
|
+
data.values.set(atom, frozenValue);
|
|
172
|
+
return frozenValue;
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
|
|
139
176
|
// src/lib/setAtom.ts
|
|
140
177
|
var setAtom = (atom, newValue, data, skipOnSet = false) => {
|
|
141
178
|
const currentValue = getState(atom, data);
|
|
@@ -146,15 +183,14 @@ var setAtom = (atom, newValue, data, skipOnSet = false) => {
|
|
|
146
183
|
}
|
|
147
184
|
if (atom.equal(currentValue, newValue))
|
|
148
185
|
return newValue;
|
|
149
|
-
|
|
150
|
-
data.values.set(atom, frozenNewValue);
|
|
186
|
+
newValue = setValueInData(atom, newValue, data);
|
|
151
187
|
if (atom.onSet && !skipOnSet)
|
|
152
|
-
atom.onSet(
|
|
188
|
+
atom.onSet(newValue, data);
|
|
153
189
|
if (currentValue?.__isEmptyAtomPromise__) {
|
|
154
|
-
currentValue.__resolveEmptyAtomPromise__(
|
|
190
|
+
currentValue.__resolveEmptyAtomPromise__(newValue);
|
|
155
191
|
}
|
|
156
192
|
propagateUpdatedAtoms([atom], data);
|
|
157
|
-
return
|
|
193
|
+
return newValue;
|
|
158
194
|
};
|
|
159
195
|
|
|
160
196
|
// src/lib/initAtom.ts
|
|
@@ -171,7 +207,7 @@ var getAtomInitValue = (atom, data) => {
|
|
|
171
207
|
const value = atom.defaultValue();
|
|
172
208
|
if (isPromiseLike(value)) {
|
|
173
209
|
value.then((resolvedValue) => {
|
|
174
|
-
|
|
210
|
+
setValueInData(atom, resolvedValue, data);
|
|
175
211
|
propagateUpdatedAtoms([atom], data);
|
|
176
212
|
});
|
|
177
213
|
}
|
|
@@ -183,8 +219,8 @@ var getAtomInitValue = (atom, data) => {
|
|
|
183
219
|
}
|
|
184
220
|
};
|
|
185
221
|
var initAtom = (atom, data) => {
|
|
186
|
-
|
|
187
|
-
|
|
222
|
+
const tmpVal = getAtomInitValue(atom, data);
|
|
223
|
+
let value = setValueInData(atom, tmpVal, data);
|
|
188
224
|
if (isFamilyAtom(atom)) {
|
|
189
225
|
const currentKeySet = getState(atom.family.__keysAtom, data);
|
|
190
226
|
if (!currentKeySet.has(atom.familyKey)) {
|
|
@@ -342,7 +378,7 @@ var handleSelectorResult = (value, selector, data) => {
|
|
|
342
378
|
return value.promise;
|
|
343
379
|
} else if (isPromiseLike(value)) {
|
|
344
380
|
value.then((resolved) => {
|
|
345
|
-
|
|
381
|
+
setValueInData(selector, resolved, data);
|
|
346
382
|
updateStateSubscribers(selector, data);
|
|
347
383
|
console.log("Should we reEvaluate?");
|
|
348
384
|
});
|
|
@@ -364,12 +400,10 @@ var initSelector = (selector, data, circularDependencySet = new WeakSet) => {
|
|
|
364
400
|
if (data.expiredValues.has(selector)) {
|
|
365
401
|
const expiredValue = data.expiredValues.get(selector);
|
|
366
402
|
if (selector.equal(expiredValue, value)) {
|
|
367
|
-
|
|
368
|
-
return expiredValue;
|
|
403
|
+
return setValueInData(selector, expiredValue, data);
|
|
369
404
|
}
|
|
370
405
|
}
|
|
371
|
-
|
|
372
|
-
return value;
|
|
406
|
+
return setValueInData(selector, value, data);
|
|
373
407
|
};
|
|
374
408
|
|
|
375
409
|
// src/lib/updateSelectorSubscribers.ts
|
|
@@ -464,7 +498,7 @@ function createStoreData(id, parent) {
|
|
|
464
498
|
// src/lib/resetAtom.ts
|
|
465
499
|
var resetAtom = (atom, data) => {
|
|
466
500
|
let value = getAtomInitValue(atom, data);
|
|
467
|
-
|
|
501
|
+
setValueInData(atom, value, data);
|
|
468
502
|
if (!isPromiseLike(value)) {
|
|
469
503
|
propagateUpdatedAtoms([atom], data);
|
|
470
504
|
}
|
|
@@ -562,7 +596,7 @@ var subscribe = (state, callback, requireDeepEqualCheckBeforeCallback, data) =>
|
|
|
562
596
|
value.then((res) => clearTimeout(timeout));
|
|
563
597
|
}
|
|
564
598
|
} else {
|
|
565
|
-
|
|
599
|
+
setValueInData(state, value, data);
|
|
566
600
|
propagateUpdatedAtoms([state], data);
|
|
567
601
|
}
|
|
568
602
|
}, state.maxAge);
|
|
@@ -606,7 +640,7 @@ var setAtoms = (pairs, data) => {
|
|
|
606
640
|
updatedAtoms.push(atom);
|
|
607
641
|
if (atom.onSet)
|
|
608
642
|
atom.onSet(value, data);
|
|
609
|
-
|
|
643
|
+
setValueInData(atom, value, data);
|
|
610
644
|
}
|
|
611
645
|
}
|
|
612
646
|
propagateUpdatedAtoms(updatedAtoms, data);
|
|
@@ -1140,6 +1174,7 @@ export {
|
|
|
1140
1174
|
isAtom,
|
|
1141
1175
|
index,
|
|
1142
1176
|
globalStore,
|
|
1177
|
+
deepFreeze,
|
|
1143
1178
|
createStoreWithSelectorSet,
|
|
1144
1179
|
atomFamily,
|
|
1145
1180
|
atom
|
|
@@ -9,6 +9,7 @@ export { index } from "./indexConstructor";
|
|
|
9
9
|
export { selector } from "./selector";
|
|
10
10
|
export { selectorFamily } from "./selectorFamily";
|
|
11
11
|
export { store } from "./store";
|
|
12
|
+
export { deepFreeze } from "./utils/deepFreeze";
|
|
12
13
|
export { isAtom } from "./utils/isAtom";
|
|
13
14
|
export { isAtomFamily } from "./utils/isAtomFamily";
|
|
14
15
|
export { isFamily } from "./utils/isFamily";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Atom } from "../types/Atom";
|
|
2
2
|
import type { AtomFamilyAtom } from "../types/AtomFamilyAtom";
|
|
3
3
|
import type { StoreData } from "../types/StoreData";
|
|
4
|
-
export declare const getAtomInitValue: <V>(atom: Atom<V>, data: StoreData) => any;
|
|
5
|
-
export declare const initAtom: <V, K>(atom: Atom<V> | AtomFamilyAtom<K, V>, data: StoreData) =>
|
|
4
|
+
export declare const getAtomInitValue: <V = any>(atom: Atom<V>, data: StoreData) => any;
|
|
5
|
+
export declare const initAtom: <V, K>(atom: Atom<V> | AtomFamilyAtom<K, V>, data: StoreData) => V;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Atom } from "../types/Atom";
|
|
2
2
|
import type { StoreData } from "../types/StoreData";
|
|
3
|
-
export declare const setAtom: <Value = any>(atom: Atom<Value>, newValue: Value | ((currentValue: Value) => Value), data: StoreData, skipOnSet?: boolean) =>
|
|
3
|
+
export declare const setAtom: <Value = any>(atom: Atom<Value>, newValue: Value | ((currentValue: Value) => Value), data: StoreData, skipOnSet?: boolean) => Value;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const deepFreeze: (obj: any, seen?: WeakSet<WeakKey>) => any;
|
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.70",
|
|
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": "e30d9cd0edbaee91ec9f25f46f9e7a27baf52312"
|
|
40
40
|
}
|