import type { Linter } from 'eslint';
import { plugin } from '../plugin.js';

const recommended: Linter.Config[] = [
  {
    files: ['**/*.{js,ts}'],
    // Local negation, not global: removes matches from THIS config only. Test/declaration
    // files still pass through subsequent config blocks the consumer layers on top.
    ignores: ['**/*.test.ts', '**/*.spec.ts', '**/*.d.ts', 'node_modules/**', 'dist/**'],
    plugins: { '@unito/integration-sdk': plugin },
    rules: {
      '@unito/integration-sdk/bad-request-only-for-input-validation': 'error',
      '@unito/integration-sdk/no-credentials-spread-in-cache-key': 'error',
      '@unito/integration-sdk/no-error-message-rethrow-to-caller': 'error',
      '@unito/integration-sdk/no-full-error-object-logging': 'error',
      '@unito/integration-sdk/no-silent-catch-return': 'error',
      '@unito/integration-sdk/no-throw-new-error': 'error',
      '@unito/integration-sdk/webhook-handler-requires-signature-verification': 'error',
      '@unito/integration-sdk/webhook-json-parse-must-have-try': 'error',
    },
  },
];

export default recommended;
