UNPKG

@elsikora/eslint-config

Version:

ESLint configuration vision of ElsiKora

69 lines (64 loc) 2.81 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var react = require('@eslint-react/eslint-plugin'); require('eslint/use-at-your-own-risk'); var formatConfig_utility = require('../utility/format-config.utility.js'); var formatRuleName_utility = require('../utility/format-rule-name.utility.js'); var tseslint = require('typescript-eslint'); /** * Loads the ESLint configuration for React applications * @param {IConfigOptions} _config - Configuration options * @returns {Array<Linter.Config>} An array of ESLint configurations for React */ function loadConfig(_config) { return [ { settings: { react: { version: "detect", }, }, }, { ...formatConfig_utility.formatConfig([react.configs.strict])[0], files: ["**/*.js", "**/*.jsx"], languageOptions: { parserOptions: { ecmaFeatures: { jsx: true, }, ecmaVersion: "latest", }, }, }, { files: ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"], rules: { [formatRuleName_utility.formatRuleName("@eslint-react/dom-no-missing-button-type")]: "error", // Require explicit button types. [formatRuleName_utility.formatRuleName("@eslint-react/dom-no-string-style-prop")]: "error", // Enforce style prop values as objects. [formatRuleName_utility.formatRuleName("@eslint-react/dom-no-unknown-property")]: "error", // Disallow unknown DOM properties. [formatRuleName_utility.formatRuleName("@eslint-react/naming-convention-context-name")]: "error", // Enforce the naming of context providers [formatRuleName_utility.formatRuleName("@eslint-react/set-state-in-effect")]: "error", // Disallow direct setState in useEffect }, }, { files: ["**/*.jsx", "**/*.tsx"], rules: { // [formatRuleName("@eslint-react/naming-convention/filename-extension")]: ["error", { allow: "as-needed" }], // Enforce filename conventions [formatRuleName_utility.formatRuleName("@eslint-react/use-state")]: "error", // Enforce the use of the useState hook }, }, { ...formatConfig_utility.formatConfig([react.configs["strict-type-checked"]])[0], files: ["**/*.ts", "**/*.tsx"], languageOptions: { parser: tseslint.parser, parserOptions: { projectService: true, }, }, }, ]; } exports.default = loadConfig; //# sourceMappingURL=react.js.map