UNPKG

react-query-external-sync

Version:

A tool for syncing React Query state to an external Dev Tools

85 lines (84 loc) 2.86 kB
import { QueryClient } from '@tanstack/react-query'; import { useDynamicAsyncStorageQueries } from './useDynamicAsyncStorageQueries'; import { MmkvStorage, useDynamicMmkvQueries } from './useDynamicMmkvQueries'; import { type SecureStoreStatic, useDynamicSecureStorageQueries } from './useDynamicSecureStorageQueries'; export interface UseStorageQueriesOptions { /** * The React Query client instance */ queryClient: QueryClient; /** * MMKV storage instance to monitor all MMKV keys * Pass your MMKV storage instance or undefined to disable */ mmkv?: MmkvStorage; /** * Enable AsyncStorage monitoring * Set to true to monitor all AsyncStorage keys */ asyncStorage?: boolean; /** * SecureStorage configuration * Pass an array of known keys (SecureStore doesn't expose getAllKeys for security) * OR pass an object with storage instance and keys */ secureStorage?: string[] | { storage: SecureStoreStatic; keys: string[]; }; /** * Optional polling interval for SecureStorage in milliseconds * Defaults to 1000ms (1 second) */ secureStoragePollInterval?: number; } export interface StorageQueryResults { mmkv: ReturnType<typeof useDynamicMmkvQueries>; asyncStorage: ReturnType<typeof useDynamicAsyncStorageQueries>; secureStorage: ReturnType<typeof useDynamicSecureStorageQueries>; } /** * Unified hook for monitoring all device storage types with React Query * * This hook consolidates MMKV, AsyncStorage, and SecureStorage monitoring into one simple interface. * Each storage type can be enabled/disabled independently based on your needs. * * @example * // Monitor all storage types (legacy string array format) * const storageQueries = useStorageQueries({ * queryClient, * mmkv: storage, * asyncStorage: true, * secureStorage: ['sessionToken', 'auth.session', 'auth.email'] * }); * * @example * // Monitor with custom SecureStore instance * import * as SecureStore from 'expo-secure-store'; * * const storageQueries = useStorageQueries({ * queryClient, * mmkv: storage, * asyncStorage: true, * secureStorage: { * storage: SecureStore, * keys: ['sessionToken', 'auth.session', 'auth.email'] * } * }); * * @example * // Monitor only MMKV storage * const storageQueries = useStorageQueries({ * queryClient, * mmkv: storage * }); * * @example * // Monitor only specific secure storage keys * const storageQueries = useStorageQueries({ * queryClient, * secureStorage: ['sessionToken', 'refreshToken'], * secureStoragePollInterval: 2000 // Check every 2 seconds * }); */ export declare function useStorageQueries({ queryClient, mmkv, asyncStorage, secureStorage, secureStoragePollInterval, }: UseStorageQueriesOptions): StorageQueryResults;