@elsikora/eslint-config
Version:
ESLint configuration vision of ElsiKora
73 lines (68 loc) • 3.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var compat = require('@eslint/compat');
require('eslint/use-at-your-own-risk');
var formatPluginName_utility = require('../utility/format-plugin-name.utility.js');
var formatRuleName_utility = require('../utility/format-rule-name.utility.js');
var next = require('@next/eslint-plugin-next');
var tseslint = require('typescript-eslint');
/**
* Loads the ESLint configuration for Next.js applications
* @returns {Array<Linter.Config>} An array of ESLint configurations for Next.js
*/
function loadConfig() {
return [
{
files: ["**/*.js", "**/*.jsx"],
languageOptions: {
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: "latest",
},
},
},
{
files: ["**/*.ts", "**/*.tsx"],
languageOptions: {
parser: tseslint.parser,
parserOptions: {
projectService: true,
},
},
},
{
files: ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"],
plugins: {
// eslint-disable-next-line @elsikora/typescript/no-unsafe-argument
[formatPluginName_utility.formatPluginName("@next/next")]: compat.fixupPluginRules(next),
},
rules: {
[formatRuleName_utility.formatRuleName("@next/next/google-font-display")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/google-font-preconnect")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/inline-script-id")]: "error",
[formatRuleName_utility.formatRuleName("@next/next/next-script-for-ga")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-assign-module-variable")]: "error",
[formatRuleName_utility.formatRuleName("@next/next/no-async-client-component")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-before-interactive-script-outside-document")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-css-tags")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-document-import-in-page")]: "error",
[formatRuleName_utility.formatRuleName("@next/next/no-duplicate-head")]: "error",
[formatRuleName_utility.formatRuleName("@next/next/no-head-element")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-head-import-in-document")]: "error",
[formatRuleName_utility.formatRuleName("@next/next/no-html-link-for-pages")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-img-element")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-page-custom-font")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-script-component-in-head")]: "error",
[formatRuleName_utility.formatRuleName("@next/next/no-styled-jsx-in-document")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-sync-scripts")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-title-in-document-head")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-typos")]: "warn",
[formatRuleName_utility.formatRuleName("@next/next/no-unwanted-polyfillio")]: "warn",
},
},
];
}
exports.default = loadConfig;
//# sourceMappingURL=next.js.map