@legendapp/state 3.0.0-alpha.0 → 3.0.0-alpha.2

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.
Files changed (323) hide show
  1. package/.DS_Store +0 -0
  2. package/CHANGELOG.md +1 -827
  3. package/LICENSE +1 -21
  4. package/README.md +1 -141
  5. package/as/arrayAsRecord.d.mts +5 -0
  6. package/as/arrayAsRecord.d.ts +5 -0
  7. package/as/arrayAsRecord.js +28 -0
  8. package/as/arrayAsRecord.mjs +26 -0
  9. package/as/arrayAsSet.d.mts +5 -0
  10. package/as/arrayAsSet.d.ts +5 -0
  11. package/as/arrayAsSet.js +13 -0
  12. package/as/arrayAsSet.mjs +11 -0
  13. package/as/arrayAsString.d.mts +5 -0
  14. package/as/arrayAsString.d.ts +5 -0
  15. package/as/arrayAsString.js +13 -0
  16. package/as/arrayAsString.mjs +11 -0
  17. package/as/numberAsString.d.mts +5 -0
  18. package/as/numberAsString.d.ts +5 -0
  19. package/as/numberAsString.js +13 -0
  20. package/as/numberAsString.mjs +11 -0
  21. package/as/recordAsArray.d.mts +5 -0
  22. package/as/recordAsArray.d.ts +5 -0
  23. package/as/recordAsArray.js +25 -0
  24. package/as/recordAsArray.mjs +23 -0
  25. package/as/recordAsString.d.mts +5 -0
  26. package/as/recordAsString.d.ts +5 -0
  27. package/as/recordAsString.js +13 -0
  28. package/as/recordAsString.mjs +11 -0
  29. package/as/setAsArray.d.mts +5 -0
  30. package/as/setAsArray.d.ts +5 -0
  31. package/as/setAsArray.js +13 -0
  32. package/as/setAsArray.mjs +11 -0
  33. package/as/setAsString.d.mts +5 -0
  34. package/as/setAsString.d.ts +5 -0
  35. package/as/setAsString.js +13 -0
  36. package/as/setAsString.mjs +11 -0
  37. package/as/stringAsArray.d.mts +5 -0
  38. package/as/stringAsArray.d.ts +5 -0
  39. package/as/stringAsArray.js +13 -0
  40. package/as/stringAsArray.mjs +11 -0
  41. package/as/stringAsNumber.d.mts +5 -0
  42. package/as/stringAsNumber.d.ts +5 -0
  43. package/as/stringAsNumber.js +16 -0
  44. package/as/stringAsNumber.mjs +14 -0
  45. package/as/stringAsRecord.d.mts +5 -0
  46. package/as/stringAsRecord.d.ts +5 -0
  47. package/as/stringAsRecord.js +15 -0
  48. package/as/stringAsRecord.mjs +13 -0
  49. package/as/stringAsSet.d.mts +5 -0
  50. package/as/stringAsSet.d.ts +5 -0
  51. package/as/stringAsSet.js +13 -0
  52. package/as/stringAsSet.mjs +11 -0
  53. package/babel.d.mts +21 -0
  54. package/babel.d.ts +21 -2
  55. package/babel.js +57 -53
  56. package/babel.mjs +65 -0
  57. package/config/enable$GetSet.js +13 -14
  58. package/config/enable$GetSet.mjs +13 -14
  59. package/config/enableReactComponents.d.mts +9 -0
  60. package/config/enableReactComponents.d.ts +4 -2
  61. package/config/enableReactComponents.js +13 -10
  62. package/config/enableReactComponents.mjs +13 -10
  63. package/config/enableReactNativeComponents.d.mts +22 -0
  64. package/config/enableReactNativeComponents.d.ts +6 -4
  65. package/config/enableReactNativeComponents.js +43 -47
  66. package/config/enableReactNativeComponents.mjs +43 -47
  67. package/config/enableReactTracking.d.mts +7 -0
  68. package/config/enableReactTracking.d.ts +3 -2
  69. package/config/enableReactTracking.js +33 -38
  70. package/config/enableReactTracking.mjs +33 -38
  71. package/config/enableReactUse.d.mts +10 -0
  72. package/config/enableReactUse.d.ts +4 -1
  73. package/config/enableReactUse.js +15 -14
  74. package/config/enableReactUse.mjs +15 -14
  75. package/config/{enable$GetSet.d.ts → enable_GetSet.d.mts} +4 -2
  76. package/config/enable_GetSet.d.ts +10 -0
  77. package/config/enable_PeekAssign.d.mts +10 -0
  78. package/config/enable_PeekAssign.d.ts +4 -2
  79. package/config/enable_PeekAssign.js +13 -14
  80. package/config/enable_PeekAssign.mjs +13 -14
  81. package/helpers/pageHash.d.mts +9 -0
  82. package/helpers/pageHash.d.ts +2 -0
  83. package/helpers/pageHash.js +25 -30
  84. package/helpers/pageHash.mjs +25 -30
  85. package/helpers/pageHashParams.d.mts +9 -0
  86. package/helpers/pageHashParams.d.ts +2 -0
  87. package/helpers/pageHashParams.js +34 -37
  88. package/helpers/pageHashParams.mjs +34 -37
  89. package/helpers/time.d.mts +6 -0
  90. package/helpers/time.d.ts +6 -3
  91. package/helpers/time.js +17 -17
  92. package/helpers/time.mjs +17 -17
  93. package/helpers/trackHistory.d.mts +6 -0
  94. package/helpers/trackHistory.d.ts +6 -0
  95. package/helpers/trackHistory.js +21 -0
  96. package/helpers/trackHistory.mjs +19 -0
  97. package/helpers/undoRedo.d.mts +37 -0
  98. package/helpers/undoRedo.d.ts +37 -0
  99. package/helpers/undoRedo.js +68 -0
  100. package/helpers/undoRedo.mjs +66 -0
  101. package/index.d.mts +404 -0
  102. package/index.d.ts +371 -28
  103. package/index.js +2003 -2164
  104. package/index.mjs +2003 -2164
  105. package/package.json +254 -185
  106. package/persist-plugins/async-storage.d.mts +18 -0
  107. package/persist-plugins/async-storage.d.ts +6 -3
  108. package/persist-plugins/async-storage.js +79 -86
  109. package/persist-plugins/async-storage.mjs +79 -86
  110. package/persist-plugins/indexeddb.d.mts +29 -0
  111. package/persist-plugins/indexeddb.d.ts +6 -3
  112. package/persist-plugins/indexeddb.js +331 -348
  113. package/persist-plugins/indexeddb.mjs +331 -348
  114. package/persist-plugins/local-storage.d.mts +23 -0
  115. package/persist-plugins/local-storage.d.ts +8 -5
  116. package/persist-plugins/local-storage.js +74 -76
  117. package/persist-plugins/local-storage.mjs +74 -76
  118. package/persist-plugins/mmkv.d.mts +18 -0
  119. package/persist-plugins/mmkv.d.ts +6 -3
  120. package/persist-plugins/mmkv.js +82 -86
  121. package/persist-plugins/mmkv.mjs +82 -86
  122. package/react-hooks/createObservableHook.d.mts +5 -0
  123. package/react-hooks/createObservableHook.d.ts +4 -1
  124. package/react-hooks/createObservableHook.js +29 -30
  125. package/react-hooks/createObservableHook.mjs +25 -30
  126. package/react-hooks/useHover.d.mts +5 -0
  127. package/react-hooks/useHover.d.ts +5 -3
  128. package/react-hooks/useHover.js +29 -29
  129. package/react-hooks/useHover.mjs +29 -29
  130. package/react-hooks/useMeasure.d.mts +9 -0
  131. package/react-hooks/useMeasure.d.ts +5 -2
  132. package/react-hooks/useMeasure.js +30 -32
  133. package/react-hooks/useMeasure.mjs +30 -32
  134. package/react-hooks/useObservableNextRouter.d.mts +35 -0
  135. package/react-hooks/useObservableNextRouter.d.ts +9 -7
  136. package/react-hooks/useObservableNextRouter.js +64 -77
  137. package/react-hooks/useObservableNextRouter.mjs +60 -77
  138. package/react.d.mts +157 -0
  139. package/react.d.ts +157 -21
  140. package/react.js +458 -749
  141. package/react.mjs +457 -752
  142. package/sync-plugins/crud.d.mts +54 -0
  143. package/sync-plugins/crud.d.ts +12 -10
  144. package/sync-plugins/crud.js +253 -270
  145. package/sync-plugins/crud.mjs +253 -270
  146. package/sync-plugins/fetch.d.mts +21 -0
  147. package/sync-plugins/fetch.d.ts +7 -4
  148. package/sync-plugins/fetch.js +50 -37
  149. package/sync-plugins/fetch.mjs +50 -37
  150. package/sync-plugins/keel.d.mts +108 -0
  151. package/sync-plugins/keel.d.ts +17 -15
  152. package/sync-plugins/keel.js +229 -462
  153. package/sync-plugins/keel.mjs +227 -464
  154. package/sync-plugins/supabase.d.mts +39 -0
  155. package/sync-plugins/supabase.d.ts +16 -14
  156. package/sync-plugins/supabase.js +128 -128
  157. package/sync-plugins/supabase.mjs +128 -128
  158. package/sync-plugins/tanstack-query.d.mts +14 -0
  159. package/sync-plugins/tanstack-query.d.ts +7 -4
  160. package/sync-plugins/tanstack-query.js +51 -57
  161. package/sync-plugins/tanstack-query.mjs +51 -57
  162. package/sync-plugins/tanstack-react-query.d.mts +8 -0
  163. package/sync-plugins/tanstack-react-query.d.ts +6 -1
  164. package/sync-plugins/tanstack-react-query.js +2 -2
  165. package/sync-plugins/tanstack-react-query.mjs +2 -2
  166. package/sync.d.mts +351 -0
  167. package/sync.d.ts +349 -9
  168. package/sync.js +909 -962
  169. package/sync.mjs +919 -972
  170. package/trace.d.mts +9 -0
  171. package/trace.d.ts +9 -4
  172. package/trace.js +72 -62
  173. package/trace.mjs +72 -62
  174. package/types/babel.d.ts +1 -12
  175. package/babel.js.map +0 -1
  176. package/config/enable$GetSet.js.map +0 -1
  177. package/config/enable$GetSet.mjs.map +0 -1
  178. package/config/enableReactComponents.js.map +0 -1
  179. package/config/enableReactComponents.mjs.map +0 -1
  180. package/config/enableReactNativeComponents.js.map +0 -1
  181. package/config/enableReactNativeComponents.mjs.map +0 -1
  182. package/config/enableReactTracking.js.map +0 -1
  183. package/config/enableReactTracking.mjs.map +0 -1
  184. package/config/enableReactUse.js.map +0 -1
  185. package/config/enableReactUse.mjs.map +0 -1
  186. package/config/enable_PeekAssign.js.map +0 -1
  187. package/config/enable_PeekAssign.mjs.map +0 -1
  188. package/helpers/pageHash.js.map +0 -1
  189. package/helpers/pageHash.mjs.map +0 -1
  190. package/helpers/pageHashParams.js.map +0 -1
  191. package/helpers/pageHashParams.mjs.map +0 -1
  192. package/helpers/time.js.map +0 -1
  193. package/helpers/time.mjs.map +0 -1
  194. package/history.d.ts +0 -1
  195. package/history.js +0 -24
  196. package/history.js.map +0 -1
  197. package/history.mjs +0 -22
  198. package/history.mjs.map +0 -1
  199. package/index.js.map +0 -1
  200. package/index.mjs.map +0 -1
  201. package/persist-plugins/async-storage.js.map +0 -1
  202. package/persist-plugins/async-storage.mjs.map +0 -1
  203. package/persist-plugins/indexeddb.js.map +0 -1
  204. package/persist-plugins/indexeddb.mjs.map +0 -1
  205. package/persist-plugins/local-storage.js.map +0 -1
  206. package/persist-plugins/local-storage.mjs.map +0 -1
  207. package/persist-plugins/mmkv.js.map +0 -1
  208. package/persist-plugins/mmkv.mjs.map +0 -1
  209. package/react-hooks/createObservableHook.js.map +0 -1
  210. package/react-hooks/createObservableHook.mjs.map +0 -1
  211. package/react-hooks/useHover.js.map +0 -1
  212. package/react-hooks/useHover.mjs.map +0 -1
  213. package/react-hooks/useMeasure.js.map +0 -1
  214. package/react-hooks/useMeasure.mjs.map +0 -1
  215. package/react-hooks/useObservableNextRouter.js.map +0 -1
  216. package/react-hooks/useObservableNextRouter.mjs.map +0 -1
  217. package/react.js.map +0 -1
  218. package/react.mjs.map +0 -1
  219. package/src/ObservableObject.ts +0 -1350
  220. package/src/ObservablePrimitive.ts +0 -62
  221. package/src/babel/index.ts +0 -83
  222. package/src/batching.ts +0 -357
  223. package/src/computed.ts +0 -18
  224. package/src/config/enable$GetSet.ts +0 -30
  225. package/src/config/enableReactComponents.ts +0 -26
  226. package/src/config/enableReactNativeComponents.ts +0 -102
  227. package/src/config/enableReactTracking.ts +0 -62
  228. package/src/config/enableReactUse.ts +0 -32
  229. package/src/config/enable_PeekAssign.ts +0 -31
  230. package/src/config.ts +0 -47
  231. package/src/createObservable.ts +0 -47
  232. package/src/event.ts +0 -26
  233. package/src/globals.ts +0 -235
  234. package/src/helpers/pageHash.ts +0 -41
  235. package/src/helpers/pageHashParams.ts +0 -55
  236. package/src/helpers/time.ts +0 -30
  237. package/src/helpers.ts +0 -231
  238. package/src/history/trackHistory.ts +0 -29
  239. package/src/history/undoRedo.ts +0 -111
  240. package/src/is.ts +0 -63
  241. package/src/linked.ts +0 -17
  242. package/src/observable.ts +0 -32
  243. package/src/observableInterfaces.ts +0 -151
  244. package/src/observableTypes.ts +0 -232
  245. package/src/observe.ts +0 -89
  246. package/src/old-plugins/firebase.ts +0 -1053
  247. package/src/onChange.ts +0 -146
  248. package/src/persist/configureObservablePersistence.ts +0 -7
  249. package/src/persist/fieldTransformer.ts +0 -149
  250. package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
  251. package/src/persist/persistObservable.ts +0 -1034
  252. package/src/persist-plugins/async-storage.ts +0 -99
  253. package/src/persist-plugins/indexeddb.ts +0 -432
  254. package/src/persist-plugins/local-storage.ts +0 -86
  255. package/src/persist-plugins/mmkv.ts +0 -91
  256. package/src/proxy.ts +0 -28
  257. package/src/react/Computed.tsx +0 -8
  258. package/src/react/For.tsx +0 -116
  259. package/src/react/Memo.tsx +0 -4
  260. package/src/react/Reactive.tsx +0 -53
  261. package/src/react/Show.tsx +0 -33
  262. package/src/react/Switch.tsx +0 -43
  263. package/src/react/react-globals.ts +0 -3
  264. package/src/react/reactInterfaces.ts +0 -32
  265. package/src/react/reactive-observer.tsx +0 -210
  266. package/src/react/useComputed.ts +0 -36
  267. package/src/react/useEffectOnce.ts +0 -41
  268. package/src/react/useIsMounted.ts +0 -16
  269. package/src/react/useMount.ts +0 -15
  270. package/src/react/useObservable.ts +0 -24
  271. package/src/react/useObservableReducer.ts +0 -52
  272. package/src/react/useObservableState.ts +0 -30
  273. package/src/react/useObserve.ts +0 -54
  274. package/src/react/useObserveEffect.ts +0 -40
  275. package/src/react/usePauseProvider.tsx +0 -16
  276. package/src/react/useSelector.ts +0 -167
  277. package/src/react/useUnmount.ts +0 -8
  278. package/src/react/useWhen.ts +0 -9
  279. package/src/react-hooks/createObservableHook.ts +0 -53
  280. package/src/react-hooks/useHover.ts +0 -40
  281. package/src/react-hooks/useMeasure.ts +0 -48
  282. package/src/react-hooks/useObservableNextRouter.ts +0 -137
  283. package/src/retry.ts +0 -71
  284. package/src/setupTracking.ts +0 -26
  285. package/src/sync/activateSyncedNode.ts +0 -128
  286. package/src/sync/configureObservableSync.ts +0 -7
  287. package/src/sync/persistTypes.ts +0 -216
  288. package/src/sync/syncHelpers.ts +0 -180
  289. package/src/sync/syncObservable.ts +0 -1056
  290. package/src/sync/syncObservableAdapter.ts +0 -31
  291. package/src/sync/syncTypes.ts +0 -189
  292. package/src/sync/synced.ts +0 -21
  293. package/src/sync-plugins/crud.ts +0 -412
  294. package/src/sync-plugins/fetch.ts +0 -80
  295. package/src/sync-plugins/keel.ts +0 -495
  296. package/src/sync-plugins/supabase.ts +0 -249
  297. package/src/sync-plugins/tanstack-query.ts +0 -113
  298. package/src/sync-plugins/tanstack-react-query.ts +0 -12
  299. package/src/trace/traceHelpers.ts +0 -11
  300. package/src/trace/useTraceListeners.ts +0 -34
  301. package/src/trace/useTraceUpdates.ts +0 -24
  302. package/src/trace/useVerifyNotTracking.ts +0 -33
  303. package/src/trace/useVerifyOneRender.ts +0 -10
  304. package/src/trackSelector.ts +0 -52
  305. package/src/tracking.ts +0 -43
  306. package/src/types/babel.d.ts +0 -12
  307. package/src/when.ts +0 -75
  308. package/sync-plugins/crud.js.map +0 -1
  309. package/sync-plugins/crud.mjs.map +0 -1
  310. package/sync-plugins/fetch.js.map +0 -1
  311. package/sync-plugins/fetch.mjs.map +0 -1
  312. package/sync-plugins/keel.js.map +0 -1
  313. package/sync-plugins/keel.mjs.map +0 -1
  314. package/sync-plugins/supabase.js.map +0 -1
  315. package/sync-plugins/supabase.mjs.map +0 -1
  316. package/sync-plugins/tanstack-query.js.map +0 -1
  317. package/sync-plugins/tanstack-query.mjs.map +0 -1
  318. package/sync-plugins/tanstack-react-query.js.map +0 -1
  319. package/sync-plugins/tanstack-react-query.mjs.map +0 -1
  320. package/sync.js.map +0 -1
  321. package/sync.mjs.map +0 -1
  322. package/trace.js.map +0 -1
  323. package/trace.mjs.map +0 -1
