import { packageBCD } from "../resolve-bcd.js"; import * as cheerio from "cheerio"; import { Doc } from "../../libs/types/document.js"; import { Flaw } from "./index.js"; // Bad BCD queries are when the `
` tags have an // ID (or even lack the `id` attribute) that don't match anything in the // @mdn/browser-compat-data package. E.g. Something like this: // //
export function getBadBCDQueriesFlaws( doc: Partial, $: cheerio.CheerioAPI ): Flaw[] { return $("div.bc-data") .map((i, element) => { const $element = $(element); // Macro adds "data-query", but some translated-content still uses "id". const dataQuery = $element.attr("data-query") || $element.attr("id"); if (!dataQuery) { return "BCD table without 'data-query' or 'id' attribute"; } const query = dataQuery.replace(/^bcd:/, ""); return !packageBCD(query).data && `No BCD data for query: ${query}`; }) .get() .filter((explanation) => !!explanation) .map((explanation, i) => ({ id: `bad_bcd_queries${i + 1}`, explanation, suggestion: null, })); }