@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
@@ -1,11 +1,14 @@
1
1
  import { SyncedOptions } from '@legendapp/state/sync';
2
- import { DefaultError, MutationObserverOptions, QueryClient, QueryKey, QueryObserverOptions } from '@tanstack/query-core';
3
- export interface ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'> {
2
+ import { QueryKey, QueryObserverOptions, QueryClient, MutationObserverOptions, DefaultError } from '@tanstack/query-core';
3
+
4
+ interface ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey'> {
4
5
  queryKey?: TQueryKey | (() => TQueryKey);
5
6
  }
6
- export interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends SyncedOptions<TData> {
7
+ interface SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey extends QueryKey> extends SyncedOptions<TData> {
7
8
  queryClient: QueryClient;
8
9
  query: ObservableQueryOptions<TQueryFnData, TError, TData, TQueryKey>;
9
10
  mutation?: MutationObserverOptions<TData, TError, void>;
10
11
  }
11
- export declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): NonNullable<TData>;
12
+ declare function syncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): NonNullable<TData>;
13
+
14
+ export { type ObservableQueryOptions, type SyncedQueryParams, syncedQuery };
@@ -4,68 +4,62 @@ var state = require('@legendapp/state');
4
4
  var sync = require('@legendapp/state/sync');
5
5
  var queryCore = require('@tanstack/query-core');
6
6
 
