@legendapp/state 2.2.0-next.2 → 2.2.0-next.4
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.ts +2 -6
- package/index.js +86 -56
- package/index.js.map +1 -1
- package/index.mjs +86 -56
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/persist-plugins/firebase.js +3 -3
- package/persist-plugins/firebase.js.map +1 -1
- package/persist-plugins/firebase.mjs +3 -3
- package/persist-plugins/firebase.mjs.map +1 -1
- package/persist.js +129 -87
- package/persist.js.map +1 -1
- package/persist.mjs +130 -88
- package/persist.mjs.map +1 -1
- package/src/ObservableObject.d.ts +3 -1
- package/src/globals.d.ts +3 -7
- package/src/observable.d.ts +6 -6
- package/src/observableInterfaces.d.ts +42 -10
- package/src/persist/persistActivateNode.d.ts +18 -0
- package/src/persist/persistObservable.d.ts +1 -0
|
@@ -96,7 +96,7 @@ type PrimitiveKeys<T> = Pick<T, {
|
|
|
96
96
|
type NonPrimitiveKeys<T> = Pick<T, {
|
|
97
97
|
[K in keyof T]-?: T[K] extends Primitive ? never : K;
|
|
98
98
|
}[keyof T]>;
|
|
99
|
-
type Recurse<T, K extends keyof T, TRecurse> = T[K] extends ObservableReadable ? T[K] : T[K] extends Promise<infer t> ? Observable<t & WithState> : T[K] extends () => infer t ? t extends Observable ? t : Observable<t> & T[K] : T[K] extends (params:
|
|
99
|
+
type Recurse<T, K extends keyof T, TRecurse> = T[K] extends ObservableReadable ? T[K] : T[K] extends Promise<infer t> ? Observable<t & WithState> : T[K] extends () => infer t ? t extends Observable ? t : Observable<t> & T[K] : T[K] extends (params: ActivateParams) => infer t ? t extends Observable ? t : Observable<t> : T[K] extends (params: ActivateProxyParams<infer t>) => void ? t extends Observable ? Record<string, t> : Observable<Record<string, t>> : T[K] extends Function ? T[K] : T[K] extends ObservableProxyTwoWay<infer t, infer t2> ? ObservableProxyTwoWay<t, t2> : T[K] extends ObservableProxy<infer t> ? ObservableProxy<t> : T[K] extends ObservableProxyLink<infer t> ? ObservableProxyLink<t> : T[K] extends Map<any, any> | WeakMap<any, any> ? ObservableMap<T[K]> : T[K] extends Set<any> | WeakSet<any> ? ObservableSet<T[K]> : T[K] extends Set<any> | WeakSet<any> ? T[K] & ObservablePrimitiveBaseFns<T[K]> : T[K] extends OpaqueObject<T[K]> ? T[K] & ObservablePrimitiveChildFns<T[K]> : T[K] extends Primitive ? ObservablePrimitiveChild<T[K]> : T[K] extends Array<any> ? ObservableObjectFns<T[K]> & ObservableArrayOverride<T[K][number]> : T extends object ? TRecurse : T[K];
|
|
100
100
|
type ObservableFnsRecursiveUnsafe<T> = {
|
|
101
101
|
[K in keyof T]-?: Recurse<T, K, ObservableObject<NonNullable<T[K]>>>;
|
|
102
102
|
};
|
|
@@ -158,6 +158,8 @@ export type PersistOptionsRemote<T = any> = ObservablePersistenceConfigRemoteGlo
|
|
|
158
158
|
};
|
|
159
159
|
offlineBehavior?: false | 'retry';
|
|
160
160
|
changeTimeout?: number;
|
|
161
|
+
metadataTimeout?: number;
|
|
162
|
+
retry?: RetryOptions;
|
|
161
163
|
onGetError?: (error: Error) => void;
|
|
162
164
|
onSetError?: (error: Error) => void;
|
|
163
165
|
log?: (message?: any, ...optionalParams: any[]) => void;
|
|
@@ -234,6 +236,7 @@ export interface ObservablePersistRemoteGetParams<T> {
|
|
|
234
236
|
options: PersistOptions<T>;
|
|
235
237
|
dateModified?: number;
|
|
236
238
|
onGet: () => void;
|
|
239
|
+
onError: (error: Error) => void;
|
|
237
240
|
onChange: (params: ObservableOnChangeParams) => void | Promise<void>;
|
|
238
241
|
}
|
|
239
242
|
export type ObservablePersistRemoteGetFnParams<T> = Omit<ObservablePersistRemoteGetParams<T>, 'onGet'>;
|
|
@@ -260,11 +263,12 @@ export interface WithState {
|
|
|
260
263
|
state?: ObservableState;
|
|
261
264
|
_state?: ObservableState;
|
|
262
265
|
}
|
|
263
|
-
export interface
|
|
266
|
+
export interface ObservablePersistStateBase {
|
|
264
267
|
isLoadedLocal: boolean;
|
|
265
268
|
isEnabledLocal: boolean;
|
|
266
269
|
isEnabledRemote: boolean;
|
|
267
270
|
dateModified?: number;
|
|
271
|
+
syncCount?: number;
|
|
268
272
|
clearLocal: () => Promise<void>;
|
|
269
273
|
sync: () => Promise<void>;
|
|
270
274
|
getPendingChanges: () => Record<string, {
|
|
@@ -272,6 +276,10 @@ export interface ObservablePersistState extends ObservableState {
|
|
|
272
276
|
v?: any;
|
|
273
277
|
}> | undefined;
|
|
274
278
|
}
|
|
279
|
+
export type ObservablePersistState = ObservableState & ObservablePersistStateBase;
|
|
280
|
+
export type ObservablePersistStateInternal = ObservablePersistState & {
|
|
281
|
+
refreshNum: number;
|
|
282
|
+
};
|
|
275
283
|
export interface WithPersistState {
|
|
276
284
|
state?: ObservablePersistState;
|
|
277
285
|
_state?: ObservablePersistState;
|
|
@@ -357,7 +365,17 @@ interface BaseNodeValue {
|
|
|
357
365
|
lazy?: boolean | Function;
|
|
358
366
|
state?: Observable<ObservablePersistState>;
|
|
359
367
|
activated?: boolean;
|
|
360
|
-
proxyFn2?: (key: string, params:
|
|
368
|
+
proxyFn2?: (key: string, params: ActivateParams) => any;
|
|
369
|
+
activationState?: {
|
|
370
|
+
onSetFn?: (value: ListenerParams<any>, extra: OnSetExtra) => void;
|
|
371
|
+
update?: UpdateFn;
|
|
372
|
+
subscriber?: (params: SubscribeOptions) => void;
|
|
373
|
+
retryOptions?: RetryOptions;
|
|
374
|
+
lastSync: {
|
|
375
|
+
value?: number;
|
|
376
|
+
};
|
|
377
|
+
cacheOptions?: CacheOptions;
|
|
378
|
+
};
|
|
361
379
|
}
|
|
362
380
|
export interface RootNodeValue extends BaseNodeValue {
|
|
363
381
|
parent?: undefined;
|
|
@@ -401,16 +419,30 @@ export interface CacheOptions<T = any> {
|
|
|
401
419
|
local: string | PersistOptionsLocal<T>;
|
|
402
420
|
pluginLocal?: ClassConstructor<ObservablePersistLocal, T[]>;
|
|
403
421
|
}
|
|
404
|
-
export interface
|
|
405
|
-
|
|
422
|
+
export interface ActivateParams<T = any> {
|
|
423
|
+
obs$: Observable<T>;
|
|
424
|
+
onSet: (fn: (params: ListenerParams<T>, extra: OnSetExtra) => void) => void;
|
|
406
425
|
subscribe: (fn: (params: {
|
|
407
|
-
update:
|
|
426
|
+
update: UpdateFn;
|
|
427
|
+
refresh: () => void;
|
|
408
428
|
}) => void) => void;
|
|
409
|
-
cache: (cacheOptions: CacheOptions<T> | (() => CacheOptions<T>)) => void;
|
|
410
|
-
updateLastSync: (lastSync: number) => void;
|
|
411
429
|
}
|
|
412
|
-
export interface
|
|
413
|
-
proxy: (fn: (key: string, params:
|
|
430
|
+
export interface ActivateProxyParams<T = any> extends ActivateParams {
|
|
431
|
+
proxy: (fn: (key: string, params: ActivateParams<T>) => T | Promise<T>) => void;
|
|
414
432
|
}
|
|
415
433
|
export type UpdateFn = (params: ObservableOnChangeParams) => void;
|
|
434
|
+
export interface RetryOptions {
|
|
435
|
+
infinite?: boolean;
|
|
436
|
+
times?: number;
|
|
437
|
+
delay?: number;
|
|
438
|
+
backoff?: 'constant' | 'exponential';
|
|
439
|
+
maxDelay?: number;
|
|
440
|
+
}
|
|
441
|
+
export interface OnSetExtra {
|
|
442
|
+
update: UpdateFn;
|
|
443
|
+
}
|
|
444
|
+
export interface SubscribeOptions {
|
|
445
|
+
update: UpdateFn;
|
|
446
|
+
refresh: () => void;
|
|
447
|
+
}
|
|
416
448
|
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CacheOptions, ObservablePersistStateBase, RetryOptions } from '@legendapp/state';
|
|
2
|
+
export declare function persistActivateNode(): void;
|
|
3
|
+
declare module '@legendapp/state' {
|
|
4
|
+
interface ActivateParams<T> {
|
|
5
|
+
cache: (cacheOptions: CacheOptions<T> | (() => CacheOptions<T>)) => void;
|
|
6
|
+
updateLastSync: (lastSync: number) => void;
|
|
7
|
+
retry: (options: RetryOptions) => void;
|
|
8
|
+
}
|
|
9
|
+
interface OnSetExtra {
|
|
10
|
+
updateLastSync: (lastSync: number) => void;
|
|
11
|
+
applyRemoteChange: (fn: () => void) => void;
|
|
12
|
+
}
|
|
13
|
+
interface SubscribeOptions {
|
|
14
|
+
applyRemoteChange: (fn: () => void) => void;
|
|
15
|
+
}
|
|
16
|
+
interface ObservableState extends ObservablePersistStateBase {
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -3,6 +3,7 @@ export declare const mapPersistences: WeakMap<ClassConstructor<ObservablePersist
|
|
|
3
3
|
persist: ObservablePersistLocal | ObservablePersistRemoteClass;
|
|
4
4
|
initialized?: Observable<boolean>;
|
|
5
5
|
}>;
|
|
6
|
+
export declare function onChangeRemote(cb: () => void): void;
|
|
6
7
|
export declare function transformOutData(value: any, path: string[], pathTypes: TypeAtPath[], { transform, fieldTransforms }: {
|
|
7
8
|
transform?: PersistTransform;
|
|
8
9
|
fieldTransforms?: FieldTransforms<any>;
|