import type { ESLint } from 'eslint';
import badRequestOnlyForInputValidation from './rules/bad-request-only-for-input-validation.js';
import noCredentialsSpreadInCacheKey from './rules/no-credentials-spread-in-cache-key.js';
import noErrorMessageRethrowToCaller from './rules/no-error-message-rethrow-to-caller.js';
import noFullErrorObjectLogging from './rules/no-full-error-object-logging.js';
import noSilentCatchReturn from './rules/no-silent-catch-return.js';
import noThrowNewError from './rules/no-throw-new-error.js';
import webhookHandlerRequiresSignatureVerification from './rules/webhook-handler-requires-signature-verification.js';
import webhookJsonParseMustHaveTry from './rules/webhook-json-parse-must-have-try.js';

export const plugin: ESLint.Plugin = {
  meta: { name: '@unito/integration-sdk' },
  rules: {
    'bad-request-only-for-input-validation': badRequestOnlyForInputValidation,
    'no-credentials-spread-in-cache-key': noCredentialsSpreadInCacheKey,
    'no-error-message-rethrow-to-caller': noErrorMessageRethrowToCaller,
    'no-full-error-object-logging': noFullErrorObjectLogging,
    'no-silent-catch-return': noSilentCatchReturn,
    'no-throw-new-error': noThrowNewError,
    'webhook-handler-requires-signature-verification': webhookHandlerRequiresSignatureVerification,
    'webhook-json-parse-must-have-try': webhookJsonParseMustHaveTry,
  },
};
