react-query-external-sync
Version:
A tool for syncing React Query state to an external Dev Tools
85 lines (84 loc) • 2.86 kB
TypeScript
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;