@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.
- package/.DS_Store +0 -0
- package/CHANGELOG.md +1 -831
- package/LICENSE +1 -21
- package/README.md +1 -141
- package/as/arrayAsRecord.d.mts +5 -0
- package/as/arrayAsRecord.d.ts +5 -0
- package/as/arrayAsRecord.js +28 -0
- package/as/arrayAsRecord.mjs +26 -0
- package/as/arrayAsSet.d.mts +5 -0
- package/as/arrayAsSet.d.ts +5 -0
- package/as/arrayAsSet.js +13 -0
- package/as/arrayAsSet.mjs +11 -0
- package/as/arrayAsString.d.mts +5 -0
- package/as/arrayAsString.d.ts +5 -0
- package/as/arrayAsString.js +13 -0
- package/as/arrayAsString.mjs +11 -0
- package/as/numberAsString.d.mts +5 -0
- package/as/numberAsString.d.ts +5 -0
- package/as/numberAsString.js +13 -0
- package/as/numberAsString.mjs +11 -0
- package/as/recordAsArray.d.mts +5 -0
- package/as/recordAsArray.d.ts +5 -0
- package/as/recordAsArray.js +25 -0
- package/as/recordAsArray.mjs +23 -0
- package/as/recordAsString.d.mts +5 -0
- package/as/recordAsString.d.ts +5 -0
- package/as/recordAsString.js +13 -0
- package/as/recordAsString.mjs +11 -0
- package/as/setAsArray.d.mts +5 -0
- package/as/setAsArray.d.ts +5 -0
- package/as/setAsArray.js +13 -0
- package/as/setAsArray.mjs +11 -0
- package/as/setAsString.d.mts +5 -0
- package/as/setAsString.d.ts +5 -0
- package/as/setAsString.js +13 -0
- package/as/setAsString.mjs +11 -0
- package/as/stringAsArray.d.mts +5 -0
- package/as/stringAsArray.d.ts +5 -0
- package/as/stringAsArray.js +13 -0
- package/as/stringAsArray.mjs +11 -0
- package/as/stringAsNumber.d.mts +5 -0
- package/as/stringAsNumber.d.ts +5 -0
- package/as/stringAsNumber.js +16 -0
- package/as/stringAsNumber.mjs +14 -0
- package/as/stringAsRecord.d.mts +5 -0
- package/as/stringAsRecord.d.ts +5 -0
- package/as/stringAsRecord.js +15 -0
- package/as/stringAsRecord.mjs +13 -0
- package/as/stringAsSet.d.mts +5 -0
- package/as/stringAsSet.d.ts +5 -0
- package/as/stringAsSet.js +13 -0
- package/as/stringAsSet.mjs +11 -0
- package/babel.d.mts +21 -0
- package/babel.d.ts +21 -2
- package/babel.js +57 -53
- package/babel.mjs +65 -0
- package/config/enable$GetSet.js +13 -14
- package/config/enable$GetSet.mjs +13 -14
- package/config/enableReactComponents.d.mts +9 -0
- package/config/enableReactComponents.d.ts +4 -2
- package/config/enableReactComponents.js +13 -10
- package/config/enableReactComponents.mjs +13 -10
- package/config/enableReactNativeComponents.d.mts +22 -0
- package/config/enableReactNativeComponents.d.ts +6 -4
- package/config/enableReactNativeComponents.js +43 -47
- package/config/enableReactNativeComponents.mjs +43 -47
- package/config/enableReactTracking.d.mts +7 -0
- package/config/enableReactTracking.d.ts +3 -2
- package/config/enableReactTracking.js +33 -38
- package/config/enableReactTracking.mjs +33 -38
- package/config/enableReactUse.d.mts +10 -0
- package/config/enableReactUse.d.ts +4 -1
- package/config/enableReactUse.js +15 -14
- package/config/enableReactUse.mjs +15 -14
- package/config/{enable$GetSet.d.ts → enable_GetSet.d.mts} +4 -2
- package/config/enable_GetSet.d.ts +10 -0
- package/config/enable_PeekAssign.d.mts +10 -0
- package/config/enable_PeekAssign.d.ts +4 -2
- package/config/enable_PeekAssign.js +13 -14
- package/config/enable_PeekAssign.mjs +13 -14
- package/helpers/pageHash.d.mts +9 -0
- package/helpers/pageHash.d.ts +2 -0
- package/helpers/pageHash.js +25 -30
- package/helpers/pageHash.mjs +25 -30
- package/helpers/pageHashParams.d.mts +9 -0
- package/helpers/pageHashParams.d.ts +2 -0
- package/helpers/pageHashParams.js +34 -37
- package/helpers/pageHashParams.mjs +34 -37
- package/helpers/time.d.mts +6 -0
- package/helpers/time.d.ts +6 -3
- package/helpers/time.js +17 -17
- package/helpers/time.mjs +17 -17
- package/helpers/trackHistory.d.mts +6 -0
- package/helpers/trackHistory.d.ts +4 -2
- package/helpers/trackHistory.js +13 -16
- package/helpers/trackHistory.mjs +13 -16
- package/helpers/undoRedo.d.mts +37 -0
- package/helpers/undoRedo.d.ts +5 -3
- package/helpers/undoRedo.js +59 -94
- package/helpers/undoRedo.mjs +59 -94
- package/index.d.mts +404 -0
- package/index.d.ts +371 -28
- package/index.js +2015 -2166
- package/index.mjs +2015 -2166
- package/package.json +254 -195
- package/persist-plugins/async-storage.d.mts +18 -0
- package/persist-plugins/async-storage.d.ts +6 -3
- package/persist-plugins/async-storage.js +79 -86
- package/persist-plugins/async-storage.mjs +79 -86
- package/persist-plugins/indexeddb.d.mts +29 -0
- package/persist-plugins/indexeddb.d.ts +6 -3
- package/persist-plugins/indexeddb.js +331 -352
- package/persist-plugins/indexeddb.mjs +331 -352
- package/persist-plugins/local-storage.d.mts +23 -0
- package/persist-plugins/local-storage.d.ts +8 -5
- package/persist-plugins/local-storage.js +74 -76
- package/persist-plugins/local-storage.mjs +74 -76
- package/persist-plugins/mmkv.d.mts +18 -0
- package/persist-plugins/mmkv.d.ts +6 -3
- package/persist-plugins/mmkv.js +82 -86
- package/persist-plugins/mmkv.mjs +82 -86
- package/react-hooks/createObservableHook.d.mts +5 -0
- package/react-hooks/createObservableHook.d.ts +4 -1
- package/react-hooks/createObservableHook.js +29 -30
- package/react-hooks/createObservableHook.mjs +25 -30
- package/react-hooks/useHover.d.mts +5 -0
- package/react-hooks/useHover.d.ts +5 -3
- package/react-hooks/useHover.js +29 -29
- package/react-hooks/useHover.mjs +29 -29
- package/react-hooks/useMeasure.d.mts +9 -0
- package/react-hooks/useMeasure.d.ts +5 -2
- package/react-hooks/useMeasure.js +30 -32
- package/react-hooks/useMeasure.mjs +30 -32
- package/react-hooks/useObservableNextRouter.d.mts +35 -0
- package/react-hooks/useObservableNextRouter.d.ts +9 -7
- package/react-hooks/useObservableNextRouter.js +64 -77
- package/react-hooks/useObservableNextRouter.mjs +60 -77
- package/react.d.mts +157 -0
- package/react.d.ts +157 -21
- package/react.js +458 -749
- package/react.mjs +457 -752
- package/sync-plugins/crud.d.mts +54 -0
- package/sync-plugins/crud.d.ts +12 -10
- package/sync-plugins/crud.js +253 -270
- package/sync-plugins/crud.mjs +253 -270
- package/sync-plugins/fetch.d.mts +21 -0
- package/sync-plugins/fetch.d.ts +7 -4
- package/sync-plugins/fetch.js +50 -37
- package/sync-plugins/fetch.mjs +50 -37
- package/sync-plugins/keel.d.mts +108 -0
- package/sync-plugins/keel.d.ts +17 -15
- package/sync-plugins/keel.js +229 -462
- package/sync-plugins/keel.mjs +227 -464
- package/sync-plugins/supabase.d.mts +39 -0
- package/sync-plugins/supabase.d.ts +16 -14
- package/sync-plugins/supabase.js +128 -128
- package/sync-plugins/supabase.mjs +128 -128
- package/sync-plugins/tanstack-query.d.mts +14 -0
- package/sync-plugins/tanstack-query.d.ts +7 -4
- package/sync-plugins/tanstack-query.js +51 -57
- package/sync-plugins/tanstack-query.mjs +51 -57
- package/sync-plugins/tanstack-react-query.d.mts +8 -0
- package/sync-plugins/tanstack-react-query.d.ts +6 -1
- package/sync-plugins/tanstack-react-query.js +2 -2
- package/sync-plugins/tanstack-react-query.mjs +2 -2
- package/sync.d.mts +351 -0
- package/sync.d.ts +349 -9
- package/sync.js +910 -964
- package/sync.mjs +920 -974
- package/trace.d.mts +9 -0
- package/trace.d.ts +9 -4
- package/trace.js +72 -62
- package/trace.mjs +72 -62
- package/types/babel.d.ts +1 -12
- package/babel.js.map +0 -1
- package/config/enable$GetSet.js.map +0 -1
- package/config/enable$GetSet.mjs.map +0 -1
- package/config/enableReactComponents.js.map +0 -1
- package/config/enableReactComponents.mjs.map +0 -1
- package/config/enableReactNativeComponents.js.map +0 -1
- package/config/enableReactNativeComponents.mjs.map +0 -1
- package/config/enableReactTracking.js.map +0 -1
- package/config/enableReactTracking.mjs.map +0 -1
- package/config/enableReactUse.js.map +0 -1
- package/config/enableReactUse.mjs.map +0 -1
- package/config/enable_PeekAssign.js.map +0 -1
- package/config/enable_PeekAssign.mjs.map +0 -1
- package/helpers/pageHash.js.map +0 -1
- package/helpers/pageHash.mjs.map +0 -1
- package/helpers/pageHashParams.js.map +0 -1
- package/helpers/pageHashParams.mjs.map +0 -1
- package/helpers/time.js.map +0 -1
- package/helpers/time.mjs.map +0 -1
- package/helpers/trackHistory.js.map +0 -1
- package/helpers/trackHistory.mjs.map +0 -1
- package/helpers/undoRedo.js.map +0 -1
- package/helpers/undoRedo.mjs.map +0 -1
- package/history.d.ts +0 -1
- package/history.js +0 -24
- package/history.js.map +0 -1
- package/history.mjs +0 -22
- package/history.mjs.map +0 -1
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
- package/persist-plugins/async-storage.js.map +0 -1
- package/persist-plugins/async-storage.mjs.map +0 -1
- package/persist-plugins/indexeddb.js.map +0 -1
- package/persist-plugins/indexeddb.mjs.map +0 -1
- package/persist-plugins/local-storage.js.map +0 -1
- package/persist-plugins/local-storage.mjs.map +0 -1
- package/persist-plugins/mmkv.js.map +0 -1
- package/persist-plugins/mmkv.mjs.map +0 -1
- package/react-hooks/createObservableHook.js.map +0 -1
- package/react-hooks/createObservableHook.mjs.map +0 -1
- package/react-hooks/useHover.js.map +0 -1
- package/react-hooks/useHover.mjs.map +0 -1
- package/react-hooks/useMeasure.js.map +0 -1
- package/react-hooks/useMeasure.mjs.map +0 -1
- package/react-hooks/useObservableNextRouter.js.map +0 -1
- package/react-hooks/useObservableNextRouter.mjs.map +0 -1
- package/react.js.map +0 -1
- package/react.mjs.map +0 -1
- package/src/ObservableObject.ts +0 -1350
- package/src/ObservablePrimitive.ts +0 -62
- package/src/babel/index.ts +0 -83
- package/src/batching.ts +0 -357
- package/src/computed.ts +0 -18
- package/src/config/enable$GetSet.ts +0 -30
- package/src/config/enableReactComponents.ts +0 -26
- package/src/config/enableReactNativeComponents.ts +0 -102
- package/src/config/enableReactTracking.ts +0 -62
- package/src/config/enableReactUse.ts +0 -32
- package/src/config/enable_PeekAssign.ts +0 -31
- package/src/config.ts +0 -47
- package/src/createObservable.ts +0 -47
- package/src/event.ts +0 -26
- package/src/globals.ts +0 -235
- package/src/helpers/pageHash.ts +0 -41
- package/src/helpers/pageHashParams.ts +0 -55
- package/src/helpers/time.ts +0 -30
- package/src/helpers/trackHistory.ts +0 -29
- package/src/helpers/undoRedo.ts +0 -111
- package/src/helpers.ts +0 -231
- package/src/is.ts +0 -63
- package/src/linked.ts +0 -17
- package/src/observable.ts +0 -32
- package/src/observableInterfaces.ts +0 -151
- package/src/observableTypes.ts +0 -232
- package/src/observe.ts +0 -89
- package/src/old-plugins/firebase.ts +0 -1053
- package/src/onChange.ts +0 -146
- package/src/persist/configureObservablePersistence.ts +0 -7
- package/src/persist/fieldTransformer.ts +0 -149
- package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
- package/src/persist/persistObservable.ts +0 -1034
- package/src/persist-plugins/async-storage.ts +0 -99
- package/src/persist-plugins/indexeddb.ts +0 -439
- package/src/persist-plugins/local-storage.ts +0 -86
- package/src/persist-plugins/mmkv.ts +0 -91
- package/src/proxy.ts +0 -28
- package/src/react/Computed.tsx +0 -8
- package/src/react/For.tsx +0 -116
- package/src/react/Memo.tsx +0 -4
- package/src/react/Reactive.tsx +0 -53
- package/src/react/Show.tsx +0 -33
- package/src/react/Switch.tsx +0 -43
- package/src/react/react-globals.ts +0 -3
- package/src/react/reactInterfaces.ts +0 -32
- package/src/react/reactive-observer.tsx +0 -210
- package/src/react/useComputed.ts +0 -36
- package/src/react/useEffectOnce.ts +0 -41
- package/src/react/useIsMounted.ts +0 -16
- package/src/react/useMount.ts +0 -15
- package/src/react/useObservable.ts +0 -24
- package/src/react/useObservableReducer.ts +0 -52
- package/src/react/useObservableState.ts +0 -30
- package/src/react/useObserve.ts +0 -54
- package/src/react/useObserveEffect.ts +0 -40
- package/src/react/usePauseProvider.tsx +0 -16
- package/src/react/useSelector.ts +0 -167
- package/src/react/useUnmount.ts +0 -8
- package/src/react/useWhen.ts +0 -9
- package/src/react-hooks/createObservableHook.ts +0 -53
- package/src/react-hooks/useHover.ts +0 -40
- package/src/react-hooks/useMeasure.ts +0 -48
- package/src/react-hooks/useObservableNextRouter.ts +0 -137
- package/src/retry.ts +0 -71
- package/src/setupTracking.ts +0 -26
- package/src/sync/activateSyncedNode.ts +0 -128
- package/src/sync/configureObservableSync.ts +0 -7
- package/src/sync/persistTypes.ts +0 -216
- package/src/sync/syncHelpers.ts +0 -180
- package/src/sync/syncObservable.ts +0 -1056
- package/src/sync/syncObservableAdapter.ts +0 -31
- package/src/sync/syncTypes.ts +0 -189
- package/src/sync/synced.ts +0 -21
- package/src/sync-plugins/crud.ts +0 -412
- package/src/sync-plugins/fetch.ts +0 -80
- package/src/sync-plugins/keel.ts +0 -495
- package/src/sync-plugins/supabase.ts +0 -249
- package/src/sync-plugins/tanstack-query.ts +0 -113
- package/src/sync-plugins/tanstack-react-query.ts +0 -12
- package/src/trace/traceHelpers.ts +0 -11
- package/src/trace/useTraceListeners.ts +0 -34
- package/src/trace/useTraceUpdates.ts +0 -24
- package/src/trace/useVerifyNotTracking.ts +0 -33
- package/src/trace/useVerifyOneRender.ts +0 -10
- package/src/trackSelector.ts +0 -52
- package/src/tracking.ts +0 -43
- package/src/types/babel.d.ts +0 -12
- package/src/when.ts +0 -75
- package/sync-plugins/crud.js.map +0 -1
- package/sync-plugins/crud.mjs.map +0 -1
- package/sync-plugins/fetch.js.map +0 -1
- package/sync-plugins/fetch.mjs.map +0 -1
- package/sync-plugins/keel.js.map +0 -1
- package/sync-plugins/keel.mjs.map +0 -1
- package/sync-plugins/supabase.js.map +0 -1
- package/sync-plugins/supabase.mjs.map +0 -1
- package/sync-plugins/tanstack-query.js.map +0 -1
- package/sync-plugins/tanstack-query.mjs.map +0 -1
- package/sync-plugins/tanstack-react-query.js.map +0 -1
- package/sync-plugins/tanstack-react-query.mjs.map +0 -1
- package/sync.js.map +0 -1
- package/sync.mjs.map +0 -1
- package/trace.js.map +0 -1
- package/trace.mjs.map +0 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { SyncedOptions } from '@legendapp/state/sync';
|
|
2
|
-
import {
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
33
|
-
queryKeyFromFn = origQueryKey();
|
|
34
|
-
updateQueryOptions(latestOptions);
|
|
35
|
-
});
|
|
22
|
+
options2.queryKey = queryKeyFromFn;
|
|
36
23
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
31
|
-
queryKeyFromFn = origQueryKey();
|
|
32
|
-
updateQueryOptions(latestOptions);
|
|
33
|
-
});
|
|
20
|
+
options2.queryKey = queryKeyFromFn;
|
|
34
21
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 };
|