@elsikora/eslint-config
Version:
ESLint configuration vision of ElsiKora
69 lines (64 loc) • 2.81 kB
JavaScript
;
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