package/sync.d.ts CHANGED
@@ -1,11 +1,351 @@
1
- import type { SyncedOptionsGlobal } from './src/sync/syncTypes';
2
- export { configureObservableSync } from './src/sync/configureObservableSync';
3
- export * from './src/sync/persistTypes';
4
- export * from './src/sync/syncHelpers';
5
- export { mapSyncPlugins, onChangeRemote, syncObservable } from './src/sync/syncObservable';
6
- export * from './src/sync/syncTypes';
7
- export { synced } from './src/sync/synced';
8
- export declare function isInRemoteChange(): boolean;
9
- export declare const internal: {
1
+ import { MMKVConfiguration } from 'react-native-mmkv';
2
+ import { AsyncStorageStatic } from '@react-native-async-storage/async-storage';
3
+ import { ClassConstructor, GetMode, SetParams, NodeValue, UpdateFn, ObservableParam, LinkedOptions, RetryOptions, Change, Observable, ObservableSyncState, UpdateFnParams, Selector, TypeAtPath, ObservableState, RecordValue, ArrayValue } from '@legendapp/state';
4
+ import { SyncedOptionsGlobal as SyncedOptionsGlobal$1 } from '@legendapp/state/sync';
5
+ import { DatabaseReference, Query } from 'firebase/database';
6
+
7
+ interface PersistOptions<T = any> {
8
+ name: string;
9
+ plugin?: ClassConstructor<ObservablePersistPlugin, T[]>;
10
+ retrySync?: boolean;
11
+ transform?: SyncTransform<T>;
12
+ readonly?: boolean;
13
+ mmkv?: MMKVConfiguration;
14
+ indexedDB?: {
15
+ prefixID?: string;
16
+ itemID?: string;
17
+ };
18
+ options?: any;
19
+ }
20
+ interface SyncedGetParams {
21
+ value: any;
22
+ lastSync: number | undefined;
23
+ updateLastSync: (lastSync: number) => void;
24
+ mode: GetMode;
25
+ refresh: () => void;
26
+ }
27
+ interface SyncedSetParams<T> extends SetParams<T> {
28
+ node: NodeValue;
29
+ valuePrevious: T;
30
+ update: UpdateFn;
31
+ refresh: () => void;
32
+ cancelRetry: () => void;
33
+ retryNum: number;
34
+ fromSubscribe: boolean | undefined;
35
+ }
36
+ interface SyncedSubscribeParams<T = any> {
37
+ node: NodeValue;
38
+ value$: ObservableParam<T>;
39
+ update: UpdateFn;
40
+ refresh: () => void;
41
+ }
42
+ interface SyncedOptions<TRemote = any, TLocal = TRemote> extends Omit<LinkedOptions<TRemote>, 'get' | 'set'> {
43
+ get?: (params: SyncedGetParams) => Promise<TRemote> | TRemote;
44
+ set?: (params: SyncedSetParams<TRemote>) => void | Promise<any>;
45
+ subscribe?: (params: SyncedSubscribeParams<TRemote>) => (() => void) | void;
46
+ retry?: RetryOptions;
47
+ persist?: PersistOptions<any>;
48
+ debounceSet?: number;
49
+ syncMode?: 'auto' | 'manual';
50
+ mode?: GetMode;
51
+ transform?: SyncTransform<TLocal, TRemote>;
52
+ enableSync?: boolean;
53
+ onGetError?: (error: Error) => void;
54
+ onSetError?: (error: Error) => void;
55
+ log?: (message?: any, ...optionalParams: any[]) => void;
56
+ onBeforeSet?: () => void;
57
+ onAfterSet?: () => void;
58
+ allowSetIfGetError?: boolean;
59
+ }
60
+ interface SyncedOptionsGlobal<T = any> extends Omit<SyncedOptions<T>, 'get' | 'set' | 'persist' | 'initial' | 'waitForSet' | 'waitFor' | 'transform' | 'subscribe'> {
61
+ persist?: ObservablePersistPluginOptions & Omit<PersistOptions, 'name' | 'transform' | 'options'>;
62
+ }
63
+ interface ObservablePersistPluginOptions {
64
+ onGetError?: (error: Error) => void;
65
+ onSetError?: (error: Error) => void;
66
+ indexedDB?: {
67
+ databaseName: string;
68
+ version: number;
69
+ tableNames: string[];
70
+ };
71
+ asyncStorage?: {
72
+ AsyncStorage: AsyncStorageStatic;
73
+ preload?: boolean | string[];
74
+ };
75
+ }
76
+ interface ObservablePersistPlugin {
77
+ initialize?(config: ObservablePersistPluginOptions): void | Promise<void>;
78
+ loadTable?(table: string, config: PersistOptions): Promise<any> | void;
79
+ getTable<T = any>(table: string, init: object, config: PersistOptions): T;
80
+ set(table: string, changes: Change[], config: PersistOptions): Promise<any> | void;
81
+ deleteTable(table: string, config: PersistOptions): Promise<any> | void;
82
+ getMetadata(table: string, config: PersistOptions): PersistMetadata;
83
+ setMetadata(table: string, metadata: PersistMetadata, config: PersistOptions): Promise<any> | void;
84
+ deleteMetadata(table: string, config: PersistOptions): Promise<any> | void;
85
+ }
86
+ interface PersistMetadata {
87
+ id?: '__legend_metadata';
88
+ lastSync?: number;
89
+ pending?: any;
90
+ }
91
+ type SyncTransformMethod = 'get' | 'set';
92
+ interface SyncTransform<TLocal = any, TSaved = TLocal> {
93
+ load?: (value: TSaved, method: SyncTransformMethod) => TLocal | Promise<TLocal>;
94
+ save?: (value: TLocal) => TSaved | Promise<TSaved>;
95
+ }
96
+ interface ObservableSyncSetParams<T> {
97
+ syncState: Observable<ObservableSyncState>;
98
+ value$: ObservableParam<T>;
99
+ options: SyncedOptions<T>;
100
+ changes: Change[];
101
+ value: T;
102
+ valuePrevious: T;
103
+ }
104
+ interface ObservableSyncGetParams<T> {
105
+ state: Observable<ObservableSyncState>;
106
+ value$: ObservableParam<T>;
107
+ options: SyncedOptions<T>;
108
+ dateModified?: number;
109
+ lastSync?: number;
110
+ mode?: GetMode;
111
+ onGet: () => void;
112
+ onError: (error: Error) => void;
113
+ onChange: (params: UpdateFnParams) => void | Promise<void>;
114
+ }
115
+ type ObservableSyncRemoteGetFnParams<T> = Omit<ObservableSyncGetParams<T>, 'onGet'>;
116
+ interface ObservableSyncClass {
117
+ get?<T>(params: ObservableSyncGetParams<T>): void;
118
+ set?<T>(params: ObservableSyncSetParams<T>): void | Promise<void | {
119
+ changes?: object;
120
+ dateModified?: number;
121
+ lastSync?: number;
122
+ pathStrs?: string[];
123
+ }>;
124
+ }
125
+ interface ObservableSyncFunctions<T = any> {
126
+ get?(params: ObservableSyncRemoteGetFnParams<T>): T | Promise<T>;
127
+ set?(params: ObservableSyncSetParams<T>): void | Promise<void | {
128
+ changes?: object | undefined;
129
+ dateModified?: number;
130
+ lastSync?: number;
131
+ }>;
132
+ }
133
+ interface SubscribeOptions {
134
+ node: NodeValue;
135
+ update: UpdateFn;
136
+ refresh: () => void;
137
+ }
138
+ type Synced<T> = T;
139
+
140
+ declare function configureObservableSync(options?: SyncedOptionsGlobal$1): void;
141
+
142
+ interface PersistTransform<TOrig = any, TSaved = TOrig> {
143
+ load?: (value: TSaved) => TOrig | Promise<TOrig>;
144
+ save?: (value: TOrig) => TSaved | Promise<TSaved>;
145
+ }
146
+ interface LegacyPersistOptionsLocal<T = any> {
147
+ name: string;
148
+ transform?: PersistTransform<T>;
149
+ fieldTransforms?: FieldTransforms<T>;
150
+ readonly?: boolean;
151
+ mmkv?: MMKVConfiguration;
152
+ indexedDB?: {
153
+ prefixID?: string;
154
+ itemID?: string;
155
+ };
156
+ options?: any;
157
+ }
158
+ type LegacyPersistOptionsRemote<T = any> = ObservablePersistenceConfigRemoteGlobalOptions & {
159
+ readonly?: boolean;
160
+ waitForGet?: Selector<any>;
161
+ waitForSet?: LinkedOptions['waitForSet'];
162
+ manual?: boolean;
163
+ fieldTransforms?: FieldTransforms<T>;
164
+ allowSetIfError?: boolean;
165
+ transform?: PersistTransform<T>;
166
+ firebase?: {
167
+ refPath: (uid: string | undefined) => string;
168
+ query?: (ref: DatabaseReference) => DatabaseReference | Query;
169
+ queryByModified?: QueryByModified<T>;
170
+ ignoreKeys?: string[];
171
+ requireAuth?: boolean;
172
+ mode?: 'once' | 'realtime';
173
+ };
174
+ offlineBehavior?: false | 'retry';
175
+ changeTimeout?: number;
176
+ metadataTimeout?: number;
177
+ retry?: RetryOptions;
178
+ onGetError?: (error: Error) => void;
179
+ onSetError?: (error: Error) => void;
180
+ log?: (message?: any, ...optionalParams: any[]) => void;
181
+ onBeforeSet?: () => void;
182
+ onSet?: () => void;
183
+ };
184
+ interface ObservablePersistenceConfigLocalGlobalOptions {
185
+ onGetError?: (error: Error) => void;
186
+ onSetError?: (error: Error) => void;
187
+ indexedDB?: {
188
+ databaseName: string;
189
+ version: number;
190
+ tableNames: string[];
191
+ };
192
+ asyncStorage?: {
193
+ AsyncStorage: AsyncStorageStatic;
194
+ preload?: boolean | string[];
195
+ };
196
+ }
197
+ interface ObservablePersistenceConfigRemoteGlobalOptions {
198
+ debounceSet?: number;
199
+ dateModifiedKey?: string;
200
+ offlineBehavior?: false | 'retry';
201
+ retry?: RetryOptions;
202
+ onGetError?: (error: Error) => void;
203
+ onSetError?: (error: Error) => void;
204
+ log?: (logLevel: 'verbose' | 'warning' | 'error', message: any, ...optionalParams: any[]) => void;
205
+ onBeforeSet?: () => void;
206
+ onAfterSet?: () => void;
207
+ }
208
+ interface ObservablePersistenceConfig {
209
+ pluginLocal?: ClassConstructor<ObservablePersistPlugin>;
210
+ pluginRemote?: ClassConstructor<ObservablePersistRemoteClass> | ObservablePersistRemoteFunctions;
211
+ localOptions?: ObservablePersistenceConfigLocalGlobalOptions;
212
+ remoteOptions?: ObservablePersistenceConfigRemoteGlobalOptions;
213
+ }
214
+ interface LegacyPersistOptions<T = any> {
215
+ local?: string | LegacyPersistOptionsLocal<T>;
216
+ remote?: LegacyPersistOptionsRemote<T>;
217
+ pluginLocal?: ClassConstructor<ObservablePersistPlugin>;
218
+ pluginRemote?: ClassConstructor<ObservablePersistRemoteClass> | ObservablePersistRemoteFunctions<T>;
219
+ }
220
+ interface ObservableOnChangeParams {
221
+ value: unknown;
222
+ path?: string[];
223
+ pathTypes?: TypeAtPath[];
224
+ mode?: GetMode;
225
+ dateModified?: number | undefined;
226
+ lastSync?: number | undefined;
227
+ }
228
+ interface ObservablePersistRemoteSetParams<T> {
229
+ syncState: Observable<ObservablePersistState>;
230
+ obs: ObservableParam<T>;
231
+ options: LegacyPersistOptions<T>;
232
+ changes: Change[];
233
+ value: T;
234
+ }
235
+ interface ObservablePersistRemoteGetParams<T> {
236
+ state: Observable<ObservablePersistState>;
237
+ obs: ObservableParam<T>;
238
+ options: LegacyPersistOptions<T>;
239
+ dateModified?: number;
240
+ lastSync?: number;
241
+ mode?: GetMode;
242
+ onGet: () => void;
243
+ onError: (error: Error) => void;
244
+ onChange: (params: ObservableOnChangeParams) => void | Promise<void>;
245
+ }
246
+ type ObservablePersistRemoteGetFnParams<T> = Omit<ObservablePersistRemoteGetParams<T>, 'onGet'>;
247
+ interface ObservablePersistRemoteClass {
248
+ get?<T>(params: ObservablePersistRemoteGetParams<T>): void;
249
+ set?<T>(params: ObservablePersistRemoteSetParams<T>): void | Promise<void | {
250
+ changes?: object;
251
+ dateModified?: number;
252
+ lastSync?: number;
253
+ pathStrs?: string[];
254
+ }>;
255
+ }
256
+ interface ObservablePersistRemoteFunctions<T = any> {
257
+ get?(params: ObservablePersistRemoteGetFnParams<T>): T | Promise<T>;
258
+ set?(params: ObservablePersistRemoteSetParams<T>): void | Promise<void | {
259
+ changes?: object | undefined;
260
+ dateModified?: number;
261
+ lastSync?: number;
262
+ }>;
263
+ }
264
+ interface ObservablePersistStateBase {
265
+ isLoadedLocal: boolean;
266
+ isEnabledLocal: boolean;
267
+ isEnabledRemote: boolean;
268
+ dateModified?: number;
269
+ lastSync?: number;
270
+ syncCount?: number;
271
+ clearLocal: () => Promise<void>;
272
+ sync: () => Promise<void>;
273
+ getPendingChanges: () => Record<string, {
274
+ p: any;
275
+ v?: any;
276
+ }> | undefined;
277
+ }
278
+ type ObservablePersistState = ObservableState & ObservablePersistStateBase;
279
+ declare type ObjectKeys<T> = Pick<T, {
280
+ [K in keyof T]-?: K extends string ? T[K] extends Record<string, any> ? T[K] extends any[] ? never : K : never : never;
281
+ }[keyof T]>;
282
+ declare type DictKeys<T> = Pick<T, {
283
+ [K in keyof T]-?: K extends string ? (T[K] extends Record<string, Record<string, any>> ? K : never) : never;
284
+ }[keyof T]>;
285
+ declare type ArrayKeys<T> = Pick<T, {
286
+ [K in keyof T]-?: K extends string | number ? (T[K] extends any[] ? K : never) : never;
287
+ }[keyof T]>;
288
+ declare type FieldTransforms<T> = (T extends Record<string, Record<string, any>> ? {
289
+ _dict: FieldTransformsInner<RecordValue<T>>;
290
+ } : never) | FieldTransformsInner<T>;
291
+ declare type FieldTransformsInner<T> = {
292
+ [K in keyof T]: string;
293
+ } & ({
294
+ [K in keyof ObjectKeys<T> as `${K}_obj`]?: FieldTransforms<T[K]>;
295
+ } | {
296
+ [K in keyof DictKeys<T> as `${K}_dict`]?: FieldTransforms<RecordValue<T[K]>>;
297
+ }) & {
298
+ [K in keyof ArrayKeys<T> as `${K}_arr`]?: FieldTransforms<ArrayValue<T[K]>>;
299
+ } & {
300
+ [K in keyof ArrayKeys<T> as `${K}_val`]?: FieldTransforms<ArrayValue<T[K]>>;
301
+ };
302
+ type QueryByModified<T> = boolean | {
303
+ [K in keyof T]?: QueryByModified<T[K]>;
304
+ } | {
305
+ '*'?: boolean;
306
+ };
307
+
308
+ declare function removeNullUndefined<T extends Record<string, any>>(a: T, recursive?: boolean): T;
309
+ declare function diffObjects<T extends Record<string, any>>(obj1: T, obj2: T, deep?: boolean): Partial<T>;
310
+ declare function deepEqual<T extends Record<string, any> = any>(a: T, b: T, ignoreFields?: string[], nullVsUndefined?: boolean): boolean;
311
+ declare function combineTransforms<T, T2>(...transforms: Partial<SyncTransform<T2, T>>[]): SyncTransform<T2, T>;
312
+ interface TransformStringifyOptions {
313
+ stringifyIf?: {
314
+ number?: boolean;
315
+ object?: boolean;
316
+ array?: boolean;
317
+ date?: boolean;
318
+ };
319
+ filterArrays?: boolean;
320
+ }
321
+ type TransformStringifyKeys<TRemote, TLocal> = (keyof TRemote | {
322
+ from: keyof TRemote;
323
+ to: keyof TLocal;
324
+ })[];
325
+ type StringToDate<T extends Record<string, any>> = {
326
+ [K in keyof T]: T[K] extends string ? string | Date : T[K];
327
+ };
328
+ declare function transformStringifyKeys<TRemote extends Record<string, any>, TLocal extends Record<string, any>>(...keys: TransformStringifyKeys<TRemote, TLocal>): SyncTransform<TLocal, TRemote>;
329
+ type TransformStringsToDates<T extends {}, Keys extends keyof T> = {
330
+ [K in Keys]: Date | Exclude<T[K], string>;
331
+ } & Omit<T, Keys>;
332
+ declare function transformStringifyDates<TRemote extends Record<string, any>, TLocal extends Record<string, any> = TRemote>(): SyncTransform<TLocal, TRemote>;
333
+ declare function transformStringifyDates<TRemote extends Record<string, any>, Keys extends keyof TRemote = keyof TRemote>(...args: Keys[]): SyncTransform<TransformStringsToDates<TRemote, Keys>, TRemote>;
334
+ declare function transformStringifyDates<TRemote extends Record<string, any>, TLocal extends Record<string, any> = TRemote>(...args: (keyof TRemote)[]): SyncTransform<TRemote, TLocal>;
335
+
336
+ declare const mapSyncPlugins: WeakMap<ClassConstructor<ObservablePersistPlugin | ObservableSyncClass>, {
337
+ plugin: ObservablePersistPlugin | ObservableSyncClass;
338
+ initialized: Observable<boolean>;
339
+ }>;
340
+ declare function onChangeRemote(cb: () => void): void;
341
+ declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: SyncedOptions<T>): Observable<ObservableSyncState>;
342
+ declare function syncObservable<T>(obs$: ObservableParam<T>, syncOptions: Synced<T>): Observable<ObservableSyncState>;
343
+
344
+ declare function synced<TRemote, TLocal = TRemote>(params: SyncedOptions<TRemote, TLocal> | (() => TRemote)): Synced<TLocal>;
345
+
346
+ declare function isInRemoteChange(): boolean;
347
+ declare const internal: {
10
348
  observableSyncConfiguration: SyncedOptionsGlobal;
11
349
  };
350
+
351
+ export { type FieldTransforms, type FieldTransformsInner, type LegacyPersistOptions, type LegacyPersistOptionsLocal, type LegacyPersistOptionsRemote, type ObservableOnChangeParams, type ObservablePersistPlugin, type ObservablePersistPluginOptions, type ObservablePersistRemoteClass, type ObservablePersistRemoteFunctions, type ObservablePersistRemoteGetFnParams, type ObservablePersistRemoteGetParams, type ObservablePersistRemoteSetParams, type ObservablePersistState, type ObservablePersistStateBase, type ObservablePersistenceConfig, type ObservablePersistenceConfigLocalGlobalOptions, type ObservablePersistenceConfigRemoteGlobalOptions, type ObservableSyncClass, type ObservableSyncFunctions, type ObservableSyncGetParams, type ObservableSyncRemoteGetFnParams, type ObservableSyncSetParams, type PersistMetadata, type PersistOptions, type PersistTransform, type QueryByModified, type StringToDate, type SubscribeOptions, type SyncTransform, type SyncTransformMethod, type Synced, type SyncedGetParams, type SyncedOptions, type SyncedOptionsGlobal, type SyncedSetParams, type SyncedSubscribeParams, type TransformStringifyKeys, type TransformStringifyOptions, type TransformStringsToDates, combineTransforms, configureObservableSync, deepEqual, diffObjects, internal, isInRemoteChange, mapSyncPlugins, onChangeRemote, removeNullUndefined, syncObservable, synced, transformStringifyDates, transformStringifyKeys };