{"version":3,"sources":["../src/logger.ts"],"names":[],"mappings":"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","file":"logger.cjs","sourcesContent":["// Simple logger interface\nexport interface Logger {\n  info: (obj: Record<string, unknown>, msg?: string) => void;\n  error: (obj: Record<string, unknown>, msg?: string) => void;\n  warn: (obj: Record<string, unknown>, msg?: string) => void;\n  debug: (obj: Record<string, unknown>, msg?: string) => void;\n  child: (bindings: object) => Logger;\n}\n\n/**\n * Centralized logger configuration\n * \n * This provides consistent logging across all modules with proper\n * context and standardized error handling.\n */\n\n// Simple console-based logger factory - no external dependencies\nconst createLogger = (): Logger => {\n  // Get log level from environment or default to 'info'\n  const logLevel = process.env.LOG_LEVEL || 'info';\n  \n  // Map log levels to numeric values for comparison\n  const logLevels = {\n    debug: 0,\n    info: 1,\n    warn: 2,\n    error: 3\n  } as const;\n  \n  // Current log level\n  const currentLevelValue = logLevel in logLevels \n    ? logLevels[logLevel as keyof typeof logLevels] \n    : logLevels.info;\n  \n  // Format a log message with timestamp and metadata\n  const formatLog = (level: string, obj: Record<string, unknown>, msg?: string): string => {\n    const timestamp = new Date().toISOString();\n    const service = 'wisdom-sdk';\n    const objStr = JSON.stringify(obj);\n    return `[${timestamp}] ${level.toUpperCase()} [${service}] ${msg || ''} ${objStr}`;\n  };\n  \n  // Simple implementation using console methods\n  return {\n    debug: (obj: Record<string, unknown>, msg?: string) => {\n      if (currentLevelValue <= 0) { // debug level\n        console.debug(formatLog('debug', obj, msg));\n      }\n    },\n    info: (obj: Record<string, unknown>, msg?: string) => {\n      if (currentLevelValue <= 1) { // info level\n        console.info(formatLog('info', obj, msg));\n      }\n    },\n    warn: (obj: Record<string, unknown>, msg?: string) => {\n      if (currentLevelValue <= 2) { // warn level\n        console.warn(formatLog('warn', obj, msg));\n      }\n    },\n    error: (obj: Record<string, unknown>, msg?: string) => {\n      if (currentLevelValue <= 3) { // error level\n        console.error(formatLog('error', obj, msg));\n      }\n    },\n    child: (bindings: object) => {\n      // For child loggers, we merge the bindings with the log objects\n      const childLogger = createLogger();\n      \n      // Override methods to include the bindings\n      return {\n        debug: (obj: Record<string, unknown>, msg?: string) => \n          childLogger.debug({ ...obj, ...bindings }, msg),\n        info: (obj: Record<string, unknown>, msg?: string) => \n          childLogger.info({ ...obj, ...bindings }, msg),\n        warn: (obj: Record<string, unknown>, msg?: string) => \n          childLogger.warn({ ...obj, ...bindings }, msg),\n        error: (obj: Record<string, unknown>, msg?: string) => \n          childLogger.error({ ...obj, ...bindings }, msg),\n        child: (nestedBindings: object) => \n          childLogger.child({ ...bindings, ...nestedBindings })\n      };\n    }\n  };\n};\n\n// Default logger instance\nexport const logger = createLogger();\n\n// Create a child logger with context\nexport function getContextLogger(context: string): Logger {\n  return logger.child({ context });\n}\n\n// Error handling utilities\nexport class AppError extends Error {\n  public readonly context: string;\n  public readonly code: string;\n  public readonly originalError?: Error;\n  public readonly data?: Record<string, unknown>;\n\n  constructor({\n    message,\n    context = 'general',\n    code = 'INTERNAL_ERROR',\n    originalError,\n    data,\n  }: {\n    message: string;\n    context?: string;\n    code?: string;\n    originalError?: Error;\n    data?: Record<string, unknown>;\n  }) {\n    super(message);\n    this.name = 'AppError';\n    this.context = context;\n    this.code = code;\n    this.originalError = originalError;\n    this.data = data;\n    // Preserve stack trace\n    Error.captureStackTrace(this, this.constructor);\n  }\n\n  // Logs this error with appropriate context and returns it\n  log() {\n    const contextLogger = getContextLogger(this.context);\n    const logObj = {\n      code: this.code,\n      error: this.message,\n      ...(this.originalError && { originalError: this.originalError.message }),\n      ...(this.data && { data: this.data }),\n    };\n\n    contextLogger.error(logObj, this.message);\n    return this;\n  }\n}\n\nexport default logger;"]}