- Install eslint, @typescript-eslint plugins, prettier, husky, lint-staged - Configure ESLint flat config with TypeScript parser - Enforce: no-explicit-any (with exceptions), no-unused-vars, naming-convention, prefer-const, no-console - Set style: 2-space indent, 140 char max-len, disable complexity rules - Configure Prettier: single quotes, 140 width, trailing commas - Setup husky pre-commit hook to auto-fix and format on commit - Replace console.log/warn with context.logger.info/warn in handlers - Remove console.log from ponder.config.ts (replaced with comment) - Add npm scripts: lint, lint:fix, format, format:check - All lint rules pass without warnings resolvel #45 Co-authored-by: johba <johba@harb.eth> Reviewed-on: https://codeberg.org/johba/harb/pulls/52
76 lines
1.7 KiB
JavaScript
76 lines
1.7 KiB
JavaScript
import eslint from '@eslint/js';
|
|
import tseslint from '@typescript-eslint/eslint-plugin';
|
|
import tsparser from '@typescript-eslint/parser';
|
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
|
|
|
export default [
|
|
eslint.configs.recommended,
|
|
{
|
|
files: ['**/*.ts'],
|
|
languageOptions: {
|
|
parser: tsparser,
|
|
parserOptions: {
|
|
project: './tsconfig.json',
|
|
tsconfigRootDir: import.meta.dirname,
|
|
},
|
|
globals: {
|
|
process: 'readonly',
|
|
console: 'readonly',
|
|
Context: 'readonly',
|
|
},
|
|
},
|
|
plugins: {
|
|
'@typescript-eslint': tseslint,
|
|
},
|
|
rules: {
|
|
// TypeScript
|
|
'@typescript-eslint/no-explicit-any': 'error',
|
|
'@typescript-eslint/no-unused-vars': [
|
|
'error',
|
|
{
|
|
argsIgnorePattern: '^_',
|
|
varsIgnorePattern: '^_',
|
|
},
|
|
],
|
|
'@typescript-eslint/naming-convention': [
|
|
'error',
|
|
{
|
|
selector: 'function',
|
|
format: ['camelCase'],
|
|
},
|
|
{
|
|
selector: 'variable',
|
|
format: ['camelCase', 'UPPER_CASE'],
|
|
},
|
|
{
|
|
selector: 'typeLike',
|
|
format: ['PascalCase'],
|
|
},
|
|
],
|
|
|
|
// Style
|
|
'prefer-const': 'error',
|
|
indent: ['error', 2, { SwitchCase: 1 }],
|
|
'max-len': [
|
|
'error',
|
|
{
|
|
code: 140,
|
|
ignoreStrings: true,
|
|
ignoreTemplateLiterals: true,
|
|
ignoreUrls: true,
|
|
},
|
|
],
|
|
|
|
// Console
|
|
'no-console': 'error',
|
|
|
|
// Complexity (off)
|
|
complexity: 'off',
|
|
'max-depth': 'off',
|
|
'max-nested-callbacks': 'off',
|
|
'max-params': 'off',
|
|
'max-statements': 'off',
|
|
},
|
|
},
|
|
eslintConfigPrettier,
|
|
];
|