markdownlint 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +13 -3
- package/README.md +17 -7
- package/demo/markdownlint-browser.js +584 -367
- package/doc/CustomRules.md +15 -4
- package/doc/Rules.md +86 -13
- package/helpers/helpers.js +168 -50
- package/helpers/package.json +1 -1
- package/lib/cache.js +9 -9
- package/lib/constants.js +7 -0
- package/lib/markdownlint.d.ts +6 -2
- package/lib/markdownlint.js +216 -213
- package/lib/md007.js +4 -2
- package/lib/md010.js +21 -16
- package/lib/md011.js +2 -2
- package/lib/md033.js +12 -8
- package/lib/md035.js +4 -4
- package/lib/md037.js +5 -3
- package/lib/md039.js +2 -1
- package/lib/md043.js +0 -1
- package/lib/md044.js +2 -2
- package/lib/md049.js +45 -0
- package/lib/md050.js +45 -0
- package/lib/rules.js +4 -4
- package/package.json +25 -23
- package/schema/.markdownlint.jsonc +15 -1
- package/schema/.markdownlint.yaml +12 -0
- package/schema/markdownlint-config-schema.json +95 -1
package/lib/md010.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
"use strict";
|
|
4
4
|
|
|
5
|
-
const { addError, forEachLine } = require("../helpers");
|
|
6
|
-
const { lineMetadata } = require("./cache");
|
|
5
|
+
const { addError, forEachLine, overlapsAnyRange } = require("../helpers");
|
|
6
|
+
const { codeBlockAndSpanRanges, lineMetadata } = require("./cache");
|
|
7
7
|
|
|
8
8
|
const tabRe = /\t+/g;
|
|
9
9
|
|
|
@@ -13,28 +13,33 @@ module.exports = {
|
|
|
13
13
|
"tags": [ "whitespace", "hard_tab" ],
|
|
14
14
|
"function": function MD010(params, onError) {
|
|
15
15
|
const codeBlocks = params.config.code_blocks;
|
|
16
|
-
const
|
|
16
|
+
const includeCode = (codeBlocks === undefined) ? true : !!codeBlocks;
|
|
17
17
|
const spacesPerTab = params.config.spaces_per_tab;
|
|
18
18
|
const spaceMultiplier = (spacesPerTab === undefined) ?
|
|
19
19
|
1 :
|
|
20
20
|
Math.max(0, Number(spacesPerTab));
|
|
21
|
+
const exclusions = includeCode ? [] : codeBlockAndSpanRanges();
|
|
21
22
|
forEachLine(lineMetadata(), (line, lineIndex, inCode) => {
|
|
22
|
-
if (
|
|
23
|
+
if (includeCode || !inCode) {
|
|
23
24
|
let match = null;
|
|
24
25
|
while ((match = tabRe.exec(line)) !== null) {
|
|
25
|
-
const
|
|
26
|
+
const { index } = match;
|
|
27
|
+
const column = index + 1;
|
|
26
28
|
const length = match[0].length;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
if (!overlapsAnyRange(exclusions, lineIndex, index, length)) {
|
|
30
|
+
addError(
|
|
31
|
+
onError,
|
|
32
|
+
lineIndex + 1,
|
|
33
|
+
"Column: " + column,
|
|
34
|
+
null,
|
|
35
|
+
[ column, length ],
|
|
36
|
+
{
|
|
37
|
+
"editColumn": column,
|
|
38
|
+
"deleteCount": length,
|
|
39
|
+
"insertText": "".padEnd(length * spaceMultiplier)
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
}
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
});
|
package/lib/md011.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"use strict";
|
|
4
4
|
|
|
5
5
|
const { addError, forEachLine, overlapsAnyRange } = require("../helpers");
|
|
6
|
-
const {
|
|
6
|
+
const { codeBlockAndSpanRanges, lineMetadata } = require("./cache");
|
|
7
7
|
|
|
8
8
|
const reversedLinkRe =
|
|
9
9
|
/(^|[^\\])\(([^)]+)\)\[([^\]^][^\]]*)](?!\()/g;
|
|
@@ -13,7 +13,7 @@ module.exports = {
|
|
|
13
13
|
"description": "Reversed link syntax",
|
|
14
14
|
"tags": [ "links" ],
|
|
15
15
|
"function": function MD011(params, onError) {
|
|
16
|
-
const exclusions =
|
|
16
|
+
const exclusions = codeBlockAndSpanRanges();
|
|
17
17
|
forEachLine(lineMetadata(), (line, lineIndex, inCode, onFence) => {
|
|
18
18
|
if (!inCode && !onFence) {
|
|
19
19
|
let match = null;
|
package/lib/md033.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
"use strict";
|
|
4
4
|
|
|
5
|
-
const {
|
|
6
|
-
|
|
5
|
+
const {
|
|
6
|
+
addError, forEachLine, overlapsAnyRange, unescapeMarkdown
|
|
7
|
+
} = require("../helpers");
|
|
8
|
+
const { codeBlockAndSpanRanges, lineMetadata } = require("./cache");
|
|
7
9
|
|
|
8
10
|
const htmlElementRe = /<(([A-Za-z][A-Za-z0-9-]*)(?:\s[^>]*)?)\/?>/g;
|
|
9
11
|
const linkDestinationRe = /]\(\s*$/;
|
|
10
|
-
const inlineCodeRe = /^[^`]*(`+[^`]+`+[^`]+)*`+[^`]*$/;
|
|
11
12
|
// See https://spec.commonmark.org/0.29/#autolinks
|
|
12
13
|
const emailAddressRe =
|
|
13
14
|
// eslint-disable-next-line max-len
|
|
@@ -21,19 +22,22 @@ module.exports = {
|
|
|
21
22
|
let allowedElements = params.config.allowed_elements;
|
|
22
23
|
allowedElements = Array.isArray(allowedElements) ? allowedElements : [];
|
|
23
24
|
allowedElements = allowedElements.map((element) => element.toLowerCase());
|
|
25
|
+
const exclusions = codeBlockAndSpanRanges();
|
|
24
26
|
forEachLine(lineMetadata(), (line, lineIndex, inCode) => {
|
|
25
27
|
let match = null;
|
|
26
28
|
// eslint-disable-next-line no-unmodified-loop-condition
|
|
27
29
|
while (!inCode && ((match = htmlElementRe.exec(line)) !== null)) {
|
|
28
30
|
const [ tag, content, element ] = match;
|
|
29
|
-
if (
|
|
31
|
+
if (
|
|
32
|
+
!allowedElements.includes(element.toLowerCase()) &&
|
|
30
33
|
!tag.endsWith("\\>") &&
|
|
31
|
-
!emailAddressRe.test(content)
|
|
34
|
+
!emailAddressRe.test(content) &&
|
|
35
|
+
!overlapsAnyRange(exclusions, lineIndex, match.index, match[0].length)
|
|
36
|
+
) {
|
|
32
37
|
const prefix = line.substring(0, match.index);
|
|
33
|
-
if (!linkDestinationRe.test(prefix)
|
|
38
|
+
if (!linkDestinationRe.test(prefix)) {
|
|
34
39
|
const unescaped = unescapeMarkdown(prefix + "<", "_");
|
|
35
|
-
if (!unescaped.endsWith("_")
|
|
36
|
-
((unescaped + "`").match(/`/g).length % 2)) {
|
|
40
|
+
if (!unescaped.endsWith("_")) {
|
|
37
41
|
addError(onError, lineIndex + 1, "Element: " + element,
|
|
38
42
|
null, [ match.index + 1, tag.length ]);
|
|
39
43
|
}
|
package/lib/md035.js
CHANGED
|
@@ -10,12 +10,12 @@ module.exports = {
|
|
|
10
10
|
"tags": [ "hr" ],
|
|
11
11
|
"function": function MD035(params, onError) {
|
|
12
12
|
let style = String(params.config.style || "consistent");
|
|
13
|
-
filterTokens(params, "hr",
|
|
14
|
-
const
|
|
13
|
+
filterTokens(params, "hr", (token) => {
|
|
14
|
+
const { lineNumber, markup } = token;
|
|
15
15
|
if (style === "consistent") {
|
|
16
|
-
style =
|
|
16
|
+
style = markup;
|
|
17
17
|
}
|
|
18
|
-
addErrorDetailIf(onError,
|
|
18
|
+
addErrorDetailIf(onError, lineNumber, style, markup);
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
};
|
package/lib/md037.js
CHANGED
|
@@ -7,6 +7,7 @@ const { addErrorContext, emphasisMarkersInContent, forEachLine, isBlankLine } =
|
|
|
7
7
|
const { lineMetadata } = require("./cache");
|
|
8
8
|
|
|
9
9
|
const emphasisRe = /(^|[^\\]|\\\\)(?:(\*\*?\*?)|(__?_?))/g;
|
|
10
|
+
const embeddedUnderscoreRe = /([A-Za-z0-9])_([A-Za-z0-9])/g;
|
|
10
11
|
const asteriskListItemMarkerRe = /^([\s>]*)\*(\s+)/;
|
|
11
12
|
const leftSpaceRe = /^\s+/;
|
|
12
13
|
const rightSpaceRe = /\s+$/;
|
|
@@ -98,14 +99,15 @@ module.exports = {
|
|
|
98
99
|
// Emphasis has no meaning here
|
|
99
100
|
return;
|
|
100
101
|
}
|
|
102
|
+
let patchedLine = line.replace(embeddedUnderscoreRe, "$1 $2");
|
|
101
103
|
if (onItemStart) {
|
|
102
104
|
// Trim overlapping '*' list item marker
|
|
103
|
-
|
|
105
|
+
patchedLine = patchedLine.replace(asteriskListItemMarkerRe, "$1 $2");
|
|
104
106
|
}
|
|
105
107
|
let match = null;
|
|
106
108
|
// Match all emphasis-looking runs in the line...
|
|
107
|
-
while ((match = emphasisRe.exec(
|
|
108
|
-
const ignoreMarkersForLine = ignoreMarkersByLine[lineIndex]
|
|
109
|
+
while ((match = emphasisRe.exec(patchedLine))) {
|
|
110
|
+
const ignoreMarkersForLine = ignoreMarkersByLine[lineIndex];
|
|
109
111
|
const matchIndex = match.index + match[1].length;
|
|
110
112
|
if (ignoreMarkersForLine.includes(matchIndex)) {
|
|
111
113
|
// Ignore emphasis markers inside code spans and links
|
package/lib/md039.js
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
const { addErrorContext, filterTokens } = require("../helpers");
|
|
6
6
|
|
|
7
|
-
const spaceInLinkRe =
|
|
7
|
+
const spaceInLinkRe =
|
|
8
|
+
/\[(?:\s+(?:[^\]]*?)\s*|(?:[^\]]*?)\s+)](?=((?:\([^)]*\))|(?:\[[^\]]*\])))/;
|
|
8
9
|
|
|
9
10
|
module.exports = {
|
|
10
11
|
"names": [ "MD039", "no-space-in-links" ],
|
package/lib/md043.js
CHANGED
|
@@ -20,7 +20,6 @@ module.exports = {
|
|
|
20
20
|
let matchAny = false;
|
|
21
21
|
let hasError = false;
|
|
22
22
|
let anyHeadings = false;
|
|
23
|
-
// eslint-disable-next-line func-style
|
|
24
23
|
const getExpected = () => requiredHeadings[i++] || "[None]";
|
|
25
24
|
forEachHeading(params, (heading, content) => {
|
|
26
25
|
if (!hasError) {
|
package/lib/md044.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
const { addErrorDetailIf, bareUrlRe, escapeForRegExp, forEachLine,
|
|
6
6
|
overlapsAnyRange, linkRe, linkReferenceRe } = require("../helpers");
|
|
7
|
-
const {
|
|
7
|
+
const { codeBlockAndSpanRanges, lineMetadata } = require("./cache");
|
|
8
8
|
|
|
9
9
|
module.exports = {
|
|
10
10
|
"names": [ "MD044", "proper-names" ],
|
|
@@ -36,7 +36,7 @@ module.exports = {
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
if (!includeCodeBlocks) {
|
|
39
|
-
exclusions.push(...
|
|
39
|
+
exclusions.push(...codeBlockAndSpanRanges());
|
|
40
40
|
}
|
|
41
41
|
for (const name of names) {
|
|
42
42
|
const escapedName = escapeForRegExp(name);
|
package/lib/md049.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
const { addError, emphasisOrStrongStyleFor, forEachInlineChild,
|
|
6
|
+
getNextChildToken, getRangeAndFixInfoIfFound } = require("../helpers");
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
"names": [ "MD049", "emphasis-style" ],
|
|
10
|
+
"description": "Emphasis style should be consistent",
|
|
11
|
+
"tags": [ "emphasis" ],
|
|
12
|
+
"function": function MD049(params, onError) {
|
|
13
|
+
let expectedStyle = String(params.config.style || "consistent");
|
|
14
|
+
forEachInlineChild(params, "em_open", (token, parent) => {
|
|
15
|
+
const { lineNumber, markup } = token;
|
|
16
|
+
const markupStyle = emphasisOrStrongStyleFor(markup);
|
|
17
|
+
if (expectedStyle === "consistent") {
|
|
18
|
+
expectedStyle = markupStyle;
|
|
19
|
+
}
|
|
20
|
+
if (expectedStyle !== markupStyle) {
|
|
21
|
+
let rangeAndFixInfo = {};
|
|
22
|
+
const contentToken = getNextChildToken(
|
|
23
|
+
parent, token, "text", "em_close"
|
|
24
|
+
);
|
|
25
|
+
if (contentToken) {
|
|
26
|
+
const { content } = contentToken;
|
|
27
|
+
const actual = `${markup}${content}${markup}`;
|
|
28
|
+
const expectedMarkup = (expectedStyle === "asterisk") ? "*" : "_";
|
|
29
|
+
const expected = `${expectedMarkup}${content}${expectedMarkup}`;
|
|
30
|
+
rangeAndFixInfo = getRangeAndFixInfoIfFound(
|
|
31
|
+
params.lines, lineNumber - 1, actual, expected
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
addError(
|
|
35
|
+
onError,
|
|
36
|
+
lineNumber,
|
|
37
|
+
`Expected: ${expectedStyle}; Actual: ${markupStyle}`,
|
|
38
|
+
null,
|
|
39
|
+
rangeAndFixInfo.range,
|
|
40
|
+
rangeAndFixInfo.fixInfo
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
};
|
package/lib/md050.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
const { addError, emphasisOrStrongStyleFor, forEachInlineChild,
|
|
6
|
+
getNextChildToken, getRangeAndFixInfoIfFound } = require("../helpers");
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
"names": [ "MD050", "strong-style" ],
|
|
10
|
+
"description": "Strong style should be consistent",
|
|
11
|
+
"tags": [ "emphasis" ],
|
|
12
|
+
"function": function MD050(params, onError) {
|
|
13
|
+
let expectedStyle = String(params.config.style || "consistent");
|
|
14
|
+
forEachInlineChild(params, "strong_open", (token, parent) => {
|
|
15
|
+
const { lineNumber, markup } = token;
|
|
16
|
+
const markupStyle = emphasisOrStrongStyleFor(markup);
|
|
17
|
+
if (expectedStyle === "consistent") {
|
|
18
|
+
expectedStyle = markupStyle;
|
|
19
|
+
}
|
|
20
|
+
if (expectedStyle !== markupStyle) {
|
|
21
|
+
let rangeAndFixInfo = {};
|
|
22
|
+
const contentToken = getNextChildToken(
|
|
23
|
+
parent, token, "text", "strong_close"
|
|
24
|
+
);
|
|
25
|
+
if (contentToken) {
|
|
26
|
+
const { content } = contentToken;
|
|
27
|
+
const actual = `${markup}${content}${markup}`;
|
|
28
|
+
const expectedMarkup = (expectedStyle === "asterisk") ? "**" : "__";
|
|
29
|
+
const expected = `${expectedMarkup}${content}${expectedMarkup}`;
|
|
30
|
+
rangeAndFixInfo = getRangeAndFixInfoIfFound(
|
|
31
|
+
params.lines, lineNumber - 1, actual, expected
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
addError(
|
|
35
|
+
onError,
|
|
36
|
+
lineNumber,
|
|
37
|
+
`Expected: ${expectedStyle}; Actual: ${markupStyle}`,
|
|
38
|
+
null,
|
|
39
|
+
rangeAndFixInfo.range,
|
|
40
|
+
rangeAndFixInfo.fixInfo
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
};
|
package/lib/rules.js
CHANGED
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
"use strict";
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
const homepage = packageJson.homepage;
|
|
7
|
-
const version = packageJson.version;
|
|
5
|
+
const { homepage, version } = require("./constants");
|
|
8
6
|
|
|
9
7
|
const rules = [
|
|
10
8
|
require("./md001"),
|
|
@@ -50,7 +48,9 @@ const rules = [
|
|
|
50
48
|
require("./md045"),
|
|
51
49
|
require("./md046"),
|
|
52
50
|
require("./md047"),
|
|
53
|
-
require("./md048")
|
|
51
|
+
require("./md048"),
|
|
52
|
+
require("./md049"),
|
|
53
|
+
require("./md050")
|
|
54
54
|
];
|
|
55
55
|
rules.forEach((rule) => {
|
|
56
56
|
const name = rule.names[0].toLowerCase();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "markdownlint",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "A Node.js style checker and lint tool for Markdown/CommonMark files.",
|
|
5
5
|
"main": "lib/markdownlint.js",
|
|
6
6
|
"types": "lib/markdownlint.d.ts",
|
|
@@ -16,11 +16,10 @@
|
|
|
16
16
|
"build-config": "npm run build-config-schema && npm run build-config-example",
|
|
17
17
|
"build-config-example": "node schema/build-config-example.js",
|
|
18
18
|
"build-config-schema": "node schema/build-config-schema.js",
|
|
19
|
-
"build-declaration": "tsc --allowJs --declaration --emitDeclarationOnly --resolveJsonModule lib/markdownlint.js &&
|
|
20
|
-
"build-demo": "
|
|
19
|
+
"build-declaration": "tsc --allowJs --declaration --emitDeclarationOnly --resolveJsonModule lib/markdownlint.js && node scripts delete 'lib/{c,md,r}*.d.ts' 'helpers/*.d.ts'",
|
|
20
|
+
"build-demo": "node scripts copy node_modules/markdown-it/dist/markdown-it.min.js demo/markdown-it.min.js && cd demo && webpack --no-stats",
|
|
21
21
|
"build-example": "npm install --no-save --ignore-scripts grunt grunt-cli gulp through2",
|
|
22
|
-
"ci": "npm-run-all --continue-on-error --parallel
|
|
23
|
-
"clean-test-repos": "rimraf test-repos",
|
|
22
|
+
"ci": "npm-run-all --continue-on-error --parallel build-config lint serial-declaration-demo test-cover && git diff --exit-code",
|
|
24
23
|
"clone-test-repos-dotnet-docs": "cd test-repos && git clone https://github.com/dotnet/docs dotnet-docs --depth 1 --no-tags --quiet",
|
|
25
24
|
"clone-test-repos-eslint-eslint": "cd test-repos && git clone https://github.com/eslint/eslint eslint-eslint --depth 1 --no-tags --quiet",
|
|
26
25
|
"clone-test-repos-mkdocs-mkdocs": "cd test-repos && git clone https://github.com/mkdocs/mkdocs mkdocs-mkdocs --depth 1 --no-tags --quiet",
|
|
@@ -33,43 +32,46 @@
|
|
|
33
32
|
"clone-test-repos-large": "npm run clone-test-repos && cd test-repos && npm run clone-test-repos-dotnet-docs && npm run clone-test-repos-v8-v8-dev",
|
|
34
33
|
"declaration": "npm run build-declaration && npm run test-declaration",
|
|
35
34
|
"example": "cd example && node standalone.js && grunt markdownlint --force && gulp markdownlint",
|
|
35
|
+
"docker-npm-install": "docker run --rm --tty --name npm-install --volume $PWD:/home/workdir --workdir /home/workdir --user node node:16 npm install",
|
|
36
|
+
"docker-npm-run-upgrade": "docker run --rm --tty --name npm-run-upgrade --volume $PWD:/home/workdir --workdir /home/workdir --user node node:16 npm run upgrade",
|
|
36
37
|
"lint": "eslint --max-warnings 0 .",
|
|
37
38
|
"lint-test-repos": "ava --timeout=5m test/markdownlint-test-repos.js",
|
|
38
|
-
"
|
|
39
|
+
"serial-declaration-demo": "npm run build-declaration && npm-run-all --continue-on-error --parallel build-demo test-declaration",
|
|
40
|
+
"test": "ava test/markdownlint-test.js test/markdownlint-test-config.js test/markdownlint-test-custom-rules.js test/markdownlint-test-helpers.js test/markdownlint-test-result-object.js test/markdownlint-test-scenarios.js",
|
|
39
41
|
"test-cover": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 npm test",
|
|
40
42
|
"test-declaration": "cd example/typescript && tsc && node type-check.js",
|
|
41
|
-
"test-extra": "ava --timeout=5m test/markdownlint-test-extra.js"
|
|
43
|
+
"test-extra": "ava --timeout=5m test/markdownlint-test-extra-parse.js test/markdownlint-test-extra-type.js",
|
|
44
|
+
"upgrade": "npx npm-check-updates --upgrade"
|
|
42
45
|
},
|
|
43
46
|
"engines": {
|
|
44
|
-
"node": ">=
|
|
47
|
+
"node": ">=12"
|
|
45
48
|
},
|
|
46
49
|
"dependencies": {
|
|
47
|
-
"markdown-it": "12.
|
|
50
|
+
"markdown-it": "12.3.0"
|
|
48
51
|
},
|
|
49
52
|
"devDependencies": {
|
|
50
53
|
"ava": "~3.15.0",
|
|
51
|
-
"c8": "~7.
|
|
52
|
-
"
|
|
53
|
-
"eslint": "~
|
|
54
|
-
"eslint-plugin-jsdoc": "~36.0.7",
|
|
54
|
+
"c8": "~7.10.0",
|
|
55
|
+
"eslint": "~8.5.0",
|
|
56
|
+
"eslint-plugin-jsdoc": "~37.4.0",
|
|
55
57
|
"eslint-plugin-node": "~11.1.0",
|
|
56
|
-
"eslint-plugin-unicorn": "~
|
|
57
|
-
"globby": "~
|
|
58
|
+
"eslint-plugin-unicorn": "~39.0.0",
|
|
59
|
+
"globby": "~12.0.2",
|
|
58
60
|
"js-yaml": "~4.1.0",
|
|
59
61
|
"markdown-it-for-inline": "~0.1.1",
|
|
60
62
|
"markdown-it-sub": "~1.0.0",
|
|
61
63
|
"markdown-it-sup": "~1.0.0",
|
|
62
|
-
"markdown-it-texmath": "~0.9.
|
|
63
|
-
"markdownlint-rule-
|
|
64
|
+
"markdown-it-texmath": "~0.9.7",
|
|
65
|
+
"markdownlint-rule-github-internal-links": "~0.1.0",
|
|
66
|
+
"markdownlint-rule-helpers": "~0.15.0",
|
|
64
67
|
"npm-run-all": "~4.1.5",
|
|
65
|
-
"
|
|
66
|
-
"strip-json-comments": "~3.1.1",
|
|
68
|
+
"strip-json-comments": "~4.0.0",
|
|
67
69
|
"toml": "~3.0.0",
|
|
68
|
-
"ts-loader": "~9.2.
|
|
70
|
+
"ts-loader": "~9.2.6",
|
|
69
71
|
"tv4": "~1.3.0",
|
|
70
|
-
"typescript": "~4.
|
|
71
|
-
"webpack": "~5.
|
|
72
|
-
"webpack-cli": "~4.
|
|
72
|
+
"typescript": "~4.5.4",
|
|
73
|
+
"webpack": "~5.65.0",
|
|
74
|
+
"webpack-cli": "~4.9.1"
|
|
73
75
|
},
|
|
74
76
|
"keywords": [
|
|
75
77
|
"markdown",
|
|
@@ -39,7 +39,9 @@
|
|
|
39
39
|
// Spaces for indent
|
|
40
40
|
"indent": 2,
|
|
41
41
|
// Whether to indent the first level of the list
|
|
42
|
-
"start_indented": false
|
|
42
|
+
"start_indented": false,
|
|
43
|
+
// Spaces for first level indent (when start_indented is set)
|
|
44
|
+
"start_indent": 2
|
|
43
45
|
},
|
|
44
46
|
|
|
45
47
|
// MD009/no-trailing-spaces - Trailing spaces
|
|
@@ -248,5 +250,17 @@
|
|
|
248
250
|
"MD048": {
|
|
249
251
|
// Code fence style
|
|
250
252
|
"style": "consistent"
|
|
253
|
+
},
|
|
254
|
+
|
|
255
|
+
// MD049/emphasis-style - Emphasis style should be consistent
|
|
256
|
+
"MD049": {
|
|
257
|
+
// Emphasis style should be consistent
|
|
258
|
+
"style": "consistent"
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
// MD050/strong-style - Strong style should be consistent
|
|
262
|
+
"MD050": {
|
|
263
|
+
// Strong style should be consistent
|
|
264
|
+
"style": "consistent"
|
|
251
265
|
}
|
|
252
266
|
}
|
|
@@ -36,6 +36,8 @@ MD007:
|
|
|
36
36
|
indent: 2
|
|
37
37
|
# Whether to indent the first level of the list
|
|
38
38
|
start_indented: false
|
|
39
|
+
# Spaces for first level indent (when start_indented is set)
|
|
40
|
+
start_indent: 2
|
|
39
41
|
|
|
40
42
|
# MD009/no-trailing-spaces - Trailing spaces
|
|
41
43
|
MD009:
|
|
@@ -224,4 +226,14 @@ MD047: true
|
|
|
224
226
|
# MD048/code-fence-style - Code fence style
|
|
225
227
|
MD048:
|
|
226
228
|
# Code fence style
|
|
229
|
+
style: "consistent"
|
|
230
|
+
|
|
231
|
+
# MD049/emphasis-style - Emphasis style should be consistent
|
|
232
|
+
MD049:
|
|
233
|
+
# Emphasis style should be consistent
|
|
234
|
+
style: "consistent"
|
|
235
|
+
|
|
236
|
+
# MD050/strong-style - Strong style should be consistent
|
|
237
|
+
MD050:
|
|
238
|
+
# Strong style should be consistent
|
|
227
239
|
style: "consistent"
|
|
@@ -238,6 +238,11 @@
|
|
|
238
238
|
"description": "Whether to indent the first level of the list",
|
|
239
239
|
"type": "boolean",
|
|
240
240
|
"default": false
|
|
241
|
+
},
|
|
242
|
+
"start_indent": {
|
|
243
|
+
"description": "Spaces for first level indent (when start_indented is set)",
|
|
244
|
+
"type": "integer",
|
|
245
|
+
"default": 2
|
|
241
246
|
}
|
|
242
247
|
},
|
|
243
248
|
"additionalProperties": false
|
|
@@ -259,6 +264,11 @@
|
|
|
259
264
|
"description": "Whether to indent the first level of the list",
|
|
260
265
|
"type": "boolean",
|
|
261
266
|
"default": false
|
|
267
|
+
},
|
|
268
|
+
"start_indent": {
|
|
269
|
+
"description": "Spaces for first level indent (when start_indented is set)",
|
|
270
|
+
"type": "integer",
|
|
271
|
+
"default": 2
|
|
262
272
|
}
|
|
263
273
|
},
|
|
264
274
|
"additionalProperties": false
|
|
@@ -1439,6 +1449,90 @@
|
|
|
1439
1449
|
},
|
|
1440
1450
|
"additionalProperties": false
|
|
1441
1451
|
},
|
|
1452
|
+
"MD049": {
|
|
1453
|
+
"description": "MD049/emphasis-style - Emphasis style should be consistent",
|
|
1454
|
+
"type": [
|
|
1455
|
+
"boolean",
|
|
1456
|
+
"object"
|
|
1457
|
+
],
|
|
1458
|
+
"default": true,
|
|
1459
|
+
"properties": {
|
|
1460
|
+
"style": {
|
|
1461
|
+
"description": "Emphasis style should be consistent",
|
|
1462
|
+
"type": "string",
|
|
1463
|
+
"enum": [
|
|
1464
|
+
"consistent",
|
|
1465
|
+
"asterisk",
|
|
1466
|
+
"underscore"
|
|
1467
|
+
],
|
|
1468
|
+
"default": "consistent"
|
|
1469
|
+
}
|
|
1470
|
+
},
|
|
1471
|
+
"additionalProperties": false
|
|
1472
|
+
},
|
|
1473
|
+
"emphasis-style": {
|
|
1474
|
+
"description": "MD049/emphasis-style - Emphasis style should be consistent",
|
|
1475
|
+
"type": [
|
|
1476
|
+
"boolean",
|
|
1477
|
+
"object"
|
|
1478
|
+
],
|
|
1479
|
+
"default": true,
|
|
1480
|
+
"properties": {
|
|
1481
|
+
"style": {
|
|
1482
|
+
"description": "Emphasis style should be consistent",
|
|
1483
|
+
"type": "string",
|
|
1484
|
+
"enum": [
|
|
1485
|
+
"consistent",
|
|
1486
|
+
"asterisk",
|
|
1487
|
+
"underscore"
|
|
1488
|
+
],
|
|
1489
|
+
"default": "consistent"
|
|
1490
|
+
}
|
|
1491
|
+
},
|
|
1492
|
+
"additionalProperties": false
|
|
1493
|
+
},
|
|
1494
|
+
"MD050": {
|
|
1495
|
+
"description": "MD050/strong-style - Strong style should be consistent",
|
|
1496
|
+
"type": [
|
|
1497
|
+
"boolean",
|
|
1498
|
+
"object"
|
|
1499
|
+
],
|
|
1500
|
+
"default": true,
|
|
1501
|
+
"properties": {
|
|
1502
|
+
"style": {
|
|
1503
|
+
"description": "Strong style should be consistent",
|
|
1504
|
+
"type": "string",
|
|
1505
|
+
"enum": [
|
|
1506
|
+
"consistent",
|
|
1507
|
+
"asterisk",
|
|
1508
|
+
"underscore"
|
|
1509
|
+
],
|
|
1510
|
+
"default": "consistent"
|
|
1511
|
+
}
|
|
1512
|
+
},
|
|
1513
|
+
"additionalProperties": false
|
|
1514
|
+
},
|
|
1515
|
+
"strong-style": {
|
|
1516
|
+
"description": "MD050/strong-style - Strong style should be consistent",
|
|
1517
|
+
"type": [
|
|
1518
|
+
"boolean",
|
|
1519
|
+
"object"
|
|
1520
|
+
],
|
|
1521
|
+
"default": true,
|
|
1522
|
+
"properties": {
|
|
1523
|
+
"style": {
|
|
1524
|
+
"description": "Strong style should be consistent",
|
|
1525
|
+
"type": "string",
|
|
1526
|
+
"enum": [
|
|
1527
|
+
"consistent",
|
|
1528
|
+
"asterisk",
|
|
1529
|
+
"underscore"
|
|
1530
|
+
],
|
|
1531
|
+
"default": "consistent"
|
|
1532
|
+
}
|
|
1533
|
+
},
|
|
1534
|
+
"additionalProperties": false
|
|
1535
|
+
},
|
|
1442
1536
|
"headings": {
|
|
1443
1537
|
"description": "headings - MD001, MD002, MD003, MD018, MD019, MD020, MD021, MD022, MD023, MD024, MD025, MD026, MD036, MD041, MD043",
|
|
1444
1538
|
"type": "boolean",
|
|
@@ -1535,7 +1629,7 @@
|
|
|
1535
1629
|
"default": true
|
|
1536
1630
|
},
|
|
1537
1631
|
"emphasis": {
|
|
1538
|
-
"description": "emphasis - MD036, MD037",
|
|
1632
|
+
"description": "emphasis - MD036, MD037, MD049, MD050",
|
|
1539
1633
|
"type": "boolean",
|
|
1540
1634
|
"default": true
|
|
1541
1635
|
},
|