wip
Some checks are pending
Checkers / linkcheck (push) Waiting to run
Checkers / spellcheck (push) Waiting to run
CI / build (20, macos-latest) (push) Waiting to run
CI / build (20, ubuntu-latest) (push) Waiting to run
CI / build (20, windows-latest) (push) Waiting to run
CI / build (22, macos-latest) (push) Waiting to run
CI / build (22, ubuntu-latest) (push) Waiting to run
CI / build (22, windows-latest) (push) Waiting to run
CI / build (24, macos-latest) (push) Waiting to run
CI / build (24, ubuntu-latest) (push) Waiting to run
CI / build (24, windows-latest) (push) Waiting to run
CI / pnpm (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
TestRepos / build (latest, ubuntu-latest) (push) Waiting to run
UpdateTestRepos / update (push) Waiting to run

This commit is contained in:
David Anson 2025-09-20 22:19:47 -07:00
parent 8021c087d4
commit d5abdb5a0b
12 changed files with 1606 additions and 64 deletions

View file

@ -1865,97 +1865,289 @@ export interface ConfigurationStrict {
/** /**
* headings : MD001, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043 * headings : MD001, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043
*/ */
headings?: boolean | ("error" | "warning"); headings?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* bullet : MD004, MD005, MD007, MD032 * bullet : MD004, MD005, MD007, MD032
*/ */
bullet?: boolean | ("error" | "warning"); bullet?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* ul : MD004, MD005, MD007, MD030, MD032 * ul : MD004, MD005, MD007, MD030, MD032
*/ */
ul?: boolean | ("error" | "warning"); ul?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* indentation : MD005, MD007, MD027 * indentation : MD005, MD007, MD027
*/ */
indentation?: boolean | ("error" | "warning"); indentation?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* whitespace : MD009, MD010, MD012, MD027, MD028, MD030, MD037, MD038, MD039 * whitespace : MD009, MD010, MD012, MD027, MD028, MD030, MD037, MD038, MD039
*/ */
whitespace?: boolean | ("error" | "warning"); whitespace?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* hard_tab : MD010 * hard_tab : MD010
*/ */
hard_tab?: boolean | ("error" | "warning"); hard_tab?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* links : MD011, MD034, MD039, MD042, MD051, MD052, MD053, MD054, MD059 * links : MD011, MD034, MD039, MD042, MD051, MD052, MD053, MD054, MD059
*/ */
links?: boolean | ("error" | "warning"); links?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* blank_lines : MD012, MD022, MD031, MD032, MD047 * blank_lines : MD012, MD022, MD031, MD032, MD047
*/ */
blank_lines?: boolean | ("error" | "warning"); blank_lines?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* line_length : MD013 * line_length : MD013
*/ */
line_length?: boolean | ("error" | "warning"); line_length?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* code : MD014, MD031, MD038, MD040, MD046, MD048 * code : MD014, MD031, MD038, MD040, MD046, MD048
*/ */
code?: boolean | ("error" | "warning"); code?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* atx : MD018, MD019 * atx : MD018, MD019
*/ */
atx?: boolean | ("error" | "warning"); atx?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* spaces : MD018, MD019, MD020, MD021, MD023 * spaces : MD018, MD019, MD020, MD021, MD023
*/ */
spaces?: boolean | ("error" | "warning"); spaces?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* atx_closed : MD020, MD021 * atx_closed : MD020, MD021
*/ */
atx_closed?: boolean | ("error" | "warning"); atx_closed?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* blockquote : MD027, MD028 * blockquote : MD027, MD028
*/ */
blockquote?: boolean | ("error" | "warning"); blockquote?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* ol : MD029, MD030, MD032 * ol : MD029, MD030, MD032
*/ */
ol?: boolean | ("error" | "warning"); ol?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* html : MD033 * html : MD033
*/ */
html?: boolean | ("error" | "warning"); html?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* url : MD034 * url : MD034
*/ */
url?: boolean | ("error" | "warning"); url?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* hr : MD035 * hr : MD035
*/ */
hr?: boolean | ("error" | "warning"); hr?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* emphasis : MD036, MD037, MD049, MD050 * emphasis : MD036, MD037, MD049, MD050
*/ */
emphasis?: boolean | ("error" | "warning"); emphasis?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* language : MD040 * language : MD040
*/ */
language?: boolean | ("error" | "warning"); language?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* spelling : MD044 * spelling : MD044
*/ */
spelling?: boolean | ("error" | "warning"); spelling?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* accessibility : MD045, MD059 * accessibility : MD045, MD059
*/ */
accessibility?: boolean | ("error" | "warning"); accessibility?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* images : MD045, MD052, MD053, MD054 * images : MD045, MD052, MD053, MD054
*/ */
images?: boolean | ("error" | "warning"); images?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
/** /**
* table : MD055, MD056, MD058, MD060 * table : MD055, MD056, MD058, MD060
*/ */
table?: boolean | ("error" | "warning"); table?:
| boolean
| ("error" | "warning")
| {
/**
* Tag severity
*/
severity?: "error" | "warning" | "off";
};
} }

