UNPKG

@saashub/qoq-eslint-v9-ts

Version:
96 lines (93 loc) 3.45 kB
import { baseConfig as baseConfig$1 } from '@saashub/qoq-eslint-v9-js'; import { omitRules } from '@saashub/qoq-eslint-v9-js/tools'; import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript'; import importPlugin, { createNodeResolver } from 'eslint-plugin-import-x'; import merge from 'lodash/merge.js'; import tseslint from 'typescript-eslint'; const baseConfig = merge({}, omitRules(baseConfig$1, Object.keys(importPlugin.configs.recommended.rules)), { name: '@saashub/qoq-eslint-v9-ts', languageOptions: { parser: tseslint.parser, parserOptions: { projectService: true, }, }, plugins: { '@typescript-eslint': tseslint.plugin, }, rules: { 'no-undef': 0, // from plugin page: "It is safe to disable this rule when using TypeScript because TypeScript's compiler enforces this check ...importPlugin.configs.typescript.rules, 'import-x/no-cycle': 'warn', 'import-x/no-duplicates': 'warn', 'import-x/no-named-default': 'warn', ...tseslint.plugin.configs .recommended.rules, ...tseslint.plugin.configs['recommended-requiring-type-checking'].rules, '@typescript-eslint/no-unsafe-assignment': 0, // strange rule, turned off for now '@typescript-eslint/naming-convention': [ 'warn', { selector: 'interface', prefix: ['I'], format: ['PascalCase'], }, { selector: 'typeAlias', prefix: ['T'], format: ['PascalCase'], }, { selector: 'enum', prefix: ['E'], format: ['PascalCase'], }, { selector: 'enumMember', format: ['UPPER_CASE'], }, { selector: 'class', format: ['PascalCase'], }, { selector: ['classProperty', 'classMethod', 'method', 'function'], format: ['camelCase'], }, { selector: ['classProperty'], modifiers: ['static'], format: ['UPPER_CASE'], }, { selector: 'parameter', leadingUnderscore: 'allow', format: ['camelCase'], filter: { regex: '(_{1}|_{2})', match: false, }, }, { selector: 'variable', format: ['camelCase', 'PascalCase', 'UPPER_CASE'], }, ], '@typescript-eslint/explicit-module-boundary-types': 'warn', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-misused-promises': ['warn', { checksVoidReturn: false }], '@typescript-eslint/no-unused-vars': ['warn', { args: 'after-used' }], '@typescript-eslint/require-await': 'warn', }, settings: { 'import-x/resolver-next': [createTypeScriptImportResolver(), createNodeResolver()], }, }); const testConfig = merge({}, baseConfig, { rules: { '@typescript-eslint/no-unsafe-argument': 0, '@typescript-eslint/no-unsafe-assignment': 0, '@typescript-eslint/no-unsafe-member-access': 0, }, }); export { baseConfig, testConfig };