Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

markdownlint

Package Overview
Dependencies
Maintainers
1
Versions
70
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

markdownlint - npm Package Compare versions

Comparing version 0.31.1 to 0.32.0

doc/md054.md

11

CHANGELOG.md
# Changelog
## 0.32.0
- Remove deprecated MD002/MD006
- Remove rule aliases for "header"
- Add MD054/link-image-style
- Use `micromark` in MD005/MD007/MD030
- Improve MD022/MD026/MD034/MD037/MD038/MD045/MD051
- Improve JSON schema and related examples
- Provide type declaration for Configuration object
- Update dependencies
## 0.31.1

@@ -4,0 +15,0 @@

4

CONTRIBUTING.md

@@ -76,4 +76,4 @@ # Contributing

from a different project, Stack Overflow, or the like is not allowed. The use of
tools such as GitHub Copilot that generate code from other projects is not
allowed.
tools such as GitHub Copilot, ChatGPT, LLMs (large language models), etc. that
incorporate code from other projects is not allowed.

@@ -80,0 +80,0 @@ Thank you!

# `MD001` - Heading levels should only increment by one level at a time
Tags: `headers`, `headings`
Tags: `headings`
Aliases: `header-increment`, `heading-increment`
Aliases: `heading-increment`

@@ -7,0 +7,0 @@ This rule is triggered when you skip heading levels in a Markdown document, for

# `MD003` - Heading style
Tags: `headers`, `headings`
Tags: `headings`
Aliases: `header-style`, `heading-style`
Aliases: `heading-style`

@@ -7,0 +7,0 @@ Parameters:

@@ -39,6 +39,5 @@ # `MD007` - Unordered list indentation

The `start_indented` parameter allows the first level of lists to be indented by
the configured number of spaces rather than starting at zero (the inverse of
MD006). The `start_indent` parameter allows the first level of lists to be
indented by a different number of spaces than the rest (ignored when
`start_indented` is not set).
the configured number of spaces rather than starting at zero. The `start_indent`
parameter allows the first level of lists to be indented by a different number
of spaces than the rest (ignored when `start_indented` is not set).

@@ -45,0 +44,0 @@ Rationale: Indenting by 2 spaces allows the content of a nested list to be in

@@ -12,3 +12,2 @@ # `MD013` - Line length

- `code_blocks`: Include code blocks (`boolean`, default `true`)
- `headers`: Include headings (`boolean`, default `true`)
- `heading_line_length`: Number of characters for headings (`integer`, default

@@ -22,4 +21,2 @@ `80`)

> If `headings` is not provided, `headers` (deprecated) will be used.
This rule is triggered when there are lines that are longer than the

@@ -26,0 +23,0 @@ configured `line_length` (default: 80 characters). To fix this, split the line

# `MD018` - No space after hash on atx style heading
Tags: `atx`, `headers`, `headings`, `spaces`
Tags: `atx`, `headings`, `spaces`

@@ -5,0 +5,0 @@ Aliases: `no-missing-space-atx`

# `MD019` - Multiple spaces after hash on atx style heading
Tags: `atx`, `headers`, `headings`, `spaces`
Tags: `atx`, `headings`, `spaces`

@@ -5,0 +5,0 @@ Aliases: `no-multiple-space-atx`

# `MD020` - No space inside hashes on closed atx style heading
Tags: `atx_closed`, `headers`, `headings`, `spaces`
Tags: `atx_closed`, `headings`, `spaces`

@@ -5,0 +5,0 @@ Aliases: `no-missing-space-closed-atx`

# `MD021` - Multiple spaces inside hashes on closed atx style heading
Tags: `atx_closed`, `headers`, `headings`, `spaces`
Tags: `atx_closed`, `headings`, `spaces`

@@ -5,0 +5,0 @@ Aliases: `no-multiple-space-closed-atx`

# `MD022` - Headings should be surrounded by blank lines
Tags: `blank_lines`, `headers`, `headings`
Tags: `blank_lines`, `headings`
Aliases: `blanks-around-headers`, `blanks-around-headings`
Aliases: `blanks-around-headings`

@@ -7,0 +7,0 @@ Parameters:

# `MD023` - Headings must start at the beginning of the line
Tags: `headers`, `headings`, `spaces`
Tags: `headings`, `spaces`
Aliases: `header-start-left`, `heading-start-left`
Aliases: `heading-start-left`

@@ -25,3 +25,10 @@ Fixable: Some violations can be fixed by tooling

Note that scenarios like block quotes "indent" the start of the line, so the
following is also correct:
```markdown
> # Heading in Block Quote
```
Rationale: Headings that don't start at the beginning of the line will not be
parsed as headings, and will instead appear as regular text.
# `MD024` - Multiple headings with the same content
Tags: `headers`, `headings`
Tags: `headings`
Aliases: `no-duplicate-header`, `no-duplicate-heading`
Aliases: `no-duplicate-heading`

@@ -7,0 +7,0 @@ Parameters:

# `MD025` - Multiple top-level headings in the same document
Tags: `headers`, `headings`
Tags: `headings`

@@ -5,0 +5,0 @@ Aliases: `single-h1`, `single-title`

# `MD026` - Trailing punctuation in heading
Tags: `headers`, `headings`
Tags: `headings`

@@ -5,0 +5,0 @@ Aliases: `no-trailing-punctuation`

# `MD036` - Emphasis used instead of a heading
Tags: `emphasis`, `headers`, `headings`
Tags: `emphasis`, `headings`
Aliases: `no-emphasis-as-header`, `no-emphasis-as-heading`
Aliases: `no-emphasis-as-heading`

@@ -7,0 +7,0 @@ Parameters:

# `MD041` - First line in a file should be a top-level heading
Tags: `headers`, `headings`
Tags: `headings`

@@ -5,0 +5,0 @@ Aliases: `first-line-h1`, `first-line-heading`

# `MD043` - Required heading structure
Tags: `headers`, `headings`
Tags: `headings`
Aliases: `required-headers`, `required-headings`
Aliases: `required-headings`
Parameters:
- `headers`: List of headings (`string[]`, default `[]`)
- `headings`: List of headings (`string[]`, default `[]`)
- `match_case`: Match case of headings (`boolean`, default `false`)
> If `headings` is not provided, `headers` (deprecated) will be used.
This rule is triggered when the headings in a file do not match the array of

@@ -16,0 +13,0 @@ headings passed to the rule. It can be used to enforce a standard heading

@@ -26,2 +26,8 @@ # `MD045` - Images should have alternate text (alt text)

Or with HTML as:
```html
<img src="image.jpg" alt="Alternate text" />
```
Guidance for writing alternate text is available from the [W3C][w3c],

@@ -28,0 +34,0 @@ [Wikipedia][wikipedia], and [other locations][phase2technology].

@@ -1,2 +0,2 @@

# `MD049` - Emphasis style should be consistent
# `MD049` - Emphasis style

@@ -3,0 +3,0 @@ Tags: `emphasis`

@@ -1,2 +0,2 @@

# `MD050` - Strong style should be consistent
# `MD050` - Strong style

@@ -3,0 +3,0 @@ Tags: `emphasis`

@@ -14,5 +14,5 @@ # `MD053` - Link and image reference definitions should be needed

Links and images in Markdown can provide the link destination or image source
at the time of use or can define it elsewhere and use a label for reference.
The reference format is convenient for keeping paragraph text clutter-free
and makes it easy to reuse the same URL in multiple places.
at the time of use or can use a label to reference a definition elsewhere in
the document. The latter reference format is convenient for keeping paragraph
text clutter-free and makes it easy to reuse the same URL in multiple places.

@@ -19,0 +19,0 @@ Because link and image reference definitions are located separately from

@@ -5,4 +5,3 @@ # Rules

as well as examples of documents that break the rule and corrected
versions of the examples. Any rule whose heading is ~~struck through~~ is
deprecated, but still provided for backward-compatibility.
versions of the examples.

@@ -13,5 +12,5 @@ <a name="md001"></a>

Tags: `headers`, `headings`
Tags: `headings`
Aliases: `header-increment`, `heading-increment`
Aliases: `heading-increment`

@@ -50,42 +49,2 @@ This rule is triggered when you skip heading levels in a Markdown document, for

<a name="md002"></a>
## ~~`MD002` - First heading should be a top-level heading~~
> This rule is deprecated and provided for backward-compatibility
Tags: `headers`, `headings`
Aliases: `first-header-h1`, `first-heading-h1`
Parameters:
- `level`: Heading level (`integer`, default `1`)
> Note: *MD002 has been deprecated and is disabled by default.*
> [MD041/first-line-heading](md041.md) offers an improved implementation.
This rule is intended to ensure document headings start at the top level and
is triggered when the first heading in the document isn't an h1 heading:
```markdown
## This isn't an H1 heading
### Another heading
```
The first heading in the document should be an h1 heading:
```markdown
# Start with an H1 heading
## Then use an H2 for subsections
```
Note: The `level` parameter can be used to change the top-level (ex: to h2) in
cases where an h1 is added externally.
Rationale: The top-level heading often acts as the title of a document. More
information: <https://cirosantilli.com/markdown-style-guide#top-level-header>.
<a name="md003"></a>

@@ -95,5 +54,5 @@

Tags: `headers`, `headings`
Tags: `headings`
Aliases: `header-style`, `heading-style`
Aliases: `heading-style`

@@ -262,51 +221,2 @@ Parameters:

<a name="md006"></a>
## ~~`MD006` - Consider starting bulleted lists at the beginning of the line~~
> This rule is deprecated and provided for backward-compatibility
Tags: `bullet`, `indentation`, `ul`
Aliases: `ul-start-left`
Fixable: Some violations can be fixed by tooling
This rule is triggered when top-level lists don't start at the beginning of a
line:
```markdown
Some text
* List item
* List item
```
To fix, ensure that top-level list items are not indented:
```markdown
Some test
* List item
* List item
```
Note: This rule is triggered for the following scenario because the unordered
sublist is not recognized as such by the parser. Not being nested 3 characters
as required by the outer ordered list, it creates a top-level unordered list
instead.
```markdown
1. List item
- List item
- List item
1. List item
```
Rationale: Starting lists at the beginning of the line means that nested list
items can all be indented by the same amount when an editor's indent function
or the tab key is used to indent. Starting a list 1 space in means that the
indent of the first nested list is less than the indent of the second level (3
characters if you use 4 space tabs, or 1 character if you use 2 space tabs).
<a name="md007"></a>

@@ -352,6 +262,5 @@

