react-native-devtools-sync
Version:
A tool for syncing React Query state to an external Dev Tools
27 lines • 1.35 kB
JavaScript
export function Dehydrate(client) {
const mutations = client
.getMutationCache()
.getAll()
.flatMap((mutation) => [dehydrateMutation(mutation)]);
const queries = client
.getQueryCache()
.getAll()
.flatMap((query) => [dehydrateQuery(query)]);
return { mutations, queries };
}
function dehydrateMutation(mutation) {
return Object.assign(Object.assign({ mutationId: mutation.mutationId, mutationKey: mutation.options.mutationKey, state: mutation.state, gcTime: mutation.gcTime }, (mutation.options.scope && { scope: mutation.options.scope })), (mutation.meta && { meta: mutation.meta }));
}
function dehydrateQuery(query) {
// Extract observer states
const observerStates = query.observers.map((observer) => ({
queryHash: query.queryHash,
options: observer.options,
// Remove queryFn from observer options to prevent not being able to capture fetch action
queryFn: undefined,
}));
return Object.assign(Object.assign({ state: Object.assign(Object.assign({}, query.state), (query.state.data !== undefined && {
data: query.state.data,
})), queryKey: query.queryKey, queryHash: query.queryHash, gcTime: query.gcTime }, (query.meta && { meta: query.meta })), { observers: observerStates });
}
//# sourceMappingURL=hydration.js.map