@legendapp/state 3.0.0-beta.33 → 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.d.mts +1 -1
- package/index.d.ts +1 -1
- package/index.js +8 -7
- package/index.mjs +8 -7
- 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.d.mts +2 -1
- package/sync.d.ts +2 -1
- package/sync.js +56 -18
- package/sync.mjs +56 -19
package/index.d.mts
CHANGED
|
@@ -3,7 +3,7 @@ type ArrayOverrideFnNames = 'find' | 'findIndex' | 'every' | 'some' | 'filter' |
|
|
|
3
3
|
type RemoveIndex<T> = {
|
|
4
4
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
5
5
|
};
|
|
6
|
-
type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> | Function | Promise<any
|
|
6
|
+
type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> | Function | Promise<any>;
|
|
7
7
|
type IsUserDefinedObject<T> = T extends Function | BuiltIns | any[] ? false : T extends object ? true : false;
|
|
8
8
|
type RemoveObservables<T> = T extends ImmutableObservableBase<infer t> ? t : T extends ImmutableObservableBase<infer t>[] ? t[] : IsUserDefinedObject<T> extends true ? {
|
|
9
9
|
[K in keyof T]: RemoveObservables<T[K]>;
|
package/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ type ArrayOverrideFnNames = 'find' | 'findIndex' | 'every' | 'some' | 'filter' |
|
|
|
3
3
|
type RemoveIndex<T> = {
|
|
4
4
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
5
5
|
};
|
|
6
|
-
type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> | Function | Promise<any
|
|
6
|
+
type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> | Function | Promise<any>;
|
|
7
7
|
type IsUserDefinedObject<T> = T extends Function | BuiltIns | any[] ? false : T extends object ? true : false;
|
|
8
8
|
type RemoveObservables<T> = T extends ImmutableObservableBase<infer t> ? t : T extends ImmutableObservableBase<infer t>[] ? t[] : IsUserDefinedObject<T> extends true ? {
|
|
9
9
|
[K in keyof T]: RemoveObservables<T[K]>;
|
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) {
|
|
@@ -2435,13 +2439,10 @@ function syncState(obs) {
|
|
|
2435
2439
|
syncCount: 0,
|
|
2436
2440
|
resetPersistence: void 0,
|
|
2437
2441
|
reset: () => Promise.resolve(),
|
|
2438
|
-
sync: (
|
|
2439
|
-
var _a
|
|
2440
|
-
if (options == null ? void 0 : options.resetLastSync) {
|
|
2441
|
-
(_a = node.state) == null ? void 0 : _a.lastSync.set(void 0);
|
|
2442
|
-
}
|
|
2442
|
+
sync: () => {
|
|
2443
|
+
var _a;
|
|
2443
2444
|
obs.peek();
|
|
2444
|
-
if ((
|
|
2445
|
+
if ((_a = node.state) == null ? void 0 : _a.isGetting.peek()) {
|
|
2445
2446
|
return when(node.state.isLoaded);
|
|
2446
2447
|
}
|
|
2447
2448
|
return Promise.resolve();
|
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) {
|
|
@@ -2433,13 +2437,10 @@ function syncState(obs) {
|
|
|
2433
2437
|
syncCount: 0,
|
|
2434
2438
|
resetPersistence: void 0,
|
|
2435
2439
|
reset: () => Promise.resolve(),
|
|
2436
|
-
sync: (
|
|
2437
|
-
var _a
|
|
2438
|
-
if (options == null ? void 0 : options.resetLastSync) {
|
|
2439
|
-
(_a = node.state) == null ? void 0 : _a.lastSync.set(void 0);
|
|
2440
|
-
}
|
|
2440
|
+
sync: () => {
|
|
2441
|
+
var _a;
|
|
2441
2442
|
obs.peek();
|
|
2442
|
-
if ((
|
|
2443
|
+
if ((_a = node.state) == null ? void 0 : _a.isGetting.peek()) {
|
|
2443
2444
|
return when(node.state.isLoaded);
|
|
2444
2445
|
}
|
|
2445
2446
|
return Promise.resolve();
|
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.d.mts
CHANGED
|
@@ -211,6 +211,7 @@ declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin>
|
|
|
211
211
|
declare function onChangeRemote(cb: () => void): void;
|
|
212
212
|
declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: SyncedOptions<T>): Observable<ObservableSyncState>;
|
|
213
213
|
declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: Synced<T>): Observable<ObservableSyncState>;
|
|
214
|
+
declare function getAllSyncStates(): readonly [Observable<ObservableSyncState>, NodeInfo][];
|
|
214
215
|
|
|
215
216
|
declare function synced<TRemote, TLocal = TRemote>(params: SyncedOptions<TRemote, TLocal> | (() => TRemote)): Synced<TLocal>;
|
|
216
217
|
|
|
@@ -230,4 +231,4 @@ declare const internal: {
|
|
|
230
231
|
runWithRetry: typeof runWithRetry;
|
|
231
232
|
};
|
|
232
233
|
|
|
233
|
-
export { type FieldTransforms, type FieldTransformsInner, type ObservablePersistAsyncStoragePluginOptions, type ObservablePersistIndexedDBPluginOptions, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservableSyncFunctions, type ObservableSyncSetParams, type OnErrorRetryParams, type PendingChanges, type PersistMetadata, type PersistOptions, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedErrorParams, type SyncedGetParams, type SyncedGetSetBaseParams, type SyncedGetSetSubscribeBaseParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, configureSynced, createRevertChanges, deepEqual, diffObjects, internal, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|
|
234
|
+
export { type FieldTransforms, type FieldTransformsInner, type ObservablePersistAsyncStoragePluginOptions, type ObservablePersistIndexedDBPluginOptions, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservableSyncFunctions, type ObservableSyncSetParams, type OnErrorRetryParams, type PendingChanges, type PersistMetadata, type PersistOptions, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedErrorParams, type SyncedGetParams, type SyncedGetSetBaseParams, type SyncedGetSetSubscribeBaseParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, configureSynced, createRevertChanges, deepEqual, diffObjects, getAllSyncStates, internal, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|
package/sync.d.ts
CHANGED
|
@@ -211,6 +211,7 @@ declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin>
|
|
|
211
211
|
declare function onChangeRemote(cb: () => void): void;
|
|
212
212
|
declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: SyncedOptions<T>): Observable<ObservableSyncState>;
|
|
213
213
|
declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: Synced<T>): Observable<ObservableSyncState>;
|
|
214
|
+
declare function getAllSyncStates(): readonly [Observable<ObservableSyncState>, NodeInfo][];
|
|
214
215
|
|
|
215
216
|
declare function synced<TRemote, TLocal = TRemote>(params: SyncedOptions<TRemote, TLocal> | (() => TRemote)): Synced<TLocal>;
|
|
216
217
|
|
|
@@ -230,4 +231,4 @@ declare const internal: {
|
|
|
230
231
|
runWithRetry: typeof runWithRetry;
|
|
231
232
|
};
|
|
232
233
|
|
|
233
|
-
export { type FieldTransforms, type FieldTransformsInner, type ObservablePersistAsyncStoragePluginOptions, type ObservablePersistIndexedDBPluginOptions, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservableSyncFunctions, type ObservableSyncSetParams, type OnErrorRetryParams, type PendingChanges, type PersistMetadata, type PersistOptions, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedErrorParams, type SyncedGetParams, type SyncedGetSetBaseParams, type SyncedGetSetSubscribeBaseParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, configureSynced, createRevertChanges, deepEqual, diffObjects, internal, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|
|
234
|
+
export { type FieldTransforms, type FieldTransformsInner, type ObservablePersistAsyncStoragePluginOptions, type ObservablePersistIndexedDBPluginOptions, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservableSyncFunctions, type ObservableSyncSetParams, type OnErrorRetryParams, type PendingChanges, type PersistMetadata, type PersistOptions, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedErrorParams, type SyncedGetParams, type SyncedGetSetBaseParams, type SyncedGetSetSubscribeBaseParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, configureSynced, createRevertChanges, deepEqual, diffObjects, getAllSyncStates, internal, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|
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
|
}
|
|
@@ -243,7 +259,8 @@ var {
|
|
|
243
259
|
getValueAtPath,
|
|
244
260
|
globalState,
|
|
245
261
|
registerMiddleware,
|
|
246
|
-
symbolLinked
|
|
262
|
+
symbolLinked,
|
|
263
|
+
setNodeValue
|
|
247
264
|
} = state.internal;
|
|
248
265
|
var mapSyncPlugins = /* @__PURE__ */ new WeakMap();
|
|
249
266
|
var allSyncStates = /* @__PURE__ */ new Map();
|
|
@@ -324,9 +341,14 @@ function mergeChanges(changes) {
|
|
|
324
341
|
const existing = changesByPath.get(pathStr);
|
|
325
342
|
if (existing) {
|
|
326
343
|
if (change.valueAtPath === existing.prevAtPath) {
|
|
327
|
-
changesOut.
|
|
344
|
+
const idx = changesOut.indexOf(existing);
|
|
345
|
+
if (idx >= 0) {
|
|
346
|
+
changesOut.splice(idx, 1);
|
|
347
|
+
}
|
|
348
|
+
changesByPath.delete(pathStr);
|
|
328
349
|
} else {
|
|
329
350
|
existing.valueAtPath = change.valueAtPath;
|
|
351
|
+
existing.pathTypes = change.pathTypes;
|
|
330
352
|
}
|
|
331
353
|
} else {
|
|
332
354
|
let found = false;
|
|
@@ -955,6 +977,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
955
977
|
const runGet = () => {
|
|
956
978
|
var _a;
|
|
957
979
|
const onChange = async ({ value, mode, lastSync: lastSync2 }) => {
|
|
980
|
+
var _a2;
|
|
958
981
|
mode = mode || syncOptions.mode || "set";
|
|
959
982
|
if (value !== void 0) {
|
|
960
983
|
value = transformLoadData(value, syncOptions, true, "get");
|
|
@@ -1011,6 +1034,9 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
1011
1034
|
});
|
|
1012
1035
|
}
|
|
1013
1036
|
}
|
|
1037
|
+
if (options == null ? void 0 : options.resetLastSync) {
|
|
1038
|
+
setNodeValue(node, (_a2 = syncOptions.initial) != null ? _a2 : void 0);
|
|
1039
|
+
}
|
|
1014
1040
|
onChangeRemote2(() => {
|
|
1015
1041
|
if (state.isPlainObject(value)) {
|
|
1016
1042
|
value = state.ObservableHint.plain(value);
|
|
@@ -1232,6 +1258,14 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
1232
1258
|
node.dirtyFn = sync;
|
|
1233
1259
|
await promise;
|
|
1234
1260
|
};
|
|
1261
|
+
syncState$.lastSync.onChange(({ value }) => {
|
|
1262
|
+
const metadata = metadatas.get(obs$);
|
|
1263
|
+
if (metadata && metadata.lastSync !== value) {
|
|
1264
|
+
updateMetadataImmediate(obs$, localState, syncState$, syncOptions, {
|
|
1265
|
+
lastSync: value
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
});
|
|
1235
1269
|
const onAllPersistLoaded = () => {
|
|
1236
1270
|
var _a, _b;
|
|
1237
1271
|
let parentNode = node;
|
|
@@ -1255,7 +1289,10 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
1255
1289
|
});
|
|
1256
1290
|
return syncState$;
|
|
1257
1291
|
}
|
|
1258
|
-
|
|
1292
|
+
function getAllSyncStates() {
|
|
1293
|
+
return Array.from(allSyncStates.entries());
|
|
1294
|
+
}
|
|
1295
|
+
var { getProxy, globalState: globalState2, setNodeValue: setNodeValue2, getNodeValue: getNodeValue2 } = state.internal;
|
|
1259
1296
|
function enableActivateSyncedNode() {
|
|
1260
1297
|
globalState2.activateSyncedNode = function activateSyncedNode(node, newValue) {
|
|
1261
1298
|
const obs$ = getProxy(node);
|
|
@@ -1278,7 +1315,7 @@ function enableActivateSyncedNode() {
|
|
|
1278
1315
|
} else {
|
|
1279
1316
|
newValue = initial;
|
|
1280
1317
|
}
|
|
1281
|
-
|
|
1318
|
+
setNodeValue2(node, promiseReturn ? void 0 : newValue);
|
|
1282
1319
|
syncObservable(obs$, { ...node.activationState, get, set });
|
|
1283
1320
|
return { update: onChange, value: newValue };
|
|
1284
1321
|
} else {
|
|
@@ -1339,6 +1376,7 @@ exports.configureSynced = configureSynced;
|
|
|
1339
1376
|
exports.createRevertChanges = createRevertChanges;
|
|
1340
1377
|
exports.deepEqual = deepEqual;
|
|
1341
1378
|
exports.diffObjects = diffObjects;
|
|
1379
|
+
exports.getAllSyncStates = getAllSyncStates;
|
|
1342
1380
|
exports.internal = internal5;
|
|
1343
1381
|
exports.mapSyncPlugins = mapSyncPlugins;
|
|
1344
1382
|
exports.onChangeRemote = onChangeRemote2;
|
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
|
}
|
|
@@ -241,7 +257,8 @@ var {
|
|
|
241
257
|
getValueAtPath,
|
|
242
258
|
globalState,
|
|
243
259
|
registerMiddleware,
|
|
244
|
-
symbolLinked
|
|
260
|
+
symbolLinked,
|
|
261
|
+
setNodeValue
|
|
245
262
|
} = internal;
|
|
246
263
|
var mapSyncPlugins = /* @__PURE__ */ new WeakMap();
|
|
247
264
|
var allSyncStates = /* @__PURE__ */ new Map();
|
|
@@ -322,9 +339,14 @@ function mergeChanges(changes) {
|
|
|
322
339
|
const existing = changesByPath.get(pathStr);
|
|
323
340
|
if (existing) {
|
|
324
341
|
if (change.valueAtPath === existing.prevAtPath) {
|
|
325
|
-
changesOut.
|
|
342
|
+
const idx = changesOut.indexOf(existing);
|
|
343
|
+
if (idx >= 0) {
|
|
344
|
+
changesOut.splice(idx, 1);
|
|
345
|
+
}
|
|
346
|
+
changesByPath.delete(pathStr);
|
|
326
347
|
} else {
|
|
327
348
|
existing.valueAtPath = change.valueAtPath;
|
|
349
|
+
existing.pathTypes = change.pathTypes;
|
|
328
350
|
}
|
|
329
351
|
} else {
|
|
330
352
|
let found = false;
|
|
@@ -953,6 +975,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
953
975
|
const runGet = () => {
|
|
954
976
|
var _a;
|
|
955
977
|
const onChange = async ({ value, mode, lastSync: lastSync2 }) => {
|
|
978
|
+
var _a2;
|
|
956
979
|
mode = mode || syncOptions.mode || "set";
|
|
957
980
|
if (value !== void 0) {
|
|
958
981
|
value = transformLoadData(value, syncOptions, true, "get");
|
|
@@ -1009,6 +1032,9 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
1009
1032
|
});
|
|
1010
1033
|
}
|
|
1011
1034
|
}
|
|
1035
|
+
if (options == null ? void 0 : options.resetLastSync) {
|
|
1036
|
+
setNodeValue(node, (_a2 = syncOptions.initial) != null ? _a2 : void 0);
|
|
1037
|
+
}
|
|
1012
1038
|
onChangeRemote2(() => {
|
|
1013
1039
|
if (isPlainObject(value)) {
|
|
1014
1040
|
value = ObservableHint.plain(value);
|
|
@@ -1230,6 +1256,14 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
1230
1256
|
node.dirtyFn = sync;
|
|
1231
1257
|
await promise;
|
|
1232
1258
|
};
|
|
1259
|
+
syncState$.lastSync.onChange(({ value }) => {
|
|
1260
|
+
const metadata = metadatas.get(obs$);
|
|
1261
|
+
if (metadata && metadata.lastSync !== value) {
|
|
1262
|
+
updateMetadataImmediate(obs$, localState, syncState$, syncOptions, {
|
|
1263
|
+
lastSync: value
|
|
1264
|
+
});
|
|
1265
|
+
}
|
|
1266
|
+
});
|
|
1233
1267
|
const onAllPersistLoaded = () => {
|
|
1234
1268
|
var _a, _b;
|
|
1235
1269
|
let parentNode = node;
|
|
@@ -1253,7 +1287,10 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
1253
1287
|
});
|
|
1254
1288
|
return syncState$;
|
|
1255
1289
|
}
|
|
1256
|
-
|
|
1290
|
+
function getAllSyncStates() {
|
|
1291
|
+
return Array.from(allSyncStates.entries());
|
|
1292
|
+
}
|
|
1293
|
+
var { getProxy, globalState: globalState2, setNodeValue: setNodeValue2, getNodeValue: getNodeValue2 } = internal;
|
|
1257
1294
|
function enableActivateSyncedNode() {
|
|
1258
1295
|
globalState2.activateSyncedNode = function activateSyncedNode(node, newValue) {
|
|
1259
1296
|
const obs$ = getProxy(node);
|
|
@@ -1276,7 +1313,7 @@ function enableActivateSyncedNode() {
|
|
|
1276
1313
|
} else {
|
|
1277
1314
|
newValue = initial;
|
|
1278
1315
|
}
|
|
1279
|
-
|
|
1316
|
+
setNodeValue2(node, promiseReturn ? void 0 : newValue);
|
|
1280
1317
|
syncObservable(obs$, { ...node.activationState, get, set });
|
|
1281
1318
|
return { update: onChange, value: newValue };
|
|
1282
1319
|
} else {
|
|
@@ -1331,4 +1368,4 @@ var internal5 = {
|
|
|
1331
1368
|
runWithRetry
|
|
1332
1369
|
};
|
|
1333
1370
|
|
|
1334
|
-
export { combineTransforms, configureObservableSync, configureSynced, createRevertChanges, deepEqual, diffObjects, internal5 as internal, mapSyncPlugins, onChangeRemote2 as onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|
|
1371
|
+
export { combineTransforms, configureObservableSync, configureSynced, createRevertChanges, deepEqual, diffObjects, getAllSyncStates, internal5 as internal, mapSyncPlugins, onChangeRemote2 as onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };
|