UNPKG

@saashub/qoq-eslint-v9-ts

Version:
99 lines (95 loc) 3.52 kB
'use strict'; var qoqEslintV9Js = require('@saashub/qoq-eslint-v9-js'); var tools = require('@saashub/qoq-eslint-v9-js/tools'); var eslintImportResolverTypescript = require('eslint-import-resolver-typescript'); var importPlugin = require('eslint-plugin-import-x'); var merge = require('lodash/merge.js'); var tseslint = require('typescript-eslint'); const baseConfig = merge({}, tools.omitRules(qoqEslintV9Js.baseConfig, 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': [eslintImportResolverTypescript.createTypeScriptImportResolver(), importPlugin.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, }, }); exports.baseConfig = baseConfig; exports.testConfig = testConfig;