@legendapp/state 3.0.0-beta.34 → 3.0.0-beta.35
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/index.js +5 -1
- package/index.mjs +5 -1
- package/package.json +1 -1
- package/react.d.mts +1 -1
- package/react.d.ts +1 -1
- package/react.js +11 -3
- package/react.mjs +10 -4
- package/sync-plugins/tanstack-query.js +1 -1
- package/sync-plugins/tanstack-query.mjs +1 -1
- package/sync.js +36 -15
- package/sync.mjs +36 -15
package/index.js
CHANGED
|
@@ -1637,7 +1637,11 @@ var proxyHandler = {
|
|
|
1637
1637
|
return { configurable: false, enumerable: false };
|
|
1638
1638
|
}
|
|
1639
1639
|
const value = getNodeValue(node);
|
|
1640
|
-
|
|
1640
|
+
if (isPrimitive(value)) {
|
|
1641
|
+
return void 0;
|
|
1642
|
+
}
|
|
1643
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(value, prop);
|
|
1644
|
+
return descriptor ? { ...descriptor, configurable: true } : void 0;
|
|
1641
1645
|
},
|
|
1642
1646
|
set(node, prop, value) {
|
|
1643
1647
|
if (node.isSetting) {
|
package/index.mjs
CHANGED
|
@@ -1635,7 +1635,11 @@ var proxyHandler = {
|
|
|
1635
1635
|
return { configurable: false, enumerable: false };
|
|
1636
1636
|
}
|
|
1637
1637
|
const value = getNodeValue(node);
|
|
1638
|
-
|
|
1638
|
+
if (isPrimitive(value)) {
|
|
1639
|
+
return void 0;
|
|
1640
|
+
}
|
|
1641
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(value, prop);
|
|
1642
|
+
return descriptor ? { ...descriptor, configurable: true } : void 0;
|
|
1639
1643
|
},
|
|
1640
1644
|
set(node, prop, value) {
|
|
1641
1645
|
if (node.isSetting) {
|
package/package.json
CHANGED
package/react.d.mts
CHANGED
|
@@ -187,4 +187,4 @@ declare function configureReactive({ components, binders, }: {
|
|
|
187
187
|
binders?: Record<string, BindKeys>;
|
|
188
188
|
}): void;
|
|
189
189
|
|
|
190
|
-
export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseObserveOptions, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useSelector as use$, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
|
|
190
|
+
export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseObserveOptions, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useSelector as use$, useComputed, useEffectOnce, useIsMounted, useObservable as useLocalObservable, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useSelector as useValue, useWhen, useWhenReady };
|
package/react.d.ts
CHANGED
|
@@ -187,4 +187,4 @@ declare function configureReactive({ components, binders, }: {
|
|
|
187
187
|
binders?: Record<string, BindKeys>;
|
|
188
188
|
}): void;
|
|
189
189
|
|
|
190
|
-
export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseObserveOptions, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useSelector as use$, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
|
|
190
|
+
export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseObserveOptions, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useSelector as use$, useComputed, useEffectOnce, useIsMounted, useObservable as useLocalObservable, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useSelector as useValue, useWhen, useWhenReady };
|
package/react.js
CHANGED
|
@@ -510,9 +510,15 @@ function useIsMounted() {
|
|
|
510
510
|
return obs;
|
|
511
511
|
}
|
|
512
512
|
function useObservableReducer(reducer, initializerArg, initializer) {
|
|
513
|
-
const obs = useObservable(
|
|
514
|
-
|
|
515
|
-
|
|
513
|
+
const obs = useObservable(() => {
|
|
514
|
+
if (initializer) {
|
|
515
|
+
return initializer(initializerArg);
|
|
516
|
+
}
|
|
517
|
+
if (state.isFunction(initializerArg)) {
|
|
518
|
+
return initializerArg();
|
|
519
|
+
}
|
|
520
|
+
return initializerArg;
|
|
521
|
+
});
|
|
516
522
|
const dispatch = (action) => {
|
|
517
523
|
obs.set(reducer(obs.get(), action));
|
|
518
524
|
};
|
|
@@ -622,6 +628,7 @@ exports.use$ = useSelector;
|
|
|
622
628
|
exports.useComputed = useComputed;
|
|
623
629
|
exports.useEffectOnce = useEffectOnce;
|
|
624
630
|
exports.useIsMounted = useIsMounted;
|
|
631
|
+
exports.useLocalObservable = useObservable;
|
|
625
632
|
exports.useMount = useMount;
|
|
626
633
|
exports.useMountOnce = useMountOnce;
|
|
627
634
|
exports.useObservable = useObservable;
|
|
@@ -632,5 +639,6 @@ exports.usePauseProvider = usePauseProvider;
|
|
|
632
639
|
exports.useSelector = useSelector;
|
|
633
640
|
exports.useUnmount = useUnmount;
|
|
634
641
|
exports.useUnmountOnce = useUnmountOnce;
|
|
642
|
+
exports.useValue = useSelector;
|
|
635
643
|
exports.useWhen = useWhen;
|
|
636
644
|
exports.useWhenReady = useWhenReady;
|
package/react.mjs
CHANGED
|
@@ -504,9 +504,15 @@ function useIsMounted() {
|
|
|
504
504
|
return obs;
|
|
505
505
|
}
|
|
506
506
|
function useObservableReducer(reducer, initializerArg, initializer) {
|
|
507
|
-
const obs = useObservable(
|
|
508
|
-
|
|
509
|
-
|
|
507
|
+
const obs = useObservable(() => {
|
|
508
|
+
if (initializer) {
|
|
509
|
+
return initializer(initializerArg);
|
|
510
|
+
}
|
|
511
|
+
if (isFunction(initializerArg)) {
|
|
512
|
+
return initializerArg();
|
|
513
|
+
}
|
|
514
|
+
return initializerArg;
|
|
515
|
+
});
|
|
510
516
|
const dispatch = (action) => {
|
|
511
517
|
obs.set(reducer(obs.get(), action));
|
|
512
518
|
};
|
|
@@ -600,4 +606,4 @@ function useWhenReady(predicate, effect) {
|
|
|
600
606
|
return useMemo(() => whenReady(predicate, effect), []);
|
|
601
607
|
}
|
|
602
608
|
|
|
603
|
-
export { Computed, For, Memo, Reactive, Show, Switch, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useSelector as use$, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
|
|
609
|
+
export { Computed, For, Memo, Reactive, Show, Switch, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useSelector as use$, useComputed, useEffectOnce, useIsMounted, useObservable as useLocalObservable, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useSelector as useValue, useWhen, useWhenReady };
|
package/sync.js
CHANGED
|
@@ -179,28 +179,43 @@ function runWithRetry(state, retryOptions, retryId, fn) {
|
|
|
179
179
|
let timeoutRetry;
|
|
180
180
|
if (mapRetryTimeouts.has(retryId)) {
|
|
181
181
|
clearTimeout(mapRetryTimeouts.get(retryId));
|
|
182
|
+
mapRetryTimeouts.delete(retryId);
|
|
182
183
|
}
|
|
184
|
+
const clearRetryState = () => {
|
|
185
|
+
if (timeoutRetry !== void 0) {
|
|
186
|
+
clearTimeout(timeoutRetry);
|
|
187
|
+
timeoutRetry = void 0;
|
|
188
|
+
}
|
|
189
|
+
mapRetryTimeouts.delete(retryId);
|
|
190
|
+
};
|
|
183
191
|
return new Promise((resolve, reject) => {
|
|
184
192
|
const run = () => {
|
|
185
193
|
value.then((val) => {
|
|
194
|
+
state.retryNum = 0;
|
|
195
|
+
clearRetryState();
|
|
186
196
|
resolve(val);
|
|
187
197
|
}).catch((error) => {
|
|
188
|
-
|
|
189
|
-
if (timeoutRetry) {
|
|
198
|
+
if (timeoutRetry !== void 0) {
|
|
190
199
|
clearTimeout(timeoutRetry);
|
|
200
|
+
timeoutRetry = void 0;
|
|
191
201
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
202
|
+
state.retryNum++;
|
|
203
|
+
if (state.cancelRetry) {
|
|
204
|
+
clearRetryState();
|
|
205
|
+
reject(error);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const timeout = createRetryTimeout(retryOptions, state.retryNum, () => {
|
|
209
|
+
value = fn(state);
|
|
210
|
+
run();
|
|
211
|
+
});
|
|
212
|
+
if (timeout === false) {
|
|
213
|
+
state.cancelRetry = true;
|
|
214
|
+
clearRetryState();
|
|
215
|
+
reject(error);
|
|
216
|
+
} else {
|
|
217
|
+
timeoutRetry = timeout;
|
|
218
|
+
mapRetryTimeouts.set(retryId, timeout);
|
|
204
219
|
}
|
|
205
220
|
});
|
|
206
221
|
};
|
|
@@ -209,6 +224,7 @@ function runWithRetry(state, retryOptions, retryId, fn) {
|
|
|
209
224
|
}
|
|
210
225
|
return value;
|
|
211
226
|
} catch (error) {
|
|
227
|
+
mapRetryTimeouts.delete(retryId);
|
|
212
228
|
return Promise.reject(error);
|
|
213
229
|
}
|
|
214
230
|
}
|
|
@@ -325,9 +341,14 @@ function mergeChanges(changes) {
|
|
|
325
341
|
const existing = changesByPath.get(pathStr);
|
|
326
342
|
if (existing) {
|
|
327
343
|
if (change.valueAtPath === existing.prevAtPath) {
|
|
328
|
-
changesOut.
|
|
344
|
+
const idx = changesOut.indexOf(existing);
|
|
345
|
+
if (idx >= 0) {
|
|
346
|
+
changesOut.splice(idx, 1);
|
|
347
|
+
}
|
|
348
|
+
changesByPath.delete(pathStr);
|
|
329
349
|
} else {
|
|
330
350
|
existing.valueAtPath = change.valueAtPath;
|
|
351
|
+
existing.pathTypes = change.pathTypes;
|
|
331
352
|
}
|
|
332
353
|
} else {
|
|
333
354
|
let found = false;
|
package/sync.mjs
CHANGED
|
@@ -177,28 +177,43 @@ function runWithRetry(state, retryOptions, retryId, fn) {
|
|
|
177
177
|
let timeoutRetry;
|
|
178
178
|
if (mapRetryTimeouts.has(retryId)) {
|
|
179
179
|
clearTimeout(mapRetryTimeouts.get(retryId));
|
|
180
|
+
mapRetryTimeouts.delete(retryId);
|
|
180
181
|
}
|
|
182
|
+
const clearRetryState = () => {
|
|
183
|
+
if (timeoutRetry !== void 0) {
|
|
184
|
+
clearTimeout(timeoutRetry);
|
|
185
|
+
timeoutRetry = void 0;
|
|
186
|
+
}
|
|
187
|
+
mapRetryTimeouts.delete(retryId);
|
|
188
|
+
};
|
|
181
189
|
return new Promise((resolve, reject) => {
|
|
182
190
|
const run = () => {
|
|
183
191
|
value.then((val) => {
|
|
192
|
+
state.retryNum = 0;
|
|
193
|
+
clearRetryState();
|
|
184
194
|
resolve(val);
|
|
185
195
|
}).catch((error) => {
|
|
186
|
-
|
|
187
|
-
if (timeoutRetry) {
|
|
196
|
+
if (timeoutRetry !== void 0) {
|
|
188
197
|
clearTimeout(timeoutRetry);
|
|
198
|
+
timeoutRetry = void 0;
|
|
189
199
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
state.retryNum++;
|
|
201
|
+
if (state.cancelRetry) {
|
|
202
|
+
clearRetryState();
|
|
203
|
+
reject(error);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const timeout = createRetryTimeout(retryOptions, state.retryNum, () => {
|
|
207
|
+
value = fn(state);
|
|
208
|
+
run();
|
|
209
|
+
});
|
|
210
|
+
if (timeout === false) {
|
|
211
|
+
state.cancelRetry = true;
|
|
212
|
+
clearRetryState();
|
|
213
|
+
reject(error);
|
|
214
|
+
} else {
|
|
215
|
+
timeoutRetry = timeout;
|
|
216
|
+
mapRetryTimeouts.set(retryId, timeout);
|
|
202
217
|
}
|
|
203
218
|
});
|
|
204
219
|
};
|
|
@@ -207,6 +222,7 @@ function runWithRetry(state, retryOptions, retryId, fn) {
|
|
|
207
222
|
}
|
|
208
223
|
return value;
|
|
209
224
|
} catch (error) {
|
|
225
|
+
mapRetryTimeouts.delete(retryId);
|
|
210
226
|
return Promise.reject(error);
|
|
211
227
|
}
|
|
212
228
|
}
|
|
@@ -323,9 +339,14 @@ function mergeChanges(changes) {
|
|
|
323
339
|
const existing = changesByPath.get(pathStr);
|
|
324
340
|
if (existing) {
|
|
325
341
|
if (change.valueAtPath === existing.prevAtPath) {
|
|
326
|
-
changesOut.
|
|
342
|
+
const idx = changesOut.indexOf(existing);
|
|
343
|
+
if (idx >= 0) {
|
|
344
|
+
changesOut.splice(idx, 1);
|
|
345
|
+
}
|
|
346
|
+
changesByPath.delete(pathStr);
|
|
327
347
|
} else {
|
|
328
348
|
existing.valueAtPath = change.valueAtPath;
|
|
349
|
+
existing.pathTypes = change.pathTypes;
|
|
329
350
|
}
|
|
330
351
|
} else {
|
|
331
352
|
let found = false;
|