7
+ // src/sync-plugins/tanstack-query.ts
7
8
  function syncedQuery(params) {
8
- const { query: options, mutation: mutationOptions, queryClient } = params;
9
- const Observer = queryCore.QueryObserver;
10
- const defaultedOptions = queryClient.defaultQueryOptions(options);
11
- let observer = undefined;
12
- let latestOptions = defaultedOptions;
13
- let queryKeyFromFn;
14
- const origQueryKey = options.queryKey;
15
- // If the queryKey is a function, observe it and extract the raw value
16
- const isKeyFunction = state.isFunction(origQueryKey);
17
- const updateQueryOptions = (obj) => {
18
- // Since legend-state mutates the query options, we need to clone it to make Query
19
- // see it as changed
20
- const options = Object.assign({}, obj);
21
- // Use the latest value from the observed queryKey function
22
- if (isKeyFunction) {
23
- options.queryKey = queryKeyFromFn;
24
- }
25
- latestOptions = options;
26
- // Update the Query options
27
- if (observer) {
28
- observer.setOptions(options, { listeners: false });
29
- }
30
- };
9
+ const { query: options, mutation: mutationOptions, queryClient } = params;
10
+ const Observer = queryCore.QueryObserver;
11
+ const defaultedOptions = queryClient.defaultQueryOptions(
12
+ options
13
+ );
14
+ let observer = void 0;
15
+ let latestOptions = defaultedOptions;
16
+ let queryKeyFromFn;
17
+ const origQueryKey = options.queryKey;
18
+ const isKeyFunction = state.isFunction(origQueryKey);
19
+ const updateQueryOptions = (obj) => {
20
+ const options2 = Object.assign({}, obj);
31
21
  if (isKeyFunction) {
32
- state.observe(() => {
33
- queryKeyFromFn = origQueryKey();
34
- updateQueryOptions(latestOptions);
35
- });
22
+ options2.queryKey = queryKeyFromFn;
36
23
  }
37
- // Create the observer
38
- observer = new Observer(queryClient, latestOptions);
39
- const get = () => {
40
- // Get the initial optimistic results if it's already cached
41
- const result = observer.getOptimisticResult(latestOptions);
42
- return result.data;
43
- };
44
- const subscribe = ({ update }) => {
45
- // Subscribe to Query's observer and update the observable
46
- const unsubscribe = observer.subscribe(queryCore.notifyManager.batchCalls((result) => {
47
- if (result.status === 'success') {
48
- update({ value: result.data });
49
- }
50
- }));
51
- // Update result to make sure we did not miss any query updates
52
- // between creating the observer and subscribing to it.
53
- observer.updateResult();
54
- return unsubscribe;
55
- };
56
- let set = undefined;
57
- if (mutationOptions) {
58
- const mutator = new queryCore.MutationObserver(queryClient, mutationOptions);
59
- set = ({ value }) => {
60
- return mutator.mutate(value);
61
- };
24
+ latestOptions = options2;
25
+ if (observer) {
26
+ observer.setOptions(options2, { listeners: false });
62
27
  }
63
- return sync.synced({
64
- get,
65
- set,
66
- subscribe,
28
+ };
29
+ if (isKeyFunction) {
30
+ state.observe(() => {
31
+ queryKeyFromFn = origQueryKey();
32
+ updateQueryOptions(latestOptions);
67
33
  });
34
+ }
35
+ observer = new Observer(queryClient, latestOptions);
36
+ const get = () => {
37
+ const result = observer.getOptimisticResult(latestOptions);
38
+ return result.data;
39
+ };
40
+ const subscribe = ({ update }) => {
41
+ const unsubscribe = observer.subscribe(
42
+ queryCore.notifyManager.batchCalls((result) => {
43
+ if (result.status === "success") {
44
+ update({ value: result.data });
45
+ }
46
+ })
47
+ );
48
+ observer.updateResult();
49
+ return unsubscribe;
50
+ };
51
+ let set = void 0;
52
+ if (mutationOptions) {
53
+ const mutator = new queryCore.MutationObserver(queryClient, mutationOptions);
54
+ set = ({ value }) => {
55
+ return mutator.mutate(value);
56
+ };
57
+ }
58
+ return sync.synced({
59
+ get,
60
+ set,
61
+ subscribe
62
+ });
68
63
  }
69
64
 
70
65
  exports.syncedQuery = syncedQuery;
71
- //# sourceMappingURL=tanstack-query.js.map
@@ -2,68 +2,62 @@ import { isFunction, observe } from '@legendapp/state';
2
2
  import { synced } from '@legendapp/state/sync';
3
3
  import { MutationObserver, QueryObserver, notifyManager } from '@tanstack/query-core';
4
4
 
5
+ // src/sync-plugins/tanstack-query.ts
5
6
  function syncedQuery(params) {
6
- const { query: options, mutation: mutationOptions, queryClient } = params;
7
- const Observer = QueryObserver;
8
- const defaultedOptions = queryClient.defaultQueryOptions(options);
9
- let observer = undefined;
10
- let latestOptions = defaultedOptions;
11
- let queryKeyFromFn;
12
- const origQueryKey = options.queryKey;
13
- // If the queryKey is a function, observe it and extract the raw value
14
- const isKeyFunction = isFunction(origQueryKey);
15
- const updateQueryOptions = (obj) => {
16
- // Since legend-state mutates the query options, we need to clone it to make Query
17
- // see it as changed
18
- const options = Object.assign({}, obj);
19
- // Use the latest value from the observed queryKey function
20
- if (isKeyFunction) {
21
- options.queryKey = queryKeyFromFn;
22
- }
23
- latestOptions = options;
24
- // Update the Query options
25
- if (observer) {
26
- observer.setOptions(options, { listeners: false });
27
- }
28
- };
7
+ const { query: options, mutation: mutationOptions, queryClient } = params;
8
+ const Observer = QueryObserver;
9
+ const defaultedOptions = queryClient.defaultQueryOptions(
10
+ options
11
+ );
12
+ let observer = void 0;
13
+ let latestOptions = defaultedOptions;
14
+ let queryKeyFromFn;
15
+ const origQueryKey = options.queryKey;
16
+ const isKeyFunction = isFunction(origQueryKey);
17
+ const updateQueryOptions = (obj) => {
18
+ const options2 = Object.assign({}, obj);
29
19
  if (isKeyFunction) {
30
- observe(() => {
31
- queryKeyFromFn = origQueryKey();
32
- updateQueryOptions(latestOptions);
33
- });
20
+ options2.queryKey = queryKeyFromFn;
34
21
  }
35
- // Create the observer
36
- observer = new Observer(queryClient, latestOptions);
37
- const get = () => {
38
- // Get the initial optimistic results if it's already cached
39
- const result = observer.getOptimisticResult(latestOptions);
40
- return result.data;
41
- };
42
- const subscribe = ({ update }) => {
43
- // Subscribe to Query's observer and update the observable
44
- const unsubscribe = observer.subscribe(notifyManager.batchCalls((result) => {
45
- if (result.status === 'success') {
46
- update({ value: result.data });
47
- }
48
- }));
49
- // Update result to make sure we did not miss any query updates
50
- // between creating the observer and subscribing to it.
51
- observer.updateResult();
52
- return unsubscribe;
53
- };
54
- let set = undefined;
55
- if (mutationOptions) {
56
- const mutator = new MutationObserver(queryClient, mutationOptions);
57
- set = ({ value }) => {
58
- return mutator.mutate(value);
59
- };
22
+ latestOptions = options2;
23
+ if (observer) {
24
+ observer.setOptions(options2, { listeners: false });
60
25
  }
61
- return synced({
62
- get,
63
- set,
64
- subscribe,
26
+ };
27
+ if (isKeyFunction) {
28
+ observe(() => {
29
+ queryKeyFromFn = origQueryKey();
30
+ updateQueryOptions(latestOptions);
65
31
  });
32
+ }
33
+ observer = new Observer(queryClient, latestOptions);
34
+ const get = () => {
35
+ const result = observer.getOptimisticResult(latestOptions);
36
+ return result.data;
37
+ };
38
+ const subscribe = ({ update }) => {
39
+ const unsubscribe = observer.subscribe(
40
+ notifyManager.batchCalls((result) => {
41
+ if (result.status === "success") {
42
+ update({ value: result.data });
43
+ }
44
+ })
45
+ );
46
+ observer.updateResult();
47
+ return unsubscribe;
48
+ };
49
+ let set = void 0;
50
+ if (mutationOptions) {
51
+ const mutator = new MutationObserver(queryClient, mutationOptions);
52
+ set = ({ value }) => {
53
+ return mutator.mutate(value);
54
+ };
55
+ }
56
+ return synced({
57
+ get,
58
+ set,
59
+ subscribe
60
+ });
66
61
  }
67
62
 
68
63
  export { syncedQuery };
69
- //# sourceMappingURL=tanstack-query.mjs.map
@@ -0,0 +1,8 @@
1
+ import { SyncedQueryParams } from '@legendapp/state/sync-plugins/tanstack-query';
2
+ import { DefaultError, QueryKey } from '@tanstack/query-core';
3
+ import { Observable } from '@legendapp/state';
4
+ import { Synced } from '@legendapp/state/sync';
5
+
6
+ declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): Observable<NonNullable<Synced<TData>>>;
7
+
8
+ export { useObservableSyncedQuery };
@@ -1,3 +1,8 @@
1
1
  import { SyncedQueryParams } from '@legendapp/state/sync-plugins/tanstack-query';
2
2
  import { DefaultError, QueryKey } from '@tanstack/query-core';
3
- export declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): import("@legendapp/state").Observable<NonNullable<TData>>;
3
+ import { Observable } from '@legendapp/state';
4
+ import { Synced } from '@legendapp/state/sync';
5
+
6
+ declare function useObservableSyncedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(params: SyncedQueryParams<TQueryFnData, TError, TData, TQueryKey>): Observable<NonNullable<Synced<TData>>>;
7
+
8
+ export { useObservableSyncedQuery };
@@ -3,9 +3,9 @@
3
3
  var react = require('@legendapp/state/react');
4
4
  var tanstackQuery = require('@legendapp/state/sync-plugins/tanstack-query');
5
5
 
6
+ // src/sync-plugins/tanstack-react-query.ts
6
7
  function useObservableSyncedQuery(params) {
7
- return react.useObservable(tanstackQuery.syncedQuery(params));
8
+ return react.useObservable(tanstackQuery.syncedQuery(params));
8
9
  }
9
10
 
10
11
  exports.useObservableSyncedQuery = useObservableSyncedQuery;
11
- //# sourceMappingURL=tanstack-react-query.js.map
@@ -1,9 +1,9 @@
1
1
  import { useObservable } from '@legendapp/state/react';
2
2
  import { syncedQuery } from '@legendapp/state/sync-plugins/tanstack-query';
3
3
 
4
+ // src/sync-plugins/tanstack-react-query.ts
4
5
  function useObservableSyncedQuery(params) {
5
- return useObservable(syncedQuery(params));
6
+ return useObservable(syncedQuery(params));
6
7
  }
7
8
 
8
9
  export { useObservableSyncedQuery };
9
- //# sourceMappingURL=tanstack-react-query.mjs.map
package/sync.d.mts ADDED
@@ -0,0 +1,351 @@
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: {
348
+ observableSyncConfiguration: SyncedOptionsGlobal;
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 };