diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100755 index 0000000..83a51ae --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,51 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['eslint.config.mjs', 'dist/**'], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + eslintPluginPrettierRecommended, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + sourceType: 'commonjs', + parserOptions: { + projectService: { + allowDefaultProject: ['test/*.ts'], + }, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + rules: { + // Disable strict any rules for dynamic Prisma model access + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + + // Keep these as warnings + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-unused-vars': [ + 'error', + { argsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_', varsIgnorePattern: '^_' }, + ], + '@typescript-eslint/require-await': 'warn', + + // Prettier + 'prettier/prettier': ['error', { endOfLine: 'auto' }], + }, + }, +);