UNPKG

error-flux

Version:

Network request interceptor and logger for web applications

89 lines (84 loc) 2.7 kB
import { ErrorTypes, StorageType } from "./../types"; import { getConsoleErrors, getNetworkLogs, getUnhandledErrors, } from "../db/index"; import store from "../state/store"; import { StorageTypes } from "../types"; import downloadJSON from "./download-json"; export const downloadNetworkLogs = async () => { const getLogs = async () => { const { storeName: storeNameObj, dbName, storageType } = store.getState(); const storeName = storeNameObj.networkLogs; switch (storageType) { case StorageTypes.IndexedDB: return await getNetworkLogs(); case StorageTypes.LocalStorage: return ( JSON.parse(localStorage.getItem(dbName) || "{}")?.[storeName] || [] ); case StorageTypes.SessionStorage: return ( JSON.parse(sessionStorage.getItem(dbName) || "{}")?.[storeName] || [] ); } }; try { const logs = await getLogs(); downloadJSON( { type: ErrorTypes.Network, logs }, `${ErrorTypes.Network}_${new Date().getTime()}` ); } catch (err) {} }; export const downloadConsoleErrors = async () => { const getLogs = async () => { const { storeName: storeNameObj, dbName, storageType } = store.getState(); const storeName = storeNameObj.consoleErrors; switch (storageType) { case StorageTypes.IndexedDB: return await getConsoleErrors(); case StorageTypes.LocalStorage: return ( JSON.parse(localStorage.getItem(dbName) || "{}")?.[storeName] || [] ); case StorageTypes.SessionStorage: return ( JSON.parse(sessionStorage.getItem(dbName) || "{}")?.[storeName] || [] ); } }; try { const logs = await getLogs(); downloadJSON( { type: ErrorTypes.Errors, logs }, `${ErrorTypes.Errors}_${new Date().getTime()}` ); } catch (err) {} }; export const downloadUnhandledErrors = async () => { const getLogs = async () => { const { storeName: storeNameObj, dbName, storageType } = store.getState(); const storeName = storeNameObj.unhandledErrors; switch (storageType) { case StorageTypes.IndexedDB: return await getUnhandledErrors(); case StorageTypes.LocalStorage: return ( JSON.parse(localStorage.getItem(dbName) || "{}")?.[storeName] || [] ); case StorageTypes.SessionStorage: return ( JSON.parse(sessionStorage.getItem(dbName) || "{}")?.[storeName] || [] ); } }; try { const logs = await getLogs(); downloadJSON( { type: ErrorTypes.UnhandledRejections, logs }, `${ErrorTypes.UnhandledRejections}_${new Date().getTime()}` ); } catch (err) {} };