/** * Shared Logger Utilities for ManaCore Apps * Provides consistent logging across mobile and web applications. */ // Check if we're in development mode // Works in both React Native (__DEV__) and Node.js environments declare const __DEV__: boolean | undefined; const isDevelopment = typeof __DEV__ !== 'undefined' ? __DEV__ : process.env.NODE_ENV === 'development'; /** * Main logger object with standard log levels. * Debug and info only log in development mode. * Warn and error always log. */ export const logger = { /** Log debug information (only in development) */ debug: (...args: unknown[]): void => { if (isDevelopment) { console.debug('[DEBUG]', ...args); } }, /** Log general information (only in development) */ info: (...args: unknown[]): void => { if (isDevelopment) { console.info('[INFO]', ...args); } }, /** Log warnings (always logged) */ warn: (...args: unknown[]): void => { console.warn('[WARN]', ...args); }, /** Log errors (always logged) */ error: (...args: unknown[]): void => { console.error('[ERROR]', ...args); }, /** Log success messages (only in development) */ success: (...args: unknown[]): void => { if (isDevelopment) { console.log('[SUCCESS]', ...args); } }, /** General log (only in development) */ log: (...args: unknown[]): void => { if (isDevelopment) { console.log('[LOG]', ...args); } }, }; /** * Performance logger for measuring execution time. * Only logs in development mode. */ export const perfLogger = { /** Start a performance timer with a label */ start: (label: string): void => { if (isDevelopment) { console.time(label); } }, /** End a performance timer and log the duration */ end: (label: string): void => { if (isDevelopment) { console.timeEnd(label); } }, }; /** * Network request logger for API debugging. * Request and response only log in development. * Errors always log. */ export const networkLogger = { /** Log an outgoing network request */ request: (url: string, method: string, body?: unknown): void => { if (isDevelopment) { console.log(`[NETWORK] ${method} ${url}`, body ? { body } : ''); } }, /** Log a network response */ response: (url: string, status: number, data?: unknown): void => { if (isDevelopment) { console.log(`[NETWORK] Response ${status} from ${url}`, data ? { data } : ''); } }, /** Log a network error (always logged) */ error: (url: string, error: unknown): void => { console.error(`[NETWORK] Error from ${url}`, error); }, }; // Individual function exports for backwards compatibility with manadeck pattern export const debug = logger.debug; export const info = logger.info; export const warn = logger.warn; export const error = logger.error; export const log = logger.log;