UNPKG

reactotron-react-native

Version:

A development tool to explore, inspect, and diagnose your React Native apps.

197 lines (185 loc) 6.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const PLUGIN_DEFAULTS = { ignore: [] }; const asyncStorage = options => reactotron => { // setup configuration const config = Object.assign({}, PLUGIN_DEFAULTS, options || {}); const ignore = config.ignore || PLUGIN_DEFAULTS.ignore; let swizzSetItem; let swizzRemoveItem; let swizzMergeItem; let swizzClear; let swizzMultiSet; let swizzMultiRemove; let swizzMultiMerge; let isSwizzled = false; const sendToReactotron = (action, data) => { reactotron.send("asyncStorage.mutation", { action, data }); }; const setItem = async (key, value, callback) => { try { if (ignore.indexOf(key) < 0) { sendToReactotron("setItem", { key, value }); } } catch (e) {} return swizzSetItem(key, value, callback); }; const removeItem = async (key, callback) => { try { if (ignore.indexOf(key) < 0) { sendToReactotron("removeItem", { key }); } } catch (e) {} return swizzRemoveItem(key, callback); }; const mergeItem = async (key, value, callback) => { try { if (ignore.indexOf(key) < 0) { sendToReactotron("mergeItem", { key, value }); } } catch (e) {} return swizzMergeItem(key, value, callback); }; const clear = async callback => { try { sendToReactotron("clear"); } catch (e) {} return swizzClear(callback); }; const multiSet = async (pairs, callback) => { try { const shippablePairs = (pairs || []).filter(pair => pair && pair[0] && ignore.indexOf(pair[0]) < 0); if (shippablePairs.length > 0) { sendToReactotron("multiSet", { pairs: shippablePairs }); } } catch (e) {} return swizzMultiSet(pairs, callback); }; const multiRemove = async (keys, callback) => { try { const shippableKeys = (keys || []).filter(key => ignore.indexOf(key) < 0); if (shippableKeys.length > 0) { sendToReactotron("multiRemove", { keys: shippableKeys }); } } catch (e) {} return swizzMultiRemove(keys, callback); }; const multiMerge = async (pairs, callback) => { try { const shippablePairs = (pairs || []).filter(pair => pair && pair[0] && ignore.indexOf(pair[0]) < 0); if (shippablePairs.length > 0) { sendToReactotron("multiMerge", { pairs: shippablePairs }); } } catch (e) {} return swizzMultiMerge(pairs, callback); }; /** * Hijacks the AsyncStorage API. */ const trackAsyncStorage = () => { if (isSwizzled) return; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzSetItem = reactotron.asyncStorageHandler.setItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.setItem = setItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzRemoveItem = reactotron.asyncStorageHandler.removeItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.removeItem = removeItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzMergeItem = reactotron.asyncStorageHandler.mergeItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.mergeItem = mergeItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzClear = reactotron.asyncStorageHandler.clear; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.clear = clear; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzMultiSet = reactotron.asyncStorageHandler.multiSet; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.multiSet = multiSet; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzMultiRemove = reactotron.asyncStorageHandler.multiRemove; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.multiRemove = multiRemove; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis swizzMultiMerge = reactotron.asyncStorageHandler.multiMerge; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.multiMerge = multiMerge; isSwizzled = true; }; const untrackAsyncStorage = () => { if (!isSwizzled) return; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.setItem = swizzSetItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.removeItem = swizzRemoveItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.mergeItem = swizzMergeItem; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.clear = swizzClear; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.multiSet = swizzMultiSet; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.multiRemove = swizzMultiRemove; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis reactotron.asyncStorageHandler.multiMerge = swizzMultiMerge; isSwizzled = false; }; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: reactotron-apis if (reactotron.asyncStorageHandler) { trackAsyncStorage(); } return { features: { trackAsyncStorage, untrackAsyncStorage } }; }; var _default = exports.default = asyncStorage; //# sourceMappingURL=asyncStorage.js.map