/**
 * @file no-console.js
 * Forbid console usage in website code.
 *
 * Use ConsoleLogger instead:
 *   import { logger } from '@/lib/infrastructure/logging/logger'
 */

module.exports = {
  meta: {
    type: 'problem',
    docs: {
      description: 'Forbid console.* usage (use ConsoleLogger wrapper instead)',
      category: 'Logging',
      recommended: true,
    },
    schema: [],
    messages: {
      noConsole:
        'Do not use console. Use the project logger instead (ConsoleLogger). Import: `logger` from `@/lib/infrastructure/logging/logger`.',
    },
  },

  create(context) {
    const filename = context.getFilename();

    // Allow console within the logging infrastructure itself.
    // (ConsoleLogger implements the console adapter.)
    if (
      filename.includes('/lib/infrastructure/logging/') ||
      filename.includes('/lib/infrastructure/EnhancedErrorReporter') ||
      filename.includes('/lib/infrastructure/GlobalErrorHandler') ||
      filename.includes('/lib/infrastructure/ErrorReplay') ||
      filename.includes('/eslint-rules/')
    ) {
      return {};
    }

    return {
      MemberExpression(node) {
        // console.log / console.error / console.warn / console.info / console.debug / console.group* ...
        if (node.object && node.object.type === 'Identifier' && node.object.name === 'console') {
          context.report({ node, messageId: 'noConsole' });
        }
      },
    };
  },
};
