@legendapp/state 2.0.0-next.8 → 2.0.0
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/CHANGELOG.md +4 -0
- package/config/enableReactNativeComponents.js +15 -0
- package/config/enableReactNativeComponents.js.map +1 -1
- package/config/enableReactNativeComponents.mjs +16 -1
- package/config/enableReactNativeComponents.mjs.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +84 -93
- package/index.js.map +1 -1
- package/index.mjs +84 -94
- package/index.mjs.map +1 -1
- package/package.json +21 -1
- package/persist-plugins/async-storage.d.ts +14 -0
- package/persist-plugins/async-storage.js +100 -0
- package/persist-plugins/async-storage.js.map +1 -0
- package/persist-plugins/async-storage.mjs +98 -0
- package/persist-plugins/async-storage.mjs.map +1 -0
- package/persist-plugins/fetch.d.ts +10 -0
- package/persist-plugins/fetch.js +22 -0
- package/persist-plugins/fetch.js.map +1 -0
- package/persist-plugins/fetch.mjs +20 -0
- package/persist-plugins/fetch.mjs.map +1 -0
- package/persist-plugins/firebase.d.ts +51 -0
- package/persist-plugins/firebase.js +694 -0
- package/persist-plugins/firebase.js.map +1 -0
- package/persist-plugins/firebase.mjs +692 -0
- package/persist-plugins/firebase.mjs.map +1 -0
- package/persist-plugins/indexeddb.d.ts +2 -3
- package/persist-plugins/indexeddb.js +1 -16
- package/persist-plugins/indexeddb.js.map +1 -1
- package/persist-plugins/indexeddb.mjs +1 -16
- package/persist-plugins/indexeddb.mjs.map +1 -1
- package/persist-plugins/local-storage.d.ts +1 -2
- package/persist-plugins/local-storage.js +1 -5
- package/persist-plugins/local-storage.js.map +1 -1
- package/persist-plugins/local-storage.mjs +1 -5
- package/persist-plugins/local-storage.mjs.map +1 -1
- package/persist-plugins/mmkv.d.ts +4 -4
- package/persist-plugins/mmkv.js +6 -4
- package/persist-plugins/mmkv.js.map +1 -1
- package/persist-plugins/mmkv.mjs +6 -4
- package/persist-plugins/mmkv.mjs.map +1 -1
- package/persist-plugins/query.d.ts +20 -0
- package/persist-plugins/query.js +89 -0
- package/persist-plugins/query.js.map +1 -0
- package/persist-plugins/query.mjs +87 -0
- package/persist-plugins/query.mjs.map +1 -0
- package/persist.js +186 -140
- package/persist.js.map +1 -1
- package/persist.mjs +187 -141
- package/persist.mjs.map +1 -1
- package/react-hooks/usePersistedObservable.d.ts +2 -2
- package/react-hooks/usePersistedObservable.js +1 -6
- package/react-hooks/usePersistedObservable.js.map +1 -1
- package/react-hooks/usePersistedObservable.mjs +1 -6
- package/react-hooks/usePersistedObservable.mjs.map +1 -1
- package/react.d.ts +1 -0
- package/react.js +84 -36
- package/react.js.map +1 -1
- package/react.mjs +84 -38
- package/react.mjs.map +1 -1
- package/src/ObservableObject.d.ts +3 -3
- package/src/globals.d.ts +1 -3
- package/src/is.d.ts +1 -0
- package/src/observable.d.ts +2 -2
- package/src/observableInterfaces.d.ts +86 -63
- package/src/observe.d.ts +1 -1
- package/src/persist/observablePersistRemoteFunctionsAdapter.d.ts +2 -0
- package/src/persist/persistObservable.d.ts +10 -13
- package/src/persist-plugins/async-storage.d.ts +14 -0
- package/src/persist-plugins/fetch.d.ts +10 -0
- package/src/persist-plugins/firebase.d.ts +51 -0
- package/src/persist-plugins/indexeddb.d.ts +2 -3
- package/src/persist-plugins/local-storage.d.ts +1 -2
- package/src/persist-plugins/mmkv.d.ts +4 -4
- package/src/persist-plugins/query.d.ts +20 -0
- package/src/react/For.d.ts +0 -1
- package/src/react/Reactive.d.ts +1 -1
- package/src/react/react-globals.d.ts +3 -0
- package/src/react/reactInterfaces.d.ts +8 -5
- package/src/react/useObservableState.d.ts +2 -0
- package/src/react/useSelector.d.ts +1 -1
- package/src/react/useWhen.d.ts +3 -0
- package/src/react-hooks/usePersistedObservable.d.ts +2 -2
- package/src/trackSelector.d.ts +2 -2
- package/src/tracking.d.ts +2 -3
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { isFunction, observe } from '@legendapp/state';
|
|
2
|
+
import { useQueryClient, notifyManager, MutationObserver, QueryObserver, InfiniteQueryObserver } from '@tanstack/react-query';
|
|
3
|
+
|
|
4
|
+
function persistPluginQuery({ query: options, mutation: mutationOptions, type = 'Query', queryClient, useContext, }) {
|
|
5
|
+
if (useContext) {
|
|
6
|
+
queryClient = queryClient || useQueryClient();
|
|
7
|
+
}
|
|
8
|
+
// Set up the defaults like useBaseQuery does
|
|
9
|
+
const defaultedOptions = queryClient.defaultQueryOptions(options);
|
|
10
|
+
// Include callbacks in batch renders
|
|
11
|
+
if (defaultedOptions.onError) {
|
|
12
|
+
defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);
|
|
13
|
+
}
|
|
14
|
+
if (defaultedOptions.onSuccess) {
|
|
15
|
+
defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);
|
|
16
|
+
}
|
|
17
|
+
if (defaultedOptions.onSettled) {
|
|
18
|
+
defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);
|
|
19
|
+
}
|
|
20
|
+
const Observer = type === 'Query' ? QueryObserver : InfiniteQueryObserver;
|
|
21
|
+
const ret = {
|
|
22
|
+
get({ onChange, state }) {
|
|
23
|
+
let observer = undefined;
|
|
24
|
+
let latestOptions = defaultedOptions;
|
|
25
|
+
let queryKeyFromFn;
|
|
26
|
+
const origQueryKey = options.queryKey;
|
|
27
|
+
// If the queryKey is a function, observe it and extract the raw value
|
|
28
|
+
const isKeyFunction = isFunction(origQueryKey);
|
|
29
|
+
if (isKeyFunction) {
|
|
30
|
+
observe(({ num }) => {
|
|
31
|
+
queryKeyFromFn = origQueryKey();
|
|
32
|
+
if (num > 0) {
|
|
33
|
+
updateQueryOptions(latestOptions);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// Since legend-state mutates the query options, we need to clone it to make Query
|
|
38
|
+
// see it as changed
|
|
39
|
+
const updateQueryOptions = (obj) => {
|
|
40
|
+
const ret = Object.assign({}, obj);
|
|
41
|
+
// Use the latest value from the observed queryKey function
|
|
42
|
+
if (isKeyFunction) {
|
|
43
|
+
ret.queryKey = queryKeyFromFn;
|
|
44
|
+
}
|
|
45
|
+
latestOptions = ret;
|
|
46
|
+
// Set the query options onto the persist state so it can be observed or modified
|
|
47
|
+
state.query.set(latestOptions);
|
|
48
|
+
// Update the Query options
|
|
49
|
+
if (observer) {
|
|
50
|
+
observer.setOptions(latestOptions, { listeners: false });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
updateQueryOptions(defaultedOptions);
|
|
54
|
+
// Create the observer
|
|
55
|
+
observer = new Observer(queryClient, latestOptions);
|
|
56
|
+
// Get the initial optimistic results if it's already cached
|
|
57
|
+
const result = observer.getOptimisticResult(latestOptions);
|
|
58
|
+
// Put the query options in the state so we can observe them
|
|
59
|
+
state.query.onChange(({ value, changes }) => {
|
|
60
|
+
// If the queryKey changed, delete the queryHash so Query will re-fetch
|
|
61
|
+
if (changes.some((change) => change.path.includes('queryKey'))) {
|
|
62
|
+
delete value.queryHash;
|
|
63
|
+
}
|
|
64
|
+
updateQueryOptions(value);
|
|
65
|
+
});
|
|
66
|
+
// Subscribe to Query's observer and update the observable
|
|
67
|
+
observer.subscribe((result) => {
|
|
68
|
+
onChange({ value: result.data });
|
|
69
|
+
});
|
|
70
|
+
// Return the initial data
|
|
71
|
+
if (result) {
|
|
72
|
+
return result.data;
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
if (mutationOptions) {
|
|
77
|
+
const mutator = new MutationObserver(queryClient, mutationOptions);
|
|
78
|
+
// When the observable changes call the mutator function
|
|
79
|
+
ret.set = async ({ value }) => {
|
|
80
|
+
mutator.mutate(value);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return ret;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export { persistPluginQuery };
|
|
87
|
+
//# sourceMappingURL=query.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.mjs","sources":["../../../../src/persist-plugins/query.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|