@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.
@@ -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: ComputedParams) => infer t ? t extends Observable ? t : Observable<t> : T[K] extends (params: ComputedProxyParams<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];
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 ObservablePersistState extends ObservableState {
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: ComputedParams) => any;
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 ComputedParams<T = any> {
405
- onSet: (fn: (params: ListenerParams<T>) => void) => void;
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: (props: ObservableOnChangeParams) => void;
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 ComputedProxyParams<T = any> extends ComputedParams {
413
- proxy: (fn: (key: string, params: ComputedParams<T>) => T | Promise<T>) => void;
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>;