Skip to content

Commit

Permalink
chore(tasks/lint_rules): Remove usage of deprecated function
Browse files Browse the repository at this point in the history
`Linter.getRules` oxc-project#2932
  • Loading branch information
leo91000 committed May 3, 2024
1 parent 56a0db8 commit aa226ed
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 6 deletions.
25 changes: 25 additions & 0 deletions tasks/lint_rules/src/eslint-rules-meta.cjs
@@ -0,0 +1,25 @@
/** @typedef {import("eslint/lib/shared/types").RuleMeta} RuleMeta */

const ESLINT_RULES_META_URL = 'https://raw.githubusercontent.com/eslint/eslint/main/docs/src/_data/rules_meta.json';

/**
* A record of ESLint rules meta data.
* @typedef {Record<string, RuleMeta>} RuleMetaRecord
*/

/**
* Fetches the ESLint rules meta data from the ESLint repository.
* @returns {Promise<RuleMetaRecord>} The ESLint rules meta data.
*/
async function fetchEslintRulesMeta() {
const response = await fetch(ESLINT_RULES_META_URL);
if (!response.ok) {
throw new Error(`Failed to fetch ESLint rules meta: ${response.statusText}\n${await response.text()}`);
}

// @ts-expect-error Json returns unknown type
return await response.json();
}

exports.fetchEslintRulesMeta = fetchEslintRulesMeta;

4 changes: 3 additions & 1 deletion tasks/lint_rules/src/main.cjs
Expand Up @@ -11,6 +11,7 @@ const {
} = require("./oxlint-rules.cjs");
const { renderMarkdown } = require("./markdown-renderer.cjs");
const { updateGitHubIssue } = require("./result-reporter.cjs");
const { fetchEslintRulesMeta } = require("./eslint-rules-meta.cjs");

const HELP = `
Usage:
Expand Down Expand Up @@ -56,7 +57,8 @@ Plugins: ${Array.from(ALL_TARGET_PLUGINS.keys()).join(", ")}
//
// Generate entry and update status
//
const ruleEntries = createRuleEntries(linter.getRules());
const rulesMeta = await fetchEslintRulesMeta()
const ruleEntries = createRuleEntries(rulesMeta);
await updateImplementedStatus(ruleEntries);
updateNotSupportedStatus(ruleEntries);

Expand Down
10 changes: 5 additions & 5 deletions tasks/lint_rules/src/oxlint-rules.cjs
Expand Up @@ -60,18 +60,18 @@ const NOT_SUPPORTED_RULE_NAMES = new Set([
* @typedef {Map<string, RuleEntry>} RuleEntries
*/

/** @param {ReturnType<import("eslint").Linter["getRules"]>} loadedAllRules */
/** @param {import("./eslint-rules-meta.cjs").RuleMetaRecord} loadedAllRules */
exports.createRuleEntries = (loadedAllRules) => {
/** @type {RuleEntries} */
const rulesEntry = new Map();

for (const [name, rule] of loadedAllRules) {
for (const [name, ruleMeta] of Object.entries(loadedAllRules)) {
// Default eslint rules are not prefixed
const prefixedName = name.includes("/") ? name : `eslint/${name}`;

const docsUrl = rule.meta?.docs?.url ?? "";
const isDeprecated = rule.meta?.deprecated ?? false;
const isRecommended = rule.meta?.docs?.recommended ?? false;
const docsUrl = ruleMeta?.docs?.url ?? "";
const isDeprecated = ruleMeta.deprecated ?? false;
const isRecommended = ruleMeta.docs?.recommended ?? false;

rulesEntry.set(prefixedName, {
docsUrl,
Expand Down

0 comments on commit aa226ed

Please sign in to comment.