The `start_indented` parameter allows the first level of lists to be indented by
the configured number of spaces rather than starting at zero (the inverse of
MD006). The `start_indent` parameter allows the first level of lists to be
indented by a different number of spaces than the rest (ignored when
`start_indented` is not set).
the configured number of spaces rather than starting at zero. The `start_indent`
parameter allows the first level of lists to be indented by a different number
of spaces than the rest (ignored when `start_indented` is not set).

@@ -569,3 +478,2 @@ Rationale: Indenting by 2 spaces allows the content of a nested list to be in

- `code_blocks`: Include code blocks (`boolean`, default `true`)
- `headers`: Include headings (`boolean`, default `true`)
- `heading_line_length`: Number of characters for headings (`integer`, default

@@ -579,4 +487,2 @@ `80`)

> If `headings` is not provided, `headers` (deprecated) will be used.
This rule is triggered when there are lines that are longer than the

@@ -682,3 +588,3 @@ configured `line_length` (default: 80 characters). To fix this, split the line

Tags: `atx`, `headers`, `headings`, `spaces`
Tags: `atx`, `headings`, `spaces`

@@ -713,3 +619,3 @@ Aliases: `no-missing-space-atx`

Tags: `atx`, `headers`, `headings`, `spaces`
Tags: `atx`, `headings`, `spaces`

@@ -745,3 +651,3 @@ Aliases: `no-multiple-space-atx`

Tags: `atx_closed`, `headers`, `headings`, `spaces`
Tags: `atx_closed`, `headings`, `spaces`

@@ -778,3 +684,3 @@ Aliases: `no-missing-space-closed-atx`

Tags: `atx_closed`, `headers`, `headings`, `spaces`
Tags: `atx_closed`, `headings`, `spaces`

@@ -813,5 +719,5 @@ Aliases: `no-multiple-space-closed-atx`

Tags: `blank_lines`, `headers`, `headings`
Tags: `blank_lines`, `headings`
Aliases: `blanks-around-headers`, `blanks-around-headings`
Aliases: `blanks-around-headings`

@@ -869,5 +775,5 @@ Parameters:

Tags: `headers`, `headings`, `spaces`
Tags: `headings`, `spaces`
Aliases: `header-start-left`, `heading-start-left`
Aliases: `heading-start-left`

@@ -892,2 +798,9 @@ Fixable: Some violations can be fixed by tooling

Note that scenarios like block quotes "indent" the start of the line, so the
following is also correct:
```markdown
> # Heading in Block Quote
```
Rationale: Headings that don't start at the beginning of the line will not be

@@ -900,5 +813,5 @@ parsed as headings, and will instead appear as regular text.

Tags: `headers`, `headings`
Tags: `headings`
Aliases: `no-duplicate-header`, `no-duplicate-heading`
Aliases: `no-duplicate-heading`

@@ -951,3 +864,3 @@ Parameters:

Tags: `headers`, `headings`
Tags: `headings`

@@ -1004,3 +917,3 @@ Aliases: `single-h1`, `single-title`

Tags: `headers`, `headings`
Tags: `headings`

@@ -1543,5 +1456,5 @@ Aliases: `no-trailing-punctuation`

Tags: `emphasis`, `headers`, `headings`
Tags: `emphasis`, `headings`
Aliases: `no-emphasis-as-header`, `no-emphasis-as-heading`
Aliases: `no-emphasis-as-heading`

@@ -1754,3 +1667,3 @@ Parameters:

Tags: `headers`, `headings`
Tags: `headings`

@@ -1842,14 +1755,11 @@ Aliases: `first-line-h1`, `first-line-heading`

Tags: `headers`, `headings`
Tags: `headings`
Aliases: `required-headers`, `required-headings`
Aliases: `required-headings`
Parameters:
- `headers`: List of headings (`string[]`, default `[]`)
- `headings`: List of headings (`string[]`, default `[]`)
- `match_case`: Match case of headings (`boolean`, default `false`)
> If `headings` is not provided, `headers` (deprecated) will be used.
This rule is triggered when the headings in a file do not match the array of

@@ -1979,2 +1889,8 @@ headings passed to the rule. It can be used to enforce a standard heading

Or with HTML as:
```html
<img src="image.jpg" alt="Alternate text" />
```
Guidance for writing alternate text is available from the [W3C][w3c],

@@ -2116,3 +2032,3 @@ [Wikipedia][wikipedia], and [other locations][phase2technology].

## `MD049` - Emphasis style should be consistent
## `MD049` - Emphasis style

@@ -2152,3 +2068,3 @@ Tags: `emphasis`

## `MD050` - Strong style should be consistent
## `MD050` - Strong style

@@ -2308,5 +2224,5 @@ Tags: `emphasis`

Links and images in Markdown can provide the link destination or image source
at the time of use or can define it elsewhere and use a label for reference.
The reference format is convenient for keeping paragraph text clutter-free
and makes it easy to reuse the same URL in multiple places.
at the time of use or can use a label to reference a definition elsewhere in
the document. The latter reference format is convenient for keeping paragraph
text clutter-free and makes it easy to reuse the same URL in multiple places.

@@ -2335,2 +2251,105 @@ Because link and image reference definitions are located separately from

