UNPKG

error-flux

Version:

Network request interceptor and logger for web applications

58 lines (47 loc) 1.37 kB
// Global state store for ErrorFlux // This is a simple state management solution for vanilla JS import { ErrorFluxState, StorageTypes } from "../types"; const defaultState: ErrorFluxState = { dbName: "ErrorFluxDB", storeName: { networkLogs: "networkLogs", consoleErrors: "consoleErrors", unhandledErrors: "unhandledErrors", }, pattern: ".*", allowOnlyNetworkErrors: true, storageType: StorageTypes.IndexedDB, }; class ErrorFluxStore { private state: ErrorFluxState; private listeners: Array<(state: ErrorFluxState) => void> = []; constructor(initialState?: Partial<ErrorFluxState>) { this.state = { ...defaultState, ...initialState, }; } getState(): ErrorFluxState { return { ...this.state }; } setState(newState: Partial<ErrorFluxState>): void { this.state = { ...this.state, ...newState, }; this.notifyListeners(); } subscribe(listener: (state: ErrorFluxState) => void): () => void { this.listeners.push(listener); // Return unsubscribe function return () => { this.listeners = this.listeners.filter((l) => l !== listener); }; } private notifyListeners(): void { this.listeners.forEach((listener) => listener(this.getState())); } } // Create and export a singleton instance const store = new ErrorFluxStore(); export default store;