diff --git a/lib/configuration-strict.d.ts b/lib/configuration-strict.d.ts index 1fa88824..45864277 100644 --- a/lib/configuration-strict.d.ts +++ b/lib/configuration-strict.d.ts @@ -1865,97 +1865,289 @@ export interface ConfigurationStrict { /** * 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?: boolean | ("error" | "warning"); + bullet?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * 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?: boolean | ("error" | "warning"); + indentation?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * 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?: 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?: boolean | ("error" | "warning"); + links?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * 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?: boolean | ("error" | "warning"); + line_length?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * 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?: boolean | ("error" | "warning"); + atx?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * 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?: boolean | ("error" | "warning"); + atx_closed?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * blockquote : MD027, MD028 */ - blockquote?: boolean | ("error" | "warning"); + blockquote?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * ol : MD029, MD030, MD032 */ - ol?: boolean | ("error" | "warning"); + ol?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * html : MD033 */ - html?: boolean | ("error" | "warning"); + html?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * url : MD034 */ - url?: boolean | ("error" | "warning"); + url?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * hr : MD035 */ - hr?: boolean | ("error" | "warning"); + hr?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * emphasis : MD036, MD037, MD049, MD050 */ - emphasis?: boolean | ("error" | "warning"); + emphasis?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * language : MD040 */ - language?: boolean | ("error" | "warning"); + language?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * spelling : MD044 */ - spelling?: boolean | ("error" | "warning"); + spelling?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * accessibility : MD045, MD059 */ - accessibility?: boolean | ("error" | "warning"); + accessibility?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; /** * 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?: boolean | ("error" | "warning"); + table?: + | boolean + | ("error" | "warning") + | { + /** + * Tag severity + */ + severity?: "error" | "warning" | "off"; + }; } diff --git a/lib/markdownlint.d.mts b/lib/markdownlint.d.mts index bea6b3f5..b0d773be 100644 --- a/lib/markdownlint.d.mts +++ b/lib/markdownlint.d.mts @@ -111,6 +111,10 @@ export type EnabledRulesPerLineNumberResult = { * Enabled rule list. */ enabledRuleList: Rule[]; + /** + * Rule severities + */ + ruleSeverities: Map; }; /** * Function to implement rule logic. diff --git a/lib/markdownlint.mjs b/lib/markdownlint.mjs index 5a30c6e6..0b2cee2e 100644 --- a/lib/markdownlint.mjs +++ b/lib/markdownlint.mjs @@ -276,6 +276,7 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) { // effectiveConfig[ruleName] = false; // } for (const key of Object.keys(config)) { + const keyUpper = key.toUpperCase(); let value = config[key]; if (value) { if (value instanceof Object) { @@ -284,20 +285,27 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) { if (severity === "off") { value = false; } else { - if (severity === "warning") { - ruleSeverities.set(key.toUpperCase(), "warning"); - } else { - ruleSeverities.set(key.toUpperCase(), "error"); + for (const ruleName of (aliasToRuleNames[keyUpper] || [])) { + if (severity === "warning") { + ruleSeverities.set(ruleName, "warning"); + } else { + ruleSeverities.set(ruleName, "error"); + } } value = Object.fromEntries(Object.entries(value).filter(([ k ]) => k !== "severity")); } } else { + if (value === "warning") { + for (const ruleName of (aliasToRuleNames[keyUpper] || [])) { + ruleSeverities.set(ruleName, "warning"); + } + } value = {}; } } else { value = false; } - for (const ruleName of (aliasToRuleNames[key.toUpperCase()] || [])) { + for (const ruleName of (aliasToRuleNames[keyUpper] || [])) { effectiveConfig[ruleName] = value; } } @@ -314,6 +322,7 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) { * @property {Configuration} effectiveConfig Effective configuration. * @property {any[]} enabledRulesPerLineNumber Enabled rules per line number. * @property {Rule[]} enabledRuleList Enabled rule list. + * @property {Map} ruleSeverities Rule severities */ /** @@ -428,7 +437,7 @@ function getEnabledRulesPerLineNumber( } // Handle inline comments handleInlineConfig([ lines.join("\n") ], configureFile); - const { effectiveConfig } = getEffectiveConfig(ruleList, config, aliasToRuleNames); + const { effectiveConfig, ruleSeverities } = getEffectiveConfig(ruleList, config, aliasToRuleNames); for (const rule of ruleList) { const ruleName = rule.names[0].toUpperCase(); allRuleNames.push(ruleName); @@ -449,7 +458,8 @@ function getEnabledRulesPerLineNumber( return { effectiveConfig, enabledRulesPerLineNumber, - enabledRuleList + enabledRuleList, + ruleSeverities }; } @@ -494,7 +504,7 @@ function lintContent( const { frontMatterLines } = removeFrontMatterResult; content = removeFrontMatterResult.content; // Get enabled rules per line (with HTML comments present) - const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList } = + const { effectiveConfig, enabledRulesPerLineNumber, enabledRuleList, ruleSeverities } = getEnabledRulesPerLineNumber( ruleList, content.split(helpers.newLineRe), @@ -668,7 +678,8 @@ function lintContent( "errorContext": errorInfo.context?.replace(helpers.newLineRe, " ") || null, "errorRange": errorInfo.range ? [ ...errorInfo.range ] : null, "fixInfo": fixInfo ? cleanFixInfo : null, - "severity": "error" + // @ts-ignore + "severity": ruleSeverities.get(ruleName) }); } // Call (possibly external) rule function to report errors diff --git a/schema/build-config-schema.mjs b/schema/build-config-schema.mjs index fd95b45a..9e8a6dd1 100644 --- a/schema/build-config-schema.mjs +++ b/schema/build-config-schema.mjs @@ -657,7 +657,19 @@ for (const [ tag, tagTags ] of Object.entries(tags)) { "oneOf": [ { "type": "boolean" }, // "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 }; diff --git a/schema/markdownlint-config-schema-strict.json b/schema/markdownlint-config-schema-strict.json index 51a442ea..c243788b 100644 --- a/schema/markdownlint-config-schema-strict.json +++ b/schema/markdownlint-config-schema-strict.json @@ -4322,6 +4322,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4337,6 +4353,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4352,6 +4384,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4367,6 +4415,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4382,6 +4446,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4397,6 +4477,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4412,6 +4508,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4427,6 +4539,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4442,6 +4570,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4457,6 +4601,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4472,6 +4632,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4487,6 +4663,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4502,6 +4694,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4517,6 +4725,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4532,6 +4756,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4547,6 +4787,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4562,6 +4818,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4577,6 +4849,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4592,6 +4880,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4607,6 +4911,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4622,6 +4942,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4637,6 +4973,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4652,6 +5004,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4667,6 +5035,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true diff --git a/schema/markdownlint-config-schema.json b/schema/markdownlint-config-schema.json index fe66c9ad..a23c6e58 100644 --- a/schema/markdownlint-config-schema.json +++ b/schema/markdownlint-config-schema.json @@ -4322,6 +4322,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4337,6 +4353,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4352,6 +4384,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4367,6 +4415,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4382,6 +4446,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4397,6 +4477,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4412,6 +4508,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4427,6 +4539,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4442,6 +4570,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4457,6 +4601,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4472,6 +4632,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4487,6 +4663,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4502,6 +4694,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4517,6 +4725,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4532,6 +4756,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4547,6 +4787,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4562,6 +4818,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4577,6 +4849,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4592,6 +4880,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4607,6 +4911,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4622,6 +4942,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4637,6 +4973,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4652,6 +5004,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true @@ -4667,6 +5035,22 @@ "error", "warning" ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "severity": { + "description": "Tag severity", + "type": "string", + "enum": [ + "error", + "warning", + "off" + ], + "default": "error" + } + } } ], "default": true diff --git a/test/configure-file-with-severity-alias.md b/test/configure-file-with-severity-alias.md new file mode 100644 index 00000000..ea1f5f02 --- /dev/null +++ b/test/configure-file-with-severity-alias.md @@ -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 + + + +Text * text* + +Text ` text` + +Text [ text](.) + ++ List item + +Text (text)[.] + +2. List item + + + +Text * text* {MD037} + +Text ` text` {MD038} + +Text [ text](.) + ++ List item {MD004} + +Text (text)[.] {MD011} + +2. List item + + diff --git a/test/configure-file-with-severity.md b/test/configure-file-with-severity-name.md similarity index 71% rename from test/configure-file-with-severity.md rename to test/configure-file-with-severity-name.md index 4f5cd27f..fc9100bc 100644 --- a/test/configure-file-with-severity.md +++ b/test/configure-file-with-severity-name.md @@ -1,16 +1,16 @@ -# Configure File With Severity +# Configure File With Severity Name Text * text* {MD037} Text ` text` {MD038} -Text [ text](.) {MD039} +Text [ text](.) + List item {MD004} Text (text)[.] {MD011} -2. List item {MD029} +2. List item @@ -32,27 +32,27 @@ Text * text* {MD037} Text ` text` {MD038} -Text [ text](.) {MD039} +Text [ text](.) + List item {MD004} Text (text)[.] {MD011} -2. List item {MD029} +2. List item diff --git a/test/configure-file-with-severity-tag.md b/test/configure-file-with-severity-tag.md new file mode 100644 index 00000000..de84aceb --- /dev/null +++ b/test/configure-file-with-severity-tag.md @@ -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} + + + +Text * text* + +Text ` text` + +Text [ text](.) + ++ List item + +Text (text)[.] + +2. List item + + + +Text * text* {MD037} + +Text ` text` {MD038} + +Text [ text](.) {MD039} + ++ List item + +Text (text)[.] {MD011} + +2. List item {MD029} + + diff --git a/test/markdownlint-test.mjs b/test/markdownlint-test.mjs index 7dd2097d..57dbe62a 100644 --- a/test/markdownlint-test.mjs +++ b/test/markdownlint-test.mjs @@ -226,6 +226,16 @@ const configTestExpected3511 = { "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 = { "./test/atx_heading_spacing.md": [ "MD018 1 error", @@ -237,6 +247,17 @@ const configTestExpected13511 = { "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( {}, @@ -273,7 +294,7 @@ test("defaultError", getConfigTestImplementation( test("defaultWarning", getConfigTestImplementation( // @ts-ignore { "default": "warning" }, - configTestExpected13511 + configTestExpected13511warning )); test("defaultOff", getConfigTestImplementation( @@ -437,7 +458,7 @@ test("enableRulesObjectWarning", getConfigTestImplementation( "severity": "warning" } }, - configTestExpected3511 + configTestExpected3511warning )); test("enableRulesObjectOff", getConfigTestImplementation( @@ -1020,7 +1041,7 @@ test("readme", async(t) => { }); test("validateJsonUsingConfigSchemaStrict", async(t) => { - t.plan(212); + t.plan(214); // @ts-ignore const ajv = new Ajv(ajvOptions); const validateSchemaStrict = ajv.compile(configSchemaStrict); diff --git a/test/snapshots/markdownlint-test-scenarios.mjs.md b/test/snapshots/markdownlint-test-scenarios.mjs.md index 23a03743..6ac98cd9 100644 --- a/test/snapshots/markdownlint-test-scenarios.mjs.md +++ b/test/snapshots/markdownlint-test-scenarios.mjs.md @@ -11203,7 +11203,7 @@ Generated by [AVA](https://avajs.dev). `, } -## configure-file-with-severity.md +## configure-file-with-severity-alias.md > Snapshot 1 @@ -11270,7 +11270,7 @@ Generated by [AVA](https://avajs.dev). 'MD011', 'no-reversed-links', ], - severity: 'error', + severity: 'warning', }, { errorContext: null, @@ -11291,8 +11291,430 @@ Generated by [AVA](https://avajs.dev). '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 Alias␊ + ␊ + Text *text* {MD037}␊ + ␊ + Text \`text\` {MD038}␊ + ␊ + Text [ text](.)␊ + ␊ + - List item {MD004}␊ + ␊ + Text [text](.) {MD011}␊ + ␊ + 2. List item␊ + ␊ + ␊ + ␊ + Text * text*␊ + ␊ + Text \` text\`␊ + ␊ + Text [ text](.)␊ + ␊ + + List item␊ + ␊ + Text (text)[.]␊ + ␊ + 2. List item␊ + ␊ + ␊ + ␊ + Text *text* {MD037}␊ + ␊ + Text \`text\` {MD038}␊ + ␊ + Text [ text](.)␊ + ␊ + - List item {MD004}␊ + ␊ + Text [text](.) {MD011}␊ + ␊ + 2. List item␊ + ␊ + ␊ + `, + } + +## 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␊ + ␊ + ␊ + ␊ + Text * text*␊ + ␊ + Text \` text\`␊ + ␊ + Text [ text](.)␊ + ␊ + + List item␊ + ␊ + Text (text)[.]␊ + ␊ + 2. List item␊ + ␊ + ␊ + ␊ + Text *text* {MD037}␊ + ␊ + Text \`text\` {MD038}␊ + ␊ + Text [ text](.)␊ + ␊ + - List item {MD004}␊ + ␊ + Text [text](.) {MD011}␊ + ␊ + 2. List item␊ + ␊ + ␊ + `, + } + +## 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, errorDetail: 'Expected: 1; Actual: 2; Style: 1/1/1', @@ -11393,7 +11815,7 @@ Generated by [AVA](https://avajs.dev). 'MD038', 'no-space-in-code', ], - severity: 'error', + severity: 'warning', }, { errorContext: '` text`', @@ -11413,7 +11835,7 @@ Generated by [AVA](https://avajs.dev). 'MD038', 'no-space-in-code', ], - severity: 'error', + severity: 'warning', }, { errorContext: '[ text]', @@ -11433,7 +11855,7 @@ Generated by [AVA](https://avajs.dev). 'MD039', 'no-space-in-links', ], - severity: 'error', + severity: 'warning', }, { errorContext: '[ text]', @@ -11453,10 +11875,10 @@ Generated by [AVA](https://avajs.dev). 'MD039', 'no-space-in-links', ], - severity: 'error', + severity: 'warning', }, ], - fixed: `# Configure File With Severity␊ + fixed: `# Configure File With Severity Tag␊ ␊ Text *text* {MD037}␊ ␊ @@ -11464,7 +11886,7 @@ Generated by [AVA](https://avajs.dev). ␊ Text [text](.) {MD039}␊ ␊ - - List item {MD004}␊ + + List item␊ ␊ Text [text](.) {MD011}␊ ␊ @@ -11492,7 +11914,7 @@ Generated by [AVA](https://avajs.dev). ␊ Text [text](.) {MD039}␊ ␊ - - List item {MD004}␊ + + List item␊ ␊ Text [text](.) {MD011}␊ ␊ @@ -11500,17 +11922,15 @@ Generated by [AVA](https://avajs.dev). ␊ ␊ diff --git a/test/snapshots/markdownlint-test-scenarios.mjs.snap b/test/snapshots/markdownlint-test-scenarios.mjs.snap index a3689d1a..1382ef9b 100644 Binary files a/test/snapshots/markdownlint-test-scenarios.mjs.snap and b/test/snapshots/markdownlint-test-scenarios.mjs.snap differ