<a name="md054"></a>
## `MD054` - Link and image style
Tags: `images`, `links`
Aliases: `link-image-style`
Parameters:
- `autolink`: Allow autolinks (`boolean`, default `true`)
- `collapsed`: Allow collapsed reference links and images (`boolean`, default
`true`)
- `full`: Allow full reference links and images (`boolean`, default `true`)
- `inline`: Allow inline links and images (`boolean`, default `true`)
- `shortcut`: Allow shortcut reference links and images (`boolean`, default
`true`)
- `url_inline`: Allow URLs as inline links (`boolean`, default `true`)
Fixable: Some violations can be fixed by tooling
Links and images in Markdown can provide the link destination or image source at
the time of use or can use a label to reference a definition elsewhere in the
document. The three reference formats are convenient for keeping paragraph text
clutter-free and make it easy to reuse the same URL in multiple places.
By default, this rule allows all link/image styles.
Setting the `autolink` parameter to `false` disables autolinks:
```markdown
<https://example.com>
```
Setting the `inline` parameter to `false` disables inline links and images:
```markdown
[link](https://example.com)
![image](https://example.com)
```
Setting the `full` parameter to `false` disables full reference links and
images:
```markdown
[link][url]
![image][url]
[url]: https://example.com
```
Setting the `collapsed` parameter to `false` disables collapsed reference links
and images:
```markdown
[url][]
![url][]
[url]: https://example.com
```
Setting the `shortcut` parameter to `false` disables shortcut reference links
and images:
```markdown
[url]
![url]
[url]: https://example.com
```
To fix violations of this rule, change the link or image to use an allowed
style. This rule can automatically fix violations when a link or image can be
converted to the `inline` style (preferred) or a link can be converted to the
`autolink` style (which does not support images and must be an absolute URL).
This rule does *not* fix scenarios that require converting a link or image to
the `full`, `collapsed`, or `shortcut` reference styles because that involves
naming the reference and determining where to insert it in the document.
Setting the `url_inline` parameter to `false` prevents the use of inline links
with the same absolute URL text/destination and no title because such links can
be converted to autolinks:
```markdown
[https://example.com](https://example.com)
```
To fix `url_inline` violations, use the simpler autolink syntax instead:
```markdown
<https://example.com>
```
Rationale: Consistent formatting makes it easier to understand a document.
Autolinks are concise, but appear as URLs which can be long and confusing.
Inline links and images can include descriptive text, but take up more space in
Markdown form. Reference links and images can be easier to read and manipulate
in Markdown form, but require a separate link reference definition.
<!-- markdownlint-configure-file {

@@ -2337,0 +2356,0 @@ "no-inline-html": {

@@ -7,13 +7,13 @@ // @ts-check

const { newLineRe } = require("./shared.js");
const { newLineRe, nextLinesRe } = require("./shared.js");
module.exports.newLineRe = newLineRe;
module.exports.nextLinesRe = nextLinesRe;
// Regular expression for matching common front matter (YAML and TOML)
module.exports.frontMatterRe =
// eslint-disable-next-line max-len
/((^---\s*$[\s\S]*?^---\s*)|(^\+\+\+\s*$[\s\S]*?^(\+\+\+|\.\.\.)\s*)|(^\{\s*$[\s\S]*?^\}\s*))(\r\n|\r|\n|$)/m;
/((^---\s*$[\s\S]+?^---\s*)|(^\+\+\+\s*$[\s\S]+?^(\+\+\+|\.\.\.)\s*)|(^\{\s*$[\s\S]+?^\}\s*))(\r\n|\r|\n|$)/m;
// Regular expression for matching the start of inline disable/enable comments
const inlineCommentStartRe =
// eslint-disable-next-line max-len
/(<!--\s*markdownlint-(disable|enable|capture|restore|disable-file|enable-file|disable-line|disable-next-line|configure-file))(?:\s|-->)/gi;

@@ -36,3 +36,2 @@ module.exports.inlineCommentStartRe = inlineCommentStartRe;

module.exports.endOfLineHtmlEntityRe =
// eslint-disable-next-line max-len
/&(?:#\d+|#[xX][\da-fA-F]+|[a-zA-Z]{2,31}|blk\d{2}|emsp1[34]|frac\d{2}|sup\d|there4);$/;

@@ -42,3 +41,2 @@

module.exports.endOfLineGemojiCodeRe =
// eslint-disable-next-line max-len
/:(?:[abmovx]|[-+]1|100|1234|(?:1st|2nd|3rd)_place_medal|8ball|clock\d{1,4}|e-mail|non-potable_water|o2|t-rex|u5272|u5408|u55b6|u6307|u6708|u6709|u6e80|u7121|u7533|u7981|u7a7a|[a-z]{2,15}2?|[a-z]{1,14}(?:_[a-z\d]{1,16})+):$/;

@@ -131,2 +129,12 @@

/**
* Gets a Regular Expression for matching the specified HTML attribute.
*
* @param {string} name HTML attribute name.
* @returns {RegExp} Regular Expression for matching.
*/
module.exports.getHtmlAttributeRe = function getHtmlAttributeRe(name) {
return new RegExp(`\\s${name}\\s*=\\s*['"]?([^'"\\s>]*)`, "iu");
};
/**
* Returns true iff the input line is blank (contains nothing, whitespace, or

@@ -743,3 +751,15 @@ * comments (unclosed start/end comments allowed)).

} else {
definitions.set(reference, token.startLine - 1);
let destinationString = null;
const parent =
micromark.getTokenParentOfType(token, [ "definition" ]);
if (parent) {
destinationString = micromark.getTokenTextByType(
micromark.filterByPredicate(parent.children),
"definitionDestinationString"
);
}
definitions.set(
reference,
[ token.startLine - 1, destinationString ]
);
}

@@ -746,0 +766,0 @@ }

{
"name": "markdownlint-rule-helpers",
"version": "0.22.0",
"version": "0.23.0",
"description": "A collection of markdownlint helper functions for custom rules",

@@ -15,2 +15,3 @@ "main": "./helpers.js",

"bugs": "https://github.com/DavidAnson/markdownlint/issues",
"funding": "https://github.com/sponsors/DavidAnson",
"engines": {

@@ -17,0 +18,0 @@ "node": ">=16"

@@ -8,1 +8,4 @@ // @ts-check

module.exports.newLineRe = /\r\n?|\n/g;
// Regular expression for matching next lines
module.exports.nextLinesRe = /[\r\n][\s\S]*$/;

@@ -5,11 +5,11 @@ // @ts-check

module.exports.deprecatedRuleNames = [ "MD002", "MD006" ];
module.exports.deprecatedRuleNames = [];
module.exports.fixableRuleNames = [
"MD004", "MD005", "MD006", "MD007", "MD009", "MD010",
"MD011", "MD012", "MD014", "MD018", "MD019", "MD020",
"MD021", "MD022", "MD023", "MD026", "MD027", "MD030",
"MD031", "MD032", "MD034", "MD037", "MD038", "MD039",
"MD044", "MD047", "MD049", "MD050", "MD051", "MD053"
"MD004", "MD005", "MD007", "MD009", "MD010", "MD011",
"MD012", "MD014", "MD018", "MD019", "MD020", "MD021",
"MD022", "MD023", "MD026", "MD027", "MD030", "MD031",
"MD032", "MD034", "MD037", "MD038", "MD039", "MD044",
"MD047", "MD049", "MD050", "MD051", "MD053", "MD054"
];
module.exports.homepage = "https://github.com/DavidAnson/markdownlint";
module.exports.version = "0.31.1";
module.exports.version = "0.32.0";

@@ -361,8 +361,6 @@ export = markdownlint;

/**
* Configuration object for linting rules. For a detailed schema, see
* Configuration object for linting rules. For the JSON schema, see
* {@link ../schema/markdownlint-config-schema.json}.
*/
type Configuration = {
[x: string]: RuleConfiguration;
};
type Configuration = import("./configuration").Configuration;
/**

@@ -369,0 +367,0 @@ * Rule configuration.

@@ -9,3 +9,3 @@ // @ts-check

const micromark = require("../helpers/micromark.cjs");
const { deprecatedRuleNames } = require("./constants");
// const { deprecatedRuleNames } = require("./constants");
const rules = require("./rules");

@@ -16,3 +16,3 @@ const helpers = require("../helpers");

// @ts-ignore
// eslint-disable-next-line camelcase, max-len, no-inline-comments, no-undef
// eslint-disable-next-line camelcase, no-inline-comments, no-undef
const dynamicRequire = (typeof __non_webpack_require__ === "undefined") ? require : /* c8 ignore next */ __non_webpack_require__;

@@ -322,2 +322,3 @@ // Capture native require implementation for dynamic loading of modules

const ruleDefault = (defaultKey.length === 0) || !!config[defaultKey[0]];
/** @type {Configuration} */
const effectiveConfig = {};

@@ -328,5 +329,5 @@ for (const rule of ruleList) {

}
for (const ruleName of deprecatedRuleNames) {
effectiveConfig[ruleName] = false;
}
// for (const ruleName of deprecatedRuleNames) {
// effectiveConfig[ruleName] = false;
// }
for (const key of Object.keys(config)) {

@@ -611,3 +612,3 @@ let value = config[key];

throw new Error(
"Property '" + property + "' of onError parameter is incorrect.");
`Value of '${property}' passed to onError by '${ruleName}' is incorrect for '${name}'.`);
}

@@ -1444,6 +1445,6 @@ // eslint-disable-next-line jsdoc/require-jsdoc

/**
* Configuration object for linting rules. For a detailed schema, see
* Configuration object for linting rules. For the JSON schema, see
* {@link ../schema/markdownlint-config-schema.json}.
*
* @typedef {Object.<string, RuleConfiguration>} Configuration
* @typedef {import("./configuration").Configuration} Configuration
*/

@@ -1450,0 +1451,0 @@

@@ -8,5 +8,5 @@ // @ts-check

module.exports = {
"names": [ "MD001", "heading-increment", "header-increment" ],
"names": [ "MD001", "heading-increment" ],
"description": "Heading levels should only increment by one level at a time",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD001(params, onError) {

@@ -13,0 +13,0 @@ let prevLevel = 0;

@@ -9,5 +9,5 @@ // @ts-check

module.exports = {
"names": [ "MD003", "heading-style", "header-style" ],
"names": [ "MD003", "heading-style" ],
"description": "Heading style",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD003(params, onError) {

@@ -14,0 +14,0 @@ let style = String(params.config.style || "consistent");

@@ -5,5 +5,4 @@ // @ts-check

const { addError, addErrorDetailIf, indentFor, listItemMarkerRe,
orderedListItemMarkerRe, rangeFromRegExp } = require("../helpers");
const { flattenedLists } = require("./cache");
const { addError, addErrorDetailIf } = require("../helpers");
const { filterByTypes, inHtmlFlow } = require("../helpers/micromark.cjs");

@@ -15,12 +14,18 @@ module.exports = {

"function": function MD005(params, onError) {
for (const list of flattenedLists()) {
const expectedIndent = list.indent;
const lists = filterByTypes(
params.parsers.micromark.tokens,
[ "listOrdered", "listUnordered" ]
).filter((list) => !inHtmlFlow(list));
for (const list of lists) {
const expectedIndent = list.startColumn - 1;
let expectedEnd = 0;
let actualEnd = -1;
let endMatching = false;
for (const item of list.items) {
const { line, lineNumber } = item;
const actualIndent = indentFor(item);
let match = null;
if (list.unordered) {
const listItemPrefixes =
list.children.filter((token) => (token.type === "listItemPrefix"));
for (const listItemPrefix of listItemPrefixes) {
const lineNumber = listItemPrefix.startLine;
const actualIndent = listItemPrefix.startColumn - 1;
const markerLength = listItemPrefix.text.trim().length;
const range = [ 1, listItemPrefix.startColumn + markerLength ];
if (list.type === "listUnordered") {
addErrorDetailIf(

@@ -33,9 +38,8 @@ onError,

null,
rangeFromRegExp(line, listItemMarkerRe)
range
// No fixInfo; MD007 handles this scenario better
);
} else if ((match = orderedListItemMarkerRe.exec(line))) {
actualEnd = match[0].length;
} else {
const actualEnd = range[1] - 1;
expectedEnd = expectedEnd || actualEnd;
const markerLength = match[1].length + 1;
if ((expectedIndent !== actualIndent) || endMatching) {

@@ -58,4 +62,4 @@ if (expectedEnd === actualEnd) {

detail,
null,
rangeFromRegExp(line, listItemMarkerRe),
undefined,
range,
{

@@ -62,0 +66,0 @@ "editColumn": Math.min(actual, expected) + 1,

@@ -5,6 +5,15 @@ // @ts-check

const { addErrorDetailIf, indentFor, listItemMarkerRe } =
require("../helpers");
const { flattenedLists } = require("./cache");
const { addErrorDetailIf } = require("../helpers");
const { filterByTypes, getTokenParentOfType, inHtmlFlow } =
require("../helpers/micromark.cjs");
/**
* @typedef {import("../helpers/micromark.cjs").Token} Token
*/
const unorderedListTypes =
[ "blockQuotePrefix", "listItemPrefix", "listUnordered" ];
const unorderedParentTypes =
[ "blockQuote", "listOrdered", "listUnordered" ];
module.exports = {

@@ -18,30 +27,58 @@ "names": [ "MD007", "ul-indent" ],

const startIndent = Number(params.config.start_indent || indent);
for (const list of flattenedLists()) {
if (list.unordered && list.parentsUnordered) {
for (const item of list.items) {
const { lineNumber, line } = item;
const unorderedListNesting = new Map();
let lastBlockQuotePrefix = null;
const tokens = filterByTypes(
params.parsers.micromark.tokens,
unorderedListTypes
);
for (const token of tokens) {
const { parent, startColumn, startLine, type } = token;
if (type === "blockQuotePrefix") {
lastBlockQuotePrefix = token;
} else if (type === "listUnordered") {
let nesting = 0;
/** @type {Token | null} */
let current = token;
while (
(current = getTokenParentOfType(current, unorderedParentTypes))
) {
if (current.type === "listUnordered") {
nesting++;
continue;
} else if (current.type === "listOrdered") {
nesting = -1;
}
break;
}
if (nesting >= 0) {
unorderedListNesting.set(token, nesting);
}
} else if (!inHtmlFlow(token)) {
// listItemPrefix
const nesting = unorderedListNesting.get(parent);
if (nesting !== undefined) {
// listItemPrefix for listUnordered
const expectedIndent =
(startIndented ? startIndent : 0) +
(list.nesting * indent);
const actualIndent = indentFor(item);
let range = null;
let editColumn = 1;
const match = line.match(listItemMarkerRe);
if (match) {
range = [ 1, match[0].length ];
editColumn += match[1].length - actualIndent;
}
(startIndented ? startIndent : 0) + (nesting * indent);
const blockQuoteAdjustment =
(lastBlockQuotePrefix?.endLine === startLine) ?
(lastBlockQuotePrefix.endColumn - 1) :
0;
const actualIndent = startColumn - 1 - blockQuoteAdjustment;
const range = [ 1, startColumn + 1 ];
const fixInfo = {
"editColumn": startColumn - actualIndent,
"deleteCount": Math.max(actualIndent - expectedIndent, 0),
"insertText": "".padEnd(Math.max(expectedIndent - actualIndent, 0))
};
addErrorDetailIf(
onError,
lineNumber,
startLine,
expectedIndent,
actualIndent,
null,
null,
undefined,
undefined,
range,
{
editColumn,
"deleteCount": actualIndent,
"insertText": "".padEnd(expectedIndent)
});
fixInfo
);
}

@@ -48,0 +85,0 @@ }

@@ -49,6 +49,3 @@ // @ts-check

const includeTables = (tables === undefined) ? true : !!tables;
let headings = params.config.headings;
if (headings === undefined) {
headings = params.config.headers;
}
const headings = params.config.headings;
const includeHeadings = (headings === undefined) ? true : !!headings;

@@ -55,0 +52,0 @@ const headingLineNumbers = [];

@@ -11,3 +11,3 @@ // @ts-check

"description": "No space after hash on atx style heading",
"tags": [ "headings", "headers", "atx", "spaces" ],
"tags": [ "headings", "atx", "spaces" ],
"function": function MD018(params, onError) {

@@ -14,0 +14,0 @@ forEachLine(lineMetadata(), (line, lineIndex, inCode) => {

@@ -11,3 +11,3 @@ // @ts-check

"description": "Multiple spaces after hash on atx style heading",
"tags": [ "headings", "headers", "atx", "spaces" ],
"tags": [ "headings", "atx", "spaces" ],
"function": function MD019(params, onError) {

@@ -14,0 +14,0 @@ filterTokens(params, "heading_open", (token) => {

@@ -11,3 +11,3 @@ // @ts-check

"description": "No space inside hashes on closed atx style heading",
"tags": [ "headings", "headers", "atx_closed", "spaces" ],
"tags": [ "headings", "atx_closed", "spaces" ],
"function": function MD020(params, onError) {

@@ -14,0 +14,0 @@ forEachLine(lineMetadata(), (line, lineIndex, inCode) => {

@@ -13,3 +13,3 @@ // @ts-check

"description": "Multiple spaces inside hashes on closed atx style heading",
"tags": [ "headings", "headers", "atx_closed", "spaces" ],
"tags": [ "headings", "atx_closed", "spaces" ],
"function": function MD021(params, onError) {

@@ -16,0 +16,0 @@ filterTokens(params, "heading_open", (token) => {

@@ -7,3 +7,3 @@ // @ts-check

require("../helpers");
const { filterByTypes, getHeadingLevel } =
const { filterByTypes, getHeadingLevel, inHtmlFlow } =
require("../helpers/micromark.cjs");

@@ -36,5 +36,5 @@

module.exports = {
"names": [ "MD022", "blanks-around-headings", "blanks-around-headers" ],
"names": [ "MD022", "blanks-around-headings" ],
"description": "Headings should be surrounded by blank lines",
"tags": [ "headings", "headers", "blank_lines" ],
"tags": [ "headings", "blank_lines" ],
"function": function MD022(params, onError) {

@@ -47,3 +47,3 @@ const getLinesAbove = getLinesFunction(params.config.lines_above);

[ "atxHeading", "setextHeading" ]
);
).filter((heading) => !inHtmlFlow(heading));
for (const heading of headings) {

@@ -50,0 +50,0 @@ const { startLine, endLine } = heading;

@@ -10,5 +10,5 @@ // @ts-check

module.exports = {
"names": [ "MD023", "heading-start-left", "header-start-left" ],
"names": [ "MD023", "heading-start-left" ],
"description": "Headings must start at the beginning of the line",
"tags": [ "headings", "headers", "spaces" ],
"tags": [ "headings", "spaces" ],
"function": function MD023(params, onError) {

@@ -15,0 +15,0 @@ filterTokens(params, "heading_open", function forToken(token) {

@@ -8,5 +8,5 @@ // @ts-check

module.exports = {
"names": [ "MD024", "no-duplicate-heading", "no-duplicate-header" ],
"names": [ "MD024", "no-duplicate-heading" ],
"description": "Multiple headings with the same content",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD024(params, onError) {

@@ -13,0 +13,0 @@ const siblingsOnly = !!params.config.siblings_only ||

@@ -11,3 +11,3 @@ // @ts-check

"description": "Multiple top-level headings in the same document",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD025(params, onError) {

@@ -14,0 +14,0 @@ const level = Number(params.config.level || 1);

@@ -13,3 +13,3 @@ // @ts-check

"description": "Trailing punctuation in heading",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD026(params, onError) {

@@ -16,0 +16,0 @@ let punctuation = params.config.punctuation;

@@ -6,3 +6,3 @@ // @ts-check

const { addErrorDetailIf } = require("../helpers");
const { flattenedLists } = require("./cache");
const { filterByTypes } = require("../helpers/micromark.cjs");

@@ -18,24 +18,35 @@ module.exports = {

const olMulti = Number(params.config.ol_multi || 1);
for (const list of flattenedLists()) {
const lineCount = list.lastLineIndex - list.open.map[0];
const allSingle = lineCount === list.items.length;
const expectedSpaces = list.unordered ?
(allSingle ? ulSingle : ulMulti) :
(allSingle ? olSingle : olMulti);
for (const item of list.items) {
const { line, lineNumber } = item;
const match = /^[\s>]*\S+(\s*)/.exec(line);
const [ { "length": matchLength }, { "length": actualSpaces } ] = match;
if (matchLength < line.length) {
let fixInfo = null;
if (expectedSpaces !== actualSpaces) {
fixInfo = {
"editColumn": matchLength - actualSpaces + 1,
"deleteCount": actualSpaces,
"insertText": "".padEnd(expectedSpaces)
};
}
const lists = filterByTypes(
params.parsers.micromark.tokens,
[ "listOrdered", "listUnordered" ]
);
for (const list of lists) {
const ordered = (list.type === "listOrdered");
const listItemPrefixes =
list.children.filter((token) => (token.type === "listItemPrefix"));
const allSingleLine =
(list.endLine - list.startLine + 1) === listItemPrefixes.length;
const expectedSpaces = ordered ?
(allSingleLine ? olSingle : olMulti) :
(allSingleLine ? ulSingle : ulMulti);
for (const listItemPrefix of listItemPrefixes) {
const range = [
listItemPrefix.startColumn,
listItemPrefix.endColumn - listItemPrefix.startColumn
];
const listItemPrefixWhitespaces = listItemPrefix.children.filter(
(token) => (token.type === "listItemPrefixWhitespace")
);
for (const listItemPrefixWhitespace of listItemPrefixWhitespaces) {
const { endColumn, startColumn, startLine } =
listItemPrefixWhitespace;
const actualSpaces = endColumn - startColumn;
const fixInfo = {
"editColumn": startColumn,
"deleteCount": actualSpaces,
"insertText": "".padEnd(expectedSpaces)
};
addErrorDetailIf(
onError,
lineNumber,
startLine,
expectedSpaces,

@@ -45,3 +56,3 @@ actualSpaces,

null,
[ 1, matchLength ],
range,
fixInfo

@@ -48,0 +59,0 @@ );

@@ -63,6 +63,3 @@ // @ts-check

let endLine = list.endLine;
const flattenedChildren = filterByPredicate(
list.children,
() => true
);
const flattenedChildren = filterByPredicate(list.children);
for (const child of flattenedChildren.reverse()) {

@@ -69,0 +66,0 @@ if (!nonContentTokens.has(child.type)) {

@@ -5,8 +5,6 @@ // @ts-check

const { addError } = require("../helpers");
const { addError, nextLinesRe } = require("../helpers");
const { filterByTypes, getHtmlTagInfo } =
require("../helpers/micromark.cjs");
const nextLinesRe = /[\r\n][\s\S]*$/;
module.exports = {

@@ -13,0 +11,0 @@ "names": [ "MD033", "no-inline-html" ],

@@ -6,3 +6,3 @@ // @ts-check

const { addErrorContext } = require("../helpers");
const { filterByPredicate, filterByTypes, getHtmlTagInfo, parse } =
const { filterByPredicate, filterByTypes, getHtmlTagInfo, inHtmlFlow, parse } =
require("../helpers/micromark.cjs");

@@ -15,31 +15,37 @@

"function": function MD034(params, onError) {
const literalAutolinks = (tokens) => {
const flattened = filterByPredicate(tokens, () => true);
const result = [];
for (let i = 0; i < flattened.length; i++) {
const current = flattened[i];
const openTagInfo = getHtmlTagInfo(current);
if (openTagInfo && !openTagInfo.close) {
let count = 1;
for (let j = i + 1; j < flattened.length; j++) {
const candidate = flattened[j];
const closeTagInfo = getHtmlTagInfo(candidate);
if (closeTagInfo && (openTagInfo.name === closeTagInfo.name)) {
if (closeTagInfo.close) {
count--;
if (count === 0) {
i = j;
break;
const literalAutolinks = (tokens) => (
filterByPredicate(
tokens,
(token) => (token.type === "literalAutolink") && !inHtmlFlow(token),
(token) => {
const { children } = token;
const result = [];
for (let i = 0; i < children.length; i++) {
const current = children[i];
const openTagInfo = getHtmlTagInfo(current);
if (openTagInfo && !openTagInfo.close) {
let count = 1;
for (let j = i + 1; j < children.length; j++) {
const candidate = children[j];
const closeTagInfo = getHtmlTagInfo(candidate);
if (closeTagInfo && (openTagInfo.name === closeTagInfo.name)) {
if (closeTagInfo.close) {
count--;
if (count === 0) {
i = j;
break;
}
} else {
count++;
}
}
} else {
count++;
}
} else {
result.push(current);
}
}
} else {
result.push(current);
return result;
}
}
return result.filter((token) => token.type === "literalAutolink");
};
)
);
const autoLinks = filterByTypes(

@@ -46,0 +52,0 @@ params.parsers.micromark.tokens,

@@ -8,5 +8,5 @@ // @ts-check

module.exports = {
"names": [ "MD036", "no-emphasis-as-heading", "no-emphasis-as-header" ],
"names": [ "MD036", "no-emphasis-as-heading" ],
"description": "Emphasis used instead of a heading",
"tags": [ "headings", "headers", "emphasis" ],
"tags": [ "headings", "emphasis" ],
"function": function MD036(params, onError) {

@@ -13,0 +13,0 @@ let punctuation = params.config.punctuation;

@@ -6,3 +6,3 @@ // @ts-check

const { addError } = require("../helpers");
const { filterByPredicate } = require("../helpers/micromark.cjs");
const { filterByPredicate, inHtmlFlow } = require("../helpers/micromark.cjs");

@@ -35,3 +35,3 @@ module.exports = {

const emphasisTokens = emphasisTokensByMarker.get(text);
if (emphasisTokens) {
if (emphasisTokens && !inHtmlFlow(child)) {
emphasisTokens.push(child);

@@ -38,0 +38,0 @@ }

@@ -6,3 +6,4 @@ // @ts-check

const { addErrorContext } = require("../helpers");
const { filterByTypes, tokenIfType } = require("../helpers/micromark.cjs");
const { filterByTypes, inHtmlFlow, tokenIfType } =
require("../helpers/micromark.cjs");

@@ -27,6 +28,7 @@ const leftSpaceRe = /^\s(?:[^`]|$)/;

"function": function MD038(params, onError) {
const codeTextTokens =
filterByTypes(params.parsers.micromark.tokens, [ "codeText" ]);
for (const token of codeTextTokens) {
const { children } = token;
const codeTexts =
filterByTypes(params.parsers.micromark.tokens, [ "codeText" ])
.filter((codeText) => !inHtmlFlow(codeText));
for (const codeText of codeTexts) {
const { children } = codeText;
const first = 0;

@@ -33,0 +35,0 @@ const last = children.length - 1;

@@ -10,3 +10,3 @@ // @ts-check

"description": "First line in a file should be a top-level heading",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD041(params, onError) {

@@ -13,0 +13,0 @@ const level = Number(params.config.level || 1);

@@ -9,7 +9,7 @@ // @ts-check

module.exports = {
"names": [ "MD043", "required-headings", "required-headers" ],
"names": [ "MD043", "required-headings" ],
"description": "Required heading structure",
"tags": [ "headings", "headers" ],
"tags": [ "headings" ],
"function": function MD043(params, onError) {
const requiredHeadings = params.config.headings || params.config.headers;
const requiredHeadings = params.config.headings;
if (!Array.isArray(requiredHeadings)) {

@@ -16,0 +16,0 @@ // Nothing to check; avoid doing any work

@@ -5,5 +5,7 @@ // @ts-check

const { addError } = require("../helpers");
const { filterByTypes } = require("../helpers/micromark.cjs");
const { addError, getHtmlAttributeRe, nextLinesRe } = require("../helpers");
const { filterByTypes, getHtmlTagInfo } = require("../helpers/micromark.cjs");
const altRe = getHtmlAttributeRe("alt");
module.exports = {

@@ -14,3 +16,6 @@ "names": [ "MD045", "no-alt-text" ],

"function": function MD045(params, onError) {
const images = filterByTypes(params.parsers.micromark.tokens, [ "image" ]);
const { tokens } = params.parsers.micromark;
// Process Markdown images
const images = filterByTypes(tokens, [ "image" ]);
for (const image of images) {

@@ -31,3 +36,28 @@ const labelTexts = filterByTypes(image.children, [ "labelText" ]);

}
// Process HTML images
const htmlTexts = filterByTypes(tokens, [ "htmlText" ]);
for (const htmlText of htmlTexts) {
const { startColumn, startLine, text } = htmlText;
const htmlTagInfo = getHtmlTagInfo(htmlText);
if (
htmlTagInfo &&
!htmlTagInfo.close &&
(htmlTagInfo.name.toLowerCase() === "img") &&
!altRe.test(text)
) {
const range = [
startColumn,
text.replace(nextLinesRe, "").length
];
addError(
onError,
startLine,
undefined,
undefined,
range
);
}
}
}
};

@@ -61,3 +61,3 @@ // @ts-check

"names": [ "MD049", "emphasis-style" ],
"description": "Emphasis style should be consistent",
"description": "Emphasis style",
"tags": [ "emphasis" ],

@@ -77,3 +77,3 @@ "function": function MD049(params, onError) {

"names": [ "MD050", "strong-style" ],
"description": "Strong style should be consistent",
"description": "Strong style",
"tags": [ "emphasis" ],

@@ -80,0 +80,0 @@ "function": function MD050(params, onError) {

@@ -5,3 +5,4 @@ // @ts-check

const { addError, addErrorDetailIf } = require("../helpers");
const { addError, addErrorDetailIf, getHtmlAttributeRe } =
require("../helpers");
const { filterByPredicate, filterByTypes, getHtmlTagInfo } =

@@ -11,4 +12,4 @@ require("../helpers/micromark.cjs");

// Regular expression for identifying HTML anchor names
const idRe = /\sid\s*=\s*['"]?([^'"\s>]+)/iu;
const nameRe = /\sname\s*=\s*['"]?([^'"\s>]+)/iu;
const idRe = getHtmlAttributeRe("id");
const nameRe = getHtmlAttributeRe("name");
const anchorRe = /\{(#[a-z\d]+(?:[-_][a-z\d]+)*)\}/gu;

@@ -18,3 +19,5 @@

const childrenExclude = new Set([ "image", "reference", "resource" ]);
const tokensInclude = new Set([ "codeTextData", "data" ]);
const tokensInclude = new Set(
[ "characterEscapeValue", "codeTextData", "data" ]
);

@@ -45,3 +48,2 @@ /**

// RegExp source with Ruby's \p{Word} expanded into its General Categories
// eslint-disable-next-line max-len
// https://github.com/gjtorikian/html-pipeline/blob/main/lib/html/pipeline/toc_filter.rb

@@ -106,3 +108,3 @@ // https://ruby-doc.org/core-3.0.2/Regexp.html

(htmlTagInfo.name.toLowerCase() === "a" && nameRe.exec(token.text));
if (anchorMatch) {
if (anchorMatch && anchorMatch.length > 0) {
fragments.set(`#${anchorMatch[1]}`, 0);

@@ -109,0 +111,0 @@ }

@@ -26,3 +26,3 @@ // @ts-check

for (const definition of definitions.entries()) {
const [ label, lineIndex ] = definition;
const [ label, [ lineIndex ] ] = definition;
if (

@@ -29,0 +29,0 @@ !ignored.has(label) &&

@@ -9,7 +9,5 @@ // @ts-check

require("./md001"),
require("./md002"),
require("./md003"),
require("./md004"),
require("./md005"),
require("./md006"),
require("./md007"),

@@ -56,3 +54,7 @@ require("./md009"),

require("./md052"),
require("./md053")
require("./md053"),
require("./md054")
// md055: See https://github.com/markdownlint/markdownlint
// md056: See https://github.com/markdownlint/markdownlint
// md057: See https://github.com/markdownlint/markdownlint
];

@@ -59,0 +61,0 @@ for (const rule of rules) {

{
"name": "markdownlint",
"version": "0.31.1",
"version": "0.32.0",
"description": "A Node.js style checker and lint tool for Markdown/CommonMark files.",

@@ -24,2 +24,3 @@ "type": "commonjs",

"bugs": "https://github.com/DavidAnson/markdownlint/issues",
"funding": "https://github.com/sponsors/DavidAnson",
"scripts": {

@@ -29,3 +30,3 @@ "build-config": "npm run build-config-schema && npm run build-config-example",

"build-config-schema": "node schema/build-config-schema.js",
"build-declaration": "tsc --allowJs --declaration --emitDeclarationOnly --module commonjs --resolveJsonModule --target es2015 lib/markdownlint.js && node scripts delete 'lib/{c,md,r}*.d.ts' 'micromark/*.d.cts' 'helpers/*.d.{cts,ts}'",
"build-declaration": "tsc --allowJs --declaration --emitDeclarationOnly --module commonjs --resolveJsonModule --target es2015 lib/markdownlint.js && node scripts delete 'lib/{cache,constants,md,r}*.d.ts' 'micromark/*.d.cts' 'helpers/*.d.{cts,ts}'",
"build-demo": "node scripts copy node_modules/markdown-it/dist/markdown-it.min.js demo/markdown-it.min.js && node scripts copy node_modules/markdownlint-micromark/micromark-browser.js demo/micromark-browser.js && node scripts copy node_modules/markdownlint-micromark/micromark-html-browser.js demo/micromark-html-browser.js && cd demo && webpack --no-stats",

@@ -66,11 +67,12 @@ "build-docs": "node doc-build/build-rules.mjs",

"engines": {
"node": ">=16"
"node": ">=18"
},
"dependencies": {
"markdown-it": "13.0.1",
"markdown-it": "13.0.2",
"markdownlint-micromark": "0.1.7"
},
"devDependencies": {
"@babel/core": "7.22.19",
"@babel/preset-env": "7.22.15",
"@babel/core": "7.23.3",
"@babel/preset-env": "7.23.3",
"@hyperjump/json-schema": "1.6.5",
"ava": "5.3.1",

@@ -80,11 +82,12 @@ "babel-loader": "9.1.3",

"character-entities": "2.0.2",
"eslint": "8.49.0",
"eslint": "8.53.0",
"eslint-plugin-es": "4.1.0",
"eslint-plugin-jsdoc": "46.8.0",
"eslint-plugin-n": "16.1.0",
"eslint-plugin-regexp": "1.15.0",
"eslint-plugin-unicorn": "48.0.1",
"eslint-plugin-jsdoc": "46.9.0",
"eslint-plugin-n": "16.3.1",
"eslint-plugin-regexp": "2.1.1",
"eslint-plugin-unicorn": "49.0.0",
"gemoji": "8.1.0",
"globby": "13.2.2",
"globby": "14.0.0",
"js-yaml": "4.1.0",
"json-schema-to-typescript": "13.1.1",
"markdown-it-for-inline": "0.1.1",

@@ -98,7 +101,6 @@ "markdown-it-sub": "1.0.0",

"toml": "3.0.0",
"tv4": "1.3.0",
"typescript": "5.2.2",
"webpack": "5.88.2",
"webpack": "5.89.0",
"webpack-cli": "5.1.4",
"yaml": "2.3.2"
"yaml": "2.3.4"
},

@@ -105,0 +107,0 @@ "keywords": [

@@ -70,3 +70,3 @@ # markdownlint

[sublimelinter]: https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint
[super-linter]: https://github.com/github/super-linter
[super-linter]: https://github.com/super-linter/super-linter
[vscode-markdownlint]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint

@@ -90,8 +90,6 @@

- **[MD001](doc/md001.md)** *heading-increment/header-increment* - Heading levels should only increment by one level at a time
- ~~**[MD002](doc/md002.md)** *first-heading-h1/first-header-h1* - First heading should be a top-level heading~~
- **[MD003](doc/md003.md)** *heading-style/header-style* - Heading style
- **[MD001](doc/md001.md)** *heading-increment* - Heading levels should only increment by one level at a time
- **[MD003](doc/md003.md)** *heading-style* - Heading style
- **[MD004](doc/md004.md)** *ul-style* - Unordered list style
- **[MD005](doc/md005.md)** *list-indent* - Inconsistent indentation for list items at the same level
- ~~**[MD006](doc/md006.md)** *ul-start-left* - Consider starting bulleted lists at the beginning of the line~~
- **[MD007](doc/md007.md)** *ul-indent* - Unordered list indentation

@@ -108,5 +106,5 @@ - **[MD009](doc/md009.md)** *no-trailing-spaces* - Trailing spaces

- **[MD021](doc/md021.md)** *no-multiple-space-closed-atx* - Multiple spaces inside hashes on closed atx style heading
- **[MD022](doc/md022.md)** *blanks-around-headings/blanks-around-headers* - Headings should be surrounded by blank lines
- **[MD023](doc/md023.md)** *heading-start-left/header-start-left* - Headings must start at the beginning of the line
- **[MD024](doc/md024.md)** *no-duplicate-heading/no-duplicate-header* - Multiple headings with the same content
- **[MD022](doc/md022.md)** *blanks-around-headings* - Headings should be surrounded by blank lines
- **[MD023](doc/md023.md)** *heading-start-left* - Headings must start at the beginning of the line
- **[MD024](doc/md024.md)** *no-duplicate-heading* - Multiple headings with the same content
- **[MD025](doc/md025.md)** *single-title/single-h1* - Multiple top-level headings in the same document

@@ -123,3 +121,3 @@ - **[MD026](doc/md026.md)** *no-trailing-punctuation* - Trailing punctuation in heading

- **[MD035](doc/md035.md)** *hr-style* - Horizontal rule style
- **[MD036](doc/md036.md)** *no-emphasis-as-heading/no-emphasis-as-header* - Emphasis used instead of a heading
- **[MD036](doc/md036.md)** *no-emphasis-as-heading* - Emphasis used instead of a heading
- **[MD037](doc/md037.md)** *no-space-in-emphasis* - Spaces inside emphasis markers

@@ -131,3 +129,3 @@ - **[MD038](doc/md038.md)** *no-space-in-code* - Spaces inside code span elements

- **[MD042](doc/md042.md)** *no-empty-links* - No empty links
- **[MD043](doc/md043.md)** *required-headings/required-headers* - Required heading structure
- **[MD043](doc/md043.md)** *required-headings* - Required heading structure
- **[MD044](doc/md044.md)** *proper-names* - Proper names should have the correct capitalization

@@ -138,7 +136,8 @@ - **[MD045](doc/md045.md)** *no-alt-text* - Images should have alternate text (alt text)

- **[MD048](doc/md048.md)** *code-fence-style* - Code fence style
- **[MD049](doc/md049.md)** *emphasis-style* - Emphasis style should be consistent
- **[MD050](doc/md050.md)** *strong-style* - Strong style should be consistent
- **[MD049](doc/md049.md)** *emphasis-style* - Emphasis style
- **[MD050](doc/md050.md)** *strong-style* - Strong style
- **[MD051](doc/md051.md)** *link-fragments* - Link fragments should be valid
- **[MD052](doc/md052.md)** *reference-links-images* - Reference links and images should use a label that is defined
- **[MD053](doc/md053.md)** *link-image-reference-definitions* - Link and image reference definitions should be needed
- **[MD054](doc/md054.md)** *link-image-style* - Link and image style

@@ -149,8 +148,2 @@ <!-- markdownlint-restore -->

~~Struck through~~ rules are deprecated and provided for backward-compatibility.
> All rules with `heading` as part of their name are also available as `header`
> aliases (e.g. `heading-increment` is also available as `header-increment`).
> The use of `header` is deprecated and provided for backward-compatibility.
### Custom Rules

@@ -175,22 +168,20 @@

- **`blockquote`** - `MD027`, `MD028`
- **`bullet`** - `MD004`, `MD005`, `MD006`, `MD007`, `MD032`
- **`bullet`** - `MD004`, `MD005`, `MD007`, `MD032`
- **`code`** - `MD014`, `MD031`, `MD038`, `MD040`, `MD046`, `MD048`
- **`emphasis`** - `MD036`, `MD037`, `MD049`, `MD050`
- **`hard_tab`** - `MD010`
- **`headers`** - `MD001`, `MD002`, `MD003`, `MD018`, `MD019`, `MD020`, `MD021`,
- **`headings`** - `MD001`, `MD003`, `MD018`, `MD019`, `MD020`, `MD021`,
`MD022`, `MD023`, `MD024`, `MD025`, `MD026`, `MD036`, `MD041`, `MD043`
- **`headings`** - `MD001`, `MD002`, `MD003`, `MD018`, `MD019`, `MD020`,
`MD021`, `MD022`, `MD023`, `MD024`, `MD025`, `MD026`, `MD036`, `MD041`,
`MD043`
- **`hr`** - `MD035`
- **`html`** - `MD033`
- **`images`** - `MD045`, `MD052`, `MD053`
- **`indentation`** - `MD005`, `MD006`, `MD007`, `MD027`
- **`images`** - `MD045`, `MD052`, `MD053`, `MD054`
- **`indentation`** - `MD005`, `MD007`, `MD027`
- **`language`** - `MD040`
- **`line_length`** - `MD013`
- **`links`** - `MD011`, `MD034`, `MD039`, `MD042`, `MD051`, `MD052`, `MD053`
- **`links`** - `MD011`, `MD034`, `MD039`, `MD042`, `MD051`, `MD052`, `MD053`,
`MD054`
- **`ol`** - `MD029`, `MD030`, `MD032`
- **`spaces`** - `MD018`, `MD019`, `MD020`, `MD021`, `MD023`
- **`spelling`** - `MD044`
- **`ul`** - `MD004`, `MD005`, `MD006`, `MD007`, `MD030`, `MD032`
- **`ul`** - `MD004`, `MD005`, `MD007`, `MD030`, `MD032`
- **`url`** - `MD034`

@@ -529,3 +520,3 @@ - **`whitespace`** - `MD009`, `MD010`, `MD012`, `MD027`, `MD028`, `MD030`,

```javascript
/((^---\s*$[\s\S]*?^---\s*)|(^\+\+\+\s*$[\s\S]*?^(\+\+\+|\.\.\.)\s*)|(^\{\s*$[\s\S]*?^\}\s*))(\r\n|\r|\n|$)/m
/((^---\s*$[\s\S]+?^---\s*)|(^\+\+\+\s*$[\s\S]+?^(\+\+\+|\.\.\.)\s*)|(^\{\s*$[\s\S]+?^\}\s*))(\r\n|\r|\n|$)/m
```

@@ -532,0 +523,0 @@

{
"title": "Markdownlint configuration schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "markdownlint configuration schema",
"type": "object",

@@ -24,3 +25,3 @@ "properties": {

"MD001": {
"description": "MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time",
"description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md001.md",
"type": "boolean",

@@ -30,9 +31,8 @@ "default": true

"heading-increment": {
"$ref": "#/properties/MD001"
"description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md001.md",
"type": "boolean",
"default": true
},
"header-increment": {
"$ref": "#/properties/MD001"
},
"MD002": {
"description": "MD002/first-heading-h1/first-header-h1 - First heading should be a top-level heading",
"MD003": {
"description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md003.md",
"type": [

@@ -44,8 +44,14 @@ "boolean",

"properties": {
"level": {
"description": "Heading level",
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
"style": {
"description": "Heading style",
"type": "string",
"enum": [
"consistent",
"atx",
"atx_closed",
"setext",
"setext_with_atx",
"setext_with_atx_closed"
],
"default": "consistent"
}

@@ -55,10 +61,4 @@ },

},
"first-heading-h1": {
"$ref": "#/properties/MD002"
},
"first-header-h1": {
"$ref": "#/properties/MD002"
},
"MD003": {
"description": "MD003/heading-style/header-style - Heading style",
"heading-style": {
"description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md003.md",
"type": [

@@ -86,10 +86,4 @@ "boolean",

},
"heading-style": {
"$ref": "#/properties/MD003"
},
"header-style": {
"$ref": "#/properties/MD003"
},
"MD004": {
"description": "MD004/ul-style - Unordered list style",
"description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md004.md",
"type": [

@@ -117,6 +111,26 @@ "boolean",

"ul-style": {
"$ref": "#/properties/MD004"
"description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md004.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "List style",
"type": "string",
"enum": [
"consistent",
"asterisk",
"plus",
"dash",
"sublist"
],
"default": "consistent"
}
},
"additionalProperties": false
},
"MD005": {
"description": "MD005/list-indent - Inconsistent indentation for list items at the same level",
"description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md005.md",
"type": "boolean",

@@ -126,14 +140,8 @@ "default": true

"list-indent": {
"$ref": "#/properties/MD005"
},
"MD006": {
"description": "MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line",
"description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md005.md",
"type": "boolean",
"default": true
},
"ul-start-left": {
"$ref": "#/properties/MD006"
},
"MD007": {
"description": "MD007/ul-indent - Unordered list indentation",
"description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md007.md",
"type": [

@@ -166,6 +174,31 @@ "boolean",

"ul-indent": {
"$ref": "#/properties/MD007"
"description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md007.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"indent": {
"description": "Spaces for indent",
"type": "integer",
"minimum": 1,
"default": 2
},
"start_indented": {
"description": "Whether to indent the first level of the list",
"type": "boolean",
"default": false
},
"start_indent": {
"description": "Spaces for first level indent (when start_indented is set)",
"type": "integer",
"minimum": 1,
"default": 2
}
},
"additionalProperties": false
},
"MD009": {
"description": "MD009/no-trailing-spaces - Trailing spaces",
"description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md009.md",
"type": [

@@ -197,6 +230,30 @@ "boolean",

"no-trailing-spaces": {
"$ref": "#/properties/MD009"
"description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md009.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"br_spaces": {
"description": "Spaces for line break",
"type": "integer",
"minimum": 0,
"default": 2
},
"list_item_empty_lines": {
"description": "Allow spaces for empty lines in list items",
"type": "boolean",
"default": false
},
"strict": {
"description": "Include unnecessary breaks",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"MD010": {
"description": "MD010/no-hard-tabs - Hard tabs",
"description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md010.md",
"type": [

@@ -231,6 +288,33 @@ "boolean",

"no-hard-tabs": {
"$ref": "#/properties/MD010"
"description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md010.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"code_blocks": {
"description": "Include code blocks",
"type": "boolean",
"default": true
},
"ignore_code_languages": {
"description": "Fenced code languages to ignore",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"spaces_per_tab": {
"description": "Number of spaces for each hard tab",
"type": "integer",
"minimum": 0,
"default": 1
}
},
"additionalProperties": false
},
"MD011": {
"description": "MD011/no-reversed-links - Reversed link syntax",
"description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md011.md",
"type": "boolean",

@@ -240,6 +324,8 @@ "default": true

"no-reversed-links": {
"$ref": "#/properties/MD011"
"description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md011.md",
"type": "boolean",
"default": true
},
"MD012": {
"description": "MD012/no-multiple-blanks - Multiple consecutive blank lines",
"description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md012.md",
"type": [

@@ -261,6 +347,20 @@ "boolean",

"no-multiple-blanks": {
"$ref": "#/properties/MD012"
"description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md012.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"maximum": {
"description": "Consecutive blank lines",
"type": "integer",
"minimum": 1,
"default": 1
}
},
"additionalProperties": false
},
"MD013": {
"description": "MD013/line-length - Line length",
"description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md013.md",
"type": [

@@ -305,3 +405,52 @@ "boolean",

},
"headers": {
"strict": {
"description": "Strict length checking",
"type": "boolean",
"default": false
},
"stern": {
"description": "Stern length checking",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"line-length": {
"description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md013.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"line_length": {
"description": "Number of characters",
"type": "integer",
"minimum": 1,
"default": 80
},
"heading_line_length": {
"description": "Number of characters for headings",
"type": "integer",
"minimum": 1,
"default": 80
},
"code_block_line_length": {
"description": "Number of characters for code blocks",
"type": "integer",
"minimum": 1,
"default": 80
},
"code_blocks": {
"description": "Include code blocks",
"type": "boolean",
"default": true
},
"tables": {
"description": "Include tables",
"type": "boolean",
"default": true
},
"headings": {
"description": "Include headings",

@@ -324,7 +473,4 @@ "type": "boolean",

},
"line-length": {
"$ref": "#/properties/MD013"
},
"MD014": {
"description": "MD014/commands-show-output - Dollar signs used before commands without showing output",
"description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md014.md",
"type": "boolean",

@@ -334,6 +480,8 @@ "default": true

"commands-show-output": {
"$ref": "#/properties/MD014"
"description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md014.md",
"type": "boolean",
"default": true
},
"MD018": {
"description": "MD018/no-missing-space-atx - No space after hash on atx style heading",
"description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md018.md",
"type": "boolean",

@@ -343,6 +491,8 @@ "default": true

"no-missing-space-atx": {
"$ref": "#/properties/MD018"
"description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md018.md",
"type": "boolean",
"default": true
},
"MD019": {
"description": "MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading",
"description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md019.md",
"type": "boolean",

@@ -352,6 +502,8 @@ "default": true

"no-multiple-space-atx": {
"$ref": "#/properties/MD019"
"description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md019.md",
"type": "boolean",
"default": true
},
"MD020": {
"description": "MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading",
"description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md020.md",
"type": "boolean",

@@ -361,6 +513,8 @@ "default": true

"no-missing-space-closed-atx": {
"$ref": "#/properties/MD020"
"description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md020.md",
"type": "boolean",
"default": true
},
"MD021": {
"description": "MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading",
"description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md021.md",
"type": "boolean",

@@ -370,6 +524,8 @@ "default": true

"no-multiple-space-closed-atx": {
"$ref": "#/properties/MD021"
"description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md021.md",
"type": "boolean",
"default": true
},
"MD022": {
"description": "MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines",
"description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md022.md",
"type": [

@@ -409,9 +565,38 @@ "boolean",

"blanks-around-headings": {
"$ref": "#/properties/MD022"
"description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md022.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"lines_above": {
"description": "Blank lines above heading",
"type": [
"integer",
"array"
],
"items": {
"type": "integer"
},
"minimum": -1,
"default": 1
},
"lines_below": {
"description": "Blank lines below heading",
"type": [
"integer",
"array"
],
"items": {
"type": "integer"
},
"minimum": -1,
"default": 1
}
},
"additionalProperties": false
},
"blanks-around-headers": {
"$ref": "#/properties/MD022"
},
"MD023": {
"description": "MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line",
"description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md023.md",
"type": "boolean",

@@ -421,9 +606,8 @@ "default": true

"heading-start-left": {
"$ref": "#/properties/MD023"
"description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md023.md",
"type": "boolean",
"default": true
},
"header-start-left": {
"$ref": "#/properties/MD023"
},
"MD024": {
"description": "MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content",
"description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md024.md",
"type": [

@@ -449,9 +633,24 @@ "boolean",

"no-duplicate-heading": {
"$ref": "#/properties/MD024"
"description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md024.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"allow_different_nesting": {
"description": "Only check sibling headings",
"type": "boolean",
"default": false
},
"siblings_only": {
"description": "Only check sibling headings",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"no-duplicate-header": {
"$ref": "#/properties/MD024"
},
"MD025": {
"description": "MD025/single-title/single-h1 - Multiple top-level headings in the same document",
"description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md025.md",
"type": [

@@ -479,9 +678,49 @@ "boolean",

"single-title": {
"$ref": "#/properties/MD025"
"description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md025.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"level": {
"description": "Heading level",
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
},
"front_matter_title": {
"description": "RegExp for matching title in front matter",
"type": "string",
"default": "^\\s*title\\s*[:=]"
}
},
"additionalProperties": false
},
"single-h1": {
"$ref": "#/properties/MD025"
"description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md025.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"level": {
"description": "Heading level",
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
},
"front_matter_title": {
"description": "RegExp for matching title in front matter",
"type": "string",
"default": "^\\s*title\\s*[:=]"
}
},
"additionalProperties": false
},
"MD026": {
"description": "MD026/no-trailing-punctuation - Trailing punctuation in heading",
"description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md026.md",
"type": [

@@ -502,6 +741,19 @@ "boolean",

"no-trailing-punctuation": {
"$ref": "#/properties/MD026"
"description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md026.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"punctuation": {
"description": "Punctuation characters",
"type": "string",
"default": ".,;:!。,;:!"
}
},
"additionalProperties": false
},
"MD027": {
"description": "MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol",
"description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md027.md",
"type": "boolean",

@@ -511,6 +763,8 @@ "default": true

"no-multiple-space-blockquote": {
"$ref": "#/properties/MD027"
"description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md027.md",
"type": "boolean",
"default": true
},
"MD028": {
"description": "MD028/no-blanks-blockquote - Blank line inside blockquote",
"description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md028.md",
"type": "boolean",

@@ -520,6 +774,8 @@ "default": true

"no-blanks-blockquote": {
"$ref": "#/properties/MD028"
"description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md028.md",
"type": "boolean",
"default": true
},
"MD029": {
"description": "MD029/ol-prefix - Ordered list item prefix",
"description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md029.md",
"type": [

@@ -546,6 +802,25 @@ "boolean",

"ol-prefix": {
"$ref": "#/properties/MD029"
"description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md029.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "List style",
"type": "string",
"enum": [
"one",
"ordered",
"one_or_ordered",
"zero"
],
"default": "one_or_ordered"
}
},
"additionalProperties": false
},
"MD030": {
"description": "MD030/list-marker-space - Spaces after list markers",
"description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md030.md",
"type": [

@@ -585,6 +860,38 @@ "boolean",

"list-marker-space": {
"$ref": "#/properties/MD030"
"description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md030.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"ul_single": {
"description": "Spaces for single-line unordered list items",
"type": "integer",
"minimum": 1,
"default": 1
},
"ol_single": {
"description": "Spaces for single-line ordered list items",
"type": "integer",
"minimum": 1,
"default": 1
},
"ul_multi": {
"description": "Spaces for multi-line unordered list items",
"type": "integer",
"minimum": 1,
"default": 1
},
"ol_multi": {
"description": "Spaces for multi-line ordered list items",
"type": "integer",
"minimum": 1,
"default": 1
}
},
"additionalProperties": false
},
"MD031": {
"description": "MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines",
"description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md031.md",
"type": [

@@ -605,6 +912,19 @@ "boolean",

"blanks-around-fences": {
"$ref": "#/properties/MD031"
"description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md031.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"list_items": {
"description": "Include list items",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
},
"MD032": {
"description": "MD032/blanks-around-lists - Lists should be surrounded by blank lines",
"description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md032.md",
"type": "boolean",

@@ -614,6 +934,8 @@ "default": true

"blanks-around-lists": {
"$ref": "#/properties/MD032"
"description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md032.md",
"type": "boolean",
"default": true
},
"MD033": {
"description": "MD033/no-inline-html - Inline HTML",
"description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md033.md",
"type": [

@@ -637,6 +959,22 @@ "boolean",

"no-inline-html": {
"$ref": "#/properties/MD033"
"description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md033.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"allowed_elements": {
"description": "Allowed elements",
"type": "array",
"items": {
"type": "string"
},
"default": []
}
},
"additionalProperties": false
},
"MD034": {
"description": "MD034/no-bare-urls - Bare URL used",
"description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md034.md",
"type": "boolean",

@@ -646,6 +984,8 @@ "default": true

"no-bare-urls": {
"$ref": "#/properties/MD034"
"description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md034.md",
"type": "boolean",
"default": true
},
"MD035": {
"description": "MD035/hr-style - Horizontal rule style",
"description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md035.md",
"type": [

@@ -666,6 +1006,19 @@ "boolean",

"hr-style": {
"$ref": "#/properties/MD035"
"description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md035.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "Horizontal rule style",
"type": "string",
"default": "consistent"
}
},
"additionalProperties": false
},
"MD036": {
"description": "MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading",
"description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md036.md",
"type": [

@@ -686,9 +1039,19 @@ "boolean",

"no-emphasis-as-heading": {
"$ref": "#/properties/MD036"
"description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md036.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"punctuation": {
"description": "Punctuation characters",
"type": "string",
"default": ".,;:!?。,;:!?"
}
},
"additionalProperties": false
},
"no-emphasis-as-header": {
"$ref": "#/properties/MD036"
},
"MD037": {
"description": "MD037/no-space-in-emphasis - Spaces inside emphasis markers",
"description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md037.md",
"type": "boolean",

@@ -698,6 +1061,8 @@ "default": true

"no-space-in-emphasis": {
"$ref": "#/properties/MD037"
"description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md037.md",
"type": "boolean",
"default": true
},
"MD038": {
"description": "MD038/no-space-in-code - Spaces inside code span elements",
"description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md038.md",
"type": "boolean",

@@ -707,6 +1072,8 @@ "default": true

"no-space-in-code": {
"$ref": "#/properties/MD038"
"description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md038.md",
"type": "boolean",
"default": true
},
"MD039": {
"description": "MD039/no-space-in-links - Spaces inside link text",
"description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md039.md",
"type": "boolean",

@@ -716,6 +1083,8 @@ "default": true

"no-space-in-links": {
"$ref": "#/properties/MD039"
"description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md039.md",
"type": "boolean",
"default": true
},
"MD040": {
"description": "MD040/fenced-code-language - Fenced code blocks should have a language specified",
"description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md040.md",
"type": [

@@ -744,6 +1113,27 @@ "boolean",

"fenced-code-language": {
"$ref": "#/properties/MD040"
"description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md040.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"allowed_languages": {
"description": "List of languages",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"language_only": {
"description": "Require language only",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"MD041": {
"description": "MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading",
"description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md041.md",
"type": [

@@ -771,9 +1161,49 @@ "boolean",

"first-line-heading": {
"$ref": "#/properties/MD041"
"description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md041.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"level": {
"description": "Heading level",
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
},
"front_matter_title": {
"description": "RegExp for matching title in front matter",
"type": "string",
"default": "^\\s*title\\s*[:=]"
}
},
"additionalProperties": false
},
"first-line-h1": {
"$ref": "#/properties/MD041"
"description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md041.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"level": {
"description": "Heading level",
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
},
"front_matter_title": {
"description": "RegExp for matching title in front matter",
"type": "string",
"default": "^\\s*title\\s*[:=]"
}
},
"additionalProperties": false
},
"MD042": {
"description": "MD042/no-empty-links - No empty links",
"description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md042.md",
"type": "boolean",

@@ -783,6 +1213,8 @@ "default": true

"no-empty-links": {
"$ref": "#/properties/MD042"
"description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md042.md",
"type": "boolean",
"default": true
},
"MD043": {
"description": "MD043/required-headings/required-headers - Required heading structure",
"description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md043.md",
"type": [

@@ -803,3 +1235,19 @@ "boolean",

},
"headers": {
"match_case": {
"description": "Match case of headings",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"required-headings": {
"description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md043.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"headings": {
"description": "List of headings",

@@ -821,10 +1269,4 @@ "type": "array",

},
"required-headings": {
"$ref": "#/properties/MD043"
},
"required-headers": {
"$ref": "#/properties/MD043"
},
"MD044": {
"description": "MD044/proper-names - Proper names should have the correct capitalization",
"description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md044.md",
"type": [

@@ -858,6 +1300,32 @@ "boolean",

"proper-names": {
"$ref": "#/properties/MD044"
"description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md044.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"names": {
"description": "List of proper names",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"code_blocks": {
"description": "Include code blocks",
"type": "boolean",
"default": true
},
"html_elements": {
"description": "Include HTML elements",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
},
"MD045": {
"description": "MD045/no-alt-text - Images should have alternate text (alt text)",
"description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md045.md",
"type": "boolean",

@@ -867,6 +1335,8 @@ "default": true

"no-alt-text": {
"$ref": "#/properties/MD045"
"description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md045.md",
"type": "boolean",
"default": true
},
"MD046": {
"description": "MD046/code-block-style - Code block style",
"description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md046.md",
"type": [

@@ -892,6 +1362,24 @@ "boolean",

"code-block-style": {
"$ref": "#/properties/MD046"
"description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md046.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "Block style",
"type": "string",
"enum": [
"consistent",
"fenced",
"indented"
],
"default": "consistent"
}
},
"additionalProperties": false
},
"MD047": {
"description": "MD047/single-trailing-newline - Files should end with a single newline character",
"description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md047.md",
"type": "boolean",

@@ -901,6 +1389,8 @@ "default": true

"single-trailing-newline": {
"$ref": "#/properties/MD047"
"description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md047.md",
"type": "boolean",
"default": true
},
"MD048": {
"description": "MD048/code-fence-style - Code fence style",
"description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md048.md",
"type": [

@@ -926,6 +1416,24 @@ "boolean",

"code-fence-style": {
"$ref": "#/properties/MD048"
"description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md048.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "Code fence style",
"type": "string",
"enum": [
"consistent",
"backtick",
"tilde"
],
"default": "consistent"
}
},
"additionalProperties": false
},
"MD049": {
"description": "MD049/emphasis-style - Emphasis style should be consistent",
"description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md049.md",
"type": [

@@ -951,6 +1459,24 @@ "boolean",

"emphasis-style": {
"$ref": "#/properties/MD049"
"description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md049.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "Emphasis style",
"type": "string",
"enum": [
"consistent",
"asterisk",
"underscore"
],
"default": "consistent"
}
},
"additionalProperties": false
},
"MD050": {
"description": "MD050/strong-style - Strong style should be consistent",
"description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md050.md",
"type": [

@@ -976,6 +1502,24 @@ "boolean",

"strong-style": {
"$ref": "#/properties/MD050"
"description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md050.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"style": {
"description": "Strong style",
"type": "string",
"enum": [
"consistent",
"asterisk",
"underscore"
],
"default": "consistent"
}
},
"additionalProperties": false
},
"MD051": {
"description": "MD051/link-fragments - Link fragments should be valid",
"description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md051.md",
"type": "boolean",

@@ -985,6 +1529,8 @@ "default": true

"link-fragments": {
"$ref": "#/properties/MD051"
"description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md051.md",
"type": "boolean",
"default": true
},
"MD052": {
"description": "MD052/reference-links-images - Reference links and images should use a label that is defined",
"description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md052.md",
"type": [

@@ -1005,6 +1551,19 @@ "boolean",

"reference-links-images": {
"$ref": "#/properties/MD052"
"description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md052.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"shortcut_syntax": {
"description": "Include shortcut syntax",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"MD053": {
"description": "MD053/link-image-reference-definitions - Link and image reference definitions should be needed",
"description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md053.md",
"type": [

@@ -1030,16 +1589,111 @@ "boolean",

"link-image-reference-definitions": {
"$ref": "#/properties/MD053"
"description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md053.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"ignored_definitions": {
"description": "Ignored definitions",
"type": "array",
"items": {
"type": "string"
},
"default": [
"//"
]
}
},
"additionalProperties": false
},
"MD054": {
"description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md054.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"autolink": {
"description": "Allow autolinks",
"type": "boolean",
"default": true
},
"inline": {
"description": "Allow inline links and images",
"type": "boolean",
"default": true
},
"full": {
"description": "Allow full reference links and images",
"type": "boolean",
"default": true
},
"collapsed": {
"description": "Allow collapsed reference links and images",
"type": "boolean",
"default": true
},
"shortcut": {
"description": "Allow shortcut reference links and images",
"type": "boolean",
"default": true
},
"url_inline": {
"description": "Allow URLs as inline links",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
},
"link-image-style": {
"description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.32.0/doc/md054.md",
"type": [
"boolean",
"object"
],
"default": true,
"properties": {
"autolink": {
"description": "Allow autolinks",
"type": "boolean",
"default": true
},
"inline": {
"description": "Allow inline links and images",
"type": "boolean",
"default": true
},
"full": {
"description": "Allow full reference links and images",
"type": "boolean",
"default": true
},
"collapsed": {
"description": "Allow collapsed reference links and images",
"type": "boolean",
"default": true
},
"shortcut": {
"description": "Allow shortcut reference links and images",
"type": "boolean",
"default": true
},
"url_inline": {
"description": "Allow URLs as inline links",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
},
"headings": {
"description": "headings - MD001, MD002, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043",
"description": "headings : MD001, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043",
"type": "boolean",
"default": true
},
"headers": {
"description": "headers - MD001, MD002, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043",
"type": "boolean",
"default": true
},
"bullet": {
"description": "bullet - MD004, MD005, MD006, MD007, MD032",
"description": "bullet : MD004, MD005, MD007, MD032",
"type": "boolean",

@@ -1049,3 +1703,3 @@ "default": true

"ul": {
"description": "ul - MD004, MD005, MD006, MD007, MD030, MD032",
"description": "ul : MD004, MD005, MD007, MD030, MD032",
"type": "boolean",

@@ -1055,3 +1709,3 @@ "default": true

"indentation": {
"description": "indentation - MD005, MD006, MD007, MD027",
"description": "indentation : MD005, MD007, MD027",
"type": "boolean",

@@ -1061,3 +1715,3 @@ "default": true

"whitespace": {
"description": "whitespace - MD009, MD010, MD012, MD027, MD028, MD030, MD037, MD038, MD039",
"description": "whitespace : MD009, MD010, MD012, MD027, MD028, MD030, MD037, MD038, MD039",
"type": "boolean",

@@ -1067,3 +1721,3 @@ "default": true

"hard_tab": {
"description": "hard_tab - MD010",
"description": "hard_tab : MD010",
"type": "boolean",

@@ -1073,3 +1727,3 @@ "default": true

"links": {
"description": "links - MD011, MD034, MD039, MD042, MD051, MD052, MD053",
"description": "links : MD011, MD034, MD039, MD042, MD051, MD052, MD053, MD054",
"type": "boolean",

@@ -1079,3 +1733,3 @@ "default": true

"blank_lines": {
"description": "blank_lines - MD012, MD022, MD031, MD032, MD047",
"description": "blank_lines : MD012, MD022, MD031, MD032, MD047",
"type": "boolean",

@@ -1085,3 +1739,3 @@ "default": true

"line_length": {
"description": "line_length - MD013",
"description": "line_length : MD013",
"type": "boolean",

@@ -1091,3 +1745,3 @@ "default": true

"code": {
"description": "code - MD014, MD031, MD038, MD040, MD046, MD048",
"description": "code : MD014, MD031, MD038, MD040, MD046, MD048",
"type": "boolean",

@@ -1097,3 +1751,3 @@ "default": true

"atx": {
"description": "atx - MD018, MD019",
"description": "atx : MD018, MD019",
"type": "boolean",

@@ -1103,3 +1757,3 @@ "default": true

"spaces": {
"description": "spaces - MD018, MD019, MD020, MD021, MD023",
"description": "spaces : MD018, MD019, MD020, MD021, MD023",
"type": "boolean",

@@ -1109,3 +1763,3 @@ "default": true

"atx_closed": {
"description": "atx_closed - MD020, MD021",
"description": "atx_closed : MD020, MD021",
"type": "boolean",

@@ -1115,3 +1769,3 @@ "default": true

"blockquote": {
"description": "blockquote - MD027, MD028",
"description": "blockquote : MD027, MD028",
"type": "boolean",

@@ -1121,3 +1775,3 @@ "default": true

"ol": {
"description": "ol - MD029, MD030, MD032",
"description": "ol : MD029, MD030, MD032",
"type": "boolean",

@@ -1127,3 +1781,3 @@ "default": true

"html": {
"description": "html - MD033",
"description": "html : MD033",
"type": "boolean",

@@ -1133,3 +1787,3 @@ "default": true

"url": {
"description": "url - MD034",
"description": "url : MD034",
"type": "boolean",

@@ -1139,3 +1793,3 @@ "default": true

"hr": {
"description": "hr - MD035",
"description": "hr : MD035",
"type": "boolean",

@@ -1145,3 +1799,3 @@ "default": true

"emphasis": {
"description": "emphasis - MD036, MD037, MD049, MD050",
"description": "emphasis : MD036, MD037, MD049, MD050",
"type": "boolean",

@@ -1151,3 +1805,3 @@ "default": true

"language": {
"description": "language - MD040",
"description": "language : MD040",
"type": "boolean",

@@ -1157,3 +1811,3 @@ "default": true

"spelling": {
"description": "spelling - MD044",
"description": "spelling : MD044",
"type": "boolean",

@@ -1163,3 +1817,3 @@ "default": true

"accessibility": {
"description": "accessibility - MD045",
"description": "accessibility : MD045",
"type": "boolean",

@@ -1169,3 +1823,3 @@ "default": true

"images": {
"description": "images - MD045, MD052, MD053",
"description": "images : MD045, MD052, MD053, MD054",
"type": "boolean",

@@ -1172,0 +1826,0 @@ "default": true

@@ -7,3 +7,2 @@ {

"line_length": false,
"ul-start-left": false,
"ul-indent": false,

@@ -10,0 +9,0 @@ "no-inline-html": false,

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc