@legendapp/state 3.0.0-alpha.1 → 3.0.0-alpha.3

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 (327) hide show
  1. package/.DS_Store +0 -0
  2. package/CHANGELOG.md +1 -831
  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 +4 -2
  95. package/helpers/trackHistory.js +13 -16
  96. package/helpers/trackHistory.mjs +13 -16
  97. package/helpers/undoRedo.d.mts +37 -0
  98. package/helpers/undoRedo.d.ts +5 -3
  99. package/helpers/undoRedo.js +59 -94
  100. package/helpers/undoRedo.mjs +59 -94
  101. package/index.d.mts +404 -0
  102. package/index.d.ts +371 -28
  103. package/index.js +2015 -2166
  104. package/index.mjs +2015 -2166
  105. package/package.json +254 -195
  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 -352
  113. package/persist-plugins/indexeddb.mjs +331 -352
  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 +910 -964
  169. package/sync.mjs +920 -974
  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/helpers/trackHistory.js.map +0 -1
  195. package/helpers/trackHistory.mjs.map +0 -1
  196. package/helpers/undoRedo.js.map +0 -1
  197. package/helpers/undoRedo.mjs.map +0 -1
  198. package/history.d.ts +0 -1
  199. package/history.js +0 -24
  200. package/history.js.map +0 -1
  201. package/history.mjs +0 -22
  202. package/history.mjs.map +0 -1
  203. package/index.js.map +0 -1
  204. package/index.mjs.map +0 -1
  205. package/persist-plugins/async-storage.js.map +0 -1
  206. package/persist-plugins/async-storage.mjs.map +0 -1
  207. package/persist-plugins/indexeddb.js.map +0 -1
  208. package/persist-plugins/indexeddb.mjs.map +0 -1
  209. package/persist-plugins/local-storage.js.map +0 -1
  210. package/persist-plugins/local-storage.mjs.map +0 -1
  211. package/persist-plugins/mmkv.js.map +0 -1
  212. package/persist-plugins/mmkv.mjs.map +0 -1
  213. package/react-hooks/createObservableHook.js.map +0 -1
  214. package/react-hooks/createObservableHook.mjs.map +0 -1
  215. package/react-hooks/useHover.js.map +0 -1
  216. package/react-hooks/useHover.mjs.map +0 -1
  217. package/react-hooks/useMeasure.js.map +0 -1
  218. package/react-hooks/useMeasure.mjs.map +0 -1
  219. package/react-hooks/useObservableNextRouter.js.map +0 -1
  220. package/react-hooks/useObservableNextRouter.mjs.map +0 -1
  221. package/react.js.map +0 -1
  222. package/react.mjs.map +0 -1
  223. package/src/ObservableObject.ts +0 -1350
  224. package/src/ObservablePrimitive.ts +0 -62
  225. package/src/babel/index.ts +0 -83
  226. package/src/batching.ts +0 -357
  227. package/src/computed.ts +0 -18
  228. package/src/config/enable$GetSet.ts +0 -30
  229. package/src/config/enableReactComponents.ts +0 -26
  230. package/src/config/enableReactNativeComponents.ts +0 -102
  231. package/src/config/enableReactTracking.ts +0 -62
  232. package/src/config/enableReactUse.ts +0 -32
  233. package/src/config/enable_PeekAssign.ts +0 -31
  234. package/src/config.ts +0 -47
  235. package/src/createObservable.ts +0 -47
  236. package/src/event.ts +0 -26
  237. package/src/globals.ts +0 -235
  238. package/src/helpers/pageHash.ts +0 -41
  239. package/src/helpers/pageHashParams.ts +0 -55
  240. package/src/helpers/time.ts +0 -30
  241. package/src/helpers/trackHistory.ts +0 -29
  242. package/src/helpers/undoRedo.ts +0 -111
  243. package/src/helpers.ts +0 -231
  244. package/src/is.ts +0 -63
  245. package/src/linked.ts +0 -17
  246. package/src/observable.ts +0 -32
  247. package/src/observableInterfaces.ts +0 -151
  248. package/src/observableTypes.ts +0 -232
  249. package/src/observe.ts +0 -89
  250. package/src/old-plugins/firebase.ts +0 -1053
  251. package/src/onChange.ts +0 -146
  252. package/src/persist/configureObservablePersistence.ts +0 -7
  253. package/src/persist/fieldTransformer.ts +0 -149
  254. package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
  255. package/src/persist/persistObservable.ts +0 -1034
  256. package/src/persist-plugins/async-storage.ts +0 -99
  257. package/src/persist-plugins/indexeddb.ts +0 -439
  258. package/src/persist-plugins/local-storage.ts +0 -86
  259. package/src/persist-plugins/mmkv.ts +0 -91
  260. package/src/proxy.ts +0 -28
  261. package/src/react/Computed.tsx +0 -8
  262. package/src/react/For.tsx +0 -116
  263. package/src/react/Memo.tsx +0 -4
  264. package/src/react/Reactive.tsx +0 -53
  265. package/src/react/Show.tsx +0 -33
  266. package/src/react/Switch.tsx +0 -43
  267. package/src/react/react-globals.ts +0 -3
  268. package/src/react/reactInterfaces.ts +0 -32
  269. package/src/react/reactive-observer.tsx +0 -210
  270. package/src/react/useComputed.ts +0 -36
  271. package/src/react/useEffectOnce.ts +0 -41
  272. package/src/react/useIsMounted.ts +0 -16
  273. package/src/react/useMount.ts +0 -15
  274. package/src/react/useObservable.ts +0 -24
  275. package/src/react/useObservableReducer.ts +0 -52
  276. package/src/react/useObservableState.ts +0 -30
  277. package/src/react/useObserve.ts +0 -54
  278. package/src/react/useObserveEffect.ts +0 -40
  279. package/src/react/usePauseProvider.tsx +0 -16
  280. package/src/react/useSelector.ts +0 -167
  281. package/src/react/useUnmount.ts +0 -8
  282. package/src/react/useWhen.ts +0 -9
  283. package/src/react-hooks/createObservableHook.ts +0 -53
  284. package/src/react-hooks/useHover.ts +0 -40
  285. package/src/react-hooks/useMeasure.ts +0 -48
  286. package/src/react-hooks/useObservableNextRouter.ts +0 -137
  287. package/src/retry.ts +0 -71
  288. package/src/setupTracking.ts +0 -26
  289. package/src/sync/activateSyncedNode.ts +0 -128
  290. package/src/sync/configureObservableSync.ts +0 -7
  291. package/src/sync/persistTypes.ts +0 -216
  292. package/src/sync/syncHelpers.ts +0 -180
  293. package/src/sync/syncObservable.ts +0 -1056
  294. package/src/sync/syncObservableAdapter.ts +0 -31
  295. package/src/sync/syncTypes.ts +0 -189
  296. package/src/sync/synced.ts +0 -21
  297. package/src/sync-plugins/crud.ts +0 -412
  298. package/src/sync-plugins/fetch.ts +0 -80
  299. package/src/sync-plugins/keel.ts +0 -495
  300. package/src/sync-plugins/supabase.ts +0 -249
  301. package/src/sync-plugins/tanstack-query.ts +0 -113
  302. package/src/sync-plugins/tanstack-react-query.ts +0 -12
  303. package/src/trace/traceHelpers.ts +0 -11
  304. package/src/trace/useTraceListeners.ts +0 -34
  305. package/src/trace/useTraceUpdates.ts +0 -24
  306. package/src/trace/useVerifyNotTracking.ts +0 -33
  307. package/src/trace/useVerifyOneRender.ts +0 -10
  308. package/src/trackSelector.ts +0 -52
  309. package/src/tracking.ts +0 -43
  310. package/src/types/babel.d.ts +0 -12
  311. package/src/when.ts +0 -75
  312. package/sync-plugins/crud.js.map +0 -1
  313. package/sync-plugins/crud.mjs.map +0 -1
  314. package/sync-plugins/fetch.js.map +0 -1
  315. package/sync-plugins/fetch.mjs.map +0 -1
  316. package/sync-plugins/keel.js.map +0 -1
  317. package/sync-plugins/keel.mjs.map +0 -1
  318. package/sync-plugins/supabase.js.map +0 -1
  319. package/sync-plugins/supabase.mjs.map +0 -1
  320. package/sync-plugins/tanstack-query.js.map +0 -1
  321. package/sync-plugins/tanstack-query.mjs.map +0 -1
  322. package/sync-plugins/tanstack-react-query.js.map +0 -1
  323. package/sync-plugins/tanstack-react-query.mjs.map +0 -1
  324. package/sync.js.map +0 -1
  325. package/sync.mjs.map +0 -1
  326. package/trace.js.map +0 -1
  327. 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 };