2024-09-04 08:34:54 -07:00
|
|
|
// Hack to get eslint run via pre-commit to find the braces plugin in the pre-commit cache,
|
|
|
|
|
// should be 'import braceRules from "eslint-plugin-brace-rules";'
|
|
|
|
|
import { createRequire } from 'node:module';
|
|
|
|
|
const require = createRequire(import.meta.url);
|
|
|
|
|
const braceRules = require("eslint-plugin-brace-rules");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const configIgnores = {
|
|
|
|
|
"ignores": [
|
|
|
|
|
"binaries/data/mods/mod/globalscripts/sprintf.js",
|
|
|
|
|
"libraries/",
|
|
|
|
|
"source/tools/profiler2/jquery*",
|
|
|
|
|
"source/tools/replayprofile/jquery*",
|
|
|
|
|
"source/tools/templatesanalyzer/tablefilter/",
|
2025-01-15 11:38:37 -08:00
|
|
|
|
|
|
|
|
// This files deliberately contain errors
|
|
|
|
|
"binaries/data/mods/_test.scriptinterface/module/import_inside_function.js",
|
2025-01-15 12:34:58 -08:00
|
|
|
"binaries/data/mods/_test.scriptinterface/module/export_default/invalid.js",
|
2024-09-04 08:34:54 -07:00
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const configEslintBase = {
|
|
|
|
|
"rules": {
|
|
|
|
|
"no-caller": 1,
|
|
|
|
|
"no-cond-assign": 1,
|
|
|
|
|
|
|
|
|
|
"no-constant-condition": ["error", {
|
|
|
|
|
"checkLoops": false,
|
|
|
|
|
}],
|
|
|
|
|
|
|
|
|
|
"no-dupe-args": 1,
|
|
|
|
|
"no-dupe-keys": 1,
|
|
|
|
|
"no-duplicate-case": 1,
|
|
|
|
|
"no-empty": 1,
|
|
|
|
|
"no-extra-boolean-cast": 0,
|
|
|
|
|
"no-extra-parens": 0,
|
|
|
|
|
"no-extra-semi": 1,
|
|
|
|
|
"no-floating-decimal": 1,
|
|
|
|
|
"no-func-assign": 1,
|
|
|
|
|
"no-negated-in-lhs": 1,
|
|
|
|
|
"no-obj-calls": 1,
|
|
|
|
|
"no-unreachable": 1,
|
|
|
|
|
"no-use-before-define": ["error", "nofunc"],
|
|
|
|
|
"use-isnan": 1,
|
|
|
|
|
"valid-jsdoc": 0,
|
|
|
|
|
"valid-typeof": 1,
|
|
|
|
|
"block-scoped-var": 0,
|
|
|
|
|
"consistent-return": 1,
|
|
|
|
|
"default-case": 1,
|
|
|
|
|
"dot-notation": 1,
|
|
|
|
|
"no-else-return": 1,
|
|
|
|
|
"no-invalid-this": 1,
|
|
|
|
|
"no-loop-func": 0,
|
|
|
|
|
|
|
|
|
|
"no-multi-spaces": ["warn", {
|
|
|
|
|
"ignoreEOLComments": true,
|
|
|
|
|
}],
|
|
|
|
|
|
|
|
|
|
"no-new": 1,
|
|
|
|
|
"no-redeclare": 0,
|
|
|
|
|
"no-return-assign": 1,
|
|
|
|
|
"no-self-assign": 1,
|
|
|
|
|
"no-self-compare": 1,
|
|
|
|
|
"no-unmodified-loop-condition": 1,
|
|
|
|
|
"no-unused-expressions": 1,
|
|
|
|
|
"no-unused-labels": 1,
|
|
|
|
|
"no-useless-concat": 0,
|
|
|
|
|
"yoda": 1,
|
|
|
|
|
"no-delete-var": 1,
|
|
|
|
|
"no-label-var": 1,
|
|
|
|
|
"no-shadow-restricted-names": 1,
|
|
|
|
|
"no-shadow": 1,
|
|
|
|
|
"no-undef": 0,
|
|
|
|
|
"no-undef-init": 1,
|
|
|
|
|
"no-unused-vars": 0,
|
|
|
|
|
"comma-spacing": 1,
|
|
|
|
|
|
|
|
|
|
"indent": ["warn", "tab", {
|
|
|
|
|
"outerIIFEBody": 0,
|
|
|
|
|
}],
|
|
|
|
|
|
|
|
|
|
"key-spacing": 1,
|
|
|
|
|
"new-cap": 0,
|
|
|
|
|
"new-parens": 1,
|
|
|
|
|
"no-mixed-spaces-and-tabs": ["warn", "smart-tabs"],
|
|
|
|
|
"no-multi-assign": 1,
|
|
|
|
|
"no-trailing-spaces": 1,
|
|
|
|
|
"no-unneeded-ternary": 1,
|
|
|
|
|
"no-irregular-whitespace": 1,
|
|
|
|
|
"object-curly-spacing": ["warn", "always"],
|
|
|
|
|
"operator-assignment": 1,
|
|
|
|
|
"operator-linebreak": ["warn", "after"],
|
|
|
|
|
"quote-props": 1,
|
|
|
|
|
"semi": 1,
|
|
|
|
|
"semi-spacing": 1,
|
|
|
|
|
"space-before-function-paren": ["warn", "never"],
|
|
|
|
|
"space-in-parens": 1,
|
|
|
|
|
"space-unary-ops": 1,
|
|
|
|
|
"spaced-comment": ["warn", "always"],
|
|
|
|
|
"no-class-assign": 1,
|
|
|
|
|
"no-const-assign": 1,
|
|
|
|
|
"no-dupe-class-members": 1,
|
|
|
|
|
"prefer-const": 1,
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const configBracesRules = {
|
|
|
|
|
"plugins": {
|
|
|
|
|
"brace-rules": braceRules
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"rules": {
|
|
|
|
|
"brace-rules/brace-on-same-line": [
|
|
|
|
|
"warn",
|
|
|
|
|
{
|
|
|
|
|
"FunctionDeclaration": "never",
|
|
|
|
|
"FunctionExpression": "ignore",
|
|
|
|
|
"ArrowFunctionExpression": "always",
|
|
|
|
|
"IfStatement": "never",
|
|
|
|
|
"TryStatement": "ignore",
|
|
|
|
|
"CatchClause": "ignore",
|
|
|
|
|
"DoWhileStatement": "never",
|
|
|
|
|
"WhileStatement": "never",
|
|
|
|
|
"ForStatement": "never",
|
|
|
|
|
"ForInStatement": "never",
|
|
|
|
|
"ForOfStatement": "never",
|
|
|
|
|
"SwitchStatement": "never",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"allowSingleLine": true,
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const configs = [configIgnores, configEslintBase];
|
|
|
|
|
configs[1].plugins = { ...configBracesRules.plugins };
|
|
|
|
|
Object.assign(configs[1].rules, configBracesRules.rules);
|
|
|
|
|
|
|
|
|
|
export default configs;
|