Skip to content

Commit

Permalink
Chore: lazy loading for rules (#11705)
Browse files Browse the repository at this point in the history
  • Loading branch information
mysticatea authored and not-an-aardvark committed May 11, 2019
1 parent f47d72c commit f42d0af
Show file tree
Hide file tree
Showing 6 changed files with 479 additions and 294 deletions.
27 changes: 21 additions & 6 deletions Makefile.js
Original file line number Diff line number Diff line change
Expand Up @@ -847,16 +847,31 @@ target.checkRuleFiles = function() {
}

// check parity between rules index file and rules directory
const builtInRulesIndexPath = "./lib/built-in-rules-index";
const ruleIdsInIndex = require(builtInRulesIndexPath);
const ruleEntryFromIndexIsMissing = !ruleIdsInIndex.has(basename);
const ruleIdsInIndex = require("./lib/built-in-rules-index");
const ruleDef = ruleIdsInIndex.get(basename);

if (ruleEntryFromIndexIsMissing) {
console.error(`Missing rule from index (${builtInRulesIndexPath}.js): ${basename}. If you just added a ` +
"new rule then add an entry for it in this file.");
if (!ruleDef) {
console.error(`Missing rule from index (./lib/built-in-rules-index.js): ${basename}. If you just added a new rule then add an entry for it in this file.`);
errors++;
}

// check eslint:recommended
const recommended = require("./conf/eslint-recommended");

if (ruleDef) {
if (ruleDef.meta.docs.recommended) {
if (recommended.rules[basename] !== "error") {
console.error(`Missing rule from eslint:recommended (./conf/eslint-recommended.js): ${basename}. If you just made a rule recommended then add an entry for it in this file.`);
errors++;
}
} else {
if (basename in recommended.rules) {
console.error(`Extra rule in eslint:recommended (./conf/eslint-recommended.js): ${basename}. If you just added a rule then don't add an entry for it in this file.`);
errors++;
}
}
}

// check for tests
if (!test("-f", `tests/lib/rules/${basename}.js`)) {
console.error("Missing tests for rule %s", basename);
Expand Down
69 changes: 60 additions & 9 deletions conf/eslint-recommended.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,65 @@

"use strict";

const builtInRules = require("../lib/built-in-rules-index");
const recommendedRules = {};

for (const [ruleId, rule] of builtInRules) {
if (rule.meta.docs.recommended) {
recommendedRules[ruleId] = "error";
}
}
/* eslint sort-keys: ["error", "asc"] */

/** @type {import("../lib/util/types").ConfigData} */
module.exports = { rules: recommendedRules };
module.exports = {
rules: {
"constructor-super": "error",
"for-direction": "error",
"getter-return": "error",
"no-async-promise-executor": "error",
"no-case-declarations": "error",
"no-class-assign": "error",
"no-compare-neg-zero": "error",
"no-cond-assign": "error",
"no-const-assign": "error",
"no-constant-condition": "error",
"no-control-regex": "error",
"no-debugger": "error",
"no-delete-var": "error",
"no-dupe-args": "error",
"no-dupe-class-members": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-empty": "error",
"no-empty-character-class": "error",
"no-empty-pattern": "error",
"no-ex-assign": "error",
"no-extra-boolean-cast": "error",
"no-extra-semi": "error",
"no-fallthrough": "error",
"no-func-assign": "error",
"no-global-assign": "error",
"no-inner-declarations": "error",
"no-invalid-regexp": "error",
"no-irregular-whitespace": "error",
"no-misleading-character-class": "error",
"no-mixed-spaces-and-tabs": "error",
"no-new-symbol": "error",
"no-obj-calls": "error",
"no-octal": "error",
"no-prototype-builtins": "error",
"no-redeclare": "error",
"no-regex-spaces": "error",
"no-self-assign": "error",
"no-shadow-restricted-names": "error",
"no-sparse-arrays": "error",
"no-this-before-super": "error",
"no-undef": "error",
"no-unexpected-multiline": "error",
"no-unreachable": "error",
"no-unsafe-finally": "error",
"no-unsafe-negation": "error",
"no-unused-labels": "error",
"no-unused-vars": "error",
"no-useless-catch": "error",
"no-useless-escape": "error",
"no-with": "error",
"require-atomic-updates": "error",
"require-yield": "error",
"use-isnan": "error",
"valid-typeof": "error"
}
};
Loading

0 comments on commit f42d0af

Please sign in to comment.