UNPKG

@pubflow/react-native

Version:

React Native adapter for Pubflow framework

105 lines (104 loc) 3.64 kB
"use strict"; /** * Storage Debug Utilities * * Provides utilities for debugging storage-related issues * These utilities are only enabled when debugTools is enabled in PubflowProvider */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.debugStorage = debugStorage; exports.clearStorageByPrefix = clearStorageByPrefix; const async_storage_1 = __importDefault(require("@react-native-async-storage/async-storage")); const debugConfig_1 = require("../context/debugConfig"); /** * Debug storage keys and values * * @param prefix Optional prefix to filter keys * @param forceEnable Force enable debug even if not enabled in config * @returns Promise with the debug information */ async function debugStorage(prefix, forceEnable = false) { // Check if debug is enabled const { enabled } = (0, debugConfig_1.getDebugConfig)(); if (!enabled && !forceEnable) { console.warn('Storage debug is disabled. Enable it in PubflowProvider or use forceEnable=true.'); return { keys: [], values: {} }; } try { // Get all keys const allKeys = await async_storage_1.default.getAllKeys(); // Filter by prefix if provided const filteredKeys = prefix ? allKeys.filter(key => key.startsWith(prefix)) : allKeys; // Get values for filtered keys const keyValuePairs = await async_storage_1.default.multiGet(filteredKeys); // Convert to object const values = {}; for (const [key, value] of keyValuePairs) { if (value) { try { // Try to parse as JSON values[key] = JSON.parse(value); } catch (e) { // If not JSON, store as string values[key] = value; } } } // Log debug information console.log('Storage Debug:'); console.log('Keys:', filteredKeys); console.log('Values:', values); return { keys: [...filteredKeys], // Create a new array to avoid readonly issues values }; } catch (error) { console.error('Error debugging storage:', error); return { keys: [], values: {} }; } } /** * Clear storage keys with a specific prefix * * @param prefix Prefix to filter keys to remove * @param forceEnable Force enable debug even if not enabled in config * @returns Promise<void> */ async function clearStorageByPrefix(prefix, forceEnable = false) { // Check if debug is enabled const { enabled } = (0, debugConfig_1.getDebugConfig)(); if (!enabled && !forceEnable) { console.warn('Storage debug is disabled. Enable it in PubflowProvider or use forceEnable=true.'); return; } try { // Get all keys const allKeys = await async_storage_1.default.getAllKeys(); // Filter by prefix const keysToRemove = allKeys.filter(key => key.startsWith(prefix)); if (keysToRemove.length > 0) { // Remove keys await async_storage_1.default.multiRemove(keysToRemove); console.log(`Removed ${keysToRemove.length} keys with prefix "${prefix}"`); } else { console.log(`No keys found with prefix "${prefix}"`); } } catch (error) { console.error('Error clearing storage:', error); } }