Address new code analysis issues from previous commit.
Some checks failed
Checkers / linkcheck (push) Has been cancelled
Checkers / spellcheck (push) Has been cancelled
CI / build (20, macos-latest) (push) Has been cancelled
CI / build (20, ubuntu-latest) (push) Has been cancelled
CI / build (20, windows-latest) (push) Has been cancelled
CI / build (22, macos-latest) (push) Has been cancelled
CI / build (22, ubuntu-latest) (push) Has been cancelled
CI / build (22, windows-latest) (push) Has been cancelled
CI / build (24, macos-latest) (push) Has been cancelled
CI / build (24, ubuntu-latest) (push) Has been cancelled
CI / build (24, windows-latest) (push) Has been cancelled
CI / pnpm (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
TestRepos / build (latest, ubuntu-latest) (push) Has been cancelled
UpdateTestRepos / update (push) Has been cancelled

This commit is contained in:
David Anson 2025-09-27 06:21:34 +00:00
parent 3a5a59a422
commit d9eedde37d
6 changed files with 20 additions and 7 deletions

View file

@ -36,11 +36,12 @@ export function micromarkTokens() {
* Gets a cached object value - computes it and caches it.
*
* @param {string} name Cache object name.
* @param {Function} getValue Getter for object value.
* @param {() => Object} getValue Getter for object value.
* @returns {Object} Object value.
*/
function getCached(name, getValue) {
if (map.has(name)) {
// @ts-ignore
return map.get(name);
}
const value = getValue();
@ -56,6 +57,7 @@ function getCached(name, getValue) {
* @returns {MicromarkToken[]} Filtered tokens.
*/
export function filterByTypesCached(types, htmlFlow) {
// @ts-ignore
return getCached(
// eslint-disable-next-line prefer-rest-params
JSON.stringify(arguments),

View file

@ -2,6 +2,8 @@
"use strict";
/* eslint-disable jsdoc/reject-any-type */
/**
* Calls require for markdownit.cjs. Used to synchronously defer loading because module.createRequire is buggy under webpack (https://github.com/webpack/webpack/issues/16724).
*

View file

@ -6,7 +6,7 @@ import yaml from "js-yaml";
import { __dirname, importWithTypeJson } from "../test/esm-helpers.mjs";
const configSchema = await importWithTypeJson(import.meta, "../schema/markdownlint-config-schema.json");
/** @type {Object<string, any>} */
/** @type {import("markdownlint").Configuration} */
const configExample = {};
for (const rule in configSchema.properties) {
if (/^(?:MD\d{3}|default|extends)$/.test(rule)) {
@ -19,7 +19,7 @@ for (const rule in configSchema.properties) {
).filter(([ key ]) => ((key !== "enabled") && (key !== "severity")))
);
if (Object.keys(subproperties).length > 0) {
/** @type {Object<string, any>} */
/** @type {import("markdownlint").Configuration} */
const ruleExample = {};
// eslint-disable-next-line guard-for-in
for (const property in subproperties) {

View file

@ -26,6 +26,8 @@ export const __filename = (meta) => fileURLToPath(meta.url);
// eslint-disable-next-line no-underscore-dangle
export const __dirname = (meta) => path.dirname(__filename(meta));
/* eslint-disable jsdoc/reject-any-type */
/**
* Imports a file as JSON.
* Avoids "ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time".

View file

@ -1216,16 +1216,18 @@ test("customRulesOnErrorBad", (t) => {
]) {
const { propertyName, subPropertyName, propertyValues } = testCase;
for (const propertyValue of propertyValues) {
/** @type {Object<string, any>} */
const badObject = {
"lineNumber": 1
};
let propertyNames = null;
if (subPropertyName) {
// @ts-ignore
badObject[propertyName] = {};
// @ts-ignore
badObject[propertyName][subPropertyName] = propertyValue;
propertyNames = `${propertyName}.${subPropertyName}`;
} else {
// @ts-ignore
badObject[propertyName] = propertyValue;
propertyNames = propertyName;
}
@ -1290,16 +1292,18 @@ test("customRulesOnErrorInvalid", (t) => {
]) {
const { propertyName, subPropertyName, propertyValues } = testCase;
for (const propertyValue of propertyValues) {
/** @type {Object<string, any>} */
const badObject = {
"lineNumber": 1
};
let propertyNames = null;
if (subPropertyName) {
// @ts-ignore
badObject[propertyName] = {};
// @ts-ignore
badObject[propertyName][subPropertyName] = propertyValue;
propertyNames = `${propertyName}.${subPropertyName}`;
} else {
// @ts-ignore
badObject[propertyName] = propertyValue;
propertyNames = propertyName;
}
@ -1370,14 +1374,16 @@ test("customRulesOnErrorValid", (t) => {
]) {
const { propertyName, subPropertyName, propertyValues } = testCase;
for (const propertyValue of propertyValues) {
/** @type {Object<string, any>} */
const goodObject = {
"lineNumber": 1
};
if (subPropertyName) {
// @ts-ignore
goodObject[propertyName] = {};
// @ts-ignore
goodObject[propertyName][subPropertyName] = propertyValue;
} else {
// @ts-ignore
goodObject[propertyName] = propertyValue;
}
/** @type {import("markdownlint").Options} */

View file

@ -24,7 +24,7 @@ import customRules from "./rules/rules.cjs";
import { __dirname, importWithTypeJson } from "./esm-helpers.mjs";
/** @type {{exports: Object.<string, string>, homepage: string, version: string}} */
const packageJson = await importWithTypeJson(import.meta, "../package.json");
/** @type {{$id: string, properties: Object<string, any>}} */
/** @type {{$id: string, properties: Object<string, Object>}} */
const configSchema = await importWithTypeJson(import.meta, "../schema/markdownlint-config-schema.json");
const configSchemaStrict = await importWithTypeJson(import.meta, "../schema/markdownlint-config-schema-strict.json");
@ -1190,6 +1190,7 @@ test("validateConfigExampleJson", (t) => {
configSchema.$id.replace(/^.*\/v(?<ver>\d+\.\d+\.\d+)\/.*$/u, "$<ver>"),
packageJson.version
);
// @ts-ignore
t.is(configSchema.$id, configSchema.properties.$schema.default);
// Validate JSONC