@legendapp/state 3.0.0-beta.43 → 3.0.0-beta.44

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.
@@ -1,4 +1,5 @@
1
1
  import { FCReactiveObject } from '@legendapp/state/react';
2
+ import { JSX } from 'react';
2
3
 
3
4
  declare function enableReactComponents(): void;
4
5
  declare module '@legendapp/state/react' {
@@ -1,4 +1,5 @@
1
1
  import { FCReactiveObject } from '@legendapp/state/react';
2
+ import { JSX } from 'react';
2
3
 
3
4
  declare function enableReactComponents(): void;
4
5
  declare module '@legendapp/state/react' {
@@ -1,3 +1,4 @@
1
+ import { JSX } from 'react';
1
2
  import { FCReactiveObject, FCReactive } from '@legendapp/state/react';
2
3
  import { ActivityIndicator, ActivityIndicatorProps, Button, ButtonProps, FlatList, FlatListProps, Image, ImageProps, Pressable, PressableProps, ScrollView, ScrollViewProps, SectionList, SectionListProps, Switch, SwitchProps, Text, TextProps, TextInput, TextInputProps, TouchableWithoutFeedback, TouchableWithoutFeedbackProps, View, ViewProps } from 'react-native';
3
4
 
@@ -1,3 +1,4 @@
1
+ import { JSX } from 'react';
1
2
  import { FCReactiveObject, FCReactive } from '@legendapp/state/react';
2
3
  import { ActivityIndicator, ActivityIndicatorProps, Button, ButtonProps, FlatList, FlatListProps, Image, ImageProps, Pressable, PressableProps, ScrollView, ScrollViewProps, SectionList, SectionListProps, Switch, SwitchProps, Text, TextProps, TextInput, TextInputProps, TouchableWithoutFeedback, TouchableWithoutFeedbackProps, View, ViewProps } from 'react-native';
3
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/state",
3
- "version": "3.0.0-beta.43",
3
+ "version": "3.0.0-beta.44",
4
4
  "description": "legend-state",
5
5
  "sideEffects": false,
6
6
  "private": false,
@@ -29,7 +29,7 @@ function createObservableHook(fn) {
29
29
  const _useState = React__default.default.useState;
30
30
  const _useReducer = React__default.default.useReducer;
31
31
  return function(...args) {
32
- const refObs = React__default.default.useRef();
32
+ const refObs = React__default.default.useRef(void 0);
33
33
  overrideHooks(refObs);
34
34
  fn(...args);
35
35
  React__default.default.useState = _useState;
@@ -23,7 +23,7 @@ function createObservableHook(fn) {
23
23
  const _useState = React.useState;
24
24
  const _useReducer = React.useReducer;
25
25
  return function(...args) {
26
- const refObs = React.useRef();
26
+ const refObs = React.useRef(void 0);
27
27
  overrideHooks(refObs);
28
28
  fn(...args);
29
29
  React.useState = _useState;
@@ -1,4 +1,5 @@
1
1
  import { FCReactiveObject, configureReactive } from '@legendapp/state/react';
2
+ import { JSX } from 'react';
2
3
 
3
4
  declare function enableReactComponents_(config: typeof configureReactive): void;
4
5
 
@@ -1,4 +1,5 @@
1
1
  import { FCReactiveObject, configureReactive } from '@legendapp/state/react';
2
+ import { JSX } from 'react';
2
3
 
3
4
  declare function enableReactComponents_(config: typeof configureReactive): void;
4
5
 
package/react.d.mts CHANGED
@@ -71,18 +71,20 @@ declare function Switch<T>({ value, children, }: {
71
71
  children: Partial<Record<'undefined' | 'default', () => ReactNode>>;
72
72
  }): ReactElement | null;
73
73
 
74
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
75
+ type ValueOfUnionKey$1<P, K extends PropertyKey> = P extends any ? (K extends keyof P ? P[K] : never) : never;
74
76
  type ShapeWithNew$<T> = Partial<Omit<T, 'children'>> & {
75
77
  [K in keyof T as K extends `$${string & K}` ? K : `$${string & K}`]?: Selector<T[K]>;
76
78
  } & {
77
79
  children?: Selector<ReactNode>;
78
80
  };
79
- interface BindKey<P, K extends keyof P = keyof P> {
81
+ interface BindKey<P, K extends KeysOfUnion<P> = KeysOfUnion<P>> {
80
82
  handler?: K;
81
- getValue?: P[K] extends infer T ? T extends (...args: any) => any ? (params: Parameters<T>[0]) => any : (e: any) => any : (e: any) => any;
83
+ getValue?: ValueOfUnionKey$1<P, K> extends infer T ? T extends (...args: any) => any ? (params: Parameters<T>[0]) => any : (e: any) => any : (e: any) => any;
82
84
  defaultValue?: any;
83
85
  selector?: (propsOut: Record<string, any>, p: Observable<any>) => any;
84
86
  }
85
- type BindKeys<P = any, K extends keyof P = keyof P> = Partial<Record<K, BindKey<P>>>;
87
+ type BindKeys<P = any, K extends KeysOfUnion<P> = KeysOfUnion<P>> = Partial<Record<K, BindKey<P, K>>>;
86
88
  type FCReactiveObject<T> = {
87
89
  [K in keyof T]: FC<ShapeWithNew$<T[K]>>;
88
90
  };
@@ -109,23 +111,24 @@ type ShapeWith$<T> = WithSelectorChildren<Partial<T>> & {
109
111
  type ObjectShapeWith$<T> = {
110
112
  [K in keyof T]: T[K] extends FC<infer P> ? FC<ShapeWith$<P>> : T[K];
111
113
  };
112
- type ReactifyProps<T, K extends keyof T> = T & {
113
- [P in K as `$${string & P}`]?: Selector<T[P]>;
114
+ type ValueOfUnionKey<T, K extends PropertyKey> = T extends any ? (K extends keyof T ? T[K] : never) : never;
115
+ type ReactifyProps<T, K extends KeysOfUnion<T>> = T & {
116
+ [P in K as `$${string & P}`]?: Selector<ValueOfUnionKey<T, P>>;
114
117
  };
115
118
  declare const hasSymbol: false | ((key: string) => symbol);
116
119
  declare function observer<P extends FC<any>>(component: P): P;
117
120
  declare function reactive<T extends object>(component: React.ComponentClass<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
118
121
  declare function reactive<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
119
122
  declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
120
- declare function reactive<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
121
- declare function reactive<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
123
+ declare function reactive<T extends object, K extends KeysOfUnion<T>>(component: React.FC<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
124
+ declare function reactive<T extends object, K extends KeysOfUnion<T>>(component: React.ForwardRefExoticComponent<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
122
125
  declare function reactive<T extends object>(component: React.ComponentClass<T>): React.ComponentClass<ShapeWith$<T>>;
123
126
  declare function reactive<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
124
127
  declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
125
128
  declare function reactiveObserver<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
126
129
  declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
127
- declare function reactiveObserver<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
128
- declare function reactiveObserver<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
130
+ declare function reactiveObserver<T extends object, K extends KeysOfUnion<T>>(component: React.FC<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
131
+ declare function reactiveObserver<T extends object, K extends KeysOfUnion<T>>(component: React.ForwardRefExoticComponent<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
129
132
  declare function reactiveObserver<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
130
133
  declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
131
134
  declare function reactiveComponents<P extends Record<string, any>>(components: P): ObjectShapeWith$<P>;
@@ -192,4 +195,4 @@ declare function configureReactive({ components, binders, }: {
192
195
  binders?: Record<string, BindKeys>;
193
196
  }): void;
194
197
 
195
- export { type BindKey, type BindKeys, Computed, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, 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 };
198
+ export { type BindKey, type BindKeys, Computed, type FCReactive, type FCReactiveObject, For, type IReactive, type KeysOfUnion, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, 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
@@ -71,18 +71,20 @@ declare function Switch<T>({ value, children, }: {
71
71
  children: Partial<Record<'undefined' | 'default', () => ReactNode>>;
72
72
  }): ReactElement | null;
73
73
 
74
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
75
+ type ValueOfUnionKey$1<P, K extends PropertyKey> = P extends any ? (K extends keyof P ? P[K] : never) : never;
74
76
  type ShapeWithNew$<T> = Partial<Omit<T, 'children'>> & {
75
77
  [K in keyof T as K extends `$${string & K}` ? K : `$${string & K}`]?: Selector<T[K]>;
76
78
  } & {
77
79
  children?: Selector<ReactNode>;
78
80
  };
79
- interface BindKey<P, K extends keyof P = keyof P> {
81
+ interface BindKey<P, K extends KeysOfUnion<P> = KeysOfUnion<P>> {
80
82
  handler?: K;
81
- getValue?: P[K] extends infer T ? T extends (...args: any) => any ? (params: Parameters<T>[0]) => any : (e: any) => any : (e: any) => any;
83
+ getValue?: ValueOfUnionKey$1<P, K> extends infer T ? T extends (...args: any) => any ? (params: Parameters<T>[0]) => any : (e: any) => any : (e: any) => any;
82
84
  defaultValue?: any;
83
85
  selector?: (propsOut: Record<string, any>, p: Observable<any>) => any;
84
86
  }
85
- type BindKeys<P = any, K extends keyof P = keyof P> = Partial<Record<K, BindKey<P>>>;
87
+ type BindKeys<P = any, K extends KeysOfUnion<P> = KeysOfUnion<P>> = Partial<Record<K, BindKey<P, K>>>;
86
88
  type FCReactiveObject<T> = {
87
89
  [K in keyof T]: FC<ShapeWithNew$<T[K]>>;
88
90
  };
@@ -109,23 +111,24 @@ type ShapeWith$<T> = WithSelectorChildren<Partial<T>> & {
109
111
  type ObjectShapeWith$<T> = {
110
112
  [K in keyof T]: T[K] extends FC<infer P> ? FC<ShapeWith$<P>> : T[K];
111
113
  };
112
- type ReactifyProps<T, K extends keyof T> = T & {
113
- [P in K as `$${string & P}`]?: Selector<T[P]>;
114
+ type ValueOfUnionKey<T, K extends PropertyKey> = T extends any ? (K extends keyof T ? T[K] : never) : never;
115
+ type ReactifyProps<T, K extends KeysOfUnion<T>> = T & {
116
+ [P in K as `$${string & P}`]?: Selector<ValueOfUnionKey<T, P>>;
114
117
  };
115
118
  declare const hasSymbol: false | ((key: string) => symbol);
116
119
  declare function observer<P extends FC<any>>(component: P): P;
117
120
  declare function reactive<T extends object>(component: React.ComponentClass<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
118
121
  declare function reactive<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
119
122
  declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
120
- declare function reactive<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
121
- declare function reactive<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
123
+ declare function reactive<T extends object, K extends KeysOfUnion<T>>(component: React.FC<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
124
+ declare function reactive<T extends object, K extends KeysOfUnion<T>>(component: React.ForwardRefExoticComponent<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
122
125
  declare function reactive<T extends object>(component: React.ComponentClass<T>): React.ComponentClass<ShapeWith$<T>>;
123
126
  declare function reactive<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
124
127
  declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
125
128
  declare function reactiveObserver<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
126
129
  declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
127
- declare function reactiveObserver<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
128
- declare function reactiveObserver<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
130
+ declare function reactiveObserver<T extends object, K extends KeysOfUnion<T>>(component: React.FC<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
131
+ declare function reactiveObserver<T extends object, K extends KeysOfUnion<T>>(component: React.ForwardRefExoticComponent<T>, keys: K[] | KeysOfUnion<T>[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
129
132
  declare function reactiveObserver<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
130
133
  declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
131
134
  declare function reactiveComponents<P extends Record<string, any>>(components: P): ObjectShapeWith$<P>;
@@ -192,4 +195,4 @@ declare function configureReactive({ components, binders, }: {
192
195
  binders?: Record<string, BindKeys>;
193
196
  }): void;
194
197
 
195
- export { type BindKey, type BindKeys, Computed, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, 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 };
198
+ export { type BindKey, type BindKeys, Computed, type FCReactive, type FCReactiveObject, For, type IReactive, type KeysOfUnion, Memo, type ObjectShapeWith$, type ReactifyProps, Reactive, type ShapeWith$, type ShapeWithNew$, 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
@@ -286,7 +286,9 @@ function For({
286
286
  return null;
287
287
  const value = useSelector(() => each.get(isOptimized ? optimized : true));
288
288
  if (!item && children) {
289
- const refChildren = React.useRef();
289
+ const refChildren = React.useRef(
290
+ void 0
291
+ );
290
292
  refChildren.current = children;
291
293
  item = React.useMemo(() => observer(({ item$, id }) => refChildren.current(item$, id)), []);
292
294
  } else {
package/react.mjs CHANGED
@@ -280,7 +280,9 @@ function For({
280
280
  return null;
281
281
  const value = useSelector(() => each.get(isOptimized ? optimized : true));
282
282
  if (!item && children) {
283
- const refChildren = useRef();
283
+ const refChildren = useRef(
284
+ void 0
285
+ );
284
286
  refChildren.current = children;
285
287
  item = useMemo(() => observer(({ item$, id }) => refChildren.current(item$, id)), []);
286
288
  } else {
@@ -18,11 +18,21 @@ function ensureId(obj, fieldId, generateId, node) {
18
18
  }
19
19
  }
20
20
  function computeLastSync(data, fieldUpdatedAt, fieldCreatedAt) {
21
+ if (!state.isArray(data) || data.length === 0) {
22
+ return 0;
23
+ }
21
24
  let newLastSync = 0;
22
25
  for (let i = 0; i < data.length; i++) {
23
- const updated = (fieldUpdatedAt ? data[i][fieldUpdatedAt] : 0) || (fieldCreatedAt ? data[i][fieldCreatedAt] : 0);
26
+ const row = data[i];
27
+ if (!row || typeof row !== "object") {
28
+ continue;
29
+ }
30
+ const updated = (fieldUpdatedAt ? row[fieldUpdatedAt] : 0) || (fieldCreatedAt ? row[fieldCreatedAt] : 0);
24
31
  if (updated) {
25
- newLastSync = Math.max(newLastSync, +new Date(updated));
32
+ const updatedTime = +new Date(updated);
33
+ if (!Number.isNaN(updatedTime)) {
34
+ newLastSync = Math.max(newLastSync, updatedTime);
35
+ }
26
36
  }
27
37
  }
28
38
  return newLastSync;
@@ -16,11 +16,21 @@ function ensureId(obj, fieldId, generateId, node) {
16
16
  }
17
17
  }
18
18
  function computeLastSync(data, fieldUpdatedAt, fieldCreatedAt) {
19
+ if (!isArray(data) || data.length === 0) {
20
+ return 0;
21
+ }
19
22
  let newLastSync = 0;
20
23
  for (let i = 0; i < data.length; i++) {
21
- const updated = (fieldUpdatedAt ? data[i][fieldUpdatedAt] : 0) || (fieldCreatedAt ? data[i][fieldCreatedAt] : 0);
24
+ const row = data[i];
25
+ if (!row || typeof row !== "object") {
26
+ continue;
27
+ }
28
+ const updated = (fieldUpdatedAt ? row[fieldUpdatedAt] : 0) || (fieldCreatedAt ? row[fieldCreatedAt] : 0);
22
29
  if (updated) {
23
- newLastSync = Math.max(newLastSync, +new Date(updated));
30
+ const updatedTime = +new Date(updated);
31
+ if (!Number.isNaN(updatedTime)) {
32
+ newLastSync = Math.max(newLastSync, updatedTime);
33
+ }
24
34
  }
25
35
  }
26
36
  return newLastSync;
@@ -81,7 +81,7 @@ function setupRealtime(props) {
81
81
  modifiedClients.add(client);
82
82
  const originalRawRequest = client.client.rawRequest;
83
83
  client.client.rawRequest = (action, body) => {
84
- if (action.startsWith("list")) {
84
+ if (action.startsWith("list") || action.startsWith("get")) {
85
85
  realtimeState.current = {
86
86
  lastAction: action,
87
87
  lastParams: body
@@ -79,7 +79,7 @@ function setupRealtime(props) {
79
79
  modifiedClients.add(client);
80
80
  const originalRawRequest = client.client.rawRequest;
81
81
  client.client.rawRequest = (action, body) => {
82
- if (action.startsWith("list")) {
82
+ if (action.startsWith("list") || action.startsWith("get")) {
83
83
  realtimeState.current = {
84
84
  lastAction: action,
85
85
  lastParams: body
package/sync.d.mts CHANGED
@@ -46,6 +46,7 @@ interface SyncedSubscribeParams<T = any> extends SyncedGetSetSubscribeBaseParams
46
46
  onError: (error: Error) => void;
47
47
  }
48
48
  interface SyncedErrorParams {
49
+ syncOptions?: Readonly<SyncedOptions<any>>;
49
50
  source: 'get' | 'set' | 'subscribe';
50
51
  type: 'get' | 'set';
51
52
  retry: OnErrorRetryParams;
package/sync.d.ts CHANGED
@@ -46,6 +46,7 @@ interface SyncedSubscribeParams<T = any> extends SyncedGetSetSubscribeBaseParams
46
46
  onError: (error: Error) => void;
47
47
  }
48
48
  interface SyncedErrorParams {
49
+ syncOptions?: Readonly<SyncedOptions<any>>;
49
50
  source: 'get' | 'set' | 'subscribe';
50
51
  type: 'get' | 'set';
51
52
  retry: OnErrorRetryParams;
package/sync.js CHANGED
@@ -685,6 +685,7 @@ async function doChangeRemote(changeInfo) {
685
685
  if (lastErrorHandled !== error) {
686
686
  if (!params) {
687
687
  params = {
688
+ syncOptions,
688
689
  setParams,
689
690
  source: "set",
690
691
  type: "set",
@@ -692,6 +693,11 @@ async function doChangeRemote(changeInfo) {
692
693
  retry: setParams,
693
694
  revert: createRevertChanges(setParams.value$, setParams.changes)
694
695
  };
696
+ } else if (!params.syncOptions) {
697
+ params = {
698
+ ...params,
699
+ syncOptions
700
+ };
695
701
  }
696
702
  state$.error.set(error);
697
703
  (_a2 = syncOptions.onError) == null ? void 0 : _a2.call(syncOptions, error, params);
@@ -1017,9 +1023,15 @@ function syncObservable(obs$, syncOptionsOrSynced) {
1017
1023
  if (lastErrorHandled !== error) {
1018
1024
  if (!params) {
1019
1025
  params = {
1026
+ syncOptions,
1020
1027
  source: "get",
1021
1028
  type: "get",
1022
- retry: params
1029
+ retry: { retryNum: 0, cancelRetry: false }
1030
+ };
1031
+ } else if (!params.syncOptions) {
1032
+ params = {
1033
+ ...params,
1034
+ syncOptions
1023
1035
  };
1024
1036
  }
1025
1037
  syncState$.error.set(error);
@@ -1211,6 +1223,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
1211
1223
  refresh: () => state.when(syncState$.isLoaded, callSync),
1212
1224
  onError: (error) => onGetError(error, {
1213
1225
  source: "subscribe",
1226
+ syncOptions,
1214
1227
  subscribeParams,
1215
1228
  type: "get",
1216
1229
  retry: {}
@@ -1309,7 +1322,11 @@ function syncObservable(obs$, syncOptionsOrSynced) {
1309
1322
  };
1310
1323
  if (state.isPromise(got)) {
1311
1324
  got.then(handle).catch((error) => {
1312
- onGetError(error, { getParams, source: "get", type: "get", retry: getParams }, true);
1325
+ onGetError(
1326
+ error,
1327
+ { getParams, syncOptions, source: "get", type: "get", retry: getParams },
1328
+ true
1329
+ );
1313
1330
  });
1314
1331
  } else {
1315
1332
  handle(got);
package/sync.mjs CHANGED
@@ -683,6 +683,7 @@ async function doChangeRemote(changeInfo) {
683
683
  if (lastErrorHandled !== error) {
684
684
  if (!params) {
685
685
  params = {
686
+ syncOptions,
686
687
  setParams,
687
688
  source: "set",
688
689
  type: "set",
@@ -690,6 +691,11 @@ async function doChangeRemote(changeInfo) {
690
691
  retry: setParams,
691
692
  revert: createRevertChanges(setParams.value$, setParams.changes)
692
693
  };
694
+ } else if (!params.syncOptions) {
695
+ params = {
696
+ ...params,
697
+ syncOptions
698
+ };
693
699
  }
694
700
  state$.error.set(error);
695
701
  (_a2 = syncOptions.onError) == null ? void 0 : _a2.call(syncOptions, error, params);
@@ -1015,9 +1021,15 @@ function syncObservable(obs$, syncOptionsOrSynced) {
1015
1021
  if (lastErrorHandled !== error) {
1016
1022
  if (!params) {
1017
1023
  params = {
1024
+ syncOptions,
1018
1025
  source: "get",
1019
1026
  type: "get",
1020
- retry: params
1027
+ retry: { retryNum: 0, cancelRetry: false }
1028
+ };
1029
+ } else if (!params.syncOptions) {
1030
+ params = {
1031
+ ...params,
1032
+ syncOptions
1021
1033
  };
1022
1034
  }
1023
1035
  syncState$.error.set(error);
@@ -1209,6 +1221,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
1209
1221
  refresh: () => when(syncState$.isLoaded, callSync),
1210
1222
  onError: (error) => onGetError(error, {
1211
1223
  source: "subscribe",
1224
+ syncOptions,
1212
1225
  subscribeParams,
1213
1226
  type: "get",
1214
1227
  retry: {}
@@ -1307,7 +1320,11 @@ function syncObservable(obs$, syncOptionsOrSynced) {
1307
1320
  };
1308
1321
  if (isPromise$1(got)) {
1309
1322
  got.then(handle).catch((error) => {
1310
- onGetError(error, { getParams, source: "get", type: "get", retry: getParams }, true);
1323
+ onGetError(
1324
+ error,
1325
+ { getParams, syncOptions, source: "get", type: "get", retry: getParams },
1326
+ true
1327
+ );
1311
1328
  });
1312
1329
  } else {
1313
1330
  handle(got);
@@ -1,5 +1,6 @@
1
1
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
2
  import type { IReactive, FCReactiveObject } from '@legendapp/state/react';
3
+ import type { JSX } from 'react';
3
4
 
4
5
  declare module '@legendapp/state/react' {
5
6
  // eslint-disable-next-line @typescript-eslint/no-empty-interface