UNPKG

@layerzerolabs/eslint-config-next

Version:

LayerZero Eslint Config

125 lines (122 loc) 4.38 kB
// @ts-check /** @type {import('eslint').ESLint.ConfigData} */ const eslintConfig = { env: { node: true, browser: true, es6: true, jest: true, }, parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint', 'unused-imports', 'jest-extended'], extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/recommended', 'plugin:import/typescript', 'plugin:json/recommended-with-comments-legacy', 'plugin:prettier/recommended', ], ignorePatterns: [ '**/__tests__/*.test.ts', '**/dist/**', '**/node_modules/**', '**/generated/**', '**/typechain/**', '**/typechain-types/**', '**/coverage/**', '**/exports/**', ], settings: { 'import/internal-regex': '^@layerzerolabs/', 'import/external-module-folders': ['node_modules', '.yarn'], 'import/parsers': { '@typescript-eslint/parser': ['.ts', '.tsx'], }, 'import/resolver': { [require.resolve('eslint-import-resolver-typescript')]: { alwaysTryTypes: true, project: [ 'apps/**/tsconfig.json', 'config/**/tsconfig.json', 'packages/**/tsconfig.json', 'setting/**/tsconfig.json', ], }, }, }, rules: { 'unused-imports/no-unused-imports': 'warn', 'unused-imports/no-unused-vars': 'off', 'no-unused-vars': 'off', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-unused-vars': [ 'warn', { args: 'none', argsIgnorePattern: '^_|^(args|argv)$', caughtErrors: 'all', caughtErrorsIgnorePattern: '^_|^(e|err|error)$', destructuredArrayIgnorePattern: '^_', varsIgnorePattern: '^_', ignoreRestSiblings: true, }, ], '@typescript-eslint/no-non-null-assertion': 'warn', '@typescript-eslint/ban-ts-comment': 'warn', '@typescript-eslint/no-empty-function': 'warn', '@typescript-eslint/no-non-null-asserted-optional-chain': 'warn', '@typescript-eslint/no-empty-interface': 'warn', '@typescript-eslint/no-inferrable-types': 'warn', '@typescript-eslint/no-var-requires': 'off', 'import/no-unresolved': 'error', 'sort-imports': [ 'error', { ignoreCase: false, ignoreDeclarationSort: true, ignoreMemberSort: false, memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], allowSeparatedGroups: true, }, ], 'import/order': [ 'error', { groups: [ 'builtin', // Node "builtin" modules (e.g., fs, path) 'external', // "external" modules (e.g., lodash, react) 'internal', // "internal" modules (e.g., modules within the project) ['parent', 'sibling', 'index'], // Parent, sibling, and index modules 'object', // "object" imports (e.g., import { foo } from 'bar') 'type', // "type" imports (e.g., import type { Foo } from 'bar') ], pathGroups: [ { pattern: '@layerzerolabs/**', group: 'internal', position: 'before', }, { pattern: '@/**', // alias for the module itself which is defined in tsconfig.json group: 'parent', position: 'before', } ], distinctGroup: true, 'newlines-between': 'always', alphabetize: { order: 'asc', caseInsensitive: false, }, }, ], }, overrides: [ { files: ['**/*.json'], extends: ['plugin:json/recommended-with-comments-legacy'], }, ] }; module.exports = eslintConfig;