UNPKG

qerrors

Version:

Intelligent error handling middleware with AI-powered analysis, environment validation, caching, and production-ready logging. Provides OpenAI-based error suggestions, queue management, retry mechanisms, and comprehensive configuration options for Node.js

104 lines (90 loc) 6.98 kB
'use strict'; //enforce strict parsing and error handling across module /** * Main entry point for the qerrors package - an intelligent error handling middleware * that combines traditional error logging with AI-powered error analysis. * * This module exports both the core qerrors function and the underlying logger, * providing flexibility for different use cases while maintaining a clean API. * * Design rationale: * - Separates concerns by keeping qerrors logic and logging logic in separate modules * - Provides both individual exports and a default export for different import patterns * - Maintains backward compatibility through multiple export strategies * - Uses strict mode to catch common JavaScript pitfalls early */ const qerrors = require('./lib/qerrors'); //load primary error handler implementation const logger = require('./lib/logger'); //load configured winston logger used by qerrors const errorTypes = require('./lib/errorTypes'); //load error classification and handling utilities const sanitization = require('./lib/sanitization'); //load data sanitization utilities const queueManager = require('./lib/queueManager'); //load queue management utilities const utils = require('./lib/utils'); //load common utility functions const config = require('./lib/config'); //load configuration utilities const envUtils = require('./lib/envUtils'); //load environment validation utilities const aiModelManager = require('./lib/aiModelManager'); //load AI model management utilities /** * Error logger middleware that logs errors and provides AI-powered suggestions. * @param {Error} error - The error object * @param {string} context - Context where the error occurred * @param {Object} [req] - Express request object (optional) * @param {Object} [res] - Express response object (optional) * @param {Function} [next] - Express next function (optional) * @returns {Promise<void>} */ module.exports = { //(primary export object allows destructuring imports like { qerrors, logger, errorTypes } providing clear explicit imports while keeping related functionality grouped) qerrors, //(main error handling function users interact with) logger, //(winston logger instance for consistent logging, exposes same configured logger qerrors uses internally) errorTypes, //(error classification and handling utilities for standardized error management) logErrorWithSeverity: qerrors.logErrorWithSeverity, //(severity-based logging function for enhanced error categorization) handleControllerError: qerrors.handleControllerError, //(standardized controller error handler with automatic response formatting) withErrorHandling: qerrors.withErrorHandling, //(async operation wrapper with integrated error handling) createTypedError: errorTypes.createTypedError, //(typed error factory for consistent error classification) createStandardError: errorTypes.createStandardError, //(standardized error object factory) ErrorTypes: errorTypes.ErrorTypes, //(error type constants for classification) ErrorSeverity: errorTypes.ErrorSeverity, //(severity level constants for monitoring) ErrorFactory: errorTypes.ErrorFactory, //(convenient error creation utilities for common scenarios) errorMiddleware: errorTypes.errorMiddleware, //(Express global error handling middleware) handleSimpleError: errorTypes.handleSimpleError, //(simplified error response handler for basic scenarios) // Enhanced logging utilities with security and performance monitoring logDebug: logger.logDebug, //(enhanced debug logging with sanitization) logInfo: logger.logInfo, //(enhanced info logging with sanitization) logWarn: logger.logWarn, //(enhanced warn logging with performance monitoring) logError: logger.logError, //(enhanced error logging with performance monitoring) logFatal: logger.logFatal, //(enhanced fatal logging with performance monitoring) logAudit: logger.logAudit, //(enhanced audit logging for compliance) createPerformanceTimer: logger.createPerformanceTimer, //(performance timer utility for operation monitoring) createEnhancedLogEntry: logger.createEnhancedLogEntry, //(enhanced log entry creator with metadata) LOG_LEVELS: logger.LOG_LEVELS, //(log level constants with priorities and colors) // Simple Winston logger for basic logging needs simpleLogger: logger.simpleLogger, //(basic Winston logger instance with console output) createSimpleWinstonLogger: logger.createSimpleWinstonLogger, //(factory for creating simple Winston loggers) // Data sanitization utilities for security sanitizeMessage: sanitization.sanitizeMessage, //(message sanitization utility for security) sanitizeContext: sanitization.sanitizeContext, //(context sanitization utility for security) addCustomSanitizationPattern: sanitization.addCustomSanitizationPattern, //(register custom sanitization rules) clearCustomSanitizationPatterns: sanitization.clearCustomSanitizationPatterns, //(clear custom patterns for testing) sanitizeWithCustomPatterns: sanitization.sanitizeWithCustomPatterns, //(enhanced sanitization with custom rules) // Queue management and monitoring utilities createLimiter: queueManager.createLimiter, //(concurrency limiting utility) getQueueLength: queueManager.getQueueLength, //(queue depth monitoring) getQueueRejectCount: queueManager.getQueueRejectCount, //(reject count monitoring) startQueueMetrics: queueManager.startQueueMetrics, //(start periodic metrics) stopQueueMetrics: queueManager.stopQueueMetrics, //(stop periodic metrics) // Common utility functions generateUniqueId: utils.generateUniqueId, //(unique identifier generation) createTimer: utils.createTimer, //(performance timing utilities) deepClone: utils.deepClone, //(deep object cloning) safeRun: utils.safeRun, //(safe function execution wrapper) verboseLog: utils.verboseLog, //(conditional verbose logging) // Configuration and environment utilities getEnv: config.getEnv, //(environment variable getter with defaults) getInt: config.getInt, //(integer parsing with validation) getMissingEnvVars: envUtils.getMissingEnvVars, //(environment validation) throwIfMissingEnvVars: envUtils.throwIfMissingEnvVars, //(required environment validation) warnIfMissingEnvVars: envUtils.warnIfMissingEnvVars, //(optional environment validation) // AI model management utilities (LangChain integration) getAIModelManager: aiModelManager.getAIModelManager, //(get AI model manager singleton) resetAIModelManager: aiModelManager.resetAIModelManager, //(reset AI model manager for testing) MODEL_PROVIDERS: aiModelManager.MODEL_PROVIDERS, //(available AI providers) createLangChainModel: aiModelManager.createLangChainModel //(create LangChain model instances) }; module.exports.default = qerrors; //(default export for backward compatibility allowing both 'const qerrors = require("qerrors")' and destructuring patterns, dual strategy accommodates different developer preferences)