error-flux
Version:
Network request interceptor and logger for web applications
89 lines (84 loc) • 2.7 kB
text/typescript
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) {}
};