@pubflow/react-native
Version:
React Native adapter for Pubflow framework
105 lines (104 loc) • 3.64 kB
JavaScript
/**
* 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);
}
}
;