View file

@ -111,6 +111,10 @@ export type EnabledRulesPerLineNumberResult = {
* Enabled rule list. * Enabled rule list.
*/ */
enabledRuleList: Rule[]; enabledRuleList: Rule[];
/**
* Rule severities
*/
ruleSeverities: Map<string, "error" | "warning" | "off">;
}; };
/** /**
* Function to implement rule logic. * Function to implement rule logic.

View file

@ -276,6 +276,7 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
// effectiveConfig[ruleName] = false; // effectiveConfig[ruleName] = false;
// } // }
for (const key of Object.keys(config)) { for (const key of Object.keys(config)) {
const keyUpper = key.toUpperCase();
let value = config[key]; let value = config[key];
if (value) { if (value) {
if (value instanceof Object) { if (value instanceof Object) {
@ -284,20 +285,27 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
if (severity === "off") { if (severity === "off") {
value = false; value = false;
} else { } else {
for (const ruleName of (aliasToRuleNames[keyUpper] || [])) {
if (severity === "warning") { if (severity === "warning") {
ruleSeverities.set(key.toUpperCase(), "warning"); ruleSeverities.set(ruleName, "warning");
} else { } else {
ruleSeverities.set(key.toUpperCase(), "error"); ruleSeverities.set(ruleName, "error");
}
} }
value = Object.fromEntries(Object.entries(value).filter(([ k ]) => k !== "severity")); value = Object.fromEntries(Object.entries(value).filter(([ k ]) => k !== "severity"));
} }
} else { } else {
if (value === "warning") {
for (const ruleName of (aliasToRuleNames[keyUpper] || [])) {
ruleSeverities.set(ruleName, "warning");
}
}
value = {}; value = {};
} }
} else { } else {
value = false; value = false;
} }
for (const ruleName of (aliasToRuleNames[key.toUpperCase()] || [])) { for (const ruleName of (aliasToRuleNames[keyUpper] || [])) {
effectiveConfig[ruleName] = value; effectiveConfig[ruleName] = value;
} }
} }
@ -314,6 +322,7 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
* @property {Configuration} effectiveConfig Effective configuration. * @property {Configuration} effectiveConfig Effective configuration.
* @property {any[]} enabledRulesPerLineNumber Enabled rules per line number. * @property {any[]} enabledRulesPerLineNumber Enabled rules per line number.
* @property {Rule[]} enabledRuleList Enabled rule list. * @property {Rule[]} enabledRuleList Enabled rule list.
* @property {Map<string, "error" | "warning" | "off">} ruleSeverities Rule severities
*/ */
/** /**
@ -428,7 +437,7 @@ function getEnabledRulesPerLineNumber(
} }
// Handle inline comments // Handle inline comments
handleInlineConfig([ lines.join("\n") ], configureFile); handleInlineConfig([ lines.join("\n") ], configureFile);
const { effectiveConfig } = getEffectiveConfig(ruleList, config, aliasToRuleNames); const { effectiveConfig, ruleSeverities } = getEffectiveConfig(ruleList, config, aliasToRuleNames);
for (const rule of ruleList) { for (const rule of ruleList) {
const ruleName = rule.names[0].toUpperCase(); const ruleName = rule.names[0].toUpperCase();
allRuleNames.push(ruleName); allRuleNames.push(ruleName);
@ -449,7 +458,8 @@ function getEnabledRulesPerLineNumber(
return { return {
effectiveConfig, effectiveConfig,
enabledRulesPerLineNumber, enabledRulesPerLineNumber,
enabledRuleList enabledRuleList,
ruleSeverities
}; };
} }
@ -494,7 +504,7 @@ function lintContent(
const { frontMatterLines } = removeFrontMatterResult; const { frontMatterLines } = removeFrontMatterResult;
content = removeFrontMatterResult.content; content = removeFrontMatterResult.content;
// Get enabled rules per line (with HTML comments present) // Get enabled rules per line (with HTML comments present)
const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList } = const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList, ruleSeverities } =
getEnabledRulesPerLineNumber( getEnabledRulesPerLineNumber(
ruleList, ruleList,
content.split(helpers.newLineRe), content.split(helpers.newLineRe),
@ -668,7 +678,8 @@ function lintContent(
"errorContext": errorInfo.context?.replace(helpers.newLineRe, " ") || null, "errorContext": errorInfo.context?.replace(helpers.newLineRe, " ") || null,
"errorRange": errorInfo.range ? [ ...errorInfo.range ] : null, "errorRange": errorInfo.range ? [ ...errorInfo.range ] : null,
"fixInfo": fixInfo ? cleanFixInfo : null, "fixInfo": fixInfo ? cleanFixInfo : null,
"severity": "error" // @ts-ignore
"severity": ruleSeverities.get(ruleName)
}); });
} }
// Call (possibly external) rule function to report errors // Call (possibly external) rule function to report errors

View file

@ -657,7 +657,19 @@ for (const [ tag, tagTags ] of Object.entries(tags)) {
"oneOf": [ "oneOf": [
{ "type": "boolean" }, { "type": "boolean" },
// "off" not (yet) supported because behavior of older versions would be to enable // "off" not (yet) supported because behavior of older versions would be to enable
{ "enum": [ "error", "warning" ] } { "enum": [ "error", "warning" ] },
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [ "error", "warning", "off" ],
"default": "error"
}
}
}
], ],
"default": true "default": true
}; };

View file

@ -4322,6 +4322,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4337,6 +4353,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4352,6 +4384,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4367,6 +4415,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4382,6 +4446,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4397,6 +4477,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4412,6 +4508,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4427,6 +4539,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4442,6 +4570,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4457,6 +4601,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4472,6 +4632,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4487,6 +4663,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4502,6 +4694,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4517,6 +4725,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4532,6 +4756,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4547,6 +4787,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4562,6 +4818,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4577,6 +4849,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4592,6 +4880,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4607,6 +4911,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4622,6 +4942,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4637,6 +4973,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4652,6 +5004,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4667,6 +5035,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true

View file

@ -4322,6 +4322,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4337,6 +4353,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4352,6 +4384,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4367,6 +4415,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4382,6 +4446,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4397,6 +4477,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4412,6 +4508,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4427,6 +4539,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4442,6 +4570,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4457,6 +4601,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4472,6 +4632,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4487,6 +4663,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4502,6 +4694,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4517,6 +4725,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4532,6 +4756,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4547,6 +4787,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4562,6 +4818,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4577,6 +4849,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4592,6 +4880,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4607,6 +4911,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4622,6 +4942,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4637,6 +4973,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4652,6 +5004,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true
@ -4667,6 +5035,22 @@
"error", "error",
"warning" "warning"
] ]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"severity": {
"description": "Tag severity",
"type": "string",
"enum": [
"error",
"warning",
"off"
],
"default": "error"
}
}
} }
], ],
"default": true "default": true

View file

@ -0,0 +1,58 @@
# Configure File With Severity Alias
Text * text* {MD037}
Text ` text` {MD038}
Text [ text](.)
+ List item {MD004}
Text (text)[.] {MD011}
2. List item
<!-- markdownlint-disable -->
Text * text*
Text ` text`
Text [ text](.)
+ List item
Text (text)[.]
2. List item
<!-- markdownlint-restore -->
Text * text* {MD037}
Text ` text` {MD038}
Text [ text](.)
+ List item {MD004}
Text (text)[.] {MD011}
2. List item
<!-- markdownlint-configure-file {
"default": false,
"no-space-in-emphasis": "error",
"no-space-in-code": "warning",
"no-space-in-links": false,
"ul-style": {
"severity": "error",
"style": "dash"
},
"no-reversed-links": {
"severity": "warning"
},
"ol-prefix": {
"severity": "off"
}
} -->

View file

@ -1,16 +1,16 @@
# Configure File With Severity # Configure File With Severity Name
Text * text* {MD037} Text * text* {MD037}
Text ` text` {MD038} Text ` text` {MD038}
Text [ text](.) {MD039} Text [ text](.)
+ List item {MD004} + List item {MD004}
Text (text)[.] {MD011} Text (text)[.] {MD011}
2. List item {MD029} 2. List item
<!-- markdownlint-disable --> <!-- markdownlint-disable -->
@ -32,27 +32,27 @@ Text * text* {MD037}
Text ` text` {MD038} Text ` text` {MD038}
Text [ text](.) {MD039} Text [ text](.)
+ List item {MD004} + List item {MD004}
Text (text)[.] {MD011} Text (text)[.] {MD011}
2. List item {MD029} 2. List item
<!-- markdownlint-configure-file { <!-- markdownlint-configure-file {
"default": false, "default": false,
"MD037": "error", "MD037": "error",
"MD038": "error", "MD038": "warning",
"MD039": "error", "MD039": false,
"MD004": { "MD004": {
"severity": "error", "severity": "error",
"style": "dash" "style": "dash"
}, },
"MD011": { "MD011": {
"severity": "error" "severity": "warning"
}, },
"MD029": { "MD029": {
"severity": "error" "severity": "off"
} }
} --> } -->

View file

@ -0,0 +1,56 @@
# Configure File With Severity Tag
Text * text* {MD037}
Text ` text` {MD038}
Text [ text](.) {MD039}
+ List item
Text (text)[.] {MD011}
2. List item {MD029}
<!-- markdownlint-disable -->
Text * text*
Text ` text`
Text [ text](.)
+ List item
Text (text)[.]
2. List item
<!-- markdownlint-restore -->
Text * text* {MD037}
Text ` text` {MD038}
Text [ text](.) {MD039}
+ List item
Text (text)[.] {MD011}
2. List item {MD029}
<!-- markdownlint-configure-file {
"default": false,
"emphasis": "error",
"code": "warning",
"bullet": {
"severity": "off"
},
"links": {
"severity": "warning"
},
"ol": {
"severity": "error"
}
} -->

View file

@ -226,6 +226,16 @@ const configTestExpected3511 = {
"MD041 1 error" "MD041 1 error"
] ]
}; };
const configTestExpected3511warning = {
"./test/atx_heading_spacing.md": [
"MD019 3 warning",
"MD019 5 warning",
"MD041 1 warning"
],
"./test/first_heading_bad_atx.md": [
"MD041 1 warning"
]
};
const configTestExpected13511 = { const configTestExpected13511 = {
"./test/atx_heading_spacing.md": [ "./test/atx_heading_spacing.md": [
"MD018 1 error", "MD018 1 error",
@ -237,6 +247,17 @@ const configTestExpected13511 = {
"MD041 1 error" "MD041 1 error"
] ]
}; };
const configTestExpected13511warning = {
"./test/atx_heading_spacing.md": [
"MD018 1 warning",
"MD019 3 warning",
"MD019 5 warning",
"MD041 1 warning"
],
"./test/first_heading_bad_atx.md": [
"MD041 1 warning"
]
};
test("defaultUnset", getConfigTestImplementation( test("defaultUnset", getConfigTestImplementation(
{}, {},
@ -273,7 +294,7 @@ test("defaultError", getConfigTestImplementation(
test("defaultWarning", getConfigTestImplementation( test("defaultWarning", getConfigTestImplementation(
// @ts-ignore // @ts-ignore
{ "default": "warning" }, { "default": "warning" },
configTestExpected13511 configTestExpected13511warning
)); ));
test("defaultOff", getConfigTestImplementation( test("defaultOff", getConfigTestImplementation(
@ -437,7 +458,7 @@ test("enableRulesObjectWarning", getConfigTestImplementation(
"severity": "warning" "severity": "warning"
} }
}, },
configTestExpected3511 configTestExpected3511warning
)); ));
test("enableRulesObjectOff", getConfigTestImplementation( test("enableRulesObjectOff", getConfigTestImplementation(
@ -1020,7 +1041,7 @@ test("readme", async(t) => {
}); });
test("validateJsonUsingConfigSchemaStrict", async(t) => { test("validateJsonUsingConfigSchemaStrict", async(t) => {
t.plan(212); t.plan(214);
// @ts-ignore // @ts-ignore
const ajv = new Ajv(ajvOptions); const ajv = new Ajv(ajvOptions);
const validateSchemaStrict = ajv.compile(configSchemaStrict); const validateSchemaStrict = ajv.compile(configSchemaStrict);

View file

@ -11203,7 +11203,7 @@ Generated by [AVA](https://avajs.dev).
`, `,
} }
## configure-file-with-severity.md ## configure-file-with-severity-alias.md
> Snapshot 1 > Snapshot 1
@ -11270,7 +11270,7 @@ Generated by [AVA](https://avajs.dev).
'MD011', 'MD011',
'no-reversed-links', 'no-reversed-links',
], ],
severity: 'error', severity: 'warning',
}, },
{ {
errorContext: null, errorContext: null,
@ -11291,8 +11291,430 @@ Generated by [AVA](https://avajs.dev).
'MD011', 'MD011',
'no-reversed-links', 'no-reversed-links',
], ],
severity: 'warning',
},
{
errorContext: '* t',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 3,
ruleDescription: 'Spaces inside emphasis markers',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md037.md',
ruleNames: [
'MD037',
'no-space-in-emphasis',
],
severity: 'error', severity: 'error',
}, },
{
errorContext: '* t',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 31,
ruleDescription: 'Spaces inside emphasis markers',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md037.md',
ruleNames: [
'MD037',
'no-space-in-emphasis',
],
severity: 'error',
},
{
errorContext: '` text`',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 5,
ruleDescription: 'Spaces inside code span elements',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md038.md',
ruleNames: [
'MD038',
'no-space-in-code',
],
severity: 'warning',
},
{
errorContext: '` text`',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 33,
ruleDescription: 'Spaces inside code span elements',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md038.md',
ruleNames: [
'MD038',
'no-space-in-code',
],
severity: 'warning',
},
],
fixed: `# Configure File With Severity Alias␊
Text *text* {MD037}␊
Text \`text\` {MD038}␊
Text [ text](.)␊
- List item {MD004}␊
Text [text](.) {MD011}␊
2. List item␊
<!-- markdownlint-disable -->
Text * text*
Text \` text\`␊
Text [ text](.)␊
+ List item␊
Text (text)[.]␊
2. List item␊
<!-- markdownlint-restore -->
Text *text* {MD037}␊
Text \`text\` {MD038}␊
Text [ text](.)␊
- List item {MD004}␊
Text [text](.) {MD011}␊
2. List item␊
<!-- markdownlint-configure-file {␊
"default": false,␊
"no-space-in-emphasis": "error",␊
"no-space-in-code": "warning",␊
"no-space-in-links": false,␊
"ul-style": {␊
"severity": "error",␊
"style": "dash"␊
},␊
"no-reversed-links": {␊
"severity": "warning"␊
},␊
"ol-prefix": {␊
"severity": "off"␊
}␊
} -->␊
`,
}
## configure-file-with-severity-name.md
> Snapshot 1
{
errors: [
{
errorContext: null,
errorDetail: 'Expected: dash; Actual: plus',
errorRange: [
1,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 1,
insertText: '-',
},
lineNumber: 9,
ruleDescription: 'Unordered list style',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md004.md',
ruleNames: [
'MD004',
'ul-style',
],
severity: 'error',
},
{
errorContext: null,
errorDetail: 'Expected: dash; Actual: plus',
errorRange: [
1,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 1,
insertText: '-',
},
lineNumber: 37,
ruleDescription: 'Unordered list style',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md004.md',
ruleNames: [
'MD004',
'ul-style',
],
severity: 'error',
},
{
errorContext: null,
errorDetail: '(text)[.]',
errorRange: [
6,
9,
],
fixInfo: {
deleteCount: 9,
editColumn: 6,
insertText: '[text](.)',
},
lineNumber: 11,
ruleDescription: 'Reversed link syntax',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md011.md',
ruleNames: [
'MD011',
'no-reversed-links',
],
severity: 'warning',
},
{
errorContext: null,
errorDetail: '(text)[.]',
errorRange: [
6,
9,
],
fixInfo: {
deleteCount: 9,
editColumn: 6,
insertText: '[text](.)',
},
lineNumber: 39,
ruleDescription: 'Reversed link syntax',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md011.md',
ruleNames: [
'MD011',
'no-reversed-links',
],
severity: 'warning',
},
{
errorContext: '* t',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 3,
ruleDescription: 'Spaces inside emphasis markers',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md037.md',
ruleNames: [
'MD037',
'no-space-in-emphasis',
],
severity: 'error',
},
{
errorContext: '* t',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 31,
ruleDescription: 'Spaces inside emphasis markers',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md037.md',
ruleNames: [
'MD037',
'no-space-in-emphasis',
],
severity: 'error',
},
{
errorContext: '` text`',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 5,
ruleDescription: 'Spaces inside code span elements',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md038.md',
ruleNames: [
'MD038',
'no-space-in-code',
],
severity: 'warning',
},
{
errorContext: '` text`',
errorDetail: null,
errorRange: [
7,
1,
],
fixInfo: {
deleteCount: 1,
editColumn: 7,
},
lineNumber: 33,
ruleDescription: 'Spaces inside code span elements',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md038.md',
ruleNames: [
'MD038',
'no-space-in-code',
],
severity: 'warning',
},
],
fixed: `# Configure File With Severity Name␊
Text *text* {MD037}␊
Text \`text\` {MD038}␊
Text [ text](.)␊
- List item {MD004}␊
Text [text](.) {MD011}␊
2. List item␊
<!-- markdownlint-disable -->
Text * text*
Text \` text\`␊
Text [ text](.)␊
+ List item␊
Text (text)[.]␊
2. List item␊
<!-- markdownlint-restore -->
Text *text* {MD037}␊
Text \`text\` {MD038}␊
Text [ text](.)␊
- List item {MD004}␊
Text [text](.) {MD011}␊
2. List item␊
<!-- markdownlint-configure-file {␊
"default": false,␊
"MD037": "error",␊
"MD038": "warning",␊
"MD039": false,␊
"MD004": {␊
"severity": "error",␊
"style": "dash"␊
},␊
"MD011": {␊
"severity": "warning"␊
},␊
"MD029": {␊
"severity": "off"␊
}␊
} -->␊
`,
}
## configure-file-with-severity-tag.md
> Snapshot 1
{
errors: [
{
errorContext: null,
errorDetail: '(text)[.]',
errorRange: [
6,
9,
],
fixInfo: {
deleteCount: 9,
editColumn: 6,
insertText: '[text](.)',
},
lineNumber: 11,
ruleDescription: 'Reversed link syntax',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md011.md',
ruleNames: [
'MD011',
'no-reversed-links',
],
severity: 'warning',
},
{
errorContext: null,
errorDetail: '(text)[.]',
errorRange: [
6,
9,
],
fixInfo: {
deleteCount: 9,
editColumn: 6,
insertText: '[text](.)',
},
lineNumber: 39,
ruleDescription: 'Reversed link syntax',
ruleInformation: 'https://github.com/DavidAnson/markdownlint/blob/v0.0.0/doc/md011.md',
ruleNames: [
'MD011',
'no-reversed-links',
],
severity: 'warning',
},
{ {
errorContext: null, errorContext: null,
errorDetail: 'Expected: 1; Actual: 2; Style: 1/1/1', errorDetail: 'Expected: 1; Actual: 2; Style: 1/1/1',
@ -11393,7 +11815,7 @@ Generated by [AVA](https://avajs.dev).
'MD038', 'MD038',
'no-space-in-code', 'no-space-in-code',
], ],
severity: 'error', severity: 'warning',
}, },
{ {
errorContext: '` text`', errorContext: '` text`',
@ -11413,7 +11835,7 @@ Generated by [AVA](https://avajs.dev).
'MD038', 'MD038',
'no-space-in-code', 'no-space-in-code',
], ],
severity: 'error', severity: 'warning',
}, },
{ {
errorContext: '[ text]', errorContext: '[ text]',
@ -11433,7 +11855,7 @@ Generated by [AVA](https://avajs.dev).
'MD039', 'MD039',
'no-space-in-links', 'no-space-in-links',
], ],
severity: 'error', severity: 'warning',
}, },
{ {
errorContext: '[ text]', errorContext: '[ text]',
@ -11453,10 +11875,10 @@ Generated by [AVA](https://avajs.dev).
'MD039', 'MD039',
'no-space-in-links', 'no-space-in-links',
], ],
severity: 'error', severity: 'warning',
}, },
], ],
fixed: `# Configure File With Severity␊ fixed: `# Configure File With Severity Tag
Text *text* {MD037}␊ Text *text* {MD037}␊
@ -11464,7 +11886,7 @@ Generated by [AVA](https://avajs.dev).
Text [text](.) {MD039}␊ Text [text](.) {MD039}␊
- List item {MD004} + List item
Text [text](.) {MD011}␊ Text [text](.) {MD011}␊
@ -11492,7 +11914,7 @@ Generated by [AVA](https://avajs.dev).
Text [text](.) {MD039}␊ Text [text](.) {MD039}␊
- List item {MD004} + List item
Text [text](.) {MD011}␊ Text [text](.) {MD011}␊
@ -11500,17 +11922,15 @@ Generated by [AVA](https://avajs.dev).
<!-- markdownlint-configure-file {␊ <!-- markdownlint-configure-file {␊
"default": false,␊ "default": false,␊
"MD037": "error",␊ "emphasis": "error",␊
"MD038": "error",␊ "code": "warning",␊
"MD039": "error",␊ "bullet": {␊
"MD004": {␊ "severity": "off"␊
"severity": "error",␊
"style": "dash"␊
},␊ },␊
"MD011": {␊ "links": {␊
"severity": "error"␊ "severity": "warning"␊
},␊ },␊
"MD029": {␊ "ol": {␊
"severity": "error"␊ "severity": "error"␊
}␊ }␊
} -->␊ } -->␊