markdownlint 0.29.0 → 0.31.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/CHANGELOG.md +13 -0
- package/demo/markdownlint-browser.js +997 -891
- package/doc/CustomRules.md +2 -0
- package/doc/Rules.md +46 -23
- package/doc/md022.md +12 -6
- package/doc/md026.md +1 -2
- package/doc/md049.md +2 -2
- package/doc/md050.md +2 -2
- package/doc/md051.md +17 -6
- package/doc/md052.md +13 -6
- package/helpers/helpers.js +146 -235
- package/helpers/micromark.cjs +192 -53
- package/helpers/package.json +2 -2
- package/helpers/shared.js +7 -0
- package/lib/cache.js +0 -2
- package/lib/constants.js +1 -1
- package/lib/markdownlint.d.ts +10 -2
- package/lib/markdownlint.js +37 -13
- package/lib/md022.js +80 -40
- package/lib/md026.js +19 -12
- package/lib/md032.js +62 -31
- package/lib/md033.js +20 -45
- package/lib/md037.js +70 -164
- package/lib/md043.js +42 -40
- package/lib/md044.js +15 -41
- package/lib/md045.js +17 -5
- package/lib/md049-md050.js +6 -3
- package/lib/md051.js +123 -72
- package/lib/md052.js +7 -3
- package/package.json +25 -24
- package/schema/.markdownlint.jsonc +7 -4
- package/schema/.markdownlint.yaml +6 -4
- package/schema/markdownlint-config-schema.json +32 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! markdownlint 0.
|
|
1
|
+
/*! markdownlint 0.31.0 https://github.com/DavidAnson/markdownlint @license MIT */
|
|
2
2
|
var markdownlint;
|
|
3
3
|
/******/ (() => { // webpackBootstrap
|
|
4
4
|
/******/ var __webpack_modules__ = ({
|
|
@@ -34,21 +34,19 @@ module.exports = webpackEmptyContext;
|
|
|
34
34
|
|
|
35
35
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
36
36
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
37
|
-
function _iterableToArrayLimit(
|
|
37
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
38
38
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
39
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
39
40
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
40
41
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
42
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
41
43
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
42
44
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
43
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
44
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
45
45
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
46
|
-
function _typeof(
|
|
46
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
47
47
|
var micromark = __webpack_require__(/*! ./micromark.cjs */ "../helpers/micromark.cjs");
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// See NEWLINES_RE in markdown-it/lib/rules_core/normalize.js
|
|
51
|
-
var newLineRe = /\r\n?|\n/g;
|
|
48
|
+
var _require = __webpack_require__(/*! ./shared.js */ "../helpers/shared.js"),
|
|
49
|
+
newLineRe = _require.newLineRe;
|
|
52
50
|
module.exports.newLineRe = newLineRe;
|
|
53
51
|
|
|
54
52
|
// Regular expression for matching common front matter (YAML and TOML)
|
|
@@ -62,17 +60,10 @@ var inlineCommentStartRe =
|
|
|
62
60
|
/(<!--\s*markdownlint-(disable|enable|capture|restore|disable-file|enable-file|disable-line|disable-next-line|configure-file))(?:\s|-->)/gi;
|
|
63
61
|
module.exports.inlineCommentStartRe = inlineCommentStartRe;
|
|
64
62
|
|
|
65
|
-
// Regular expression for matching HTML elements
|
|
66
|
-
var htmlElementRe = /<(([A-Za-z][A-Za-z\d-]*)(?:\s[^`>]*)?)\/?>/g;
|
|
67
|
-
module.exports.htmlElementRe = htmlElementRe;
|
|
68
|
-
|
|
69
63
|
// Regular expressions for range matching
|
|
70
64
|
module.exports.listItemMarkerRe = /^([\s>]*)(?:[*+-]|\d+[.)])\s+/;
|
|
71
65
|
module.exports.orderedListItemMarkerRe = /^[\s>]*0*(\d+)[.)]/;
|
|
72
66
|
|
|
73
|
-
// Regular expression for all instances of emphasis markers
|
|
74
|
-
var emphasisMarkersRe = /[_*]/g;
|
|
75
|
-
|
|
76
67
|
// Regular expression for blockquote prefixes
|
|
77
68
|
var blockquotePrefixRe = /^[>\s]*/;
|
|
78
69
|
module.exports.blockquotePrefixRe = blockquotePrefixRe;
|
|
@@ -81,6 +72,16 @@ module.exports.blockquotePrefixRe = blockquotePrefixRe;
|
|
|
81
72
|
var linkReferenceDefinitionRe = /^ {0,3}\[([^\]]*[^\\])\]:/;
|
|
82
73
|
module.exports.linkReferenceDefinitionRe = linkReferenceDefinitionRe;
|
|
83
74
|
|
|
75
|
+
// Regular expression for identifying an HTML entity at the end of a line
|
|
76
|
+
module.exports.endOfLineHtmlEntityRe =
|
|
77
|
+
// eslint-disable-next-line max-len
|
|
78
|
+
/&(?:#\d+|#[xX][\da-fA-F]+|[a-zA-Z]{2,31}|blk\d{2}|emsp1[34]|frac\d{2}|sup\d|there4);$/;
|
|
79
|
+
|
|
80
|
+
// Regular expression for identifying a GitHub emoji code at the end of a line
|
|
81
|
+
module.exports.endOfLineGemojiCodeRe =
|
|
82
|
+
// eslint-disable-next-line max-len
|
|
83
|
+
/:(?:[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})+):$/;
|
|
84
|
+
|
|
84
85
|
// All punctuation characters (normal and full-width)
|
|
85
86
|
var allPunctuation = ".,;:!?。,;:!?";
|
|
86
87
|
module.exports.allPunctuation = allPunctuation;
|
|
@@ -88,25 +89,82 @@ module.exports.allPunctuation = allPunctuation;
|
|
|
88
89
|
// All punctuation characters without question mark (normal and full-width)
|
|
89
90
|
module.exports.allPunctuationNoQuestion = allPunctuation.replace(/[\?\uFF1F]/g, "");
|
|
90
91
|
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Returns true iff the input is a Number.
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} obj Object of unknown type.
|
|
96
|
+
* @returns {boolean} True iff obj is a Number.
|
|
97
|
+
*/
|
|
98
|
+
function isNumber(obj) {
|
|
93
99
|
return typeof obj === "number";
|
|
94
|
-
}
|
|
100
|
+
}
|
|
101
|
+
module.exports.isNumber = isNumber;
|
|
95
102
|
|
|
96
|
-
|
|
97
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Returns true iff the input is a String.
|
|
105
|
+
*
|
|
106
|
+
* @param {Object} obj Object of unknown type.
|
|
107
|
+
* @returns {boolean} True iff obj is a String.
|
|
108
|
+
*/
|
|
109
|
+
function isString(obj) {
|
|
98
110
|
return typeof obj === "string";
|
|
99
|
-
}
|
|
111
|
+
}
|
|
112
|
+
module.exports.isString = isString;
|
|
100
113
|
|
|
101
|
-
|
|
102
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Returns true iff the input String is empty.
|
|
116
|
+
*
|
|
117
|
+
* @param {string} str String of unknown length.
|
|
118
|
+
* @returns {boolean} True iff the input String is empty.
|
|
119
|
+
*/
|
|
120
|
+
function isEmptyString(str) {
|
|
103
121
|
return str.length === 0;
|
|
104
|
-
}
|
|
122
|
+
}
|
|
123
|
+
module.exports.isEmptyString = isEmptyString;
|
|
105
124
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
125
|
+
/**
|
|
126
|
+
* Returns true iff the input is an Object.
|
|
127
|
+
*
|
|
128
|
+
* @param {Object} obj Object of unknown type.
|
|
129
|
+
* @returns {boolean} True iff obj is an Object.
|
|
130
|
+
*/
|
|
131
|
+
function isObject(obj) {
|
|
132
|
+
return !!obj && _typeof(obj) === "object" && !Array.isArray(obj);
|
|
133
|
+
}
|
|
134
|
+
module.exports.isObject = isObject;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Returns true iff the input is a URL.
|
|
138
|
+
*
|
|
139
|
+
* @param {Object} obj Object of unknown type.
|
|
140
|
+
* @returns {boolean} True iff obj is a URL.
|
|
141
|
+
*/
|
|
142
|
+
function isUrl(obj) {
|
|
143
|
+
return !!obj && Object.getPrototypeOf(obj) === URL.prototype;
|
|
144
|
+
}
|
|
145
|
+
module.exports.isUrl = isUrl;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Clones the input if it is an Array.
|
|
149
|
+
*
|
|
150
|
+
* @param {Object} arr Object of unknown type.
|
|
151
|
+
* @returns {Object} Clone of obj iff obj is an Array.
|
|
152
|
+
*/
|
|
153
|
+
function cloneIfArray(arr) {
|
|
154
|
+
return Array.isArray(arr) ? _toConsumableArray(arr) : arr;
|
|
155
|
+
}
|
|
156
|
+
module.exports.cloneIfArray = cloneIfArray;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Clones the input if it is a URL.
|
|
160
|
+
*
|
|
161
|
+
* @param {Object} url Object of unknown type.
|
|
162
|
+
* @returns {Object} Clone of obj iff obj is a URL.
|
|
163
|
+
*/
|
|
164
|
+
function cloneIfUrl(url) {
|
|
165
|
+
return isUrl(url) ? new URL(url) : url;
|
|
166
|
+
}
|
|
167
|
+
module.exports.cloneIfUrl = cloneIfUrl;
|
|
110
168
|
|
|
111
169
|
/**
|
|
112
170
|
* Returns true iff the input line is blank (contains nothing, whitespace, or
|
|
@@ -289,12 +347,18 @@ module.exports.unorderedListStyleFor = function unorderedListStyleFor(token) {
|
|
|
289
347
|
}
|
|
290
348
|
};
|
|
291
349
|
|
|
350
|
+
/**
|
|
351
|
+
* @callback TokenCallback
|
|
352
|
+
* @param {MarkdownItToken} token Current token.
|
|
353
|
+
* @returns {void}
|
|
354
|
+
*/
|
|
355
|
+
|
|
292
356
|
/**
|
|
293
357
|
* Calls the provided function for each matching token.
|
|
294
358
|
*
|
|
295
359
|
* @param {Object} params RuleParams instance.
|
|
296
360
|
* @param {string} type Token type identifier.
|
|
297
|
-
* @param {
|
|
361
|
+
* @param {TokenCallback} handler Callback function.
|
|
298
362
|
* @returns {void}
|
|
299
363
|
*/
|
|
300
364
|
function filterTokens(params, type, handler) {
|
|
@@ -316,20 +380,18 @@ function filterTokens(params, type, handler) {
|
|
|
316
380
|
module.exports.filterTokens = filterTokens;
|
|
317
381
|
|
|
318
382
|
/**
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
* @param {Object} token MarkdownItToken instance.
|
|
322
|
-
* @returns {boolean} True iff token is a math block.
|
|
383
|
+
* @typedef {Array} LineMetadata
|
|
323
384
|
*/
|
|
324
|
-
function isMathBlock(token) {
|
|
325
|
-
return (token.tag === "$$" || token.tag === "math") && token.type.startsWith("math_block") && !token.type.endsWith("_end");
|
|
326
|
-
}
|
|
327
|
-
module.exports.isMathBlock = isMathBlock;
|
|
328
385
|
|
|
329
|
-
|
|
330
|
-
|
|
386
|
+
/**
|
|
387
|
+
* Gets a line metadata array.
|
|
388
|
+
*
|
|
389
|
+
* @param {Object} params RuleParams instance.
|
|
390
|
+
* @returns {LineMetadata} Line metadata.
|
|
391
|
+
*/
|
|
392
|
+
function getLineMetadata(params) {
|
|
331
393
|
var lineMetadata = params.lines.map(function (line, index) {
|
|
332
|
-
return [line, index, false, 0, false, false, false
|
|
394
|
+
return [line, index, false, 0, false, false, false];
|
|
333
395
|
});
|
|
334
396
|
filterTokens(params, "fence", function (token) {
|
|
335
397
|
lineMetadata[token.map[0]][3] = 1;
|
|
@@ -358,43 +420,43 @@ module.exports.getLineMetadata = function getLineMetadata(params) {
|
|
|
358
420
|
filterTokens(params, "hr", function (token) {
|
|
359
421
|
lineMetadata[token.map[0]][6] = true;
|
|
360
422
|
});
|
|
361
|
-
var _iterator2 = _createForOfIteratorHelper(params.parsers.markdownit.tokens.filter(isMathBlock)),
|
|
362
|
-
_step2;
|
|
363
|
-
try {
|
|
364
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
365
|
-
var token = _step2.value;
|
|
366
|
-
for (var i = token.map[0]; i < token.map[1]; i++) {
|
|
367
|
-
lineMetadata[i][7] = true;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
} catch (err) {
|
|
371
|
-
_iterator2.e(err);
|
|
372
|
-
} finally {
|
|
373
|
-
_iterator2.f();
|
|
374
|
-
}
|
|
375
423
|
return lineMetadata;
|
|
376
|
-
}
|
|
424
|
+
}
|
|
425
|
+
module.exports.getLineMetadata = getLineMetadata;
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* @callback EachLineCallback
|
|
429
|
+
* @param {string} line Line content.
|
|
430
|
+
* @param {number} lineIndex Line index (0-based).
|
|
431
|
+
* @param {boolean} inCode Iff in a code block.
|
|
432
|
+
* @param {number} onFence + if open, - if closed, 0 otherwise.
|
|
433
|
+
* @param {boolean} inTable Iff in a table.
|
|
434
|
+
* @param {boolean} inItem Iff in a list item.
|
|
435
|
+
* @param {boolean} inBreak Iff in semantic break.
|
|
436
|
+
* @returns {void}
|
|
437
|
+
*/
|
|
377
438
|
|
|
378
439
|
/**
|
|
379
440
|
* Calls the provided function for each line.
|
|
380
441
|
*
|
|
381
|
-
* @param {
|
|
382
|
-
* @param {
|
|
383
|
-
* inTable, inItem, inBreak
|
|
442
|
+
* @param {LineMetadata} lineMetadata Line metadata object.
|
|
443
|
+
* @param {EachLineCallback} handler Function taking (line, lineIndex, inCode,
|
|
444
|
+
* onFence, inTable, inItem, inBreak).
|
|
384
445
|
* @returns {void}
|
|
385
446
|
*/
|
|
386
447
|
function forEachLine(lineMetadata, handler) {
|
|
387
|
-
var
|
|
388
|
-
|
|
448
|
+
var _iterator2 = _createForOfIteratorHelper(lineMetadata),
|
|
449
|
+
_step2;
|
|
389
450
|
try {
|
|
390
|
-
for (
|
|
391
|
-
var metadata =
|
|
451
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
452
|
+
var metadata = _step2.value;
|
|
453
|
+
// @ts-ignore
|
|
392
454
|
handler.apply(void 0, _toConsumableArray(metadata));
|
|
393
455
|
}
|
|
394
456
|
} catch (err) {
|
|
395
|
-
|
|
457
|
+
_iterator2.e(err);
|
|
396
458
|
} finally {
|
|
397
|
-
|
|
459
|
+
_iterator2.f();
|
|
398
460
|
}
|
|
399
461
|
}
|
|
400
462
|
module.exports.forEachLine = forEachLine;
|
|
@@ -409,11 +471,11 @@ module.exports.flattenLists = function flattenLists(tokens) {
|
|
|
409
471
|
var lastWithMap = {
|
|
410
472
|
"map": [0, 1]
|
|
411
473
|
};
|
|
412
|
-
var
|
|
413
|
-
|
|
474
|
+
var _iterator3 = _createForOfIteratorHelper(tokens),
|
|
475
|
+
_step3;
|
|
414
476
|
try {
|
|
415
|
-
for (
|
|
416
|
-
var token =
|
|
477
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
478
|
+
var token = _step3.value;
|
|
417
479
|
if (token.type === "bullet_list_open" || token.type === "ordered_list_open") {
|
|
418
480
|
// Save current context and start a new one
|
|
419
481
|
stack.push(current);
|
|
@@ -451,49 +513,21 @@ module.exports.flattenLists = function flattenLists(tokens) {
|
|
|
451
513
|
}
|
|
452
514
|
}
|
|
453
515
|
} catch (err) {
|
|
454
|
-
|
|
516
|
+
_iterator3.e(err);
|
|
455
517
|
} finally {
|
|
456
|
-
|
|
518
|
+
_iterator3.f();
|
|
457
519
|
}
|
|
458
520
|
return flattenedLists;
|
|
459
521
|
};
|
|
460
522
|
|
|
461
|
-
/**
|
|
462
|
-
* Calls the provided function for each specified inline child token.
|
|
463
|
-
*
|
|
464
|
-
* @param {Object} params RuleParams instance.
|
|
465
|
-
* @param {string} type Token type identifier.
|
|
466
|
-
* @param {Function} handler Callback function.
|
|
467
|
-
* @returns {void}
|
|
468
|
-
*/
|
|
469
|
-
function forEachInlineChild(params, type, handler) {
|
|
470
|
-
filterTokens(params, "inline", function (token) {
|
|
471
|
-
var _iterator5 = _createForOfIteratorHelper(token.children.filter(function (c) {
|
|
472
|
-
return c.type === type;
|
|
473
|
-
})),
|
|
474
|
-
_step5;
|
|
475
|
-
try {
|
|
476
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
477
|
-
var child = _step5.value;
|
|
478
|
-
handler(child, token);
|
|
479
|
-
}
|
|
480
|
-
} catch (err) {
|
|
481
|
-
_iterator5.e(err);
|
|
482
|
-
} finally {
|
|
483
|
-
_iterator5.f();
|
|
484
|
-
}
|
|
485
|
-
});
|
|
486
|
-
}
|
|
487
|
-
module.exports.forEachInlineChild = forEachInlineChild;
|
|
488
|
-
|
|
489
523
|
// Calls the provided function for each heading's content
|
|
490
524
|
module.exports.forEachHeading = function forEachHeading(params, handler) {
|
|
491
525
|
var heading = null;
|
|
492
|
-
var
|
|
493
|
-
|
|
526
|
+
var _iterator4 = _createForOfIteratorHelper(params.parsers.markdownit.tokens),
|
|
527
|
+
_step4;
|
|
494
528
|
try {
|
|
495
|
-
for (
|
|
496
|
-
var token =
|
|
529
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
530
|
+
var token = _step4.value;
|
|
497
531
|
if (token.type === "heading_open") {
|
|
498
532
|
heading = token;
|
|
499
533
|
} else if (token.type === "heading_close") {
|
|
@@ -503,18 +537,27 @@ module.exports.forEachHeading = function forEachHeading(params, handler) {
|
|
|
503
537
|
}
|
|
504
538
|
}
|
|
505
539
|
} catch (err) {
|
|
506
|
-
|
|
540
|
+
_iterator4.e(err);
|
|
507
541
|
} finally {
|
|
508
|
-
|
|
542
|
+
_iterator4.f();
|
|
509
543
|
}
|
|
510
544
|
};
|
|
511
545
|
|
|
546
|
+
/**
|
|
547
|
+
* @callback InlineCodeSpanCallback
|
|
548
|
+
* @param {string} code Code content.
|
|
549
|
+
* @param {number} lineIndex Line index (0-based).
|
|
550
|
+
* @param {number} columnIndex Column index (0-based).
|
|
551
|
+
* @param {number} ticks Count of backticks.
|
|
552
|
+
* @returns {void}
|
|
553
|
+
*/
|
|
554
|
+
|
|
512
555
|
/**
|
|
513
556
|
* Calls the provided function for each inline code span's content.
|
|
514
557
|
*
|
|
515
558
|
* @param {string} input Markdown content.
|
|
516
|
-
* @param {
|
|
517
|
-
* columnIndex, ticks).
|
|
559
|
+
* @param {InlineCodeSpanCallback} handler Callback function taking (code,
|
|
560
|
+
* lineIndex, columnIndex, ticks).
|
|
518
561
|
* @returns {void}
|
|
519
562
|
*/
|
|
520
563
|
function forEachInlineCodeSpan(input, handler) {
|
|
@@ -640,19 +683,19 @@ module.exports.codeBlockAndSpanRanges = function (params, lineMetadata) {
|
|
|
640
683
|
var tokenLines = params.lines.slice(token.map[0], token.map[1]);
|
|
641
684
|
forEachInlineCodeSpan(tokenLines.join("\n"), function (code, lineIndex, columnIndex) {
|
|
642
685
|
var codeLines = code.split(newLineRe);
|
|
643
|
-
var
|
|
644
|
-
|
|
686
|
+
var _iterator5 = _createForOfIteratorHelper(codeLines.entries()),
|
|
687
|
+
_step5;
|
|
645
688
|
try {
|
|
646
|
-
for (
|
|
647
|
-
var
|
|
648
|
-
i =
|
|
649
|
-
line =
|
|
689
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
690
|
+
var _step5$value = _slicedToArray(_step5.value, 2),
|
|
691
|
+
i = _step5$value[0],
|
|
692
|
+
line = _step5$value[1];
|
|
650
693
|
exclusions.push([token.lineNumber - 1 + lineIndex + i, i ? 0 : columnIndex, line.length]);
|
|
651
694
|
}
|
|
652
695
|
} catch (err) {
|
|
653
|
-
|
|
696
|
+
_iterator5.e(err);
|
|
654
697
|
} finally {
|
|
655
|
-
|
|
698
|
+
_iterator5.f();
|
|
656
699
|
}
|
|
657
700
|
});
|
|
658
701
|
}
|
|
@@ -660,51 +703,6 @@ module.exports.codeBlockAndSpanRanges = function (params, lineMetadata) {
|
|
|
660
703
|
return exclusions;
|
|
661
704
|
};
|
|
662
705
|
|
|
663
|
-
/**
|
|
664
|
-
* Returns an array of HTML element ranges.
|
|
665
|
-
*
|
|
666
|
-
* @param {Object} params RuleParams instance.
|
|
667
|
-
* @param {Object} lineMetadata Line metadata object.
|
|
668
|
-
* @returns {number[][]} Array of ranges (lineIndex, columnIndex, length).
|
|
669
|
-
*/
|
|
670
|
-
module.exports.htmlElementRanges = function (params, lineMetadata) {
|
|
671
|
-
var exclusions = [];
|
|
672
|
-
// Match with htmlElementRe
|
|
673
|
-
forEachLine(lineMetadata, function (line, lineIndex, inCode) {
|
|
674
|
-
var match = null;
|
|
675
|
-
// eslint-disable-next-line no-unmodified-loop-condition
|
|
676
|
-
while (!inCode && (match = htmlElementRe.exec(line)) !== null) {
|
|
677
|
-
exclusions.push([lineIndex, match.index, match[0].length]);
|
|
678
|
-
}
|
|
679
|
-
});
|
|
680
|
-
// Match with html_inline
|
|
681
|
-
forEachInlineChild(params, "html_inline", function (token, parent) {
|
|
682
|
-
var parentContent = parent.content;
|
|
683
|
-
var tokenContent = token.content;
|
|
684
|
-
var parentIndex = parentContent.indexOf(tokenContent);
|
|
685
|
-
var deltaLines = 0;
|
|
686
|
-
var indent = 0;
|
|
687
|
-
for (var i = parentIndex - 1; i >= 0; i--) {
|
|
688
|
-
if (parentContent[i] === "\n") {
|
|
689
|
-
deltaLines++;
|
|
690
|
-
} else if (deltaLines === 0) {
|
|
691
|
-
indent++;
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
var lineIndex = token.lineNumber - 1 + deltaLines;
|
|
695
|
-
do {
|
|
696
|
-
var index = tokenContent.indexOf("\n");
|
|
697
|
-
var length = index === -1 ? tokenContent.length : index;
|
|
698
|
-
exclusions.push([lineIndex, indent, length]);
|
|
699
|
-
tokenContent = tokenContent.slice(length + 1);
|
|
700
|
-
lineIndex++;
|
|
701
|
-
indent = 0;
|
|
702
|
-
} while (tokenContent.length > 0);
|
|
703
|
-
});
|
|
704
|
-
// Return results
|
|
705
|
-
return exclusions;
|
|
706
|
-
};
|
|
707
|
-
|
|
708
706
|
/**
|
|
709
707
|
* Determines whether the specified range is within another range.
|
|
710
708
|
*
|
|
@@ -742,155 +740,6 @@ module.exports.frontMatterHasTitle = function frontMatterHasTitle(frontMatterLin
|
|
|
742
740
|
});
|
|
743
741
|
};
|
|
744
742
|
|
|
745
|
-
/**
|
|
746
|
-
* Calls the provided function for each link.
|
|
747
|
-
*
|
|
748
|
-
* @param {string} line Line of Markdown input.
|
|
749
|
-
* @param {Function} handler Function taking (index, link, text, destination).
|
|
750
|
-
* @returns {void}
|
|
751
|
-
*/
|
|
752
|
-
function forEachLink(line, handler) {
|
|
753
|
-
// Helper to find matching close symbol for link text/destination
|
|
754
|
-
var findClosingSymbol = function findClosingSymbol(index) {
|
|
755
|
-
var begin = line[index];
|
|
756
|
-
var end = begin === "[" ? "]" : ")";
|
|
757
|
-
var nesting = 0;
|
|
758
|
-
var escaping = false;
|
|
759
|
-
var pointy = false;
|
|
760
|
-
for (var i = index + 1; i < line.length; i++) {
|
|
761
|
-
var current = line[i];
|
|
762
|
-
if (current === "\\") {
|
|
763
|
-
escaping = !escaping;
|
|
764
|
-
} else if (!escaping && current === begin) {
|
|
765
|
-
nesting++;
|
|
766
|
-
} else if (!escaping && current === end) {
|
|
767
|
-
if (nesting > 0) {
|
|
768
|
-
nesting--;
|
|
769
|
-
} else if (!pointy) {
|
|
770
|
-
// Return index after matching close symbol
|
|
771
|
-
return i + 1;
|
|
772
|
-
}
|
|
773
|
-
} else if (i === index + 1 && begin === "(" && current === "<") {
|
|
774
|
-
pointy = true;
|
|
775
|
-
} else if (!escaping && pointy && current === ">") {
|
|
776
|
-
pointy = false;
|
|
777
|
-
nesting = 0;
|
|
778
|
-
} else {
|
|
779
|
-
escaping = false;
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
// No match found
|
|
783
|
-
return -1;
|
|
784
|
-
};
|
|
785
|
-
// Scan line for unescaped "[" character
|
|
786
|
-
var escaping = false;
|
|
787
|
-
for (var i = 0; i < line.length; i++) {
|
|
788
|
-
var current = line[i];
|
|
789
|
-
if (current === "\\") {
|
|
790
|
-
escaping = !escaping;
|
|
791
|
-
} else if (!escaping && current === "[") {
|
|
792
|
-
// Scan for matching close "]" of link text
|
|
793
|
-
var textEnd = findClosingSymbol(i);
|
|
794
|
-
if (textEnd !== -1) {
|
|
795
|
-
if (line[textEnd] === "(" || line[textEnd] === "[") {
|
|
796
|
-
// Scan for matching close ")" or "]" of link destination
|
|
797
|
-
var destEnd = findClosingSymbol(textEnd);
|
|
798
|
-
if (destEnd !== -1) {
|
|
799
|
-
// Call handler with link text and destination
|
|
800
|
-
var link = line.slice(i, destEnd);
|
|
801
|
-
var text = line.slice(i, textEnd);
|
|
802
|
-
var dest = line.slice(textEnd, destEnd);
|
|
803
|
-
handler(i, link, text, dest);
|
|
804
|
-
i = destEnd;
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
if (i < textEnd) {
|
|
808
|
-
// Call handler with link text only
|
|
809
|
-
var _text = line.slice(i, textEnd);
|
|
810
|
-
handler(i, _text, _text);
|
|
811
|
-
i = textEnd;
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
} else {
|
|
815
|
-
escaping = false;
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
module.exports.forEachLink = forEachLink;
|
|
820
|
-
|
|
821
|
-
/**
|
|
822
|
-
* Returns a list of emphasis markers in code spans and links.
|
|
823
|
-
*
|
|
824
|
-
* @param {Object} params RuleParams instance.
|
|
825
|
-
* @returns {number[][]} List of markers.
|
|
826
|
-
*/
|
|
827
|
-
function emphasisMarkersInContent(params) {
|
|
828
|
-
var lines = params.lines;
|
|
829
|
-
var byLine = new Array(lines.length);
|
|
830
|
-
// Search links
|
|
831
|
-
var _iterator8 = _createForOfIteratorHelper(lines.entries()),
|
|
832
|
-
_step8;
|
|
833
|
-
try {
|
|
834
|
-
var _loop = function _loop() {
|
|
835
|
-
var _step8$value = _slicedToArray(_step8.value, 2),
|
|
836
|
-
tokenLineIndex = _step8$value[0],
|
|
837
|
-
tokenLine = _step8$value[1];
|
|
838
|
-
var inLine = [];
|
|
839
|
-
forEachLink(tokenLine, function (index, match) {
|
|
840
|
-
var markerMatch = null;
|
|
841
|
-
while (markerMatch = emphasisMarkersRe.exec(match)) {
|
|
842
|
-
inLine.push(index + markerMatch.index);
|
|
843
|
-
}
|
|
844
|
-
});
|
|
845
|
-
byLine[tokenLineIndex] = inLine;
|
|
846
|
-
};
|
|
847
|
-
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
848
|
-
_loop();
|
|
849
|
-
}
|
|
850
|
-
// Search code spans
|
|
851
|
-
} catch (err) {
|
|
852
|
-
_iterator8.e(err);
|
|
853
|
-
} finally {
|
|
854
|
-
_iterator8.f();
|
|
855
|
-
}
|
|
856
|
-
filterTokens(params, "inline", function (token) {
|
|
857
|
-
var children = token.children,
|
|
858
|
-
lineNumber = token.lineNumber,
|
|
859
|
-
map = token.map;
|
|
860
|
-
if (children.some(function (child) {
|
|
861
|
-
return child.type === "code_inline";
|
|
862
|
-
})) {
|
|
863
|
-
var tokenLines = lines.slice(map[0], map[1]);
|
|
864
|
-
forEachInlineCodeSpan(tokenLines.join("\n"), function (code, lineIndex, column, tickCount) {
|
|
865
|
-
var codeLines = code.split(newLineRe);
|
|
866
|
-
var _iterator9 = _createForOfIteratorHelper(codeLines.entries()),
|
|
867
|
-
_step9;
|
|
868
|
-
try {
|
|
869
|
-
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
870
|
-
var _step9$value = _slicedToArray(_step9.value, 2),
|
|
871
|
-
codeLineIndex = _step9$value[0],
|
|
872
|
-
codeLine = _step9$value[1];
|
|
873
|
-
var byLineIndex = lineNumber - 1 + lineIndex + codeLineIndex;
|
|
874
|
-
var inLine = byLine[byLineIndex];
|
|
875
|
-
var codeLineOffset = codeLineIndex ? 0 : column - 1 + tickCount;
|
|
876
|
-
var match = null;
|
|
877
|
-
while (match = emphasisMarkersRe.exec(codeLine)) {
|
|
878
|
-
inLine.push(codeLineOffset + match.index);
|
|
879
|
-
}
|
|
880
|
-
byLine[byLineIndex] = inLine;
|
|
881
|
-
}
|
|
882
|
-
} catch (err) {
|
|
883
|
-
_iterator9.e(err);
|
|
884
|
-
} finally {
|
|
885
|
-
_iterator9.f();
|
|
886
|
-
}
|
|
887
|
-
});
|
|
888
|
-
}
|
|
889
|
-
});
|
|
890
|
-
return byLine;
|
|
891
|
-
}
|
|
892
|
-
module.exports.emphasisMarkersInContent = emphasisMarkersInContent;
|
|
893
|
-
|
|
894
743
|
/**
|
|
895
744
|
* Returns an object with information about reference links and images.
|
|
896
745
|
*
|
|
@@ -913,11 +762,11 @@ function getReferenceLinkImageData(params) {
|
|
|
913
762
|
"definitionLabelString", "gfmFootnoteDefinitionLabelString",
|
|
914
763
|
// references and shortcuts
|
|
915
764
|
"gfmFootnoteCall", "image", "link"]);
|
|
916
|
-
var
|
|
917
|
-
|
|
765
|
+
var _iterator6 = _createForOfIteratorHelper(filteredTokens),
|
|
766
|
+
_step6;
|
|
918
767
|
try {
|
|
919
|
-
for (
|
|
920
|
-
var token =
|
|
768
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
769
|
+
var token = _step6.value;
|
|
921
770
|
var labelPrefix = "";
|
|
922
771
|
// eslint-disable-next-line default-case
|
|
923
772
|
switch (token.type) {
|
|
@@ -984,9 +833,9 @@ function getReferenceLinkImageData(params) {
|
|
|
984
833
|
}
|
|
985
834
|
}
|
|
986
835
|
} catch (err) {
|
|
987
|
-
|
|
836
|
+
_iterator6.e(err);
|
|
988
837
|
} finally {
|
|
989
|
-
|
|
838
|
+
_iterator6.f();
|
|
990
839
|
}
|
|
991
840
|
return {
|
|
992
841
|
references: references,
|
|
@@ -1010,11 +859,11 @@ function getPreferredLineEnding(input, os) {
|
|
|
1010
859
|
var lf = 0;
|
|
1011
860
|
var crlf = 0;
|
|
1012
861
|
var endings = input.match(newLineRe) || [];
|
|
1013
|
-
var
|
|
1014
|
-
|
|
862
|
+
var _iterator7 = _createForOfIteratorHelper(endings),
|
|
863
|
+
_step7;
|
|
1015
864
|
try {
|
|
1016
|
-
for (
|
|
1017
|
-
var ending =
|
|
865
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
866
|
+
var ending = _step7.value;
|
|
1018
867
|
// eslint-disable-next-line default-case
|
|
1019
868
|
switch (ending) {
|
|
1020
869
|
case "\r":
|
|
@@ -1029,9 +878,9 @@ function getPreferredLineEnding(input, os) {
|
|
|
1029
878
|
}
|
|
1030
879
|
}
|
|
1031
880
|
} catch (err) {
|
|
1032
|
-
|
|
881
|
+
_iterator7.e(err);
|
|
1033
882
|
} finally {
|
|
1034
|
-
|
|
883
|
+
_iterator7.f();
|
|
1035
884
|
}
|
|
1036
885
|
var preferredLineEnding = null;
|
|
1037
886
|
if (!cr && !lf && !crlf) {
|
|
@@ -1114,11 +963,11 @@ function applyFixes(input, errors) {
|
|
|
1114
963
|
lastFixInfo = {
|
|
1115
964
|
"lineNumber": -1
|
|
1116
965
|
};
|
|
1117
|
-
var
|
|
1118
|
-
|
|
966
|
+
var _iterator8 = _createForOfIteratorHelper(fixInfos),
|
|
967
|
+
_step8;
|
|
1119
968
|
try {
|
|
1120
|
-
for (
|
|
1121
|
-
var fixInfo =
|
|
969
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
970
|
+
var fixInfo = _step8.value;
|
|
1122
971
|
if (fixInfo.lineNumber === lastFixInfo.lineNumber && fixInfo.editColumn === lastFixInfo.editColumn && !fixInfo.insertText && fixInfo.deleteCount > 0 && lastFixInfo.insertText && !lastFixInfo.deleteCount) {
|
|
1123
972
|
fixInfo.insertText = lastFixInfo.insertText;
|
|
1124
973
|
lastFixInfo.lineNumber = 0;
|
|
@@ -1126,9 +975,9 @@ function applyFixes(input, errors) {
|
|
|
1126
975
|
lastFixInfo = fixInfo;
|
|
1127
976
|
}
|
|
1128
977
|
} catch (err) {
|
|
1129
|
-
|
|
978
|
+
_iterator8.e(err);
|
|
1130
979
|
} finally {
|
|
1131
|
-
|
|
980
|
+
_iterator8.f();
|
|
1132
981
|
}
|
|
1133
982
|
fixInfos = fixInfos.filter(function (fixInfo) {
|
|
1134
983
|
return fixInfo.lineNumber;
|
|
@@ -1136,11 +985,11 @@ function applyFixes(input, errors) {
|
|
|
1136
985
|
// Apply all (remaining/updated) fixes
|
|
1137
986
|
var lastLineIndex = -1;
|
|
1138
987
|
var lastEditIndex = -1;
|
|
1139
|
-
var
|
|
1140
|
-
|
|
988
|
+
var _iterator9 = _createForOfIteratorHelper(fixInfos),
|
|
989
|
+
_step9;
|
|
1141
990
|
try {
|
|
1142
|
-
for (
|
|
1143
|
-
var _fixInfo =
|
|
991
|
+
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
992
|
+
var _fixInfo = _step9.value;
|
|
1144
993
|
var lineNumber = _fixInfo.lineNumber,
|
|
1145
994
|
editColumn = _fixInfo.editColumn,
|
|
1146
995
|
deleteCount = _fixInfo.deleteCount;
|
|
@@ -1155,9 +1004,9 @@ function applyFixes(input, errors) {
|
|
|
1155
1004
|
}
|
|
1156
1005
|
// Return corrected input
|
|
1157
1006
|
} catch (err) {
|
|
1158
|
-
|
|
1007
|
+
_iterator9.e(err);
|
|
1159
1008
|
} finally {
|
|
1160
|
-
|
|
1009
|
+
_iterator9.f();
|
|
1161
1010
|
}
|
|
1162
1011
|
return lines.filter(function (line) {
|
|
1163
1012
|
return line !== null;
|
|
@@ -1178,6 +1027,43 @@ function expandTildePath(file, os) {
|
|
|
1178
1027
|
}
|
|
1179
1028
|
module.exports.expandTildePath = expandTildePath;
|
|
1180
1029
|
|
|
1030
|
+
// Copied from markdownlint.js to avoid TypeScript compiler import() issue.
|
|
1031
|
+
/**
|
|
1032
|
+
* @typedef {Object} MarkdownItToken
|
|
1033
|
+
* @property {string[][]} attrs HTML attributes.
|
|
1034
|
+
* @property {boolean} block Block-level token.
|
|
1035
|
+
* @property {MarkdownItToken[]} children Child nodes.
|
|
1036
|
+
* @property {string} content Tag contents.
|
|
1037
|
+
* @property {boolean} hidden Ignore element.
|
|
1038
|
+
* @property {string} info Fence info.
|
|
1039
|
+
* @property {number} level Nesting level.
|
|
1040
|
+
* @property {number[]} map Beginning/ending line numbers.
|
|
1041
|
+
* @property {string} markup Markup text.
|
|
1042
|
+
* @property {Object} meta Arbitrary data.
|
|
1043
|
+
* @property {number} nesting Level change.
|
|
1044
|
+
* @property {string} tag HTML tag name.
|
|
1045
|
+
* @property {string} type Token type.
|
|
1046
|
+
* @property {number} lineNumber Line number (1-based).
|
|
1047
|
+
* @property {string} line Line content.
|
|
1048
|
+
*/
|
|
1049
|
+
|
|
1050
|
+
/***/ }),
|
|
1051
|
+
|
|
1052
|
+
/***/ "../helpers/shared.js":
|
|
1053
|
+
/*!****************************!*\
|
|
1054
|
+
!*** ../helpers/shared.js ***!
|
|
1055
|
+
\****************************/
|
|
1056
|
+
/***/ ((module) => {
|
|
1057
|
+
|
|
1058
|
+
"use strict";
|
|
1059
|
+
// @ts-check
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
// Regular expression for matching common newline characters
|
|
1064
|
+
// See NEWLINES_RE in markdown-it/lib/rules_core/normalize.js
|
|
1065
|
+
module.exports.newLineRe = /\r\n?|\n/g;
|
|
1066
|
+
|
|
1181
1067
|
/***/ }),
|
|
1182
1068
|
|
|
1183
1069
|
/***/ "markdown-it":
|
|
@@ -1282,24 +1168,30 @@ module.exports = {
|
|
|
1282
1168
|
|
|
1283
1169
|
|
|
1284
1170
|
// @ts-ignore
|
|
1285
|
-
function
|
|
1286
|
-
function
|
|
1287
|
-
function
|
|
1288
|
-
function
|
|
1171
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
1172
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1173
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1174
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1175
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
1176
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
1289
1177
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
1290
1178
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1291
|
-
function _iterableToArrayLimit(
|
|
1179
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
1292
1180
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1293
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
1181
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
1294
1182
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
1295
1183
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
1296
1184
|
var _require = __webpack_require__(/*! markdownlint-micromark */ "markdownlint-micromark"),
|
|
1297
1185
|
gfmAutolinkLiteral = _require.gfmAutolinkLiteral,
|
|
1298
1186
|
gfmFootnote = _require.gfmFootnote,
|
|
1299
1187
|
gfmTable = _require.gfmTable,
|
|
1188
|
+
math = _require.math,
|
|
1300
1189
|
parse = _require.parse,
|
|
1301
1190
|
postprocess = _require.postprocess,
|
|
1302
1191
|
preprocess = _require.preprocess;
|
|
1192
|
+
var _require2 = __webpack_require__(/*! ./shared.js */ "../helpers/shared.js"),
|
|
1193
|
+
newLineRe = _require2.newLineRe;
|
|
1194
|
+
var flatTokensSymbol = Symbol("flat-tokens");
|
|
1303
1195
|
|
|
1304
1196
|
/**
|
|
1305
1197
|
* Markdown token.
|
|
@@ -1314,26 +1206,42 @@ var _require = __webpack_require__(/*! markdownlint-micromark */ "markdownlint-m
|
|
|
1314
1206
|
* @property {Token[]} children Child tokens.
|
|
1315
1207
|
*/
|
|
1316
1208
|
|
|
1209
|
+
/**
|
|
1210
|
+
* Returns whether a token is an htmlFlow type containing an HTML comment.
|
|
1211
|
+
*
|
|
1212
|
+
* @param {Token} token Micromark token.
|
|
1213
|
+
* @returns {boolean} True iff token is htmlFlow containing a comment.
|
|
1214
|
+
*/
|
|
1215
|
+
function isHtmlFlowComment(token) {
|
|
1216
|
+
var text = token.text,
|
|
1217
|
+
type = token.type;
|
|
1218
|
+
if (type === "htmlFlow" && text.startsWith("<!--") && text.endsWith("-->")) {
|
|
1219
|
+
var comment = text.slice(4, -3);
|
|
1220
|
+
return !comment.startsWith(">") && !comment.startsWith("->") && !comment.endsWith("-") && !comment.includes("--");
|
|
1221
|
+
}
|
|
1222
|
+
return false;
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1317
1225
|
/**
|
|
1318
1226
|
* Parses a Markdown document and returns Micromark events.
|
|
1319
1227
|
*
|
|
1320
1228
|
* @param {string} markdown Markdown document.
|
|
1321
|
-
* @param {Object} [
|
|
1322
|
-
* @param {boolean} [
|
|
1229
|
+
* @param {Object} [micromarkOptions] Options for micromark.
|
|
1230
|
+
* @param {boolean} [referencesDefined] Treat references as defined.
|
|
1323
1231
|
* @returns {Object[]} Micromark events.
|
|
1324
1232
|
*/
|
|
1325
1233
|
function getMicromarkEvents(markdown) {
|
|
1326
|
-
var
|
|
1327
|
-
var
|
|
1234
|
+
var micromarkOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1235
|
+
var referencesDefined = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
1328
1236
|
// Customize options object to add useful extensions
|
|
1329
|
-
|
|
1330
|
-
|
|
1237
|
+
micromarkOptions.extensions = micromarkOptions.extensions || [];
|
|
1238
|
+
micromarkOptions.extensions.push(gfmAutolinkLiteral(), gfmFootnote(), gfmTable(), math());
|
|
1331
1239
|
|
|
1332
1240
|
// Use micromark to parse document into Events
|
|
1333
1241
|
var encoding = undefined;
|
|
1334
1242
|
var eol = true;
|
|
1335
|
-
var parseContext = parse(
|
|
1336
|
-
if (
|
|
1243
|
+
var parseContext = parse(micromarkOptions);
|
|
1244
|
+
if (referencesDefined) {
|
|
1337
1245
|
// Customize ParseContext to treat all references as defined
|
|
1338
1246
|
parseContext.defined.includes = function (searchElement) {
|
|
1339
1247
|
return searchElement.length > 0;
|
|
@@ -1348,22 +1256,25 @@ function getMicromarkEvents(markdown) {
|
|
|
1348
1256
|
* Parses a Markdown document and returns (frozen) tokens.
|
|
1349
1257
|
*
|
|
1350
1258
|
* @param {string} markdown Markdown document.
|
|
1351
|
-
* @param {Object}
|
|
1352
|
-
* @param {boolean}
|
|
1259
|
+
* @param {Object} micromarkOptions Options for micromark.
|
|
1260
|
+
* @param {boolean} referencesDefined Treat references as defined.
|
|
1261
|
+
* @param {number} lineDelta Offset to apply to start/end line.
|
|
1353
1262
|
* @returns {Token[]} Micromark tokens (frozen).
|
|
1354
1263
|
*/
|
|
1355
|
-
function
|
|
1356
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1357
|
-
var refsDefined = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
1264
|
+
function micromarkParseWithOffset(markdown, micromarkOptions, referencesDefined, lineDelta) {
|
|
1358
1265
|
// Use micromark to parse document into Events
|
|
1359
|
-
var events = getMicromarkEvents(markdown,
|
|
1266
|
+
var events = getMicromarkEvents(markdown, micromarkOptions, referencesDefined);
|
|
1360
1267
|
|
|
1361
1268
|
// Create Token objects
|
|
1362
1269
|
var document = [];
|
|
1270
|
+
var flatTokens = [];
|
|
1363
1271
|
var current = {
|
|
1364
1272
|
"children": document
|
|
1365
1273
|
};
|
|
1366
1274
|
var history = [current];
|
|
1275
|
+
var reparseOptions = null;
|
|
1276
|
+
var lines = null;
|
|
1277
|
+
var skipHtmlFlowChildren = false;
|
|
1367
1278
|
var _iterator = _createForOfIteratorHelper(events),
|
|
1368
1279
|
_step;
|
|
1369
1280
|
try {
|
|
@@ -1381,24 +1292,50 @@ function micromarkParse(markdown) {
|
|
|
1381
1292
|
var endColumn = end["column"],
|
|
1382
1293
|
endLine = end["line"];
|
|
1383
1294
|
var text = context.sliceSerialize(token);
|
|
1384
|
-
if (kind === "enter") {
|
|
1295
|
+
if (kind === "enter" && !skipHtmlFlowChildren) {
|
|
1385
1296
|
var previous = current;
|
|
1386
1297
|
history.push(previous);
|
|
1387
1298
|
current = {
|
|
1388
1299
|
type: type,
|
|
1389
|
-
startLine: startLine,
|
|
1300
|
+
"startLine": startLine + lineDelta,
|
|
1390
1301
|
startColumn: startColumn,
|
|
1391
|
-
endLine: endLine,
|
|
1302
|
+
"endLine": endLine + lineDelta,
|
|
1392
1303
|
endColumn: endColumn,
|
|
1393
1304
|
text: text,
|
|
1394
1305
|
"children": []
|
|
1395
1306
|
};
|
|
1396
1307
|
previous.children.push(current);
|
|
1397
|
-
|
|
1398
|
-
Object.freeze(current.children);
|
|
1399
|
-
Object.freeze(current);
|
|
1308
|
+
flatTokens.push(current);
|
|
1400
1309
|
// @ts-ignore
|
|
1401
|
-
current
|
|
1310
|
+
if (current.type === "htmlFlow" && !isHtmlFlowComment(current)) {
|
|
1311
|
+
skipHtmlFlowChildren = true;
|
|
1312
|
+
if (!reparseOptions || !lines) {
|
|
1313
|
+
reparseOptions = _objectSpread(_objectSpread({}, micromarkOptions), {}, {
|
|
1314
|
+
"extensions": [{
|
|
1315
|
+
"disable": {
|
|
1316
|
+
"null": ["codeIndented", "htmlFlow"]
|
|
1317
|
+
}
|
|
1318
|
+
}]
|
|
1319
|
+
});
|
|
1320
|
+
lines = markdown.split(newLineRe);
|
|
1321
|
+
}
|
|
1322
|
+
var reparseMarkdown = lines.slice(current.startLine - 1, current.endLine).join("\n");
|
|
1323
|
+
var tokens = micromarkParseWithOffset(reparseMarkdown, reparseOptions, referencesDefined, current.startLine - 1);
|
|
1324
|
+
current.children = tokens;
|
|
1325
|
+
// Avoid stack overflow of Array.push(...spread)
|
|
1326
|
+
// eslint-disable-next-line unicorn/prefer-spread
|
|
1327
|
+
flatTokens = flatTokens.concat(tokens[flatTokensSymbol]);
|
|
1328
|
+
}
|
|
1329
|
+
} else if (kind === "exit") {
|
|
1330
|
+
if (type === "htmlFlow") {
|
|
1331
|
+
skipHtmlFlowChildren = false;
|
|
1332
|
+
}
|
|
1333
|
+
if (!skipHtmlFlowChildren) {
|
|
1334
|
+
Object.freeze(current.children);
|
|
1335
|
+
Object.freeze(current);
|
|
1336
|
+
// @ts-ignore
|
|
1337
|
+
current = history.pop();
|
|
1338
|
+
}
|
|
1402
1339
|
}
|
|
1403
1340
|
}
|
|
1404
1341
|
|
|
@@ -1408,48 +1345,72 @@ function micromarkParse(markdown) {
|
|
|
1408
1345
|
} finally {
|
|
1409
1346
|
_iterator.f();
|
|
1410
1347
|
}
|
|
1348
|
+
Object.defineProperty(document, flatTokensSymbol, {
|
|
1349
|
+
"value": flatTokens
|
|
1350
|
+
});
|
|
1411
1351
|
Object.freeze(document);
|
|
1412
1352
|
return document;
|
|
1413
1353
|
}
|
|
1414
1354
|
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1355
|
+
/**
|
|
1356
|
+
* Parses a Markdown document and returns (frozen) tokens.
|
|
1357
|
+
*
|
|
1358
|
+
* @param {string} markdown Markdown document.
|
|
1359
|
+
* @param {Object} [micromarkOptions] Options for micromark.
|
|
1360
|
+
* @param {boolean} [referencesDefined] Treat references as defined.
|
|
1361
|
+
* @returns {Token[]} Micromark tokens (frozen).
|
|
1362
|
+
*/
|
|
1363
|
+
function micromarkParse(markdown) {
|
|
1364
|
+
var micromarkOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1365
|
+
var referencesDefined = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
1366
|
+
return micromarkParseWithOffset(markdown, micromarkOptions, referencesDefined, 0);
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
/**
|
|
1370
|
+
* @callback AllowedPredicate
|
|
1371
|
+
* @param {Token} token Micromark token.
|
|
1372
|
+
* @returns {boolean} True iff allowed.
|
|
1373
|
+
*/
|
|
1374
|
+
|
|
1375
|
+
/**
|
|
1376
|
+
* @callback TransformPredicate
|
|
1377
|
+
* @param {Token} token Micromark token.
|
|
1378
|
+
* @returns {Token[]} Child tokens.
|
|
1379
|
+
*/
|
|
1433
1380
|
|
|
1434
1381
|
/**
|
|
1435
1382
|
* Filter a list of Micromark tokens by predicate.
|
|
1436
1383
|
*
|
|
1437
1384
|
* @param {Token[]} tokens Micromark tokens.
|
|
1438
|
-
* @param {
|
|
1439
|
-
* @param {
|
|
1385
|
+
* @param {AllowedPredicate} allowed Allowed token predicate.
|
|
1386
|
+
* @param {TransformPredicate} [transformChildren] Transform predicate.
|
|
1440
1387
|
* @returns {Token[]} Filtered tokens.
|
|
1441
1388
|
*/
|
|
1442
1389
|
function filterByPredicate(tokens, allowed, transformChildren) {
|
|
1443
1390
|
var result = [];
|
|
1444
|
-
var
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1391
|
+
var queue = [{
|
|
1392
|
+
"array": tokens,
|
|
1393
|
+
"index": 0
|
|
1394
|
+
}];
|
|
1395
|
+
while (queue.length > 0) {
|
|
1396
|
+
var current = queue[queue.length - 1];
|
|
1397
|
+
var array = current.array,
|
|
1398
|
+
index = current.index;
|
|
1399
|
+
if (index < array.length) {
|
|
1400
|
+
var token = array[current.index++];
|
|
1401
|
+
if (allowed(token)) {
|
|
1402
|
+
result.push(token);
|
|
1403
|
+
}
|
|
1404
|
+
var children = token.children;
|
|
1405
|
+
if (children.length > 0) {
|
|
1406
|
+
var transformed = transformChildren ? transformChildren(token) : children;
|
|
1407
|
+
queue.push({
|
|
1408
|
+
"array": transformed,
|
|
1409
|
+
"index": 0
|
|
1410
|
+
});
|
|
1411
|
+
}
|
|
1412
|
+
} else {
|
|
1413
|
+
queue.pop();
|
|
1453
1414
|
}
|
|
1454
1415
|
}
|
|
1455
1416
|
return result;
|
|
@@ -1463,9 +1424,32 @@ function filterByPredicate(tokens, allowed, transformChildren) {
|
|
|
1463
1424
|
* @returns {Token[]} Filtered tokens.
|
|
1464
1425
|
*/
|
|
1465
1426
|
function filterByTypes(tokens, allowed) {
|
|
1466
|
-
|
|
1427
|
+
var predicate = function predicate(token) {
|
|
1467
1428
|
return allowed.includes(token.type);
|
|
1468
|
-
}
|
|
1429
|
+
};
|
|
1430
|
+
var flatTokens = tokens[flatTokensSymbol];
|
|
1431
|
+
if (flatTokens) {
|
|
1432
|
+
return flatTokens.filter(predicate);
|
|
1433
|
+
}
|
|
1434
|
+
return filterByPredicate(tokens, predicate);
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
/**
|
|
1438
|
+
* Gets the heading level of a Micromark heading tokan.
|
|
1439
|
+
*
|
|
1440
|
+
* @param {Token} heading Micromark heading token.
|
|
1441
|
+
* @returns {number} Heading level.
|
|
1442
|
+
*/
|
|
1443
|
+
function getHeadingLevel(heading) {
|
|
1444
|
+
var headingSequence = filterByTypes(heading.children, ["atxHeadingSequence", "setextHeadingLineSequence"]);
|
|
1445
|
+
var level = 1;
|
|
1446
|
+
var text = headingSequence[0].text;
|
|
1447
|
+
if (text[0] === "#") {
|
|
1448
|
+
level = Math.min(text.length, 6);
|
|
1449
|
+
} else if (text[0] === "-") {
|
|
1450
|
+
level = 2;
|
|
1451
|
+
}
|
|
1452
|
+
return level;
|
|
1469
1453
|
}
|
|
1470
1454
|
|
|
1471
1455
|
/**
|
|
@@ -1543,6 +1527,7 @@ module.exports = {
|
|
|
1543
1527
|
"parse": micromarkParse,
|
|
1544
1528
|
filterByPredicate: filterByPredicate,
|
|
1545
1529
|
filterByTypes: filterByTypes,
|
|
1530
|
+
getHeadingLevel: getHeadingLevel,
|
|
1546
1531
|
getHtmlTagInfo: getHtmlTagInfo,
|
|
1547
1532
|
getMicromarkEvents: getMicromarkEvents,
|
|
1548
1533
|
getTokenTextByType: getTokenTextByType,
|
|
@@ -1567,7 +1552,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
1567
1552
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1568
1553
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
1569
1554
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
1570
|
-
function _iterableToArrayLimit(
|
|
1555
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
1571
1556
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1572
1557
|
var map = new Map();
|
|
1573
1558
|
module.exports.set = function (keyValuePairs) {
|
|
@@ -1587,9 +1572,6 @@ module.exports.codeBlockAndSpanRanges = function () {
|
|
|
1587
1572
|
module.exports.flattenedLists = function () {
|
|
1588
1573
|
return map.get("flattenedLists");
|
|
1589
1574
|
};
|
|
1590
|
-
module.exports.htmlElementRanges = function () {
|
|
1591
|
-
return map.get("htmlElementRanges");
|
|
1592
|
-
};
|
|
1593
1575
|
module.exports.lineMetadata = function () {
|
|
1594
1576
|
return map.get("lineMetadata");
|
|
1595
1577
|
};
|
|
@@ -1613,7 +1595,7 @@ module.exports.referenceLinkImageData = function () {
|
|
|
1613
1595
|
module.exports.deprecatedRuleNames = ["MD002", "MD006"];
|
|
1614
1596
|
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"];
|
|
1615
1597
|
module.exports.homepage = "https://github.com/DavidAnson/markdownlint";
|
|
1616
|
-
module.exports.version = "0.
|
|
1598
|
+
module.exports.version = "0.31.0";
|
|
1617
1599
|
|
|
1618
1600
|
/***/ }),
|
|
1619
1601
|
|
|
@@ -1628,8 +1610,8 @@ module.exports.version = "0.29.0";
|
|
|
1628
1610
|
|
|
1629
1611
|
|
|
1630
1612
|
|
|
1631
|
-
function ownKeys(
|
|
1632
|
-
function _objectSpread(
|
|
1613
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1614
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1633
1615
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1634
1616
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
1635
1617
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
@@ -1637,12 +1619,12 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
|
|
|
1637
1619
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1638
1620
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
1639
1621
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
1640
|
-
function _typeof(
|
|
1622
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
1641
1623
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
1642
1624
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1643
|
-
function _iterableToArrayLimit(
|
|
1625
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
1644
1626
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1645
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
1627
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
1646
1628
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
1647
1629
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
1648
1630
|
var path = __webpack_require__(/*! node:path */ "?9a52");
|
|
@@ -1687,22 +1669,22 @@ function validateRuleList(ruleList, synchronous) {
|
|
|
1687
1669
|
function newError(property) {
|
|
1688
1670
|
return new Error("Property '" + property + "' of custom rule at index " + customIndex + " is incorrect.");
|
|
1689
1671
|
}
|
|
1690
|
-
for (var
|
|
1691
|
-
var property =
|
|
1672
|
+
for (var _i = 0, _arr = ["names", "tags"]; _i < _arr.length; _i++) {
|
|
1673
|
+
var property = _arr[_i];
|
|
1692
1674
|
var value = rule[property];
|
|
1693
1675
|
if (!result && (!value || !Array.isArray(value) || value.length === 0 || !value.every(helpers.isString) || value.some(helpers.isEmptyString))) {
|
|
1694
1676
|
result = newError(property);
|
|
1695
1677
|
}
|
|
1696
1678
|
}
|
|
1697
|
-
for (var
|
|
1698
|
-
var propertyInfo =
|
|
1679
|
+
for (var _i2 = 0, _arr2 = [["description", "string"], ["function", "function"]]; _i2 < _arr2.length; _i2++) {
|
|
1680
|
+
var propertyInfo = _arr2[_i2];
|
|
1699
1681
|
var _property = propertyInfo[0];
|
|
1700
1682
|
var _value = rule[_property];
|
|
1701
1683
|
if (!result && (!_value || _typeof(_value) !== propertyInfo[1])) {
|
|
1702
1684
|
result = newError(_property);
|
|
1703
1685
|
}
|
|
1704
1686
|
}
|
|
1705
|
-
if (!result && rule.information &&
|
|
1687
|
+
if (!result && rule.information && !helpers.isUrl(rule.information)) {
|
|
1706
1688
|
result = newError("information");
|
|
1707
1689
|
}
|
|
1708
1690
|
if (!result && rule.asynchronous !== undefined && typeof rule.asynchronous !== "boolean") {
|
|
@@ -1771,8 +1753,8 @@ function newResults(ruleList) {
|
|
|
1771
1753
|
var results = [];
|
|
1772
1754
|
var keys = Object.keys(lintResults);
|
|
1773
1755
|
keys.sort();
|
|
1774
|
-
for (var
|
|
1775
|
-
var file = _keys[
|
|
1756
|
+
for (var _i3 = 0, _keys = keys; _i3 < _keys.length; _i3++) {
|
|
1757
|
+
var file = _keys[_i3];
|
|
1776
1758
|
var fileResults = lintResults[file];
|
|
1777
1759
|
if (Array.isArray(fileResults)) {
|
|
1778
1760
|
var _iterator4 = _createForOfIteratorHelper(fileResults),
|
|
@@ -1805,8 +1787,8 @@ function newResults(ruleList) {
|
|
|
1805
1787
|
_iterator5.f();
|
|
1806
1788
|
}
|
|
1807
1789
|
}
|
|
1808
|
-
for (var
|
|
1809
|
-
var _Object$entries$_i = _slicedToArray(_Object$entries[
|
|
1790
|
+
for (var _i4 = 0, _Object$entries = Object.entries(fileResults); _i4 < _Object$entries.length; _i4++) {
|
|
1791
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i4], 2),
|
|
1810
1792
|
_ruleName = _Object$entries$_i[0],
|
|
1811
1793
|
ruleResults = _Object$entries$_i[1];
|
|
1812
1794
|
var _rule = ruleNameToRule[_ruleName.toUpperCase()];
|
|
@@ -2088,8 +2070,8 @@ function getEffectiveConfig(ruleList, config, aliasToRuleNames) {
|
|
|
2088
2070
|
} finally {
|
|
2089
2071
|
_iterator15.f();
|
|
2090
2072
|
}
|
|
2091
|
-
for (var
|
|
2092
|
-
var key = _Object$keys[
|
|
2073
|
+
for (var _i5 = 0, _Object$keys = Object.keys(config); _i5 < _Object$keys.length; _i5++) {
|
|
2074
|
+
var key = _Object$keys[_i5];
|
|
2093
2075
|
var value = config[key];
|
|
2094
2076
|
if (value) {
|
|
2095
2077
|
if (!(value instanceof Object)) {
|
|
@@ -2267,7 +2249,7 @@ function getEnabledRulesPerLineNumber(ruleList, lines, frontMatterLines, noInlin
|
|
|
2267
2249
|
var disableNextLine = action === "DISABLE-NEXT-LINE";
|
|
2268
2250
|
if (disableLine || disableNextLine) {
|
|
2269
2251
|
var nextLineNumber = frontMatterLines.length + lineNumber + (disableNextLine ? 1 : 0);
|
|
2270
|
-
enabledRulesPerLineNumber[nextLineNumber] = applyEnableDisable(action, parameter, enabledRulesPerLineNumber[nextLineNumber]
|
|
2252
|
+
enabledRulesPerLineNumber[nextLineNumber] = applyEnableDisable(action, parameter, enabledRulesPerLineNumber[nextLineNumber]);
|
|
2271
2253
|
}
|
|
2272
2254
|
}
|
|
2273
2255
|
// Handle inline comments
|
|
@@ -2313,7 +2295,7 @@ function getEnabledRulesPerLineNumber(ruleList, lines, frontMatterLines, noInlin
|
|
|
2313
2295
|
* @param {boolean} handleRuleFailures Whether to handle exceptions in rules.
|
|
2314
2296
|
* @param {boolean} noInlineConfig Whether to allow inline configuration.
|
|
2315
2297
|
* @param {number} resultVersion Version of the LintResults object to return.
|
|
2316
|
-
* @param {
|
|
2298
|
+
* @param {LintContentCallback} callback Callback (err, result) function.
|
|
2317
2299
|
* @returns {void}
|
|
2318
2300
|
*/
|
|
2319
2301
|
function lintContent(ruleList, aliasToRuleNames, name, content, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, callback) {
|
|
@@ -2354,12 +2336,10 @@ function lintContent(ruleList, aliasToRuleNames, name, content, md, config, conf
|
|
|
2354
2336
|
var lineMetadata = helpers.getLineMetadata(paramsBase);
|
|
2355
2337
|
var codeBlockAndSpanRanges = helpers.codeBlockAndSpanRanges(paramsBase, lineMetadata);
|
|
2356
2338
|
var flattenedLists = helpers.flattenLists(paramsBase.parsers.markdownit.tokens);
|
|
2357
|
-
var htmlElementRanges = helpers.htmlElementRanges(paramsBase, lineMetadata);
|
|
2358
2339
|
var referenceLinkImageData = helpers.getReferenceLinkImageData(paramsBase);
|
|
2359
2340
|
cache.set({
|
|
2360
2341
|
codeBlockAndSpanRanges: codeBlockAndSpanRanges,
|
|
2361
2342
|
flattenedLists: flattenedLists,
|
|
2362
|
-
htmlElementRanges: htmlElementRanges,
|
|
2363
2343
|
lineMetadata: lineMetadata,
|
|
2364
2344
|
referenceLinkImageData: referenceLinkImageData
|
|
2365
2345
|
});
|
|
@@ -2391,6 +2371,9 @@ function lintContent(ruleList, aliasToRuleNames, name, content, md, config, conf
|
|
|
2391
2371
|
if (errorInfo.context && !helpers.isString(errorInfo.context)) {
|
|
2392
2372
|
throwError("context");
|
|
2393
2373
|
}
|
|
2374
|
+
if (errorInfo.information && !helpers.isUrl(errorInfo.information)) {
|
|
2375
|
+
throwError("information");
|
|
2376
|
+
}
|
|
2394
2377
|
if (errorInfo.range && (!Array.isArray(errorInfo.range) || errorInfo.range.length !== 2 || !helpers.isNumber(errorInfo.range[0]) || errorInfo.range[0] < 1 || !helpers.isNumber(errorInfo.range[1]) || errorInfo.range[1] < 1 || errorInfo.range[0] + errorInfo.range[1] - 1 > lines[errorInfo.lineNumber - 1].length)) {
|
|
2395
2378
|
throwError("range");
|
|
2396
2379
|
}
|
|
@@ -2426,12 +2409,13 @@ function lintContent(ruleList, aliasToRuleNames, name, content, md, config, conf
|
|
|
2426
2409
|
cleanFixInfo.insertText = fixInfo.insertText;
|
|
2427
2410
|
}
|
|
2428
2411
|
}
|
|
2412
|
+
var information = errorInfo.information || rule.information;
|
|
2429
2413
|
results.push({
|
|
2430
2414
|
lineNumber: lineNumber,
|
|
2431
2415
|
"ruleName": rule.names[0],
|
|
2432
2416
|
"ruleNames": rule.names,
|
|
2433
2417
|
"ruleDescription": rule.description,
|
|
2434
|
-
"ruleInformation":
|
|
2418
|
+
"ruleInformation": information ? information.href : null,
|
|
2435
2419
|
"errorDetail": errorInfo.detail || null,
|
|
2436
2420
|
"errorContext": errorInfo.context || null,
|
|
2437
2421
|
"errorRange": errorInfo.range ? _toConsumableArray(errorInfo.range) : null,
|
|
@@ -2578,7 +2562,7 @@ function lintContent(ruleList, aliasToRuleNames, name, content, md, config, conf
|
|
|
2578
2562
|
* @param {number} resultVersion Version of the LintResults object to return.
|
|
2579
2563
|
* @param {Object} fs File system implementation.
|
|
2580
2564
|
* @param {boolean} synchronous Whether to execute synchronously.
|
|
2581
|
-
* @param {
|
|
2565
|
+
* @param {LintContentCallback} callback Callback (err, result) function.
|
|
2582
2566
|
* @returns {void}
|
|
2583
2567
|
*/
|
|
2584
2568
|
function lintFile(ruleList, aliasToRuleNames, file, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, fs, synchronous, callback) {
|
|
@@ -2602,15 +2586,25 @@ function lintFile(ruleList, aliasToRuleNames, file, md, config, configParsers, f
|
|
|
2602
2586
|
*
|
|
2603
2587
|
* @param {Options | null} options Options object.
|
|
2604
2588
|
* @param {boolean} synchronous Whether to execute synchronously.
|
|
2605
|
-
* @param {
|
|
2589
|
+
* @param {LintCallback} callback Callback (err, result) function.
|
|
2606
2590
|
* @returns {void}
|
|
2607
2591
|
*/
|
|
2608
2592
|
function lintInput(options, synchronous, callback) {
|
|
2609
2593
|
// Normalize inputs
|
|
2610
2594
|
options = options || {};
|
|
2611
2595
|
callback = callback || function noop() {};
|
|
2596
|
+
var customRuleList = [options.customRules || []].flat().map(function (rule) {
|
|
2597
|
+
return {
|
|
2598
|
+
"names": helpers.cloneIfArray(rule.names),
|
|
2599
|
+
"description": rule.description,
|
|
2600
|
+
"information": helpers.cloneIfUrl(rule.information),
|
|
2601
|
+
"tags": helpers.cloneIfArray(rule.tags),
|
|
2602
|
+
"asynchronous": rule.asynchronous,
|
|
2603
|
+
"function": rule["function"]
|
|
2604
|
+
};
|
|
2605
|
+
});
|
|
2612
2606
|
// eslint-disable-next-line unicorn/prefer-spread
|
|
2613
|
-
var ruleList = rules.concat(
|
|
2607
|
+
var ruleList = rules.concat(customRuleList);
|
|
2614
2608
|
var ruleErr = validateRuleList(ruleList, synchronous);
|
|
2615
2609
|
if (ruleErr) {
|
|
2616
2610
|
callback(ruleErr);
|
|
@@ -2737,7 +2731,7 @@ function markdownlintPromise(options) {
|
|
|
2737
2731
|
* @returns {LintResults} Results object.
|
|
2738
2732
|
*/
|
|
2739
2733
|
function markdownlintSync(options) {
|
|
2740
|
-
var results =
|
|
2734
|
+
var results = null;
|
|
2741
2735
|
lintInput(options, true, function callback(error, res) {
|
|
2742
2736
|
if (error) {
|
|
2743
2737
|
throw error;
|
|
@@ -2879,6 +2873,7 @@ function readConfig(file, parsers, fs, callback) {
|
|
|
2879
2873
|
}
|
|
2880
2874
|
// Read file
|
|
2881
2875
|
file = helpers.expandTildePath(file, __webpack_require__(/*! node:os */ "?e6c4"));
|
|
2876
|
+
// eslint-disable-next-line n/prefer-promises/fs
|
|
2882
2877
|
fs.readFile(file, "utf8", function (err, content) {
|
|
2883
2878
|
if (err) {
|
|
2884
2879
|
// @ts-ignore
|
|
@@ -3026,6 +3021,7 @@ module.exports = markdownlint;
|
|
|
3026
3021
|
* @property {number} lineNumber Line number (1-based).
|
|
3027
3022
|
* @property {string} [detail] Detail about the error.
|
|
3028
3023
|
* @property {string} [context] Context for the error.
|
|
3024
|
+
* @property {URL} [information] Link to more information.
|
|
3029
3025
|
* @property {number[]} [range] Column number (1-based) and length.
|
|
3030
3026
|
* @property {RuleOnErrorFixInfo} [fixInfo] Fix information.
|
|
3031
3027
|
*/
|
|
@@ -3114,12 +3110,21 @@ module.exports = markdownlint;
|
|
|
3114
3110
|
* @property {string} [insertText] Text to insert (after deleting).
|
|
3115
3111
|
*/
|
|
3116
3112
|
|
|
3113
|
+
/**
|
|
3114
|
+
* Called with the result of linting a string or document.
|
|
3115
|
+
*
|
|
3116
|
+
* @callback LintContentCallback
|
|
3117
|
+
* @param {Error | null} error Error iff failed.
|
|
3118
|
+
* @param {LintError[]} [result] Result iff successful.
|
|
3119
|
+
* @returns {void}
|
|
3120
|
+
*/
|
|
3121
|
+
|
|
3117
3122
|
/**
|
|
3118
3123
|
* Called with the result of the lint function.
|
|
3119
3124
|
*
|
|
3120
3125
|
* @callback LintCallback
|
|
3121
|
-
* @param {Error | null}
|
|
3122
|
-
* @param {LintResults} [results] Lint results.
|
|
3126
|
+
* @param {Error | null} error Error object iff failed.
|
|
3127
|
+
* @param {LintResults} [results] Lint results iff succeeded.
|
|
3123
3128
|
* @returns {void}
|
|
3124
3129
|
*/
|
|
3125
3130
|
|
|
@@ -3762,7 +3767,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
3762
3767
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3763
3768
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
3764
3769
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
3765
|
-
function _iterableToArrayLimit(
|
|
3770
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
3766
3771
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
3767
3772
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
3768
3773
|
addError = _require.addError,
|
|
@@ -3956,9 +3961,9 @@ module.exports = {
|
|
|
3956
3961
|
|
|
3957
3962
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
3958
3963
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3959
|
-
function _iterableToArrayLimit(
|
|
3964
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
3960
3965
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
3961
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
3966
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
3962
3967
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
3963
3968
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
3964
3969
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
@@ -4069,7 +4074,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
4069
4074
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4070
4075
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4071
4076
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4072
|
-
function _iterableToArrayLimit(
|
|
4077
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4073
4078
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4074
4079
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4075
4080
|
addErrorContext = _require.addErrorContext,
|
|
@@ -4116,7 +4121,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
4116
4121
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4117
4122
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4118
4123
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4119
|
-
function _iterableToArrayLimit(
|
|
4124
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4120
4125
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4121
4126
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4122
4127
|
addErrorContext = _require.addErrorContext,
|
|
@@ -4176,7 +4181,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
4176
4181
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4177
4182
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4178
4183
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4179
|
-
function _iterableToArrayLimit(
|
|
4184
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4180
4185
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4181
4186
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4182
4187
|
addErrorContext = _require.addErrorContext,
|
|
@@ -4235,15 +4240,50 @@ module.exports = {
|
|
|
4235
4240
|
|
|
4236
4241
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4237
4242
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4243
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4244
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4245
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4246
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4247
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
4248
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
4249
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4238
4250
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4239
4251
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4240
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
4241
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4242
4252
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4243
4253
|
addErrorDetailIf = _require.addErrorDetailIf,
|
|
4244
4254
|
blockquotePrefixRe = _require.blockquotePrefixRe,
|
|
4245
|
-
filterTokens = _require.filterTokens,
|
|
4246
4255
|
isBlankLine = _require.isBlankLine;
|
|
4256
|
+
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
4257
|
+
filterByTypes = _require2.filterByTypes,
|
|
4258
|
+
getHeadingLevel = _require2.getHeadingLevel;
|
|
4259
|
+
var defaultLines = 1;
|
|
4260
|
+
var getLinesFunction = function getLinesFunction(linesParam) {
|
|
4261
|
+
if (Array.isArray(linesParam)) {
|
|
4262
|
+
var linesArray = new Array(6).fill(defaultLines);
|
|
4263
|
+
var _iterator = _createForOfIteratorHelper(_toConsumableArray(linesParam.entries()).slice(0, 6)),
|
|
4264
|
+
_step;
|
|
4265
|
+
try {
|
|
4266
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
4267
|
+
var _step$value = _slicedToArray(_step.value, 2),
|
|
4268
|
+
index = _step$value[0],
|
|
4269
|
+
value = _step$value[1];
|
|
4270
|
+
linesArray[index] = value;
|
|
4271
|
+
}
|
|
4272
|
+
} catch (err) {
|
|
4273
|
+
_iterator.e(err);
|
|
4274
|
+
} finally {
|
|
4275
|
+
_iterator.f();
|
|
4276
|
+
}
|
|
4277
|
+
return function (heading) {
|
|
4278
|
+
return linesArray[getHeadingLevel(heading) - 1];
|
|
4279
|
+
};
|
|
4280
|
+
}
|
|
4281
|
+
// Coerce linesParam to a number
|
|
4282
|
+
var lines = linesParam === undefined ? defaultLines : Number(linesParam);
|
|
4283
|
+
return function () {
|
|
4284
|
+
return lines;
|
|
4285
|
+
};
|
|
4286
|
+
};
|
|
4247
4287
|
var getBlockQuote = function getBlockQuote(str, count) {
|
|
4248
4288
|
return (str || "").match(blockquotePrefixRe)[0].trimEnd()
|
|
4249
4289
|
// eslint-disable-next-line unicorn/prefer-spread
|
|
@@ -4254,35 +4294,50 @@ module.exports = {
|
|
|
4254
4294
|
"description": "Headings should be surrounded by blank lines",
|
|
4255
4295
|
"tags": ["headings", "headers", "blank_lines"],
|
|
4256
4296
|
"function": function MD022(params, onError) {
|
|
4257
|
-
var
|
|
4258
|
-
|
|
4259
|
-
var
|
|
4260
|
-
|
|
4261
|
-
var
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4297
|
+
var getLinesAbove = getLinesFunction(params.config.lines_above);
|
|
4298
|
+
var getLinesBelow = getLinesFunction(params.config.lines_below);
|
|
4299
|
+
var lines = params.lines,
|
|
4300
|
+
parsers = params.parsers;
|
|
4301
|
+
var headings = filterByTypes(parsers.micromark.tokens, ["atxHeading", "setextHeading"]);
|
|
4302
|
+
var _iterator2 = _createForOfIteratorHelper(headings),
|
|
4303
|
+
_step2;
|
|
4304
|
+
try {
|
|
4305
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
4306
|
+
var heading = _step2.value;
|
|
4307
|
+
var startLine = heading.startLine,
|
|
4308
|
+
endLine = heading.endLine;
|
|
4309
|
+
var line = lines[startLine - 1].trim();
|
|
4310
|
+
|
|
4311
|
+
// Check lines above
|
|
4312
|
+
var linesAbove = getLinesAbove(heading);
|
|
4313
|
+
if (linesAbove >= 0) {
|
|
4314
|
+
var actualAbove = 0;
|
|
4315
|
+
for (var i = 0; i < linesAbove && isBlankLine(lines[startLine - 2 - i]); i++) {
|
|
4316
|
+
actualAbove++;
|
|
4317
|
+
}
|
|
4318
|
+
addErrorDetailIf(onError, startLine, linesAbove, actualAbove, "Above", line, null, {
|
|
4319
|
+
"insertText": getBlockQuote(lines[startLine - 2], linesAbove - actualAbove)
|
|
4320
|
+
});
|
|
4270
4321
|
}
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4322
|
+
|
|
4323
|
+
// Check lines below
|
|
4324
|
+
var linesBelow = getLinesBelow(heading);
|
|
4325
|
+
if (linesBelow >= 0) {
|
|
4326
|
+
var actualBelow = 0;
|
|
4327
|
+
for (var _i = 0; _i < linesBelow && isBlankLine(lines[endLine + _i]); _i++) {
|
|
4328
|
+
actualBelow++;
|
|
4329
|
+
}
|
|
4330
|
+
addErrorDetailIf(onError, startLine, linesBelow, actualBelow, "Below", line, null, {
|
|
4331
|
+
"lineNumber": endLine + 1,
|
|
4332
|
+
"insertText": getBlockQuote(lines[endLine], linesBelow - actualBelow)
|
|
4333
|
+
});
|
|
4279
4334
|
}
|
|
4280
4335
|
}
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
}
|
|
4336
|
+
} catch (err) {
|
|
4337
|
+
_iterator2.e(err);
|
|
4338
|
+
} finally {
|
|
4339
|
+
_iterator2.f();
|
|
4340
|
+
}
|
|
4286
4341
|
}
|
|
4287
4342
|
};
|
|
4288
4343
|
|
|
@@ -4303,7 +4358,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
4303
4358
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4304
4359
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4305
4360
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4306
|
-
function _iterableToArrayLimit(
|
|
4361
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4307
4362
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4308
4363
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4309
4364
|
addErrorContext = _require.addErrorContext,
|
|
@@ -4434,12 +4489,17 @@ module.exports = {
|
|
|
4434
4489
|
|
|
4435
4490
|
|
|
4436
4491
|
|
|
4492
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4493
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4494
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4437
4495
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4438
4496
|
addError = _require.addError,
|
|
4439
4497
|
allPunctuationNoQuestion = _require.allPunctuationNoQuestion,
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4498
|
+
endOfLineGemojiCodeRe = _require.endOfLineGemojiCodeRe,
|
|
4499
|
+
endOfLineHtmlEntityRe = _require.endOfLineHtmlEntityRe,
|
|
4500
|
+
escapeForRegExp = _require.escapeForRegExp;
|
|
4501
|
+
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
4502
|
+
filterByTypes = _require2.filterByTypes;
|
|
4443
4503
|
module.exports = {
|
|
4444
4504
|
"names": ["MD026", "no-trailing-punctuation"],
|
|
4445
4505
|
"description": "Trailing punctuation in heading",
|
|
@@ -4448,21 +4508,31 @@ module.exports = {
|
|
|
4448
4508
|
var punctuation = params.config.punctuation;
|
|
4449
4509
|
punctuation = String(punctuation === undefined ? allPunctuationNoQuestion : punctuation);
|
|
4450
4510
|
var trailingPunctuationRe = new RegExp("\\s*[" + escapeForRegExp(punctuation) + "]+$");
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
var
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4511
|
+
var headings = filterByTypes(params.parsers.micromark.tokens, ["atxHeadingText", "setextHeadingText"]);
|
|
4512
|
+
var _iterator = _createForOfIteratorHelper(headings),
|
|
4513
|
+
_step;
|
|
4514
|
+
try {
|
|
4515
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
4516
|
+
var heading = _step.value;
|
|
4517
|
+
var endLine = heading.endLine,
|
|
4518
|
+
startColumn = heading.startColumn,
|
|
4519
|
+
text = heading.text;
|
|
4520
|
+
var match = trailingPunctuationRe.exec(text);
|
|
4521
|
+
if (match && !endOfLineHtmlEntityRe.test(text) && !endOfLineGemojiCodeRe.test(text)) {
|
|
4522
|
+
var fullMatch = match[0];
|
|
4523
|
+
var column = startColumn + match.index;
|
|
4524
|
+
var length = fullMatch.length;
|
|
4525
|
+
addError(onError, endLine, "Punctuation: '".concat(fullMatch, "'"), undefined, [column, length], {
|
|
4526
|
+
"editColumn": column,
|
|
4527
|
+
"deleteCount": length
|
|
4528
|
+
});
|
|
4529
|
+
}
|
|
4464
4530
|
}
|
|
4465
|
-
})
|
|
4531
|
+
} catch (err) {
|
|
4532
|
+
_iterator.e(err);
|
|
4533
|
+
} finally {
|
|
4534
|
+
_iterator.f();
|
|
4535
|
+
}
|
|
4466
4536
|
}
|
|
4467
4537
|
};
|
|
4468
4538
|
|
|
@@ -4481,9 +4551,9 @@ module.exports = {
|
|
|
4481
4551
|
|
|
4482
4552
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4483
4553
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4484
|
-
function _iterableToArrayLimit(
|
|
4554
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4485
4555
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4486
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
4556
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4487
4557
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4488
4558
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4489
4559
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
@@ -4604,9 +4674,9 @@ module.exports = {
|
|
|
4604
4674
|
|
|
4605
4675
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4606
4676
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4607
|
-
function _iterableToArrayLimit(
|
|
4677
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4608
4678
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4609
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
4679
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4610
4680
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4611
4681
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4612
4682
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
@@ -4709,9 +4779,9 @@ module.exports = {
|
|
|
4709
4779
|
|
|
4710
4780
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4711
4781
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4712
|
-
function _iterableToArrayLimit(
|
|
4782
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4713
4783
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4714
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
4784
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4715
4785
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4716
4786
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4717
4787
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
@@ -4789,7 +4859,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
4789
4859
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4790
4860
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4791
4861
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4792
|
-
function _iterableToArrayLimit(
|
|
4862
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4793
4863
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4794
4864
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4795
4865
|
addErrorContext = _require.addErrorContext,
|
|
@@ -4843,38 +4913,68 @@ var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
|
4843
4913
|
addErrorContext = _require.addErrorContext,
|
|
4844
4914
|
blockquotePrefixRe = _require.blockquotePrefixRe,
|
|
4845
4915
|
isBlankLine = _require.isBlankLine;
|
|
4846
|
-
var _require2 = __webpack_require__(/*!
|
|
4847
|
-
|
|
4916
|
+
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
4917
|
+
filterByPredicate = _require2.filterByPredicate;
|
|
4918
|
+
var nonContentTokens = new Set(["blockQuoteMarker", "blockQuotePrefix", "blockQuotePrefixWhitespace", "lineEnding", "lineEndingBlank", "linePrefix", "listItemIndent"]);
|
|
4919
|
+
var isList = function isList(token) {
|
|
4920
|
+
return token.type === "listOrdered" || token.type === "listUnordered";
|
|
4921
|
+
};
|
|
4922
|
+
var addBlankLineError = function addBlankLineError(onError, lines, lineIndex, lineNumber) {
|
|
4923
|
+
var line = lines[lineIndex];
|
|
4924
|
+
var quotePrefix = line.match(blockquotePrefixRe)[0].trimEnd();
|
|
4925
|
+
addErrorContext(onError, lineIndex + 1, line.trim(), null, null, null, {
|
|
4926
|
+
lineNumber: lineNumber,
|
|
4927
|
+
"insertText": "".concat(quotePrefix, "\n")
|
|
4928
|
+
});
|
|
4929
|
+
};
|
|
4848
4930
|
module.exports = {
|
|
4849
4931
|
"names": ["MD032", "blanks-around-lists"],
|
|
4850
4932
|
"description": "Lists should be surrounded by blank lines",
|
|
4851
4933
|
"tags": ["bullet", "ul", "ol", "blank_lines"],
|
|
4852
4934
|
"function": function MD032(params, onError) {
|
|
4853
|
-
var lines = params.lines
|
|
4854
|
-
|
|
4855
|
-
|
|
4935
|
+
var lines = params.lines,
|
|
4936
|
+
parsers = params.parsers;
|
|
4937
|
+
|
|
4938
|
+
// For every top-level list...
|
|
4939
|
+
var topLevelLists = filterByPredicate(parsers.micromark.tokens, isList, function (token) {
|
|
4940
|
+
return isList(token) || token.type === "htmlFlow" ? [] : token.children;
|
|
4856
4941
|
});
|
|
4857
|
-
var _iterator = _createForOfIteratorHelper(
|
|
4942
|
+
var _iterator = _createForOfIteratorHelper(topLevelLists),
|
|
4858
4943
|
_step;
|
|
4859
4944
|
try {
|
|
4860
4945
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
4861
4946
|
var list = _step.value;
|
|
4862
|
-
|
|
4947
|
+
// Look for a blank line above the list
|
|
4948
|
+
var firstIndex = list.startLine - 1;
|
|
4863
4949
|
if (!isBlankLine(lines[firstIndex - 1])) {
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
|
|
4950
|
+
addBlankLineError(onError, lines, firstIndex);
|
|
4951
|
+
}
|
|
4952
|
+
|
|
4953
|
+
// Find the "visual" end of the list
|
|
4954
|
+
var endLine = list.endLine;
|
|
4955
|
+
var flattenedChildren = filterByPredicate(list.children, function () {
|
|
4956
|
+
return true;
|
|
4957
|
+
});
|
|
4958
|
+
var _iterator2 = _createForOfIteratorHelper(flattenedChildren.reverse()),
|
|
4959
|
+
_step2;
|
|
4960
|
+
try {
|
|
4961
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
4962
|
+
var child = _step2.value;
|
|
4963
|
+
if (!nonContentTokens.has(child.type)) {
|
|
4964
|
+
endLine = child.endLine;
|
|
4965
|
+
break;
|
|
4966
|
+
}
|
|
4967
|
+
}
|
|
4968
|
+
|
|
4969
|
+
// Look for a blank line below the list
|
|
4970
|
+
} catch (err) {
|
|
4971
|
+
_iterator2.e(err);
|
|
4972
|
+
} finally {
|
|
4973
|
+
_iterator2.f();
|
|
4869
4974
|
}
|
|
4870
|
-
var lastIndex =
|
|
4975
|
+
var lastIndex = endLine - 1;
|
|
4871
4976
|
if (!isBlankLine(lines[lastIndex + 1])) {
|
|
4872
|
-
|
|
4873
|
-
var _quotePrefix = _line.match(blockquotePrefixRe)[0].trimEnd();
|
|
4874
|
-
addErrorContext(onError, lastIndex + 1, _line.trim(), null, null, null, {
|
|
4875
|
-
"lineNumber": lastIndex + 2,
|
|
4876
|
-
"insertText": "".concat(_quotePrefix, "\n")
|
|
4877
|
-
});
|
|
4977
|
+
addBlankLineError(onError, lines, lastIndex, lastIndex + 2);
|
|
4878
4978
|
}
|
|
4879
4979
|
}
|
|
4880
4980
|
} catch (err) {
|
|
@@ -4898,69 +4998,41 @@ module.exports = {
|
|
|
4898
4998
|
|
|
4899
4999
|
|
|
4900
5000
|
|
|
4901
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
4902
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4903
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5001
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4904
5002
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4905
5003
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4906
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
4907
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4908
5004
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
4909
5005
|
addError = _require.addError;
|
|
4910
5006
|
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
4911
|
-
filterByTypes = _require2.filterByTypes,
|
|
4912
|
-
getHtmlTagInfo = _require2.getHtmlTagInfo
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
"
|
|
4917
|
-
"
|
|
4918
|
-
"
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
allowedElements =
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
var
|
|
4926
|
-
|
|
4927
|
-
|
|
4928
|
-
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
try {
|
|
4935
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
4936
|
-
var token = _step.value;
|
|
4937
|
-
if (token.type === "htmlText") {
|
|
4938
|
-
var htmlTagInfo = getHtmlTagInfo(token);
|
|
4939
|
-
if (htmlTagInfo && !htmlTagInfo.close && !allowedElements.includes(htmlTagInfo.name.toLowerCase())) {
|
|
4940
|
-
var range = [token.startColumn, token.text.replace(nextLinesRe, "").length];
|
|
4941
|
-
addError(onError, token.startLine + offset, "Element: " + htmlTagInfo.name, undefined, range);
|
|
4942
|
-
}
|
|
4943
|
-
} else {
|
|
4944
|
-
// token.type === "htmlFlow"
|
|
4945
|
-
// Re-parse without "htmlFlow" to get only "htmlText" tokens
|
|
4946
|
-
var options = {
|
|
4947
|
-
"extensions": [{
|
|
4948
|
-
"disable": {
|
|
4949
|
-
"null": ["codeIndented", "htmlFlow"]
|
|
4950
|
-
}
|
|
4951
|
-
}]
|
|
4952
|
-
};
|
|
4953
|
-
// Use lines instead of token.text for accurate columns
|
|
4954
|
-
var lines = params.lines.slice(token.startLine - 1, token.endLine).join("\n");
|
|
4955
|
-
var flowTokens = parse(lines, options);
|
|
4956
|
-
pending.push([token.startLine - 1, flowTokens]);
|
|
4957
|
-
}
|
|
5007
|
+
filterByTypes = _require2.filterByTypes,
|
|
5008
|
+
getHtmlTagInfo = _require2.getHtmlTagInfo;
|
|
5009
|
+
var nextLinesRe = /[\r\n][\s\S]*$/;
|
|
5010
|
+
module.exports = {
|
|
5011
|
+
"names": ["MD033", "no-inline-html"],
|
|
5012
|
+
"description": "Inline HTML",
|
|
5013
|
+
"tags": ["html"],
|
|
5014
|
+
"function": function MD033(params, onError) {
|
|
5015
|
+
var allowedElements = params.config.allowed_elements;
|
|
5016
|
+
allowedElements = Array.isArray(allowedElements) ? allowedElements : [];
|
|
5017
|
+
allowedElements = allowedElements.map(function (element) {
|
|
5018
|
+
return element.toLowerCase();
|
|
5019
|
+
});
|
|
5020
|
+
var tokens = params.parsers.micromark.tokens;
|
|
5021
|
+
var _iterator = _createForOfIteratorHelper(filterByTypes(tokens, ["htmlText"])),
|
|
5022
|
+
_step;
|
|
5023
|
+
try {
|
|
5024
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
5025
|
+
var token = _step.value;
|
|
5026
|
+
var htmlTagInfo = getHtmlTagInfo(token);
|
|
5027
|
+
if (htmlTagInfo && !htmlTagInfo.close && !allowedElements.includes(htmlTagInfo.name.toLowerCase())) {
|
|
5028
|
+
var range = [token.startColumn, token.text.replace(nextLinesRe, "").length];
|
|
5029
|
+
addError(onError, token.startLine, "Element: " + htmlTagInfo.name, undefined, range);
|
|
4958
5030
|
}
|
|
4959
|
-
} catch (err) {
|
|
4960
|
-
_iterator.e(err);
|
|
4961
|
-
} finally {
|
|
4962
|
-
_iterator.f();
|
|
4963
5031
|
}
|
|
5032
|
+
} catch (err) {
|
|
5033
|
+
_iterator.e(err);
|
|
5034
|
+
} finally {
|
|
5035
|
+
_iterator.f();
|
|
4964
5036
|
}
|
|
4965
5037
|
}
|
|
4966
5038
|
};
|
|
@@ -5184,161 +5256,125 @@ module.exports = {
|
|
|
5184
5256
|
|
|
5185
5257
|
|
|
5186
5258
|
|
|
5187
|
-
function
|
|
5188
|
-
function
|
|
5259
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
5260
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5261
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
5262
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
5263
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
5189
5264
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5190
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
5191
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5192
5265
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5193
5266
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
5197
|
-
isBlankLine = _require.isBlankLine,
|
|
5198
|
-
withinAnyRange = _require.withinAnyRange;
|
|
5199
|
-
var _require2 = __webpack_require__(/*! ./cache */ "../lib/cache.js"),
|
|
5200
|
-
htmlElementRanges = _require2.htmlElementRanges,
|
|
5201
|
-
lineMetadata = _require2.lineMetadata;
|
|
5202
|
-
var emphasisRe = /(^|[^\\]|\\\\)(?:(\*{1,3})|(_{1,3}))/g;
|
|
5203
|
-
var embeddedUnderscoreRe = /([A-Za-z\d])(_([A-Za-z\d]))+/g;
|
|
5204
|
-
var asteriskListItemMarkerRe = /^([\s>]*)\*(\s+)/;
|
|
5205
|
-
var leftSpaceRe = /^\s+/;
|
|
5206
|
-
var rightSpaceRe = /\s+$/;
|
|
5207
|
-
var tablePipeRe = /\|/;
|
|
5208
|
-
var allUnderscoresRe = /_/g;
|
|
5267
|
+
addError = _require.addError;
|
|
5268
|
+
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
5269
|
+
filterByPredicate = _require2.filterByPredicate;
|
|
5209
5270
|
module.exports = {
|
|
5210
5271
|
"names": ["MD037", "no-space-in-emphasis"],
|
|
5211
5272
|
"description": "Spaces inside emphasis markers",
|
|
5212
5273
|
"tags": ["whitespace", "emphasis"],
|
|
5213
5274
|
"function": function MD037(params, onError) {
|
|
5214
|
-
|
|
5215
|
-
|
|
5216
|
-
|
|
5217
|
-
|
|
5218
|
-
|
|
5219
|
-
|
|
5220
|
-
|
|
5221
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
5222
|
-
function resetRunTracking() {
|
|
5223
|
-
emphasisIndex = -1;
|
|
5224
|
-
emphasisLength = 0;
|
|
5225
|
-
emphasisKind = "";
|
|
5226
|
-
effectiveEmphasisLength = 0;
|
|
5227
|
-
pendingError = null;
|
|
5228
|
-
}
|
|
5229
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
5230
|
-
function handleRunEnd(line, lineIndex, contextLength, match, matchIndex, inTable) {
|
|
5231
|
-
// Close current run
|
|
5232
|
-
var content = line.substring(emphasisIndex, matchIndex);
|
|
5233
|
-
if (!emphasisLength) {
|
|
5234
|
-
content = content.trimStart();
|
|
5235
|
-
}
|
|
5236
|
-
if (!match) {
|
|
5237
|
-
content = content.trimEnd();
|
|
5238
|
-
}
|
|
5239
|
-
var leftSpace = leftSpaceRe.test(content);
|
|
5240
|
-
var rightSpace = rightSpaceRe.test(content);
|
|
5241
|
-
if ((leftSpace || rightSpace) && (!inTable || !tablePipeRe.test(content))) {
|
|
5242
|
-
// Report the violation
|
|
5243
|
-
var contextStart = emphasisIndex - emphasisLength;
|
|
5244
|
-
var contextEnd = matchIndex + contextLength;
|
|
5245
|
-
var column = contextStart + 1;
|
|
5246
|
-
var length = contextEnd - contextStart;
|
|
5247
|
-
if (!withinAnyRange(exclusions, lineIndex, column, length)) {
|
|
5248
|
-
var context = line.substring(contextStart, contextEnd);
|
|
5249
|
-
var leftMarker = line.substring(contextStart, emphasisIndex);
|
|
5250
|
-
var rightMarker = match ? match[2] || match[3] : "";
|
|
5251
|
-
var fixedText = "".concat(leftMarker).concat(content.trim()).concat(rightMarker);
|
|
5252
|
-
return [onError, lineIndex + 1, context, leftSpace, rightSpace, [column, length], {
|
|
5253
|
-
"editColumn": column,
|
|
5254
|
-
"deleteCount": length,
|
|
5255
|
-
"insertText": fixedText
|
|
5256
|
-
}];
|
|
5257
|
-
}
|
|
5258
|
-
}
|
|
5259
|
-
return null;
|
|
5275
|
+
// Initialize variables
|
|
5276
|
+
var lines = params.lines,
|
|
5277
|
+
parsers = params.parsers;
|
|
5278
|
+
var emphasisTokensByMarker = new Map();
|
|
5279
|
+
for (var _i = 0, _arr = ["_", "__", "___", "*", "**", "***"]; _i < _arr.length; _i++) {
|
|
5280
|
+
var marker = _arr[_i];
|
|
5281
|
+
emphasisTokensByMarker.set(marker, []);
|
|
5260
5282
|
}
|
|
5261
|
-
|
|
5262
|
-
|
|
5263
|
-
|
|
5264
|
-
forEachLine(lineMetadata(), function (line, lineIndex, inCode, onFence, inTable, inItem, onBreak, inMath) {
|
|
5265
|
-
var onItemStart = inItem === 1;
|
|
5266
|
-
if (inCode || onFence || inTable || onBreak || onItemStart || isBlankLine(line)) {
|
|
5267
|
-
// Emphasis resets when leaving a block
|
|
5268
|
-
resetRunTracking();
|
|
5269
|
-
}
|
|
5270
|
-
if (inCode || onFence || onBreak || inMath) {
|
|
5271
|
-
// Emphasis has no meaning here
|
|
5272
|
-
return;
|
|
5273
|
-
}
|
|
5274
|
-
var patchedLine = line.replace(embeddedUnderscoreRe, function (match) {
|
|
5275
|
-
return match.replace(allUnderscoresRe, " ");
|
|
5283
|
+
var tokens = filterByPredicate(parsers.micromark.tokens, function (token) {
|
|
5284
|
+
return token.children.some(function (child) {
|
|
5285
|
+
return child.type === "data";
|
|
5276
5286
|
});
|
|
5277
|
-
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
|
|
5281
|
-
|
|
5282
|
-
|
|
5283
|
-
|
|
5284
|
-
var
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5287
|
+
});
|
|
5288
|
+
var _iterator = _createForOfIteratorHelper(tokens),
|
|
5289
|
+
_step;
|
|
5290
|
+
try {
|
|
5291
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
5292
|
+
var token = _step.value;
|
|
5293
|
+
// Build lists of bare tokens for each emphasis marker type
|
|
5294
|
+
var _iterator2 = _createForOfIteratorHelper(emphasisTokensByMarker.values()),
|
|
5295
|
+
_step2;
|
|
5296
|
+
try {
|
|
5297
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
5298
|
+
var emphasisTokens = _step2.value;
|
|
5299
|
+
emphasisTokens.length = 0;
|
|
5300
|
+
}
|
|
5301
|
+
} catch (err) {
|
|
5302
|
+
_iterator2.e(err);
|
|
5303
|
+
} finally {
|
|
5304
|
+
_iterator2.f();
|
|
5289
5305
|
}
|
|
5290
|
-
var
|
|
5291
|
-
|
|
5292
|
-
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
if (pendingError) {
|
|
5303
|
-
// @ts-ignore
|
|
5304
|
-
addErrorContext.apply(void 0, _toConsumableArray(pendingError));
|
|
5305
|
-
pendingError = null;
|
|
5306
|
-
}
|
|
5307
|
-
var error = handleRunEnd(line, lineIndex, effectiveEmphasisLength, match, matchIndex, inTable);
|
|
5308
|
-
if (error) {
|
|
5309
|
-
// @ts-ignore
|
|
5310
|
-
addErrorContext.apply(void 0, _toConsumableArray(error));
|
|
5306
|
+
var _iterator3 = _createForOfIteratorHelper(token.children),
|
|
5307
|
+
_step3;
|
|
5308
|
+
try {
|
|
5309
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
5310
|
+
var child = _step3.value;
|
|
5311
|
+
var text = child.text,
|
|
5312
|
+
type = child.type;
|
|
5313
|
+
if (type === "data" && text.length <= 3) {
|
|
5314
|
+
var _emphasisTokens = emphasisTokensByMarker.get(text);
|
|
5315
|
+
if (_emphasisTokens) {
|
|
5316
|
+
_emphasisTokens.push(child);
|
|
5317
|
+
}
|
|
5311
5318
|
}
|
|
5312
|
-
// Reset
|
|
5313
|
-
resetRunTracking();
|
|
5314
|
-
} else if (matchLength === 3) {
|
|
5315
|
-
// Swap internal run length (1->2 or 2->1)
|
|
5316
|
-
effectiveEmphasisLength = matchLength - effectiveEmphasisLength;
|
|
5317
|
-
} else if (effectiveEmphasisLength === 3) {
|
|
5318
|
-
// Downgrade internal run (3->1 or 3->2)
|
|
5319
|
-
effectiveEmphasisLength -= matchLength;
|
|
5320
|
-
} else {
|
|
5321
|
-
// Upgrade to internal run (1->3 or 2->3)
|
|
5322
|
-
effectiveEmphasisLength += matchLength;
|
|
5323
5319
|
}
|
|
5324
|
-
|
|
5325
|
-
//
|
|
5326
|
-
|
|
5327
|
-
|
|
5320
|
+
|
|
5321
|
+
// Process bare tokens for each emphasis marker type
|
|
5322
|
+
} catch (err) {
|
|
5323
|
+
_iterator3.e(err);
|
|
5324
|
+
} finally {
|
|
5325
|
+
_iterator3.f();
|
|
5326
|
+
}
|
|
5327
|
+
var _iterator4 = _createForOfIteratorHelper(emphasisTokensByMarker.entries()),
|
|
5328
|
+
_step4;
|
|
5329
|
+
try {
|
|
5330
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
5331
|
+
var entry = _step4.value;
|
|
5332
|
+
var _entry = _slicedToArray(entry, 2),
|
|
5333
|
+
_marker = _entry[0],
|
|
5334
|
+
_emphasisTokens2 = _entry[1];
|
|
5335
|
+
for (var i = 0; i + 1 < _emphasisTokens2.length; i += 2) {
|
|
5336
|
+
// Process start token of start/end pair
|
|
5337
|
+
var startToken = _emphasisTokens2[i];
|
|
5338
|
+
var startLine = lines[startToken.startLine - 1];
|
|
5339
|
+
var startSlice = startLine.slice(startToken.endColumn - 1);
|
|
5340
|
+
var startMatch = startSlice.match(/^\s+\S/);
|
|
5341
|
+
if (startMatch) {
|
|
5342
|
+
var _startMatch = _slicedToArray(startMatch, 1),
|
|
5343
|
+
startSpaceCharacter = _startMatch[0];
|
|
5344
|
+
var startContext = "".concat(_marker).concat(startSpaceCharacter);
|
|
5345
|
+
addError(onError, startToken.startLine, undefined, startContext, [startToken.startColumn, startContext.length], {
|
|
5346
|
+
"editColumn": startToken.endColumn,
|
|
5347
|
+
"deleteCount": startSpaceCharacter.length - 1
|
|
5348
|
+
});
|
|
5349
|
+
}
|
|
5350
|
+
|
|
5351
|
+
// Process end token of start/end pair
|
|
5352
|
+
var endToken = _emphasisTokens2[i + 1];
|
|
5353
|
+
var endLine = lines[endToken.startLine - 1];
|
|
5354
|
+
var endSlice = endLine.slice(0, endToken.startColumn - 1);
|
|
5355
|
+
var endMatch = endSlice.match(/\S\s+$/);
|
|
5356
|
+
if (endMatch) {
|
|
5357
|
+
var _endMatch = _slicedToArray(endMatch, 1),
|
|
5358
|
+
endSpaceCharacter = _endMatch[0];
|
|
5359
|
+
var endContext = "".concat(endSpaceCharacter).concat(_marker);
|
|
5360
|
+
addError(onError, endToken.startLine, undefined, endContext, [endToken.endColumn - endContext.length, endContext.length], {
|
|
5361
|
+
"editColumn": endToken.startColumn - (endSpaceCharacter.length - 1),
|
|
5362
|
+
"deleteCount": endSpaceCharacter.length - 1
|
|
5363
|
+
});
|
|
5364
|
+
}
|
|
5365
|
+
}
|
|
5328
5366
|
}
|
|
5329
|
-
}
|
|
5330
|
-
|
|
5331
|
-
|
|
5332
|
-
|
|
5367
|
+
} catch (err) {
|
|
5368
|
+
_iterator4.e(err);
|
|
5369
|
+
} finally {
|
|
5370
|
+
_iterator4.f();
|
|
5333
5371
|
}
|
|
5334
5372
|
}
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
}
|
|
5341
|
-
});
|
|
5373
|
+
} catch (err) {
|
|
5374
|
+
_iterator.e(err);
|
|
5375
|
+
} finally {
|
|
5376
|
+
_iterator.f();
|
|
5377
|
+
}
|
|
5342
5378
|
}
|
|
5343
5379
|
};
|
|
5344
5380
|
|
|
@@ -5704,52 +5740,54 @@ module.exports = {
|
|
|
5704
5740
|
"tags": ["headings", "headers"],
|
|
5705
5741
|
"function": function MD043(params, onError) {
|
|
5706
5742
|
var requiredHeadings = params.config.headings || params.config.headers;
|
|
5743
|
+
if (!Array.isArray(requiredHeadings)) {
|
|
5744
|
+
// Nothing to check; avoid doing any work
|
|
5745
|
+
return;
|
|
5746
|
+
}
|
|
5707
5747
|
var matchCase = params.config.match_case || false;
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
if (handleCase(nextExpected) !== handleCase(actual)) {
|
|
5732
|
-
matchAny = true;
|
|
5733
|
-
i--;
|
|
5734
|
-
}
|
|
5735
|
-
} else if (expected === "+") {
|
|
5748
|
+
var levels = {};
|
|
5749
|
+
for (var _i = 0, _arr = [1, 2, 3, 4, 5, 6]; _i < _arr.length; _i++) {
|
|
5750
|
+
var level = _arr[_i];
|
|
5751
|
+
levels["h" + level] = "######".substr(-level);
|
|
5752
|
+
}
|
|
5753
|
+
var i = 0;
|
|
5754
|
+
var matchAny = false;
|
|
5755
|
+
var hasError = false;
|
|
5756
|
+
var anyHeadings = false;
|
|
5757
|
+
var getExpected = function getExpected() {
|
|
5758
|
+
return requiredHeadings[i++] || "[None]";
|
|
5759
|
+
};
|
|
5760
|
+
var handleCase = function handleCase(str) {
|
|
5761
|
+
return matchCase ? str : str.toLowerCase();
|
|
5762
|
+
};
|
|
5763
|
+
forEachHeading(params, function (heading, content) {
|
|
5764
|
+
if (!hasError) {
|
|
5765
|
+
anyHeadings = true;
|
|
5766
|
+
var actual = levels[heading.tag] + " " + content;
|
|
5767
|
+
var expected = getExpected();
|
|
5768
|
+
if (expected === "*") {
|
|
5769
|
+
var nextExpected = getExpected();
|
|
5770
|
+
if (handleCase(nextExpected) !== handleCase(actual)) {
|
|
5736
5771
|
matchAny = true;
|
|
5737
|
-
} else if (handleCase(expected) === handleCase(actual)) {
|
|
5738
|
-
matchAny = false;
|
|
5739
|
-
} else if (matchAny) {
|
|
5740
5772
|
i--;
|
|
5741
|
-
} else {
|
|
5742
|
-
addErrorDetailIf(onError, heading.lineNumber, expected, actual);
|
|
5743
|
-
hasError = true;
|
|
5744
5773
|
}
|
|
5774
|
+
} else if (expected === "+") {
|
|
5775
|
+
matchAny = true;
|
|
5776
|
+
} else if (handleCase(expected) === handleCase(actual)) {
|
|
5777
|
+
matchAny = false;
|
|
5778
|
+
} else if (matchAny) {
|
|
5779
|
+
i--;
|
|
5780
|
+
} else {
|
|
5781
|
+
addErrorDetailIf(onError, heading.lineNumber, expected, actual);
|
|
5782
|
+
hasError = true;
|
|
5745
5783
|
}
|
|
5746
|
-
});
|
|
5747
|
-
var extraHeadings = requiredHeadings.length - i;
|
|
5748
|
-
if (!hasError && (extraHeadings > 1 || extraHeadings === 1 && requiredHeadings[i] !== "*") && (anyHeadings || !requiredHeadings.every(function (heading) {
|
|
5749
|
-
return heading === "*";
|
|
5750
|
-
}))) {
|
|
5751
|
-
addErrorContext(onError, params.lines.length, requiredHeadings[i]);
|
|
5752
5784
|
}
|
|
5785
|
+
});
|
|
5786
|
+
var extraHeadings = requiredHeadings.length - i;
|
|
5787
|
+
if (!hasError && (extraHeadings > 1 || extraHeadings === 1 && requiredHeadings[i] !== "*") && (anyHeadings || !requiredHeadings.every(function (heading) {
|
|
5788
|
+
return heading === "*";
|
|
5789
|
+
}))) {
|
|
5790
|
+
addErrorContext(onError, params.lines.length, requiredHeadings[i]);
|
|
5753
5791
|
}
|
|
5754
5792
|
}
|
|
5755
5793
|
};
|
|
@@ -5767,21 +5805,20 @@ module.exports = {
|
|
|
5767
5805
|
|
|
5768
5806
|
|
|
5769
5807
|
|
|
5770
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
5771
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5772
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
5773
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
5774
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
5775
5808
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
5776
5809
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5777
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5778
5810
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
5779
5811
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5812
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
5813
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5814
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
5815
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
5816
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
5817
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5780
5818
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5781
5819
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
5782
5820
|
addErrorDetailIf = _require.addErrorDetailIf,
|
|
5783
5821
|
escapeForRegExp = _require.escapeForRegExp,
|
|
5784
|
-
newLineRe = _require.newLineRe,
|
|
5785
5822
|
withinAnyRange = _require.withinAnyRange;
|
|
5786
5823
|
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
5787
5824
|
filterByPredicate = _require2.filterByPredicate,
|
|
@@ -5798,70 +5835,47 @@ module.exports = {
|
|
|
5798
5835
|
names.sort(function (a, b) {
|
|
5799
5836
|
return b.length - a.length || a.localeCompare(b);
|
|
5800
5837
|
});
|
|
5838
|
+
if (names.length === 0) {
|
|
5839
|
+
// Nothing to check; avoid doing any work
|
|
5840
|
+
return;
|
|
5841
|
+
}
|
|
5801
5842
|
var codeBlocks = params.config.code_blocks;
|
|
5802
5843
|
var includeCodeBlocks = codeBlocks === undefined ? true : !!codeBlocks;
|
|
5803
5844
|
var htmlElements = params.config.html_elements;
|
|
5804
5845
|
var includeHtmlElements = htmlElements === undefined ? true : !!htmlElements;
|
|
5805
|
-
var scannedTypes = new Set(["data"
|
|
5846
|
+
var scannedTypes = new Set(["data"]);
|
|
5806
5847
|
if (includeCodeBlocks) {
|
|
5807
5848
|
scannedTypes.add("codeFlowValue");
|
|
5808
5849
|
scannedTypes.add("codeTextData");
|
|
5809
5850
|
}
|
|
5810
|
-
|
|
5851
|
+
if (includeHtmlElements) {
|
|
5852
|
+
scannedTypes.add("htmlFlowData");
|
|
5853
|
+
scannedTypes.add("htmlTextData");
|
|
5854
|
+
}
|
|
5811
5855
|
var contentTokens = filterByPredicate(params.parsers.micromark.tokens, function (token) {
|
|
5812
5856
|
return scannedTypes.has(token.type);
|
|
5813
5857
|
}, function (token) {
|
|
5814
|
-
|
|
5815
|
-
var startLine = token.startLine,
|
|
5816
|
-
text = token.text;
|
|
5817
|
-
if (!includeHtmlElements && token.type === "htmlFlow") {
|
|
5818
|
-
if (text.startsWith("<!--")) {
|
|
5819
|
-
// Remove comment content
|
|
5820
|
-
children = [];
|
|
5821
|
-
} else {
|
|
5822
|
-
// Re-parse to get htmlText elements for detailed tokenization
|
|
5823
|
-
var htmlTextLines = "<md044>\n".concat(text, "\n</md044>").split(newLineRe);
|
|
5824
|
-
children = parse(htmlTextLines.join(""));
|
|
5825
|
-
var reTokens = _toConsumableArray(children);
|
|
5826
|
-
var _iterator = _createForOfIteratorHelper(reTokens),
|
|
5827
|
-
_step;
|
|
5828
|
-
try {
|
|
5829
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
5830
|
-
var reToken = _step.value;
|
|
5831
|
-
tokenAdjustments.set(reToken, {
|
|
5832
|
-
htmlTextLines: htmlTextLines,
|
|
5833
|
-
startLine: startLine
|
|
5834
|
-
});
|
|
5835
|
-
reTokens.push.apply(reTokens, _toConsumableArray(reToken.children));
|
|
5836
|
-
}
|
|
5837
|
-
} catch (err) {
|
|
5838
|
-
_iterator.e(err);
|
|
5839
|
-
} finally {
|
|
5840
|
-
_iterator.f();
|
|
5841
|
-
}
|
|
5842
|
-
}
|
|
5843
|
-
}
|
|
5844
|
-
return children.filter(function (t) {
|
|
5858
|
+
return token.children.filter(function (t) {
|
|
5845
5859
|
return !ignoredChildTypes.has(t.type);
|
|
5846
5860
|
});
|
|
5847
5861
|
});
|
|
5848
5862
|
var exclusions = [];
|
|
5849
5863
|
var autoLinked = new Set();
|
|
5850
|
-
var
|
|
5851
|
-
|
|
5864
|
+
var _iterator = _createForOfIteratorHelper(names),
|
|
5865
|
+
_step;
|
|
5852
5866
|
try {
|
|
5853
|
-
for (
|
|
5854
|
-
var name =
|
|
5867
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
5868
|
+
var name = _step.value;
|
|
5855
5869
|
var escapedName = escapeForRegExp(name);
|
|
5856
5870
|
var startNamePattern = /^\W/.test(name) ? "" : "\\b_*";
|
|
5857
5871
|
var endNamePattern = /\W$/.test(name) ? "" : "_*\\b";
|
|
5858
5872
|
var namePattern = "(".concat(startNamePattern, ")(").concat(escapedName, ")").concat(endNamePattern);
|
|
5859
5873
|
var nameRe = new RegExp(namePattern, "gi");
|
|
5860
|
-
var
|
|
5861
|
-
|
|
5874
|
+
var _iterator2 = _createForOfIteratorHelper(contentTokens),
|
|
5875
|
+
_step2;
|
|
5862
5876
|
try {
|
|
5863
5877
|
var _loop = function _loop() {
|
|
5864
|
-
var token =
|
|
5878
|
+
var token = _step2.value;
|
|
5865
5879
|
var match = null;
|
|
5866
5880
|
var _loop2 = function _loop2() {
|
|
5867
5881
|
var _match = match,
|
|
@@ -5881,21 +5895,8 @@ module.exports = {
|
|
|
5881
5895
|
autoLinked.add(token);
|
|
5882
5896
|
}
|
|
5883
5897
|
if (!withinAnyRange(urlRanges, lineIndex, index, length)) {
|
|
5884
|
-
var
|
|
5885
|
-
|
|
5886
|
-
if (tokenAdjustments.has(token)) {
|
|
5887
|
-
var _tokenAdjustments$get = tokenAdjustments.get(token),
|
|
5888
|
-
htmlTextLines = _tokenAdjustments$get.htmlTextLines,
|
|
5889
|
-
startLine = _tokenAdjustments$get.startLine;
|
|
5890
|
-
var lineDelta = 0;
|
|
5891
|
-
while (htmlTextLines[lineDelta].length <= column) {
|
|
5892
|
-
column -= htmlTextLines[lineDelta].length;
|
|
5893
|
-
lineDelta++;
|
|
5894
|
-
}
|
|
5895
|
-
lineNumber = startLine + lineDelta - 1;
|
|
5896
|
-
}
|
|
5897
|
-
column++;
|
|
5898
|
-
addErrorDetailIf(onError, lineNumber, name, nameMatch, null, null, [column, length], {
|
|
5898
|
+
var column = index + 1;
|
|
5899
|
+
addErrorDetailIf(onError, token.startLine, name, nameMatch, null, null, [column, length], {
|
|
5899
5900
|
"editColumn": column,
|
|
5900
5901
|
"deleteCount": length,
|
|
5901
5902
|
"insertText": name
|
|
@@ -5908,19 +5909,19 @@ module.exports = {
|
|
|
5908
5909
|
_loop2();
|
|
5909
5910
|
}
|
|
5910
5911
|
};
|
|
5911
|
-
for (
|
|
5912
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
5912
5913
|
_loop();
|
|
5913
5914
|
}
|
|
5914
5915
|
} catch (err) {
|
|
5915
|
-
|
|
5916
|
+
_iterator2.e(err);
|
|
5916
5917
|
} finally {
|
|
5917
|
-
|
|
5918
|
+
_iterator2.f();
|
|
5918
5919
|
}
|
|
5919
5920
|
}
|
|
5920
5921
|
} catch (err) {
|
|
5921
|
-
|
|
5922
|
+
_iterator.e(err);
|
|
5922
5923
|
} finally {
|
|
5923
|
-
|
|
5924
|
+
_iterator.f();
|
|
5924
5925
|
}
|
|
5925
5926
|
}
|
|
5926
5927
|
};
|
|
@@ -5938,19 +5939,37 @@ module.exports = {
|
|
|
5938
5939
|
|
|
5939
5940
|
|
|
5940
5941
|
|
|
5942
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
5943
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5944
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5941
5945
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
5942
|
-
addError = _require.addError
|
|
5943
|
-
|
|
5946
|
+
addError = _require.addError;
|
|
5947
|
+
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
5948
|
+
filterByTypes = _require2.filterByTypes;
|
|
5944
5949
|
module.exports = {
|
|
5945
5950
|
"names": ["MD045", "no-alt-text"],
|
|
5946
5951
|
"description": "Images should have alternate text (alt text)",
|
|
5947
5952
|
"tags": ["accessibility", "images"],
|
|
5948
5953
|
"function": function MD045(params, onError) {
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5954
|
+
var images = filterByTypes(params.parsers.micromark.tokens, ["image"]);
|
|
5955
|
+
var _iterator = _createForOfIteratorHelper(images),
|
|
5956
|
+
_step;
|
|
5957
|
+
try {
|
|
5958
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
5959
|
+
var image = _step.value;
|
|
5960
|
+
var labelTexts = filterByTypes(image.children, ["labelText"]);
|
|
5961
|
+
if (labelTexts.some(function (labelText) {
|
|
5962
|
+
return labelText.text.length === 0;
|
|
5963
|
+
})) {
|
|
5964
|
+
var range = image.startLine === image.endLine ? [image.startColumn, image.endColumn - image.startColumn] : undefined;
|
|
5965
|
+
addError(onError, image.startLine, undefined, undefined, range);
|
|
5966
|
+
}
|
|
5952
5967
|
}
|
|
5953
|
-
})
|
|
5968
|
+
} catch (err) {
|
|
5969
|
+
_iterator.e(err);
|
|
5970
|
+
} finally {
|
|
5971
|
+
_iterator.f();
|
|
5972
|
+
}
|
|
5954
5973
|
}
|
|
5955
5974
|
};
|
|
5956
5975
|
|
|
@@ -6106,14 +6125,18 @@ var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
|
6106
6125
|
addError = _require.addError,
|
|
6107
6126
|
emphasisOrStrongStyleFor = _require.emphasisOrStrongStyleFor;
|
|
6108
6127
|
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
6109
|
-
|
|
6128
|
+
filterByPredicate = _require2.filterByPredicate,
|
|
6110
6129
|
tokenIfType = _require2.tokenIfType;
|
|
6111
6130
|
var intrawordRe = /\w/;
|
|
6112
6131
|
var impl = function impl(params, onError, type, asterisk, underline) {
|
|
6113
6132
|
var style = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : "consistent";
|
|
6114
6133
|
var lines = params.lines,
|
|
6115
6134
|
parsers = params.parsers;
|
|
6116
|
-
var emphasisTokens =
|
|
6135
|
+
var emphasisTokens = filterByPredicate(parsers.micromark.tokens, function (token) {
|
|
6136
|
+
return token.type === type;
|
|
6137
|
+
}, function (token) {
|
|
6138
|
+
return token.type === "htmlFlow" ? [] : token.children;
|
|
6139
|
+
});
|
|
6117
6140
|
var _iterator = _createForOfIteratorHelper(emphasisTokens),
|
|
6118
6141
|
_step;
|
|
6119
6142
|
try {
|
|
@@ -6184,35 +6207,46 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
|
|
|
6184
6207
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
6185
6208
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6186
6209
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6210
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6211
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
6212
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
6187
6213
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6188
6214
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
6189
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6190
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
6191
6215
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
6192
6216
|
addError = _require.addError,
|
|
6193
|
-
addErrorDetailIf = _require.addErrorDetailIf
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
|
|
6197
|
-
|
|
6198
|
-
htmlElementRe = _require.htmlElementRe;
|
|
6217
|
+
addErrorDetailIf = _require.addErrorDetailIf;
|
|
6218
|
+
var _require2 = __webpack_require__(/*! ../helpers/micromark.cjs */ "../helpers/micromark.cjs"),
|
|
6219
|
+
filterByPredicate = _require2.filterByPredicate,
|
|
6220
|
+
filterByTypes = _require2.filterByTypes,
|
|
6221
|
+
getHtmlTagInfo = _require2.getHtmlTagInfo;
|
|
6199
6222
|
|
|
6200
6223
|
// Regular expression for identifying HTML anchor names
|
|
6201
6224
|
var idRe = /[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]id[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*=[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*["']?((?:(?![\t-\r "'>\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uD800-\uDFFF\uFEFF])[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])+)/i;
|
|
6202
6225
|
var nameRe = /[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]name[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*=[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*["']?((?:(?![\t-\r "'>\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uD800-\uDFFF\uFEFF])[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])+)/i;
|
|
6226
|
+
var anchorRe = /\{(#[0-9a-z]+(?:[\x2D_][0-9a-z]+)*)\}/g;
|
|
6227
|
+
|
|
6228
|
+
// Sets for filtering heading tokens during conversion
|
|
6229
|
+
var childrenExclude = new Set(["image", "reference", "resource"]);
|
|
6230
|
+
var tokensInclude = new Set(["codeTextData", "data"]);
|
|
6231
|
+
|
|
6232
|
+
/**
|
|
6233
|
+
* @typedef {import("../helpers/micromark.cjs").Token} Token
|
|
6234
|
+
*/
|
|
6203
6235
|
|
|
6204
6236
|
/**
|
|
6205
6237
|
* Converts a Markdown heading into an HTML fragment according to the rules
|
|
6206
6238
|
* used by GitHub.
|
|
6207
6239
|
*
|
|
6208
|
-
* @param {
|
|
6240
|
+
* @param {Token} headingText Heading text token.
|
|
6209
6241
|
* @returns {string} Fragment string for heading.
|
|
6210
6242
|
*/
|
|
6211
|
-
function convertHeadingToHTMLFragment(
|
|
6212
|
-
var inlineText =
|
|
6213
|
-
return token.type
|
|
6243
|
+
function convertHeadingToHTMLFragment(headingText) {
|
|
6244
|
+
var inlineText = filterByPredicate(headingText.children, function (token) {
|
|
6245
|
+
return tokensInclude.has(token.type);
|
|
6246
|
+
}, function (token) {
|
|
6247
|
+
return childrenExclude.has(token.type) ? [] : token.children;
|
|
6214
6248
|
}).map(function (token) {
|
|
6215
|
-
return token.
|
|
6249
|
+
return token.text;
|
|
6216
6250
|
}).join("");
|
|
6217
6251
|
return "#" + encodeURIComponent(inlineText.toLowerCase()
|
|
6218
6252
|
// RegExp source with Ruby's \p{Word} expanded into its General Categories
|
|
@@ -6221,77 +6255,141 @@ function convertHeadingToHTMLFragment(inline) {
|
|
|
6221
6255
|
// https://ruby-doc.org/core-3.0.2/Regexp.html
|
|
6222
6256
|
.replace(/(?:[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u086F\u0888\u088F-\u0897\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2\u09F3\u09FA\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF3-\u0BFF\u0C0D\u0C11\u0C29\u0C3A\u0C3B\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDC\u0CDF\u0CE4\u0CE5\u0CF0\u0CF4-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D64\u0D65\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u1368\u137D-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1716-\u171E\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u17EF\u17FA-\u180A\u180E\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1ACF-\u1AFF\u1B4D-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u206F\u2072\u2073\u207A-\u207E\u208A-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A-\u245F\u249C-\u24E9\u2500-\u2775\u2794-\u2BFF\u2CE5-\u2CEA\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u3191\u3196-\u319F\u31C0-\u31EF\u3200-\u321F\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA828-\uA82B\uA82D-\uA82F\uA836-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD3F\uDD79-\uDD89\uDD8C-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC77\uDC78\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEC8\uDEE7-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFC\uDF28-\uDF2F\uDF55-\uDF6F\uDF86-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC51\uDC76-\uDC7E\uDCBB-\uDCC1\uDCC3-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE38-\uDE3D\uDE42-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3C-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC6D-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDEFF\uDF11\uDF3B-\uDF3D\uDF43-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFD5-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD83D\uD83F\uD87B-\uD87D\uD87F\uD889-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC3F\uDC56-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE97-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD833[\uDC00-\uDEFF\uDF2E\uDF2F\uDF47-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDEBF\uDED4-\uDEDF\uDEF4-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDC2F\uDC6E-\uDC8E\uDC90-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDE8F\uDEAF-\uDEBF\uDEFA-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCFA-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCAC\uDCB0\uDCB5-\uDD00\uDD2E\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g, "").replace(/ /g, "-"));
|
|
6223
6257
|
}
|
|
6258
|
+
|
|
6259
|
+
/**
|
|
6260
|
+
* Unescapes the text of a String-type micromark Token.
|
|
6261
|
+
*
|
|
6262
|
+
* @param {Token} token String-type micromark Token.
|
|
6263
|
+
* @returns {string} Unescaped token text.
|
|
6264
|
+
*/
|
|
6265
|
+
function unescapeStringTokenText(token) {
|
|
6266
|
+
return filterByTypes(token.children, ["characterEscapeValue", "data"]).map(function (child) {
|
|
6267
|
+
return child.text;
|
|
6268
|
+
}).join("");
|
|
6269
|
+
}
|
|
6224
6270
|
module.exports = {
|
|
6225
6271
|
"names": ["MD051", "link-fragments"],
|
|
6226
6272
|
"description": "Link fragments should be valid",
|
|
6227
6273
|
"tags": ["links"],
|
|
6228
6274
|
"function": function MD051(params, onError) {
|
|
6275
|
+
var tokens = params.parsers.micromark.tokens;
|
|
6229
6276
|
var fragments = new Map();
|
|
6277
|
+
|
|
6230
6278
|
// Process headings
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6279
|
+
var headingTexts = filterByTypes(tokens, ["atxHeadingText", "setextHeadingText"]);
|
|
6280
|
+
var _iterator = _createForOfIteratorHelper(headingTexts),
|
|
6281
|
+
_step;
|
|
6282
|
+
try {
|
|
6283
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
6284
|
+
var headingText = _step.value;
|
|
6285
|
+
var fragment = convertHeadingToHTMLFragment(headingText);
|
|
6286
|
+
if (fragment !== "#") {
|
|
6287
|
+
var count = fragments.get(fragment) || 0;
|
|
6288
|
+
if (count) {
|
|
6289
|
+
fragments.set("".concat(fragment, "-").concat(count), 0);
|
|
6290
|
+
}
|
|
6291
|
+
fragments.set(fragment, count + 1);
|
|
6292
|
+
var match = null;
|
|
6293
|
+
while ((match = anchorRe.exec(headingText.text)) !== null) {
|
|
6294
|
+
var _match = match,
|
|
6295
|
+
_match2 = _slicedToArray(_match, 2),
|
|
6296
|
+
anchor = _match2[1];
|
|
6297
|
+
if (!fragments.has(anchor)) {
|
|
6298
|
+
fragments.set(anchor, 1);
|
|
6299
|
+
}
|
|
6300
|
+
}
|
|
6250
6301
|
}
|
|
6251
6302
|
}
|
|
6252
|
-
|
|
6253
|
-
|
|
6254
|
-
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6262
|
-
|
|
6263
|
-
|
|
6264
|
-
|
|
6265
|
-
|
|
6266
|
-
|
|
6267
|
-
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
var _match3 = _slicedToArray(match, 1);
|
|
6271
|
-
context = _match3[0];
|
|
6272
|
-
var index = match.index;
|
|
6273
|
-
var length = context.length;
|
|
6274
|
-
range = [index + 1, length];
|
|
6275
|
-
fixInfo = {
|
|
6276
|
-
"editColumn": index + (length - id.length),
|
|
6277
|
-
"deleteCount": id.length,
|
|
6278
|
-
"insertText": null
|
|
6279
|
-
};
|
|
6303
|
+
|
|
6304
|
+
// Process HTML anchors
|
|
6305
|
+
} catch (err) {
|
|
6306
|
+
_iterator.e(err);
|
|
6307
|
+
} finally {
|
|
6308
|
+
_iterator.f();
|
|
6309
|
+
}
|
|
6310
|
+
var _iterator2 = _createForOfIteratorHelper(filterByTypes(tokens, ["htmlText"])),
|
|
6311
|
+
_step2;
|
|
6312
|
+
try {
|
|
6313
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
6314
|
+
var token = _step2.value;
|
|
6315
|
+
var htmlTagInfo = getHtmlTagInfo(token);
|
|
6316
|
+
if (htmlTagInfo && !htmlTagInfo.close) {
|
|
6317
|
+
var anchorMatch = idRe.exec(token.text) || htmlTagInfo.name.toLowerCase() === "a" && nameRe.exec(token.text);
|
|
6318
|
+
if (anchorMatch) {
|
|
6319
|
+
fragments.set("#".concat(anchorMatch[1]), 0);
|
|
6320
|
+
}
|
|
6280
6321
|
}
|
|
6281
|
-
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6322
|
+
}
|
|
6323
|
+
|
|
6324
|
+
// Process link and definition fragments
|
|
6325
|
+
} catch (err) {
|
|
6326
|
+
_iterator2.e(err);
|
|
6327
|
+
} finally {
|
|
6328
|
+
_iterator2.f();
|
|
6329
|
+
}
|
|
6330
|
+
var parentChilds = [["link", "resourceDestinationString"], ["definition", "definitionDestinationString"]];
|
|
6331
|
+
for (var _i = 0, _parentChilds = parentChilds; _i < _parentChilds.length; _i++) {
|
|
6332
|
+
var _parentChilds$_i = _slicedToArray(_parentChilds[_i], 2),
|
|
6333
|
+
parentType = _parentChilds$_i[0],
|
|
6334
|
+
definitionType = _parentChilds$_i[1];
|
|
6335
|
+
var links = filterByTypes(tokens, [parentType]);
|
|
6336
|
+
var _iterator3 = _createForOfIteratorHelper(links),
|
|
6337
|
+
_step3;
|
|
6338
|
+
try {
|
|
6339
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
6340
|
+
var link = _step3.value;
|
|
6341
|
+
var definitions = filterByTypes(link.children, [definitionType]);
|
|
6342
|
+
var _iterator4 = _createForOfIteratorHelper(definitions),
|
|
6343
|
+
_step4;
|
|
6344
|
+
try {
|
|
6345
|
+
var _loop = function _loop() {
|
|
6346
|
+
var definition = _step4.value;
|
|
6347
|
+
var endColumn = definition.endColumn,
|
|
6348
|
+
startColumn = definition.startColumn;
|
|
6349
|
+
var text = unescapeStringTokenText(definition);
|
|
6350
|
+
if (text.length > 1 && text.startsWith("#") && !fragments.has(text) && !fragments.has("#".concat(encodeURIComponent(text.slice(1))))) {
|
|
6351
|
+
// eslint-disable-next-line no-undef-init
|
|
6352
|
+
var context = undefined;
|
|
6353
|
+
// eslint-disable-next-line no-undef-init
|
|
6354
|
+
var range = undefined;
|
|
6355
|
+
// eslint-disable-next-line no-undef-init
|
|
6356
|
+
var fixInfo = undefined;
|
|
6357
|
+
if (link.startLine === link.endLine) {
|
|
6358
|
+
context = link.text;
|
|
6359
|
+
range = [link.startColumn, link.endColumn - link.startColumn];
|
|
6360
|
+
fixInfo = {
|
|
6361
|
+
"editColumn": startColumn,
|
|
6362
|
+
"deleteCount": endColumn - startColumn
|
|
6363
|
+
};
|
|
6364
|
+
}
|
|
6365
|
+
var textLower = text.toLowerCase();
|
|
6366
|
+
var mixedCaseKey = _toConsumableArray(fragments.keys()).find(function (key) {
|
|
6367
|
+
return textLower === key.toLowerCase();
|
|
6368
|
+
});
|
|
6369
|
+
if (mixedCaseKey) {
|
|
6370
|
+
// @ts-ignore
|
|
6371
|
+
(fixInfo || {}).insertText = mixedCaseKey;
|
|
6372
|
+
addErrorDetailIf(onError, link.startLine, mixedCaseKey, text, undefined, context, range, fixInfo);
|
|
6373
|
+
} else {
|
|
6374
|
+
addError(onError, link.startLine, undefined, context, range);
|
|
6375
|
+
}
|
|
6376
|
+
}
|
|
6377
|
+
};
|
|
6378
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
6379
|
+
_loop();
|
|
6380
|
+
}
|
|
6381
|
+
} catch (err) {
|
|
6382
|
+
_iterator4.e(err);
|
|
6383
|
+
} finally {
|
|
6384
|
+
_iterator4.f();
|
|
6385
|
+
}
|
|
6292
6386
|
}
|
|
6387
|
+
} catch (err) {
|
|
6388
|
+
_iterator3.e(err);
|
|
6389
|
+
} finally {
|
|
6390
|
+
_iterator3.f();
|
|
6293
6391
|
}
|
|
6294
|
-
}
|
|
6392
|
+
}
|
|
6295
6393
|
}
|
|
6296
6394
|
};
|
|
6297
6395
|
|
|
@@ -6310,10 +6408,14 @@ module.exports = {
|
|
|
6310
6408
|
|
|
6311
6409
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6312
6410
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6313
|
-
function _iterableToArrayLimit(
|
|
6411
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6314
6412
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
6315
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
6413
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
6414
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6415
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6316
6416
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6417
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6418
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
6317
6419
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
6318
6420
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|
|
6319
6421
|
addError = _require.addError;
|
|
@@ -6324,12 +6426,16 @@ module.exports = {
|
|
|
6324
6426
|
"description": "Reference links and images should use a label that is defined",
|
|
6325
6427
|
"tags": ["images", "links"],
|
|
6326
6428
|
"function": function MD052(params, onError) {
|
|
6327
|
-
var
|
|
6429
|
+
var config = params.config,
|
|
6430
|
+
lines = params.lines;
|
|
6431
|
+
var shortcutSyntax = config.shortcut_syntax || false;
|
|
6328
6432
|
var _referenceLinkImageDa = referenceLinkImageData(),
|
|
6433
|
+
definitions = _referenceLinkImageDa.definitions,
|
|
6329
6434
|
references = _referenceLinkImageDa.references,
|
|
6330
|
-
|
|
6435
|
+
shortcuts = _referenceLinkImageDa.shortcuts;
|
|
6436
|
+
var entries = shortcutSyntax ? [].concat(_toConsumableArray(references.entries()), _toConsumableArray(shortcuts.entries())) : references.entries();
|
|
6331
6437
|
// Look for links/images that use an undefined link reference
|
|
6332
|
-
var _iterator = _createForOfIteratorHelper(
|
|
6438
|
+
var _iterator = _createForOfIteratorHelper(entries),
|
|
6333
6439
|
_step;
|
|
6334
6440
|
try {
|
|
6335
6441
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -6381,9 +6487,9 @@ module.exports = {
|
|
|
6381
6487
|
|
|
6382
6488
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6383
6489
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6384
|
-
function _iterableToArrayLimit(
|
|
6490
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6385
6491
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
6386
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
6492
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
6387
6493
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6388
6494
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
6389
6495
|
var _require = __webpack_require__(/*! ../helpers */ "../helpers/helpers.js"),
|