diff --git a/tools/lint-md/lint-md.mjs b/tools/lint-md/lint-md.mjs
index f768c6cf3c4fec..3f433622517c4c 100644
--- a/tools/lint-md/lint-md.mjs
+++ b/tools/lint-md/lint-md.mjs
@@ -105,7 +105,7 @@ var extend$1 = function extend() {
};
var extend$2 = getDefaultExportFromCjs(extend$1);
-function ok$B() {}
+function ok$1() {}
function isPlainObject(value) {
if (typeof value !== 'object' || value === null) {
@@ -195,32 +195,32 @@ function wrap(middleware, callback) {
}
}
-function stringifyPosition$2(value) {
+function stringifyPosition(value) {
if (!value || typeof value !== 'object') {
return ''
}
if ('position' in value || 'type' in value) {
- return position$2(value.position)
+ return position$1(value.position)
}
if ('start' in value || 'end' in value) {
- return position$2(value)
+ return position$1(value)
}
if ('line' in value || 'column' in value) {
- return point$4(value)
+ return point$2(value)
}
return ''
}
-function point$4(point) {
- return index$2(point && point.line) + ':' + index$2(point && point.column)
+function point$2(point) {
+ return index(point && point.line) + ':' + index(point && point.column)
}
-function position$2(pos) {
- return point$4(pos && pos.start) + '-' + point$4(pos && pos.end)
+function position$1(pos) {
+ return point$2(pos && pos.start) + '-' + point$2(pos && pos.end)
}
-function index$2(value) {
+function index(value) {
return value && typeof value === 'number' ? value : 1
}
-let VFileMessage$1 = class VFileMessage extends Error {
+class VFileMessage extends Error {
constructor(causeOrReason, optionsOrParentOrPlace, origin) {
super();
if (typeof optionsOrParentOrPlace === 'string') {
@@ -287,7 +287,7 @@ let VFileMessage$1 = class VFileMessage extends Error {
this.file;
this.message = reason;
this.line = start ? start.line : undefined;
- this.name = stringifyPosition$2(options.place) || '1:1';
+ this.name = stringifyPosition(options.place) || '1:1';
this.place = options.place || undefined;
this.reason = this.message;
this.ruleId = options.ruleId || undefined;
@@ -301,22 +301,22 @@ let VFileMessage$1 = class VFileMessage extends Error {
this.note;
this.url;
}
-};
-VFileMessage$1.prototype.file = '';
-VFileMessage$1.prototype.name = '';
-VFileMessage$1.prototype.reason = '';
-VFileMessage$1.prototype.message = '';
-VFileMessage$1.prototype.stack = '';
-VFileMessage$1.prototype.column = undefined;
-VFileMessage$1.prototype.line = undefined;
-VFileMessage$1.prototype.ancestors = undefined;
-VFileMessage$1.prototype.cause = undefined;
-VFileMessage$1.prototype.fatal = undefined;
-VFileMessage$1.prototype.place = undefined;
-VFileMessage$1.prototype.ruleId = undefined;
-VFileMessage$1.prototype.source = undefined;
+}
+VFileMessage.prototype.file = '';
+VFileMessage.prototype.name = '';
+VFileMessage.prototype.reason = '';
+VFileMessage.prototype.message = '';
+VFileMessage.prototype.stack = '';
+VFileMessage.prototype.column = undefined;
+VFileMessage.prototype.line = undefined;
+VFileMessage.prototype.ancestors = undefined;
+VFileMessage.prototype.cause = undefined;
+VFileMessage.prototype.fatal = undefined;
+VFileMessage.prototype.place = undefined;
+VFileMessage.prototype.ruleId = undefined;
+VFileMessage.prototype.source = undefined;
-function isUrl$1(fileUrlOrPath) {
+function isUrl(fileUrlOrPath) {
return Boolean(
fileUrlOrPath !== null &&
typeof fileUrlOrPath === 'object' &&
@@ -328,7 +328,7 @@ function isUrl$1(fileUrlOrPath) {
)
}
-const order$1 = ([
+const order = ([
'history',
'path',
'basename',
@@ -336,14 +336,14 @@ const order$1 = ([
'extname',
'dirname'
]);
-let VFile$1 = class VFile {
+class VFile {
constructor(value) {
let options;
if (!value) {
options = {};
- } else if (isUrl$1(value)) {
+ } else if (isUrl(value)) {
options = {path: value};
- } else if (typeof value === 'string' || isUint8Array$3(value)) {
+ } else if (typeof value === 'string' || isUint8Array$2(value)) {
options = {value};
} else {
options = value;
@@ -357,8 +357,8 @@ let VFile$1 = class VFile {
this.result;
this.stored;
let index = -1;
- while (++index < order$1.length) {
- const prop = order$1[index];
+ while (++index < order.length) {
+ const prop = order[index];
if (
prop in options &&
options[prop] !== undefined &&
@@ -369,7 +369,7 @@ let VFile$1 = class VFile {
}
let prop;
for (prop in options) {
- if (!order$1.includes(prop)) {
+ if (!order.includes(prop)) {
this[prop] = options[prop];
}
}
@@ -378,23 +378,23 @@ let VFile$1 = class VFile {
return typeof this.path === 'string' ? path$1.basename(this.path) : undefined
}
set basename(basename) {
- assertNonEmpty$1(basename, 'basename');
- assertPart$1(basename, 'basename');
+ assertNonEmpty(basename, 'basename');
+ assertPart(basename, 'basename');
this.path = path$1.join(this.dirname || '', basename);
}
get dirname() {
return typeof this.path === 'string' ? path$1.dirname(this.path) : undefined
}
set dirname(dirname) {
- assertPath$1(this.basename, 'dirname');
+ assertPath(this.basename, 'dirname');
this.path = path$1.join(dirname || '', this.basename);
}
get extname() {
return typeof this.path === 'string' ? path$1.extname(this.path) : undefined
}
set extname(extname) {
- assertPart$1(extname, 'extname');
- assertPath$1(this.dirname, 'extname');
+ assertPart(extname, 'extname');
+ assertPath(this.dirname, 'extname');
if (extname) {
if (extname.codePointAt(0) !== 46 ) {
throw new Error('`extname` must start with `.`')
@@ -409,10 +409,10 @@ let VFile$1 = class VFile {
return this.history[this.history.length - 1]
}
set path(path) {
- if (isUrl$1(path)) {
+ if (isUrl(path)) {
path = fileURLToPath(path);
}
- assertNonEmpty$1(path, 'path');
+ assertNonEmpty(path, 'path');
if (this.path !== path) {
this.history.push(path);
}
@@ -423,8 +423,8 @@ let VFile$1 = class VFile {
: undefined
}
set stem(stem) {
- assertNonEmpty$1(stem, 'stem');
- assertPart$1(stem, 'stem');
+ assertNonEmpty(stem, 'stem');
+ assertPart(stem, 'stem');
this.path = path$1.join(this.dirname || '', stem + (this.extname || ''));
}
fail(causeOrReason, optionsOrParentOrPlace, origin) {
@@ -438,7 +438,7 @@ let VFile$1 = class VFile {
return message
}
message(causeOrReason, optionsOrParentOrPlace, origin) {
- const message = new VFileMessage$1(
+ const message = new VFileMessage(
causeOrReason,
optionsOrParentOrPlace,
origin
@@ -461,25 +461,25 @@ let VFile$1 = class VFile {
const decoder = new TextDecoder(encoding || undefined);
return decoder.decode(this.value)
}
-};
-function assertPart$1(part, name) {
+}
+function assertPart(part, name) {
if (part && part.includes(path$1.sep)) {
throw new Error(
'`' + name + '` cannot be a path: did not expect `' + path$1.sep + '`'
)
}
}
-function assertNonEmpty$1(part, name) {
+function assertNonEmpty(part, name) {
if (!part) {
throw new Error('`' + name + '` cannot be empty')
}
}
-function assertPath$1(path, name) {
+function assertPath(path, name) {
if (!path) {
throw new Error('Setting `' + name + '` requires `path` to be set too')
}
}
-function isUint8Array$3(value) {
+function isUint8Array$2(value) {
return Boolean(
value &&
typeof value === 'object' &&
@@ -512,7 +512,7 @@ const CallableInstance =
)
);
-const own$6 = {}.hasOwnProperty;
+const own$5 = {}.hasOwnProperty;
class Processor extends CallableInstance {
constructor() {
super('copy');
@@ -546,7 +546,7 @@ class Processor extends CallableInstance {
this.namespace[key] = value;
return this
}
- return (own$6.call(this.namespace, key) && this.namespace[key]) || undefined
+ return (own$5.call(this.namespace, key) && this.namespace[key]) || undefined
}
if (key) {
assertUnfrozen('data', this.frozen);
@@ -794,7 +794,7 @@ function assertDone(name, asyncName, complete) {
}
}
function vfile(value) {
- return looksLikeAVFile$1(value) ? value : new VFile$1(value)
+ return looksLikeAVFile$1(value) ? value : new VFile(value)
}
function looksLikeAVFile$1(value) {
return Boolean(
@@ -805,9 +805,9 @@ function looksLikeAVFile$1(value) {
)
}
function looksLikeAValue(value) {
- return typeof value === 'string' || isUint8Array$2(value)
+ return typeof value === 'string' || isUint8Array$1(value)
}
-function isUint8Array$2(value) {
+function isUint8Array$1(value) {
return Boolean(
value &&
typeof value === 'object' &&
@@ -816,19 +816,19 @@ function isUint8Array$2(value) {
)
}
-const emptyOptions$3 = {};
-function toString$2(value, options) {
- const settings = options || emptyOptions$3;
+const emptyOptions$2 = {};
+function toString(value, options) {
+ const settings = options || emptyOptions$2;
const includeImageAlt =
typeof settings.includeImageAlt === 'boolean'
? settings.includeImageAlt
: true;
const includeHtml =
typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true;
- return one$2(value, includeImageAlt, includeHtml)
+ return one(value, includeImageAlt, includeHtml)
}
-function one$2(value, includeImageAlt, includeHtml) {
- if (node$2(value)) {
+function one(value, includeImageAlt, includeHtml) {
+ if (node(value)) {
if ('value' in value) {
return value.type === 'html' && !includeHtml ? '' : value.value
}
@@ -836,23 +836,23 @@ function one$2(value, includeImageAlt, includeHtml) {
return value.alt
}
if ('children' in value) {
- return all$2(value.children, includeImageAlt, includeHtml)
+ return all(value.children, includeImageAlt, includeHtml)
}
}
if (Array.isArray(value)) {
- return all$2(value, includeImageAlt, includeHtml)
+ return all(value, includeImageAlt, includeHtml)
}
return ''
}
-function all$2(values, includeImageAlt, includeHtml) {
+function all(values, includeImageAlt, includeHtml) {
const result = [];
let index = -1;
while (++index < values.length) {
- result[index] = one$2(values[index], includeImageAlt, includeHtml);
+ result[index] = one(values[index], includeImageAlt, includeHtml);
}
return result.join('')
}
-function node$2(value) {
+function node(value) {
return Boolean(value && typeof value === 'object')
}
@@ -2984,9 +2984,9 @@ const characterEntities = {
zwnj: ''
};
-const own$5 = {}.hasOwnProperty;
+const own$4 = {}.hasOwnProperty;
function decodeNamedCharacterReference(value) {
- return own$5.call(characterEntities, value) ? characterEntities[value] : false
+ return own$4.call(characterEntities, value) ? characterEntities[value] : false
}
function splice(list, start, remove, items) {
@@ -3073,7 +3073,7 @@ function decodeNumericCharacterReference(value, base) {
return String.fromCodePoint(code);
}
-function normalizeIdentifier$1(value) {
+function normalizeIdentifier(value) {
return (
value
.replace(/[\t\n\r ]+/g, ' ')
@@ -4262,7 +4262,86 @@ function tokenizeCodeText(effects, ok, nok) {
}
}
-function subtokenize(events) {
+class SpliceBuffer {
+ constructor(initial) {
+ this.left = initial ? [...initial] : [];
+ this.right = [];
+ }
+ get(index) {
+ if (index < 0 || index >= this.left.length + this.right.length) {
+ throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');
+ }
+ if (index < this.left.length) return this.left[index];
+ return this.right[this.right.length - index + this.left.length - 1];
+ }
+ get length() {
+ return this.left.length + this.right.length;
+ }
+ shift() {
+ this.setCursor(0);
+ return this.right.pop();
+ }
+ slice(start, end) {
+ const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;
+ if (stop < this.left.length) {
+ return this.left.slice(start, stop);
+ }
+ if (start > this.left.length) {
+ return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();
+ }
+ return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());
+ }
+ splice(start, deleteCount, items) {
+ const count = deleteCount || 0;
+ this.setCursor(Math.trunc(start));
+ const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);
+ if (items) chunkedPush(this.left, items);
+ return removed.reverse();
+ }
+ pop() {
+ this.setCursor(Number.POSITIVE_INFINITY);
+ return this.left.pop();
+ }
+ push(item) {
+ this.setCursor(Number.POSITIVE_INFINITY);
+ this.left.push(item);
+ }
+ pushMany(items) {
+ this.setCursor(Number.POSITIVE_INFINITY);
+ chunkedPush(this.left, items);
+ }
+ unshift(item) {
+ this.setCursor(0);
+ this.right.push(item);
+ }
+ unshiftMany(items) {
+ this.setCursor(0);
+ chunkedPush(this.right, items.reverse());
+ }
+ setCursor(n) {
+ if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;
+ if (n < this.left.length) {
+ const removed = this.left.splice(n, Number.POSITIVE_INFINITY);
+ chunkedPush(this.right, removed.reverse());
+ } else {
+ const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);
+ chunkedPush(this.left, removed.reverse());
+ }
+ }
+}
+function chunkedPush(list, right) {
+ let chunkStart = 0;
+ if (right.length < 10000) {
+ list.push(...right);
+ } else {
+ while (chunkStart < right.length) {
+ list.push(...right.slice(chunkStart, chunkStart + 10000));
+ chunkStart += 10000;
+ }
+ }
+}
+
+function subtokenize(eventsArray) {
const jumps = {};
let index = -1;
let event;
@@ -4272,33 +4351,24 @@ function subtokenize(events) {
let parameters;
let subevents;
let more;
+ const events = new SpliceBuffer(eventsArray);
while (++index < events.length) {
while (index in jumps) {
index = jumps[index];
}
- event = events[index];
- if (
- index &&
- event[1].type === 'chunkFlow' &&
- events[index - 1][1].type === 'listItemPrefix'
- ) {
+ event = events.get(index);
+ if (index && event[1].type === "chunkFlow" && events.get(index - 1)[1].type === "listItemPrefix") {
subevents = event[1]._tokenizer.events;
otherIndex = 0;
- if (
- otherIndex < subevents.length &&
- subevents[otherIndex][1].type === 'lineEndingBlank'
- ) {
+ if (otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank") {
otherIndex += 2;
}
- if (
- otherIndex < subevents.length &&
- subevents[otherIndex][1].type === 'content'
- ) {
+ if (otherIndex < subevents.length && subevents[otherIndex][1].type === "content") {
while (++otherIndex < subevents.length) {
- if (subevents[otherIndex][1].type === 'content') {
- break
+ if (subevents[otherIndex][1].type === "content") {
+ break;
}
- if (subevents[otherIndex][1].type === 'chunkText') {
+ if (subevents[otherIndex][1].type === "chunkText") {
subevents[otherIndex][1]._isInFirstContentOfListItem = true;
otherIndex++;
}
@@ -4316,39 +4386,36 @@ function subtokenize(events) {
otherIndex = index;
lineIndex = undefined;
while (otherIndex--) {
- otherEvent = events[otherIndex];
- if (
- otherEvent[1].type === 'lineEnding' ||
- otherEvent[1].type === 'lineEndingBlank'
- ) {
+ otherEvent = events.get(otherIndex);
+ if (otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank") {
if (otherEvent[0] === 'enter') {
if (lineIndex) {
- events[lineIndex][1].type = 'lineEndingBlank';
+ events.get(lineIndex)[1].type = "lineEndingBlank";
}
- otherEvent[1].type = 'lineEnding';
+ otherEvent[1].type = "lineEnding";
lineIndex = otherIndex;
}
} else {
- break
+ break;
}
}
if (lineIndex) {
- event[1].end = Object.assign({}, events[lineIndex][1].start);
+ event[1].end = Object.assign({}, events.get(lineIndex)[1].start);
parameters = events.slice(lineIndex, index);
parameters.unshift(event);
- splice(events, lineIndex, index - lineIndex + 1, parameters);
+ events.splice(lineIndex, index - lineIndex + 1, parameters);
}
}
}
- return !more
+ splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));
+ return !more;
}
function subcontent(events, eventIndex) {
- const token = events[eventIndex][1];
- const context = events[eventIndex][2];
+ const token = events.get(eventIndex)[1];
+ const context = events.get(eventIndex)[2];
let startPosition = eventIndex - 1;
const startPositions = [];
- const tokenizer =
- token._tokenizer || context.parser[token.contentType](token.start);
+ const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);
const childEvents = tokenizer.events;
const jumps = [];
const gaps = {};
@@ -4360,7 +4427,7 @@ function subcontent(events, eventIndex) {
let start = 0;
const breaks = [start];
while (current) {
- while (events[++startPosition][1] !== current) {
+ while (events.get(++startPosition)[1] !== current) {
}
startPositions.push(startPosition);
if (!current._tokenizer) {
@@ -4385,11 +4452,7 @@ function subcontent(events, eventIndex) {
current = token;
while (++index < childEvents.length) {
if (
- childEvents[index][0] === 'exit' &&
- childEvents[index - 1][0] === 'enter' &&
- childEvents[index][1].type === childEvents[index - 1][1].type &&
- childEvents[index][1].start.line !== childEvents[index][1].end.line
- ) {
+ childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {
start = index + 1;
breaks.push(start);
current._tokenizer = undefined;
@@ -4408,15 +4471,16 @@ function subcontent(events, eventIndex) {
while (index--) {
const slice = childEvents.slice(breaks[index], breaks[index + 1]);
const start = startPositions.pop();
- jumps.unshift([start, start + slice.length - 1]);
- splice(events, start, 2, slice);
+ jumps.push([start, start + slice.length - 1]);
+ events.splice(start, 2, slice);
}
+ jumps.reverse();
index = -1;
while (++index < jumps.length) {
gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];
adjust += jumps[index][1] - jumps[index][0] - 1;
}
- return gaps
+ return gaps;
}
const content = {
@@ -4782,7 +4846,7 @@ function tokenizeDefinition(effects, ok, nok) {
)(code)
}
function labelAfter(code) {
- identifier = normalizeIdentifier$1(
+ identifier = normalizeIdentifier(
self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
);
if (code === 58) {
@@ -5927,7 +5991,7 @@ function tokenizeLabelEnd(effects, ok, nok) {
return labelEndNok(code)
}
defined = self.parser.defined.includes(
- normalizeIdentifier$1(
+ normalizeIdentifier(
self.sliceSerialize({
start: labelStart.end,
end: self.now()
@@ -6056,7 +6120,7 @@ function tokenizeReferenceFull(effects, ok, nok) {
}
function referenceFullAfter(code) {
return self.parser.defined.includes(
- normalizeIdentifier$1(
+ normalizeIdentifier(
self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
)
)
@@ -7059,7 +7123,7 @@ var defaultConstructs = /*#__PURE__*/Object.freeze({
text: text$2
});
-function parse$1(options) {
+function parse$2(options) {
const settings = options || {};
const constructs =
combineExtensions([defaultConstructs, ...(settings.extensions || [])]);
@@ -7088,7 +7152,7 @@ function postprocess(events) {
return events
}
-const search = /[\0\t\n\r]/g;
+const search$1 = /[\0\t\n\r]/g;
function preprocess() {
let column = 1;
let buffer = '';
@@ -7116,8 +7180,8 @@ function preprocess() {
start = undefined;
}
while (startPosition < value.length) {
- search.lastIndex = startPosition;
- match = search.exec(value);
+ search$1.lastIndex = startPosition;
+ match = search$1.exec(value);
endPosition =
match && match.index !== undefined ? match.index : value.length;
code = value.charCodeAt(endPosition);
@@ -7189,7 +7253,7 @@ function decode($0, $1, $2) {
return decodeNamedCharacterReference($2) || $0
}
-const own$4 = {}.hasOwnProperty;
+const own$3 = {}.hasOwnProperty;
function fromMarkdown(value, encoding, options) {
if (typeof encoding !== 'string') {
options = encoding;
@@ -7197,7 +7261,7 @@ function fromMarkdown(value, encoding, options) {
}
return compiler(options)(
postprocess(
- parse$1(options).document().write(preprocess()(value, encoding, true))
+ parse$2(options).document().write(preprocess()(value, encoding, true))
)
)
}
@@ -7335,7 +7399,7 @@ function compiler(options) {
index = -1;
while (++index < events.length) {
const handler = config[events[index][0]];
- if (own$4.call(handler, events[index][1].type)) {
+ if (own$3.call(handler, events[index][1].type)) {
handler[events[index][1].type].call(
Object.assign(
{
@@ -7353,7 +7417,7 @@ function compiler(options) {
handler.call(context, undefined, tail[0]);
}
tree.position = {
- start: point$3(
+ start: point$1(
events.length > 0
? events[0][1].start
: {
@@ -7362,7 +7426,7 @@ function compiler(options) {
offset: 0
}
),
- end: point$3(
+ end: point$1(
events.length > 0
? events[events.length - 2][1].end
: {
@@ -7513,7 +7577,7 @@ function compiler(options) {
this.stack.push(node);
this.tokenStack.push([token, errorHandler]);
node.position = {
- start: point$3(token.start),
+ start: point$1(token.start),
end: undefined
};
}
@@ -7532,7 +7596,7 @@ function compiler(options) {
'Cannot close `' +
token.type +
'` (' +
- stringifyPosition$2({
+ stringifyPosition({
start: token.start,
end: token.end
}) +
@@ -7546,10 +7610,10 @@ function compiler(options) {
handler.call(this, token, open[0]);
}
}
- node.position.end = point$3(token.end);
+ node.position.end = point$1(token.end);
}
function resume() {
- return toString$2(this.stack.pop())
+ return toString(this.stack.pop())
}
function onenterlistordered() {
this.data.expectingFirstListItemValue = true;
@@ -7591,7 +7655,7 @@ function compiler(options) {
const label = this.resume();
const node = this.stack[this.stack.length - 1];
node.label = label;
- node.identifier = normalizeIdentifier$1(
+ node.identifier = normalizeIdentifier(
this.sliceSerialize(token)
).toLowerCase();
}
@@ -7629,7 +7693,7 @@ function compiler(options) {
if (!tail || tail.type !== 'text') {
tail = text();
tail.position = {
- start: point$3(token.start),
+ start: point$1(token.start),
end: undefined
};
siblings.push(tail);
@@ -7639,13 +7703,13 @@ function compiler(options) {
function onexitdata(token) {
const tail = this.stack.pop();
tail.value += this.sliceSerialize(token);
- tail.position.end = point$3(token.end);
+ tail.position.end = point$1(token.end);
}
function onexitlineending(token) {
const context = this.stack[this.stack.length - 1];
if (this.data.atHardBreak) {
const tail = context.children[context.children.length - 1];
- tail.position.end = point$3(token.end);
+ tail.position.end = point$1(token.end);
this.data.atHardBreak = undefined;
return
}
@@ -7707,7 +7771,7 @@ function compiler(options) {
const string = this.sliceSerialize(token);
const ancestor = this.stack[this.stack.length - 2];
ancestor.label = decodeString(string);
- ancestor.identifier = normalizeIdentifier$1(string).toLowerCase();
+ ancestor.identifier = normalizeIdentifier(string).toLowerCase();
}
function onexitlabel() {
const fragment = this.stack[this.stack.length - 1];
@@ -7741,7 +7805,7 @@ function compiler(options) {
const label = this.resume();
const node = this.stack[this.stack.length - 1];
node.label = label;
- node.identifier = normalizeIdentifier$1(
+ node.identifier = normalizeIdentifier(
this.sliceSerialize(token)
).toLowerCase();
this.data.referenceType = 'full';
@@ -7765,7 +7829,7 @@ function compiler(options) {
}
const tail = this.stack.pop();
tail.value += value;
- tail.position.end = point$3(token.end);
+ tail.position.end = point$1(token.end);
}
function onexitautolinkprotocol(token) {
onexitdata.call(this, token);
@@ -7887,7 +7951,7 @@ function compiler(options) {
}
}
}
-function point$3(d) {
+function point$1(d) {
return {
line: d.line,
column: d.column,
@@ -7908,7 +7972,7 @@ function configure$1(combined, extensions) {
function extension(combined, extension) {
let key;
for (key in extension) {
- if (own$4.call(extension, key)) {
+ if (own$3.call(extension, key)) {
switch (key) {
case 'canContainEols': {
const right = extension[key];
@@ -7942,14 +8006,14 @@ function defaultOnError(left, right) {
'Cannot close `' +
left.type +
'` (' +
- stringifyPosition$2({
+ stringifyPosition({
start: left.start,
end: left.end
}) +
'): a different token (`' +
right.type +
'`, ' +
- stringifyPosition$2({
+ stringifyPosition({
start: right.start,
end: right.end
}) +
@@ -7960,7 +8024,7 @@ function defaultOnError(left, right) {
'Cannot close document, a token (`' +
right.type +
'`, ' +
- stringifyPosition$2({
+ stringifyPosition({
start: right.start,
end: right.end
}) +
@@ -7982,15 +8046,15 @@ function remarkParse(options) {
}
}
-const own$3 = {}.hasOwnProperty;
+const own$2 = {}.hasOwnProperty;
function zwitch(key, options) {
const settings = options || {};
function one(value, ...parameters) {
let fn = one.invalid;
const handlers = one.handlers;
- if (value && own$3.call(value, key)) {
+ if (value && own$2.call(value, key)) {
const id = String(value[key]);
- fn = own$3.call(handlers, id) ? handlers[id] : one.unknown;
+ fn = own$2.call(handlers, id) ? handlers[id] : one.unknown;
}
if (fn) {
return fn.call(this, value, ...parameters)
@@ -8002,7 +8066,7 @@ function zwitch(key, options) {
return one
}
-const own$2 = {}.hasOwnProperty;
+const own$1 = {}.hasOwnProperty;
function configure(base, extension) {
let index = -1;
let key;
@@ -8012,7 +8076,7 @@ function configure(base, extension) {
}
}
for (key in extension) {
- if (own$2.call(extension, key)) {
+ if (own$1.call(extension, key)) {
switch (key) {
case 'extensions': {
break
@@ -8294,31 +8358,31 @@ function emphasisPeek(_, _1, state) {
return state.options.emphasis || '*'
}
-const convert$A =
+const convert =
(
function (test) {
if (test === null || test === undefined) {
- return ok$A
+ return ok
}
if (typeof test === 'function') {
- return castFactory$A(test)
+ return castFactory(test)
}
if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$A(test) : propsFactory$A(test)
+ return Array.isArray(test) ? anyFactory(test) : propsFactory(test)
}
if (typeof test === 'string') {
- return typeFactory$A(test)
+ return typeFactory(test)
}
throw new Error('Expected function, string, or object as test')
}
);
-function anyFactory$A(tests) {
+function anyFactory(tests) {
const checks = [];
let index = -1;
while (++index < tests.length) {
- checks[index] = convert$A(tests[index]);
+ checks[index] = convert(tests[index]);
}
- return castFactory$A(any)
+ return castFactory(any)
function any(...parameters) {
let index = -1;
while (++index < checks.length) {
@@ -8327,9 +8391,9 @@ function anyFactory$A(tests) {
return false
}
}
-function propsFactory$A(check) {
+function propsFactory(check) {
const checkAsRecord = (check);
- return castFactory$A(all)
+ return castFactory(all)
function all(node) {
const nodeAsRecord = (
(node)
@@ -8341,13 +8405,13 @@ function propsFactory$A(check) {
return true
}
}
-function typeFactory$A(check) {
- return castFactory$A(type)
+function typeFactory(check) {
+ return castFactory(type)
function type(node) {
return node && node.type === check
}
}
-function castFactory$A(testFunction) {
+function castFactory(testFunction) {
return check
function check(value, index, parent) {
return Boolean(
@@ -8361,22 +8425,22 @@ function castFactory$A(testFunction) {
)
}
}
-function ok$A() {
+function ok() {
return true
}
function looksLikeANode(value) {
return value !== null && typeof value === 'object' && 'type' in value
}
-function color$B(d) {
+function color$1(d) {
return '\u001B[33m' + d + '\u001B[39m'
}
-const empty = [];
-const CONTINUE$A = true;
-const EXIT$A = false;
-const SKIP$A = 'skip';
-function visitParents$A(tree, test, visitor, reverse) {
+const empty$1 = [];
+const CONTINUE = true;
+const EXIT = false;
+const SKIP = 'skip';
+function visitParents(tree, test, visitor, reverse) {
let check;
if (typeof test === 'function' && typeof visitor !== 'function') {
reverse = visitor;
@@ -8384,7 +8448,7 @@ function visitParents$A(tree, test, visitor, reverse) {
} else {
check = test;
}
- const is = convert$A(check);
+ const is = convert(check);
const step = reverse ? -1 : 1;
factory(tree, undefined, [])();
function factory(node, index, parents) {
@@ -8401,30 +8465,30 @@ function visitParents$A(tree, test, visitor, reverse) {
: undefined;
Object.defineProperty(visit, 'name', {
value:
- 'node (' + color$B(node.type + (name ? '<' + name + '>' : '')) + ')'
+ 'node (' + color$1(node.type + (name ? '<' + name + '>' : '')) + ')'
});
}
return visit
function visit() {
- let result = empty;
+ let result = empty$1;
let subresult;
let offset;
let grandparents;
if (!test || is(node, index, parents[parents.length - 1] || undefined)) {
- result = toResult$A(visitor(node, parents));
- if (result[0] === EXIT$A) {
+ result = toResult(visitor(node, parents));
+ if (result[0] === EXIT) {
return result
}
}
if ('children' in node && node.children) {
const nodeAsParent = (node);
- if (nodeAsParent.children && result[0] !== SKIP$A) {
+ if (nodeAsParent.children && result[0] !== SKIP) {
offset = (reverse ? nodeAsParent.children.length : -1) + step;
grandparents = parents.concat(nodeAsParent);
while (offset > -1 && offset < nodeAsParent.children.length) {
const child = nodeAsParent.children[offset];
subresult = factory(child, offset, grandparents)();
- if (subresult[0] === EXIT$A) {
+ if (subresult[0] === EXIT) {
return subresult
}
offset =
@@ -8436,17 +8500,17 @@ function visitParents$A(tree, test, visitor, reverse) {
}
}
}
-function toResult$A(value) {
+function toResult(value) {
if (Array.isArray(value)) {
return value
}
if (typeof value === 'number') {
- return [CONTINUE$A, value]
+ return [CONTINUE, value]
}
- return value === null || value === undefined ? empty : [value]
+ return value === null || value === undefined ? empty$1 : [value]
}
-function visit$A(tree, testOrVisitor, visitorOrReverse, maybeReverse) {
+function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {
let reverse;
let test;
let visitor;
@@ -8462,7 +8526,7 @@ function visit$A(tree, testOrVisitor, visitorOrReverse, maybeReverse) {
visitor = visitorOrReverse;
reverse = maybeReverse;
}
- visitParents$A(tree, test, overload, reverse);
+ visitParents(tree, test, overload, reverse);
function overload(node, parents) {
const parent = parents[parents.length - 1];
const index = parent ? parent.children.indexOf(node) : undefined;
@@ -8472,18 +8536,18 @@ function visit$A(tree, testOrVisitor, visitorOrReverse, maybeReverse) {
function formatHeadingAsSetext(node, state) {
let literalWithBreak = false;
- visit$A(node, function (node) {
+ visit(node, function (node) {
if (
('value' in node && /\r?\n|\r/.test(node.value)) ||
node.type === 'break'
) {
literalWithBreak = true;
- return EXIT$A
+ return EXIT
}
});
return Boolean(
(!node.depth || node.depth < 3) &&
- toString$2(node) &&
+ toString(node) &&
(state.options.setext || literalWithBreak)
)
}
@@ -8535,8 +8599,8 @@ function heading(node, _, state, info) {
return value
}
-html.peek = htmlPeek;
-function html(node) {
+html$1.peek = htmlPeek;
+function html$1(node) {
return node.value || ''
}
function htmlPeek() {
@@ -8673,7 +8737,7 @@ function inlineCodePeek() {
}
function formatLinkAsAutolink(node, state) {
- const raw = toString$2(node);
+ const raw = toString(node);
return Boolean(
!state.options.resourceLink &&
node.url &&
@@ -8981,7 +9045,7 @@ function paragraph(node, _, state, info) {
const phrasing =
(
- convert$A([
+ convert([
'break',
'delete',
'emphasis',
@@ -9073,7 +9137,7 @@ const handle = {
emphasis,
hardBreak,
heading,
- html,
+ html: html$1,
image,
imageReference,
inlineCode,
@@ -9577,11 +9641,11 @@ function escapeStringRegexp(string) {
function findAndReplace(tree, list, options) {
const settings = options || {};
- const ignored = convert$A(settings.ignore || []);
+ const ignored = convert(settings.ignore || []);
const pairs = toPairs(list);
let pairIndex = -1;
while (++pairIndex < pairs.length) {
- visitParents$A(tree, 'text', visitor);
+ visitParents(tree, 'text', visitor);
}
function visitor(node, parents) {
let index = -1;
@@ -9744,7 +9808,7 @@ function exitLiteralAutolinkHttp(token) {
function exitLiteralAutolinkWww(token) {
this.config.exit.data.call(this, token);
const node = this.stack[this.stack.length - 1];
- ok$B(node.type === 'link');
+ ok$1(node.type === 'link');
node.url = 'http://' + this.sliceSerialize(token);
}
function exitLiteralAutolinkEmail(token) {
@@ -9881,9 +9945,9 @@ function enterFootnoteDefinitionLabelString() {
function exitFootnoteDefinitionLabelString(token) {
const label = this.resume();
const node = this.stack[this.stack.length - 1];
- ok$B(node.type === 'footnoteDefinition');
+ ok$1(node.type === 'footnoteDefinition');
node.label = label;
- node.identifier = normalizeIdentifier$1(
+ node.identifier = normalizeIdentifier(
this.sliceSerialize(token)
).toLowerCase();
}
@@ -9899,9 +9963,9 @@ function enterFootnoteCallString() {
function exitFootnoteCallString(token) {
const label = this.resume();
const node = this.stack[this.stack.length - 1];
- ok$B(node.type === 'footnoteReference');
+ ok$1(node.type === 'footnoteReference');
node.label = label;
- node.identifier = normalizeIdentifier$1(
+ node.identifier = normalizeIdentifier(
this.sliceSerialize(token)
).toLowerCase();
}
@@ -10218,7 +10282,7 @@ function exitCodeText(token) {
value = value.replace(/\\([\\|])/g, replace);
}
const node = this.stack[this.stack.length - 1];
- ok$B(node.type === 'inlineCode');
+ ok$1(node.type === 'inlineCode');
node.value = value;
this.exit(token);
}
@@ -10323,7 +10387,7 @@ function gfmTaskListItemToMarkdown() {
}
function exitCheck(token) {
const node = this.stack[this.stack.length - 2];
- ok$B(node.type === 'listItem');
+ ok$1(node.type === 'listItem');
node.checked = token.type === 'taskListCheckValueChecked';
}
function exitParagraphWithTaskListItem(token) {
@@ -10334,7 +10398,7 @@ function exitParagraphWithTaskListItem(token) {
typeof parent.checked === 'boolean'
) {
const node = this.stack[this.stack.length - 1];
- ok$B(node.type === 'paragraph');
+ ok$1(node.type === 'paragraph');
const head = node.children[0];
if (head && head.type === 'text') {
const siblings = parent.children;
@@ -10889,7 +10953,7 @@ function tokenizePotentialGfmFootnoteCall(effects, ok, nok) {
if (!labelStart || !labelStart._balanced) {
return nok(code)
}
- const id = normalizeIdentifier$1(
+ const id = normalizeIdentifier(
self.sliceSerialize({
start: labelStart.end,
end: self.now()
@@ -10995,7 +11059,7 @@ function tokenizeGfmFootnoteCall(effects, ok, nok) {
if (code === 93) {
effects.exit('chunkString');
const token = effects.exit('gfmFootnoteCallString');
- if (!defined.includes(normalizeIdentifier$1(self.sliceSerialize(token)))) {
+ if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {
return nok(code)
}
effects.enter('gfmFootnoteCallLabelMarker');
@@ -11059,7 +11123,7 @@ function tokenizeDefinitionStart(effects, ok, nok) {
if (code === 93) {
effects.exit('chunkString');
const token = effects.exit('gfmFootnoteDefinitionLabelString');
- identifier = normalizeIdentifier$1(self.sliceSerialize(token));
+ identifier = normalizeIdentifier(self.sliceSerialize(token));
effects.enter('gfmFootnoteDefinitionLabelMarker');
effects.consume(code);
effects.exit('gfmFootnoteDefinitionLabelMarker');
@@ -11846,10 +11910,10 @@ function gfm(options) {
])
}
-const emptyOptions$2 = {};
+const emptyOptions$1 = {};
function remarkGfm(options) {
const self = (this);
- const settings = options || emptyOptions$2;
+ const settings = options || emptyOptions$1;
const data = self.data();
const micromarkExtensions =
data.micromarkExtensions || (data.micromarkExtensions = []);
@@ -11862,10 +11926,74 @@ function remarkGfm(options) {
toMarkdownExtensions.push(gfmToMarkdown(settings));
}
+const commentExpression = /\s*([a-zA-Z\d-]+)(\s+([\s\S]*))?\s*/;
+const esCommentExpression = new RegExp(
+ '(\\s*\\/\\*' + commentExpression.source + '\\*\\/\\s*)'
+);
+const markerExpression = new RegExp(
+ '(\\s*\\s*)'
+);
+function commentMarker(value) {
+ if (
+ isNode(value) &&
+ (value.type === 'html' ||
+ value.type === 'mdxFlowExpression' ||
+ value.type === 'mdxTextExpression')
+ ) {
+ const match = value.value.match(
+ value.type === 'html' ? markerExpression : esCommentExpression
+ );
+ if (match && match[0].length === value.value.length) {
+ const parameters = parseParameters(match[3] || '');
+ if (parameters) {
+ return {
+ name: match[2],
+ attributes: (match[4] || '').trim(),
+ parameters,
+ node: value
+ }
+ }
+ }
+ }
+}
+function parseParameters(value) {
+ const parameters = {};
+ return value
+ .replace(
+ /\s+([-\w]+)(?:=(?:"((?:\\[\s\S]|[^"])*)"|'((?:\\[\s\S]|[^'])*)'|((?:\\[\s\S]|[^"'\s])+)))?/gi,
+ replacer
+ )
+ .replace(/\s+/g, '')
+ ? undefined
+ : parameters
+ function replacer(_, $1, $2, $3, $4) {
+ let value = $2 === undefined ? ($3 === undefined ? $4 : $3) : $2;
+ const number = Number(value);
+ if (value === 'true' || value === undefined) {
+ value = true;
+ } else if (value === 'false') {
+ value = false;
+ } else if (value.trim() && !Number.isNaN(number)) {
+ value = number;
+ }
+ parameters[$1] = value;
+ return ''
+ }
+}
+function isNode(value) {
+ return Boolean(value && typeof value === 'object' && 'type' in value)
+}
+
+function parse$1(value) {
+ const input = String(value || '').trim();
+ return input ? input.split(/[ \t\n\r\f]+/g) : []
+}
+
+const search = /\r?\n|\r/g;
function location(file) {
const value = String(file);
const indices = [];
- const search = /\r?\n|\r/g;
+ search.lastIndex = 0;
while (search.test(value)) {
indices.push(search.lastIndex);
}
@@ -11888,7 +12016,6 @@ function location(file) {
}
}
}
- return {line: undefined, column: undefined, offset: undefined}
}
function toOffset(point) {
const line = point && point.line;
@@ -11905,345 +12032,181 @@ function location(file) {
return offset
}
}
- return -1
}
}
-const convert$z =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$z
- }
- if (typeof test === 'string') {
- return typeFactory$z(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$z(test) : propsFactory$z(test)
- }
- if (typeof test === 'function') {
- return castFactory$z(test)
+const own = {}.hasOwnProperty;
+function messageControl(tree, options) {
+ if (!options || typeof options !== 'object') {
+ throw new Error('Expected `options`')
+ }
+ const {file, marker, name, test} = options;
+ let {enable, disable, known, reset, source} = options;
+ if (!enable) enable = [];
+ if (!disable) disable = [];
+ if (!file) {
+ throw new Error('Expected `file` in `options`')
+ }
+ if (!marker) {
+ throw new Error('Expected `marker` in `options`')
+ }
+ if (!name) {
+ throw new Error('Expected `name` in `options`')
+ }
+ const sources = typeof source === 'string' ? [source] : source || [name];
+ const toOffset = location(file).toOffset;
+ const initial = !reset;
+ const gaps = detectGaps(tree);
+ const scope = {};
+ const globals = [];
+ visit(tree, test, visitor);
+ file.messages = file.messages.filter(function (m) {
+ return filter(m)
+ });
+ function visitor(node, position, parent) {
+ const point = node.position && node.position.start;
+ const mark = marker(node);
+ if (!point || !mark || mark.name !== name) {
+ return
+ }
+ const ruleIds = parse$1(mark.attributes);
+ const verb = ruleIds.shift();
+ const fn =
+ verb === 'enable'
+ ? doEnable
+ : verb === 'disable'
+ ? doDisable
+ : verb === 'ignore'
+ ? doIgnore
+ : undefined;
+ if (!fn) {
+ file.fail(
+ 'Unknown keyword `' +
+ verb +
+ '`: expected ' +
+ "`'enable'`, `'disable'`, or `'ignore'`",
+ node
+ );
+ }
+ const next =
+ (parent && position !== undefined && parent.children[position + 1]) ||
+ undefined;
+ const tail = next && next.position && next.position.end;
+ if (ruleIds.length === 0) {
+ fn(point, undefined, tail);
+ } else {
+ let index = -1;
+ while (++index < ruleIds.length) {
+ const ruleId = ruleIds[index];
+ if (isKnown(ruleId, verb, node)) {
+ fn(point, ruleId, tail);
+ }
}
- throw new Error('Expected function, string, or object as test')
}
- );
-function anyFactory$z(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$z(tests[index]);
}
- return castFactory$z(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
+ function doIgnore(point, ruleId, tail) {
+ if (tail) {
+ toggle(point, false, ruleId);
+ toggle(tail, true, ruleId);
}
- return false
}
-}
-function propsFactory$z(check) {
- return castFactory$z(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
+ function doDisable(point, ruleId) {
+ toggle(point, false, ruleId);
+ if (!ruleId) reset = true;
}
-}
-function typeFactory$z(check) {
- return castFactory$z(type)
- function type(node) {
- return node && node.type === check
+ function doEnable(point, ruleId) {
+ toggle(point, true, ruleId);
+ if (!ruleId) reset = false;
}
-}
-function castFactory$z(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
+ function filter(message) {
+ let gapIndex = gaps.length;
+ if (!message.source || !sources.includes(message.source)) {
+ return true
+ }
+ if (!message.line) message.line = 1;
+ if (!message.column) message.column = 1;
+ const offset = toOffset(message);
+ while (gapIndex--) {
+ if (gaps[gapIndex][0] <= offset && gaps[gapIndex][1] > offset) {
+ return false
+ }
+ }
+ return (
+ (!message.ruleId || check(message, scope[message.ruleId], true)) &&
+ check(message, globals, false)
)
}
-}
-function ok$z() {
- return true
-}
-
-function color$A(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$z = true;
-const SKIP$z = 'skip';
-const EXIT$z = false;
-const visitParents$z =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- var is = convert$z(test);
- var step = reverse ? -1 : 1;
- factory(tree, null, [])();
- function factory(node, index, parents) {
- var value = typeof node === 'object' && node !== null ? node : {};
- var name;
- if (typeof value.type === 'string') {
- name =
- typeof value.tagName === 'string'
- ? value.tagName
- : typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' +
- color$A(value.type + (name ? '<' + name + '>' : '')) +
- ')'
- });
- }
- return visit
- function visit() {
- var result = [];
- var subresult;
- var offset;
- var grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$z(visitor(node, parents));
- if (result[0] === EXIT$z) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$z) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$z) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
+ function isKnown(ruleId, verb, node) {
+ const result = known ? known.includes(ruleId) : true;
+ if (!result) {
+ file.message('Cannot ' + verb + " `'" + ruleId + "'`, it’s not known", {
+ ancestors: [node],
+ place: node.position,
+ ruleId: 'known',
+ source: 'unified-message-control'
+ });
+ }
+ return result
+ }
+ function getState(ruleId) {
+ const ranges = ruleId ? scope[ruleId] : globals;
+ if (ranges && ranges.length > 0) {
+ return ranges[ranges.length - 1].state
+ }
+ return ruleId
+ ? reset
+ ? enable.includes(ruleId)
+ : !disable.includes(ruleId)
+ : !reset
+ }
+ function toggle(point, state, ruleId) {
+ const markers = ruleId ? scope[ruleId] || (scope[ruleId] = []) : globals;
+ const current = getState(ruleId);
+ if (current !== state) {
+ markers.push({state, point});
+ }
+ if (!ruleId) {
+ for (ruleId in scope) {
+ if (own.call(scope, ruleId)) {
+ toggle(point, state, ruleId);
}
}
}
- );
-function toResult$z(value) {
- if (Array.isArray(value)) {
- return value
}
- if (typeof value === 'number') {
- return [CONTINUE$z, value]
- }
- return [value]
-}
-
-const visit$z =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$z(tree, test, overload, reverse);
- function overload(node, parents) {
- var parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
-
-const own$1 = {}.hasOwnProperty;
-function messageControl(options) {
- if (!options || typeof options !== 'object' || !options.name) {
- throw new Error(
- 'Expected `name` in `options`, got `' + (options || {}).name + '`'
- )
- }
- if (!options.marker) {
- throw new Error(
- 'Expected `marker` in `options`, got `' + options.marker + '`'
- )
- }
- const enable = 'enable' in options && options.enable ? options.enable : [];
- const disable = 'disable' in options && options.disable ? options.disable : [];
- let reset = options.reset;
- const sources =
- typeof options.source === 'string'
- ? [options.source]
- : options.source || [options.name];
- return transformer
- function transformer(tree, file) {
- const toOffset = location(file).toOffset;
- const initial = !reset;
- const gaps = detectGaps(tree, file);
- const scope = {};
- const globals = [];
- visit$z(tree, options.test, visitor);
- file.messages = file.messages.filter((m) => filter(m));
- function visitor(node, position, parent) {
- const mark = options.marker(node);
- if (!mark || mark.name !== options.name) {
- return
- }
- const ruleIds = mark.attributes.split(/\s/g);
- const point = mark.node.position && mark.node.position.start;
- const next =
- (parent && position !== null && parent.children[position + 1]) ||
- undefined;
- const tail = (next && next.position && next.position.end) || undefined;
- let index = -1;
- const verb = ruleIds.shift();
- if (verb !== 'enable' && verb !== 'disable' && verb !== 'ignore') {
- file.fail(
- 'Unknown keyword `' +
- verb +
- '`: expected ' +
- "`'enable'`, `'disable'`, or `'ignore'`",
- mark.node
- );
- }
- if (ruleIds.length > 0) {
- while (++index < ruleIds.length) {
- const ruleId = ruleIds[index];
- if (isKnown(ruleId, verb, mark.node)) {
- toggle(point, verb === 'enable', ruleId);
- if (verb === 'ignore') {
- toggle(tail, true, ruleId);
- }
- }
- }
- } else if (verb === 'ignore') {
- toggle(point, false);
- toggle(tail, true);
- } else {
- toggle(point, verb === 'enable');
- reset = verb !== 'enable';
- }
- }
- function filter(message) {
- let gapIndex = gaps.length;
- if (!message.source || !sources.includes(message.source)) {
- return true
- }
- if (!message.line) {
- message.line = 1;
- }
- if (!message.column) {
- message.column = 1;
- }
- const offset = toOffset(message);
- while (gapIndex--) {
- if (gaps[gapIndex][0] <= offset && gaps[gapIndex][1] > offset) {
- return false
- }
- }
- return (
- (!message.ruleId ||
- check(message, scope[message.ruleId], message.ruleId)) &&
- check(message, globals)
- )
- }
- function isKnown(ruleId, verb, node) {
- const result = options.known ? options.known.includes(ruleId) : true;
- if (!result) {
- file.message(
- 'Unknown rule: cannot ' + verb + " `'" + ruleId + "'`",
- node
- );
- }
- return result
- }
- function getState(ruleId) {
- const ranges = ruleId ? scope[ruleId] : globals;
- if (ranges && ranges.length > 0) {
- return ranges[ranges.length - 1].state
- }
- if (!ruleId) {
- return !reset
- }
- return reset ? enable.includes(ruleId) : !disable.includes(ruleId)
- }
- function toggle(point, state, ruleId) {
- let markers = ruleId ? scope[ruleId] : globals;
- if (!markers) {
- markers = [];
- scope[String(ruleId)] = markers;
- }
- const previousState = getState(ruleId);
- if (state !== previousState) {
- markers.push({state, point});
- }
- if (!ruleId) {
- for (ruleId in scope) {
- if (own$1.call(scope, ruleId)) {
- toggle(point, state, ruleId);
- }
+ function check(message, marks, local) {
+ if (message.line && message.column && marks && marks.length > 0) {
+ let index = marks.length;
+ while (index--) {
+ const mark = marks[index];
+ if (
+ mark.point &&
+ (mark.point.line < message.line ||
+ (mark.point.line === message.line &&
+ mark.point.column <= message.column))
+ ) {
+ return mark.state === true
}
}
}
- function check(message, ranges, ruleId) {
- if (ranges && ranges.length > 0) {
- let index = ranges.length;
- while (index--) {
- const range = ranges[index];
- if (
- message.line &&
- message.column &&
- range.point &&
- range.point.line &&
- range.point.column &&
- (range.point.line < message.line ||
- (range.point.line === message.line &&
- range.point.column <= message.column))
- ) {
- return range.state === true
- }
- }
- }
- if (!ruleId) {
- return Boolean(initial || reset)
- }
- return reset ? enable.includes(ruleId) : !disable.includes(ruleId)
+ if (local) {
+ ok$1(message.ruleId);
+ return reset
+ ? enable.includes(message.ruleId)
+ : !disable.includes(message.ruleId)
}
+ return Boolean(initial || reset)
}
}
-function detectGaps(tree, file) {
- const children = tree.children || [];
- const lastNode = children[children.length - 1];
- const gaps = [];
+function detectGaps(tree) {
+ const end =
+ tree && tree.position && tree.position.end && tree.position.end.offset;
let offset = 0;
- let gap;
- visit$z(tree, one);
- if (
- lastNode &&
- lastNode.position &&
- lastNode.position.end &&
- offset === lastNode.position.end.offset &&
- file.toString().slice(offset).trim() !== ''
- ) {
+ let gap = false;
+ const gaps = [];
+ visit(tree, one);
+ if (typeof end === 'number' && offset !== end) {
update();
- update(
- tree &&
- tree.position &&
- tree.position.end &&
- tree.position.end.offset &&
- tree.position.end.offset - 1
- );
+ update(end);
}
return gaps
function one(node) {
@@ -12258,93 +12221,23 @@ function detectGaps(tree, file) {
} else if (offset < latest) {
if (gap) {
gaps.push([offset, latest]);
- gap = undefined;
+ gap = false;
}
offset = latest;
}
}
}
-const commentExpression = /\s*([a-zA-Z\d-]+)(\s+([\s\S]*))?\s*/;
-const esCommentExpression = new RegExp(
- '(\\s*\\/\\*' + commentExpression.source + '\\*\\/\\s*)'
-);
-const markerExpression = new RegExp(
- '(\\s*\\s*)'
-);
-function commentMarker(value) {
- if (
- isNode(value) &&
- (value.type === 'html' ||
- value.type === 'comment' ||
- value.type === 'mdxFlowExpression' ||
- value.type === 'mdxTextExpression')
- ) {
- let offset = 2;
- let match;
- if (value.type === 'comment') {
- match = value.value.match(commentExpression);
- offset = 1;
- } else if (value.type === 'html') {
- match = value.value.match(markerExpression);
- } else if (
- value.type === 'mdxFlowExpression' ||
- value.type === 'mdxTextExpression'
- ) {
- match = value.value.match(esCommentExpression);
- }
- if (match && match[0].length === value.value.length) {
- const parameters = parseParameters(match[offset + 1] || '');
- if (parameters) {
- return {
- name: match[offset],
- attributes: (match[offset + 2] || '').trim(),
- parameters,
- node: value
- }
- }
- }
- }
- return null
-}
-function parseParameters(value) {
- const parameters = {};
- return value
- .replace(
- /\s+([-\w]+)(?:=(?:"((?:\\[\s\S]|[^"])*)"|'((?:\\[\s\S]|[^'])*)'|((?:\\[\s\S]|[^"'\s])+)))?/gi,
- replacer
- )
- .replace(/\s+/g, '')
- ? null
- : parameters
- function replacer(_, $1, $2, $3, $4) {
- let value = $2 === undefined ? ($3 === undefined ? $4 : $3) : $2;
- const number = Number(value);
- if (value === 'true' || value === undefined) {
- value = true;
- } else if (value === 'false') {
- value = false;
- } else if (value.trim() && !Number.isNaN(number)) {
- value = number;
- }
- parameters[$1] = value;
- return ''
- }
-}
-function isNode(value) {
- return Boolean(value && typeof value === 'object' && 'type' in value)
-}
-
const test = [
- 'html',
'comment',
+ 'html',
'mdxFlowExpression',
'mdxTextExpression'
];
function remarkMessageControl(options) {
- return messageControl(
- Object.assign({marker: commentMarker, test}, options)
- )
+ return function (tree, file) {
+ messageControl(tree, {...options, file, marker: commentMarker, test});
+ }
}
function remarkLint() {
@@ -12354,7 +12247,7 @@ function lintMessageControl() {
return remarkMessageControl({name: 'lint', source: 'remark-lint'})
}
-function lintRule(meta, rule) {
+function lintRule$1(meta, rule) {
const id = typeof meta === 'string' ? meta : meta.origin;
const url = typeof meta === 'string' ? undefined : meta.url;
const parts = id.split(':');
@@ -12363,12 +12256,12 @@ function lintRule(meta, rule) {
Object.defineProperty(plugin, 'name', {value: id});
return plugin
function plugin(config) {
- const [severity, options] = coerce$1(ruleId, config);
- if (!severity) return
+ const [severity, options] = coerce$2(ruleId, config);
const fatal = severity === 2;
- return (tree, file, next) => {
+ if (!severity) return
+ return function (tree, file, next) {
let index = file.messages.length - 1;
- wrap(rule, (error) => {
+ wrap(rule, function (error) {
const messages = file.messages;
if (error && !messages.includes(error)) {
try {
@@ -12376,34 +12269,38 @@ function lintRule(meta, rule) {
} catch {}
}
while (++index < messages.length) {
- Object.assign(messages[index], {ruleId, source, fatal, url});
+ Object.assign(messages[index], {fatal, ruleId, source, url});
}
next();
})(tree, file, options);
}
}
}
-function coerce$1(name, config) {
- if (!Array.isArray(config)) return [1, config]
+function coerce$2(name, config) {
+ if (!Array.isArray(config)) {
+ return [1, config]
+ }
const [severity, ...options] = config;
switch (severity) {
case false:
- case 'off':
- case 0: {
+ case 0:
+ case 'off': {
return [0, ...options]
}
case true:
+ case 1:
case 'on':
- case 'warn':
- case 1: {
+ case 'warn': {
return [1, ...options]
}
- case 'error':
- case 2: {
+ case 2:
+ case 'error': {
return [2, ...options]
}
default: {
- if (typeof severity !== 'number') return [1, config]
+ if (typeof severity !== 'number') {
+ return [1, config]
+ }
throw new Error(
'Incorrect severity `' +
severity +
@@ -12417,35 +12314,53 @@ function coerce$1(name, config) {
}
/**
+ * remark-lint rule to warn when a final line ending is missing.
+ *
+ * ## What is this?
+ *
+ * This package checks the final line ending.
+ *
* ## When should I use this?
*
- * You can use this package to check that fenced code markers are consistent.
+ * You can use this package to check final line endings.
*
* ## API
*
+ * ### `unified().use(remarkLintFinalNewline)`
+ *
+ * Warn when a final line ending is missing.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
* Turn this rule on.
- * See [StackExchange](https://unix.stackexchange.com/questions/18743) for more
- * info.
+ * See [StackExchange][] for more info.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* always adds final line endings.
*
- * ## Example
+ * [api-remark-lint-final-newline]: #unifieduseremarklintfinalnewline
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ * [stackexchange]: https://unix.stackexchange.com/questions/18743
+ *
+ * ## Examples
*
* ##### `ok.md`
*
* ###### In
*
- * > 👉 **Note**: `␊` represents a line feed (`\n`).
- *
* ```markdown
- * Alpha␊
+ * Mercury␊
* ```
*
* ###### Out
@@ -12456,45 +12371,179 @@ function coerce$1(name, config) {
*
* ###### In
*
- * > 👉 **Note**: `␀` represents the end of the file.
- *
* ```markdown
- * Bravo␀
+ * Mercury␀
* ```
*
* ###### Out
*
* ```text
- * 1:1: Missing newline character at end of file
+ * 1:8: Unexpected missing final newline character, expected line feed (`\n`) at end of file
* ```
*
* @module final-newline
- * @summary
- * remark-lint rule to warn when files don’t end in a newline.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
*/
-const remarkLintFinalNewline = lintRule(
+const remarkLintFinalNewline = lintRule$1(
{
origin: 'remark-lint:final-newline',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-final-newline#readme'
},
- (_, file) => {
+ function (_, file) {
const value = String(file);
+ const end = location(file).toPoint(value.length);
const last = value.length - 1;
- if (last > -1 && value.charAt(last) !== '\n') {
- file.message('Missing newline character at end of file');
+ if (
+ last !== -1 &&
+ value.charAt(last) !== '\n'
+ ) {
+ file.message(
+ 'Unexpected missing final newline character, expected line feed (`\\n`) at end of file',
+ end
+ );
}
}
);
var remarkLintFinalNewline$1 = remarkLintFinalNewline;
+const pointEnd = point('end');
+const pointStart = point('start');
+function point(type) {
+ return point
+ function point(node) {
+ const point = (node && node.position && node.position[type]) || {};
+ if (
+ typeof point.line === 'number' &&
+ point.line > 0 &&
+ typeof point.column === 'number' &&
+ point.column > 0
+ ) {
+ return {
+ line: point.line,
+ column: point.column,
+ offset:
+ typeof point.offset === 'number' && point.offset > -1
+ ? point.offset
+ : undefined
+ }
+ }
+ }
+}
+function position(node) {
+ const start = pointStart(node);
+ const end = pointEnd(node);
+ if (start && end) {
+ return {start, end}
+ }
+}
+
+/**
+ * remark-lint rule to warn when more spaces are used than needed
+ * for hard breaks.
+ *
+ * ## What is this?
+ *
+ * This package checks the whitespace of hard breaks.
+ *
+ * ## When should I use this?
+ *
+ * You can use this package to check that the number of spaces in hard breaks
+ * are consistent.
+ *
+ * ## API
+ *
+ * ### `unified().use(remarkLintHardBreakSpaces)`
+ *
+ * Warn when more spaces are used than needed for hard breaks.
+ *
+ * ###### Parameters
+ *
+ * There are no options.
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ## Recommendation
+ *
+ * Less than two spaces do not create a hard breaks and more than two spaces
+ * have no effect.
+ * Due to this, it’s recommended to turn this rule on.
+ *
+ * [api-remark-lint-hard-break-spaces]: #unifieduseremarklinthardbreakspaces
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module hard-break-spaces
+ * @author Titus Wormer
+ * @copyright 2015 Titus Wormer
+ * @license MIT
+ * @example
+ * {"name": "ok.md"}
+ *
+ * **Mercury** is the first planet from the Sun␠␠
+ * and the smallest in the Solar System.
+ *
+ * @example
+ * {"label": "input", "name": "not-ok.md"}
+ *
+ * **Mercury** is the first planet from the Sun␠␠␠
+ * and the smallest in the Solar System.
+ * @example
+ * {"label": "output", "name": "not-ok.md"}
+ *
+ * 1:45-2:1: Unexpected `3` spaces for hard break, expected `2` spaces
+ *
+ * @example
+ * {"gfm": true, "label": "input", "name": "containers.md"}
+ *
+ * [^mercury]:
+ * > * > * **Mercury** is the first planet from the Sun␠␠␠
+ * > > and the smallest in the Solar System.
+ * @example
+ * {"gfm": true, "label": "output", "name": "containers.md"}
+ *
+ * 2:57-3:1: Unexpected `3` spaces for hard break, expected `2` spaces
+ */
+const remarkLintHardBreakSpaces = lintRule$1(
+ {
+ origin: 'remark-lint:hard-break-spaces',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-hard-break-spaces#readme'
+ },
+ function (tree, file) {
+ const value = String(file);
+ visit(tree, 'break', function (node) {
+ const end = pointEnd(node);
+ const start = pointStart(node);
+ if (
+ end &&
+ start &&
+ typeof end.offset === 'number' &&
+ typeof start.offset === 'number'
+ ) {
+ const slice = value.slice(start.offset, end.offset);
+ let actual = 0;
+ while (slice.charCodeAt(actual) === 32) actual++;
+ if (actual > 2) {
+ file.message(
+ 'Unexpected `' +
+ actual +
+ '` spaces for hard break, expected `2` spaces',
+ node
+ );
+ }
+ }
+ });
+ }
+);
+var remarkLintHardBreakSpaces$1 = remarkLintHardBreakSpaces;
+
function commonjsRequire(path) {
throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
}
-var pluralize = {exports: {}};
+var pluralize$1 = {exports: {}};
(function (module, exports) {
(function (root, pluralize) {
@@ -12819,637 +12868,503 @@ var pluralize = {exports: {}};
].forEach(pluralize.addUncountableRule);
return pluralize;
});
-} (pluralize));
-var pluralizeExports = pluralize.exports;
-var plural = getDefaultExportFromCjs(pluralizeExports);
-
-const convert$y =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$y
- }
- if (typeof test === 'string') {
- return typeFactory$y(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$y(test) : propsFactory$y(test)
- }
- if (typeof test === 'function') {
- return castFactory$y(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$y(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$y(tests[index]);
- }
- return castFactory$y(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$y(check) {
- return castFactory$y(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$y(check) {
- return castFactory$y(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$y(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$y() {
- return true
-}
-
-function color$z(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$y = true;
-const EXIT$y = false;
-const SKIP$y = 'skip';
-const visitParents$y =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$y(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$z(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$y(visitor(node, parents));
- if (result[0] === EXIT$y) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$y) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$y) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$y(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$y, value]
- }
- return [value]
-}
-
-const visit$y =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$y(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+} (pluralize$1));
+var pluralizeExports = pluralize$1.exports;
+var pluralize = getDefaultExportFromCjs(pluralizeExports);
/**
+ * remark-lint rule to warn when list item markers are indented.
+ *
+ * ## What is this?
+ *
+ * This package checks indentation before list item markers.
+ *
* ## When should I use this?
*
- * You can use this package to check that list items are not indented.
+ * You can use this package to check that the style of list items is
+ * consistent.
*
* ## API
*
+ * ### `unified().use(remarkLintListItemBulletIndent)`
+ *
+ * Warn when list item markers are indented.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
- * There is no specific handling of indented list items (or anything else) in
- * markdown.
+ * There is no specific handling of indented list items in markdown.
* While it is possible to use an indent to align ordered lists on their marker:
*
* ```markdown
- * 1. One
- * 10. Ten
- * 100. Hundred
+ * 1. Mercury
+ * 10. Venus
+ * 100. Earth
* ```
*
- * …such a style is uncommon and a bit hard to maintain: adding a 10th item
- * means 9 other items have to change (more arduous, while unlikely, would be
+ * …such a style is uncommon and hard to maintain as adding a 10th item
+ * means 9 other items have to change (more arduous while unlikely would be
* the 100th item).
- * Hence, it’s recommended to not indent items and to turn this rule on.
+ * So it is recommended to not indent items and to turn this rule on.
*
* ## Fix
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats all items without indent.
+ * [`remark-stringify`][github-remark-stringify] formats all items without
+ * indent.
+ *
+ * [api-remark-lint-list-item-bullet-indent]: #unifieduseremarklintlistitembulletindent
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module list-item-bullet-indent
- * @summary
- * remark-lint rule to warn when list items are indented.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @example
* {"name": "ok.md"}
*
- * Paragraph.
+ * Mercury.
*
- * * List item
- * * List item
+ * * Venus.
+ * * Earth.
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * Paragraph.
+ * Mercury.
*
- * ·* List item
- * ·* List item
+ * ␠* Venus.
+ * ␠* Earth.
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 3:2: Incorrect indentation before bullet: remove 1 space
- * 4:2: Incorrect indentation before bullet: remove 1 space
+ * 3:2: Unexpected `1` space before list item, expected `0` spaces, remove them
+ * 4:2: Unexpected `1` space before list item, expected `0` spaces, remove them
*/
-const remarkLintListItemBulletIndent = lintRule(
+const remarkLintListItemBulletIndent = lintRule$1(
{
origin: 'remark-lint:list-item-bullet-indent',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-list-item-bullet-indent#readme'
},
- (tree, file) => {
- visit$y(tree, 'list', (list, _, grandparent) => {
- let index = -1;
- while (++index < list.children.length) {
- const item = list.children[index];
- if (
- grandparent &&
- grandparent.type === 'root' &&
- grandparent.position &&
- typeof grandparent.position.start.column === 'number' &&
- item.position &&
- typeof item.position.start.column === 'number'
- ) {
- const indent =
- item.position.start.column - grandparent.position.start.column;
- if (indent) {
- file.message(
- 'Incorrect indentation before bullet: remove ' +
- indent +
- ' ' +
- plural('space', indent),
- item.position.start
- );
- }
+ function (tree, file) {
+ const treeStart = pointStart(tree);
+ if (!tree || tree.type !== 'root' || !treeStart) return
+ for (const child of tree.children) {
+ if (child.type !== 'list') continue
+ const list = child;
+ for (const item of list.children) {
+ const place = pointStart(item);
+ if (!place) continue
+ const actual = place.column - treeStart.column;
+ if (actual) {
+ file.message(
+ 'Unexpected `' +
+ actual +
+ '` ' +
+ pluralize('space', actual) +
+ ' before list item, expected `0` spaces, remove them',
+ {ancestors: [tree, list, item], place}
+ );
}
}
- });
+ }
}
);
var remarkLintListItemBulletIndent$1 = remarkLintListItemBulletIndent;
-const convert$x =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$x
- }
- if (typeof test === 'string') {
- return typeFactory$x(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$x(test) : propsFactory$x(test)
- }
- if (typeof test === 'function') {
- return castFactory$x(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$x(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$x(tests[index]);
- }
- return castFactory$x(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$x(check) {
- return castFactory$x(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$x(check) {
- return castFactory$x(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$x(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$x() {
- return true
-}
-
-function color$y(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$x = true;
-const EXIT$x = false;
-const SKIP$x = 'skip';
-const visitParents$x =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$x(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$y(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$x(visitor(node, parents));
- if (result[0] === EXIT$x) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$x) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$x) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$x(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$x, value]
- }
- return [value]
-}
-
-const visit$x =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$x(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
-
-const pointStart = point$2('start');
-const pointEnd = point$2('end');
-function point$2(type) {
- return point
- function point(node) {
- const point = (node && node.position && node.position[type]) || {};
- return {
- line: point.line || null,
- column: point.column || null,
- offset: point.offset > -1 ? point.offset : null
- }
- }
-}
-
-function generated(node) {
- return (
- !node ||
- !node.position ||
- !node.position.start ||
- !node.position.start.line ||
- !node.position.start.column ||
- !node.position.end ||
- !node.position.end.line ||
- !node.position.end.column
- )
-}
-
/**
+ * remark-lint rule to warn when the whitespace after list item markers violate
+ * a given style.
+ *
+ * ## What is this?
+ *
+ * This package checks the style of whitespace after list item markers.
+ *
* ## When should I use this?
*
- * You can use this package to check that the spacing between list item markers
- * and content is inconsistent.
+ * You can use this package to check that the style of whitespace after list
+ * item markers and before content is consistent.
*
* ## API
*
- * The following options (default: `'tab-size'`) are accepted:
+ * ### `unified().use(remarkLintListItemIndent[, options])`
+ *
+ * Warn when the whitespace after list item markers violate a given style.
+ *
+ * ###### Parameters
+ *
+ * * `options` ([`Options`][api-options], default: `'one'`)
+ * — preferred style
+ *
+ * ###### Returns
*
- * * `'space'`
- * — prefer a single space
- * * `'tab-size'`
- * — prefer spaces the size of the next tab stop
- * * `'mixed'`
- * — prefer `'space'` for tight lists and `'tab-size'` for loose lists
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ### `Options`
+ *
+ * Configuration (TypeScript type).
+ *
+ * * `'mixed'`
+ * — prefer `'one'` for tight lists and `'tab'` for loose lists
+ * * `'one'`
+ * — prefer the size of the bullet and a single space
+ * * `'tab'`
+ * — prefer the size of the bullet and a single space to the next tab stop
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Options = 'mixed' | 'one' | 'tab'
+ * ```
*
* ## Recommendation
*
- * First, some background.
+ * First some background.
* The number of spaces that occur after list markers (`*`, `-`, and `+` for
- * unordered lists, or `.` and `)` for unordered lists) and before the content
- * on the first line, defines how much indentation can be used for further
- * lines.
- * At least one space is required and up to 4 spaces are allowed (if there is no
- * further content after the marker then it’s a blank line which is handled as
- * if there was one space; if there are 5 or more spaces and then content, it’s
- * also seen as one space and the rest is seen as indented code).
- *
- * There are two types of lists in markdown (other than ordered and unordered):
- * tight and loose lists.
+ * unordered lists and `.` and `)` for unordered lists) and before the content
+ * on the first line,
+ * defines how much indentation can be used for further lines.
+ * At least one space is required and up to 4 spaces are allowed.
+ * If there is no further content after the marker then it’s a blank line which
+ * is handled as if there was one space.
+ * If there are 5 or more spaces and then content then it’s also seen as one
+ * space and the rest is seen as indented code.
+ *
+ * Regardless of ordered and unordered,
+ * there are two kinds of lists in markdown,
+ * tight and loose.
* Lists are tight by default but if there is a blank line between two list
- * items or between two blocks inside an item, that turns the whole list into a
- * loose list.
- * When turning markdown into HTML, paragraphs in tight lists are not wrapped
- * in `
` tags.
+ * items or between two blocks inside an item,
+ * that turns the whole list into a loose list.
+ * When turning markdown into HTML,
+ * paragraphs in tight lists are not wrapped in `
` tags.
*
- * Historically, how indentation of lists works in markdown has been a mess,
+ * How indentation of lists works in markdown has historically been a mess,
* especially with how they interact with indented code.
- * CommonMark made that a *lot* better, but there remain (documented but
- * complex) edge cases and some behavior intuitive.
- * Due to this, the default of this list is `'tab-size'`, which worked the best
- * in most markdown parsers.
- * Currently, the situation between markdown parsers is better, so choosing
- * `'space'` (which seems to be the most common style used by authors) should
- * be okay.
+ * CommonMark made that a *lot* better,
+ * but there remain (documented but complex) edge cases and some behavior
+ * intuitive.
+ * Due to this, `'tab'` works the best in most markdown parsers *and* in
+ * CommonMark.
+ * Currently the situation between markdown parsers is better,
+ * so the default `'one'`,
+ * which seems to be the most common style used by authors,
+ * is okay.
*
* ## Fix
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * uses `'tab-size'` (named `'tab'` there) by default.
- * [`listItemIndent: '1'` (for `'space'`) or `listItemIndent: 'mixed'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionslistitemindent)
- * is supported.
+ * [`remark-stringify`][github-remark-stringify] uses `listItemIndent: 'one'`
+ * by default.
+ * `listItemIndent: 'mixed'` or `listItemIndent: 'tab'` is also supported.
+ *
+ * [api-options]: #options
+ * [api-remark-lint-list-item-indent]: #unifieduseremarklintlistitemindent-options
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module list-item-indent
- * @summary
- * remark-lint rule to warn when spacing between list item markers and
- * content is inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * *···List
- * ····item.
+ * *␠Mercury.
+ * *␠Venus.
+ *
+ * 111.␠Earth
+ * ␠␠␠␠␠and Mars.
+ *
+ * *␠**Jupiter**.
+ *
+ * ␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠System.
+ *
+ * *␠Saturn.
+ *
+ * ␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
+ *
+ * @example
+ * {"config": "mixed", "name": "ok.md"}
+ *
+ * *␠Mercury.
+ * *␠Venus.
+ *
+ * 111.␠Earth
+ * ␠␠␠␠␠and Mars.
+ *
+ * *␠␠␠**Jupiter**.
+ *
+ * ␠␠␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠␠␠System.
+ *
+ * *␠␠␠Saturn.
+ *
+ * ␠␠␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
+ *
+ * @example
+ * {"config": "mixed", "label": "input", "name": "not-ok.md"}
+ *
+ * *␠␠␠Mercury.
+ * *␠␠␠Venus.
+ *
+ * 111.␠␠␠␠Earth
+ * ␠␠␠␠␠␠␠␠and Mars.
+ *
+ * *␠**Jupiter**.
+ *
+ * ␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠System.
+ *
+ * *␠Saturn.
+ *
+ * ␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
+ * @example
+ * {"config": "mixed", "label": "output", "name": "not-ok.md"}
*
- * Paragraph.
+ * 1:5: Unexpected `3` spaces between list item marker and content in tight list, expected `1` space, remove `2` spaces
+ * 2:5: Unexpected `3` spaces between list item marker and content in tight list, expected `1` space, remove `2` spaces
+ * 4:9: Unexpected `4` spaces between list item marker and content in tight list, expected `1` space, remove `3` spaces
+ * 7:3: Unexpected `1` space between list item marker and content in loose list, expected `3` spaces, add `2` spaces
+ * 12:3: Unexpected `1` space between list item marker and content in loose list, expected `3` spaces, add `2` spaces
*
- * 11.·List
- * ····item.
+ * @example
+ * {"config": "one", "name": "ok.md"}
+ *
+ * *␠Mercury.
+ * *␠Venus.
+ *
+ * 111.␠Earth
+ * ␠␠␠␠␠and Mars.
+ *
+ * *␠**Jupiter**.
*
- * Paragraph.
+ * ␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠System.
*
- * *···List
- * ····item.
+ * *␠Saturn.
*
- * *···List
- * ····item.
+ * ␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
*
* @example
- * {"name": "ok.md", "config": "mixed"}
+ * {"config": "one", "label": "input", "name": "not-ok.md"}
*
- * *·List item.
+ * *␠␠␠Mercury.
+ * *␠␠␠Venus.
*
- * Paragraph.
+ * 111.␠␠␠␠Earth
+ * ␠␠␠␠␠␠␠␠and Mars.
*
- * 11.·List item
+ * *␠␠␠**Jupiter**.
*
- * Paragraph.
+ * ␠␠␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠␠␠System.
*
- * *···List
- * ····item.
+ * *␠␠␠Saturn.
*
- * *···List
- * ····item.
+ * ␠␠␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
+ * @example
+ * {"config": "one", "label": "output", "name": "not-ok.md"}
+ *
+ * 1:5: Unexpected `3` spaces between list item marker and content, expected `1` space, remove `2` spaces
+ * 2:5: Unexpected `3` spaces between list item marker and content, expected `1` space, remove `2` spaces
+ * 4:9: Unexpected `4` spaces between list item marker and content, expected `1` space, remove `3` spaces
+ * 7:5: Unexpected `3` spaces between list item marker and content, expected `1` space, remove `2` spaces
+ * 12:5: Unexpected `3` spaces between list item marker and content, expected `1` space, remove `2` spaces
*
* @example
- * {"name": "ok.md", "config": "space"}
+ * {"config": "tab", "name": "ok.md"}
*
- * *·List item.
+ * *␠␠␠Mercury.
+ * *␠␠␠Venus.
*
- * Paragraph.
+ * 111.␠␠␠␠Earth
+ * ␠␠␠␠␠␠␠␠and Mars.
*
- * 11.·List item
+ * *␠␠␠**Jupiter**.
*
- * Paragraph.
+ * ␠␠␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠␠␠System.
*
- * *·List
- * ··item.
+ * *␠␠␠Saturn.
*
- * *·List
- * ··item.
+ * ␠␠␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
*
* @example
- * {"name": "not-ok.md", "config": "space", "label": "input"}
+ * {"config": "tab", "label": "input", "name": "not-ok.md"}
+ *
+ * *␠Mercury.
+ * *␠Venus.
+ *
+ * 111.␠Earth
+ * ␠␠␠␠␠and Mars.
*
- * *···List
- * ····item.
+ * *␠**Jupiter**.
*
+ * ␠␠Jupiter is the fifth planet from the Sun and the largest in the Solar
+ * ␠␠System.
+ *
+ * *␠Saturn.
+ *
+ * ␠␠Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter.
* @example
- * {"name": "not-ok.md", "config": "space", "label": "output"}
+ * {"config": "tab", "label": "output", "name": "not-ok.md"}
*
- * 1:5: Incorrect list-item indent: remove 2 spaces
+ * 1:3: Unexpected `1` space between list item marker and content, expected `3` spaces, add `2` spaces
+ * 2:3: Unexpected `1` space between list item marker and content, expected `3` spaces, add `2` spaces
+ * 4:6: Unexpected `1` space between list item marker and content, expected `4` spaces, add `3` spaces
+ * 7:3: Unexpected `1` space between list item marker and content, expected `3` spaces, add `2` spaces
+ * 12:3: Unexpected `1` space between list item marker and content, expected `3` spaces, add `2` spaces
*
* @example
- * {"name": "not-ok.md", "config": "tab-size", "label": "input"}
+ * {"config": "🌍", "label": "output", "name": "not-ok.md", "positionless": true}
*
- * *·List
- * ··item.
+ * 1:1: Unexpected value `🌍` for `options`, expected `'mixed'`, `'one'`, or `'tab'`
*
* @example
- * {"name": "not-ok.md", "config": "tab-size", "label": "output"}
+ * {"config": "mixed", "gfm": true, "label": "input", "name": "gfm.md"}
+ *
+ * *␠[x] Mercury.
+ *
+ * 1.␠␠[ ] Venus.
*
- * 1:3: Incorrect list-item indent: add 2 spaces
+ * 2.␠␠[ ] Earth.
*
* @example
- * {"name": "not-ok.md", "config": "mixed", "label": "input"}
+ * {"config": "one", "gfm": true, "name": "gfm.md"}
*
- * *···List item.
+ * *␠[x] Mercury.
+ *
+ * 1.␠[ ] Venus.
+ *
+ * 2.␠[ ] Earth.
*
* @example
- * {"name": "not-ok.md", "config": "mixed", "label": "output"}
+ * {"config": "tab", "gfm": true, "name": "gfm.md"}
+ *
+ * *␠␠␠[x] Mercury.
+ *
+ * 1.␠␠[ ] Venus.
*
- * 1:5: Incorrect list-item indent: remove 2 spaces
+ * 2.␠␠[ ] Earth.
*
* @example
- * {"name": "not-ok.md", "config": "💩", "label": "output", "positionless": true}
+ * {"config": "mixed", "name": "loose-tight.md"}
*
- * 1:1: Incorrect list-item indent style `💩`: use either `'tab-size'`, `'space'`, or `'mixed'`
+ * Loose lists have blank lines between items:
+ *
+ * *␠␠␠Mercury.
+ *
+ * *␠␠␠Venus.
+ *
+ * …or between children of items:
+ *
+ * 1.␠␠Earth.
+ *
+ * ␠␠␠␠Earth is the third planet from the Sun and the only astronomical
+ * ␠␠␠␠object known to harbor life.
*/
-const remarkLintListItemIndent = lintRule(
+const remarkLintListItemIndent = lintRule$1(
{
origin: 'remark-lint:list-item-indent',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-list-item-indent#readme'
},
- (tree, file, option = 'tab-size') => {
+ function (tree, file, options) {
const value = String(file);
- if (option !== 'tab-size' && option !== 'space' && option !== 'mixed') {
+ let expected;
+ if (options === null || options === undefined) {
+ expected = 'one';
+ } else if (options === 'space') {
+ file.fail(
+ 'Unexpected value `' + options + "` for `options`, expected `'one'`"
+ );
+ } else if (options === 'tab-size') {
+ file.fail(
+ 'Unexpected value `' + options + "` for `options`, expected `'tab'`"
+ );
+ } else if (options === 'mixed' || options === 'one' || options === 'tab') {
+ expected = options;
+ } else {
file.fail(
- 'Incorrect list-item indent style `' +
- option +
- "`: use either `'tab-size'`, `'space'`, or `'mixed'`"
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected `'mixed'`, `'one'`, or `'tab'`"
);
}
- visit$x(tree, 'list', (node) => {
- if (generated(node)) return
- const spread = node.spread;
- let index = -1;
- while (++index < node.children.length) {
- const item = node.children[index];
- const head = item.children[0];
- const final = pointStart(head);
- const marker = value
- .slice(pointStart(item).offset, final.offset)
- .replace(/\[[x ]?]\s*$/i, '');
- const bulletSize = marker.replace(/\s+$/, '').length;
- const style =
- option === 'tab-size' || (option === 'mixed' && spread)
- ? Math.ceil(bulletSize / 4) * 4
- : bulletSize + 1;
- if (marker.length !== style) {
- const diff = style - marker.length;
- const abs = Math.abs(diff);
- file.message(
- 'Incorrect list-item indent: ' +
- (diff > 0 ? 'add' : 'remove') +
- ' ' +
- abs +
- ' ' +
- plural('space', abs),
- final
- );
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'list') return
+ let loose = node.spread;
+ if (!loose) {
+ for (const child of node.children) {
+ if (child.spread) {
+ loose = true;
+ break
+ }
+ }
+ }
+ for (const child of node.children) {
+ const head = child.children[0];
+ const itemStart = pointStart(child);
+ const headStart = pointStart(head);
+ if (
+ itemStart &&
+ headStart &&
+ typeof itemStart.offset === 'number' &&
+ typeof headStart.offset === 'number'
+ ) {
+ let slice = value.slice(itemStart.offset, headStart.offset);
+ const checkboxIndex = slice.indexOf('[');
+ if (checkboxIndex !== -1) slice = slice.slice(0, checkboxIndex);
+ const actualIndent = slice.length;
+ let end = actualIndent;
+ let previous = slice.charCodeAt(end - 1);
+ while (previous === 9 || previous === 32) {
+ end--;
+ previous = slice.charCodeAt(end - 1);
+ }
+ let expectedIndent = end + 1;
+ if (expected === 'tab' || (expected === 'mixed' && loose)) {
+ expectedIndent = Math.ceil(expectedIndent / 4) * 4;
+ }
+ const expectedSpaces = expectedIndent - end;
+ const actualSpaces = actualIndent - end;
+ if (actualSpaces !== expectedSpaces) {
+ const difference = expectedSpaces - actualSpaces;
+ const differenceAbsolute = Math.abs(difference);
+ file.message(
+ 'Unexpected `' +
+ actualSpaces +
+ '` ' +
+ pluralize('space', actualSpaces) +
+ ' between list item marker and content' +
+ (expected === 'mixed'
+ ? ' in ' + (loose ? 'loose' : 'tight') + ' list'
+ : '') +
+ ', expected `' +
+ expectedSpaces +
+ '` ' +
+ pluralize('space', expectedSpaces) +
+ ', ' +
+ (difference > 0 ? 'add' : 'remove') +
+ ' `' +
+ differenceAbsolute +
+ '` ' +
+ pluralize('space', differenceAbsolute),
+ {ancestors: [...parents, node, child], place: headStart}
+ );
+ }
}
}
});
@@ -13457,252 +13372,181 @@ const remarkLintListItemIndent = lintRule(
);
var remarkLintListItemIndent$1 = remarkLintListItemIndent;
-const convert$w =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$w
- }
- if (typeof test === 'string') {
- return typeFactory$w(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$w(test) : propsFactory$w(test)
- }
- if (typeof test === 'function') {
- return castFactory$w(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$w(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$w(tests[index]);
- }
- return castFactory$w(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$w(check) {
- return castFactory$w(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$w(check) {
- return castFactory$w(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$w(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$w() {
- return true
-}
-
-function color$x(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$w = true;
-const EXIT$w = false;
-const SKIP$w = 'skip';
-const visitParents$w =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$w(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$x(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$w(visitor(node, parents));
- if (result[0] === EXIT$w) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$w) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$w) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$w(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$w, value]
- }
- return [value]
-}
-
-const visit$w =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$w(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
-
/**
+ * remark-lint rule to warn for lazy lines in block quotes.
+ *
+ * ## What is this?
+ *
+ * This package checks the style of block quotes.
+ *
* ## When should I use this?
*
- * You can use this package to check that lines in block quotes start with `>`.
+ * You can use this package to check that the style of block quotes is
+ * consistent.
*
* ## API
*
+ * ### `unified().use(remarkLintNoBlockquoteWithoutMarker)`
+ *
+ * Warn for lazy lines in block quotes.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
- * Rules around “lazy” lines are not straightforward and visually confusing,
+ * Rules around lazy lines are not straightforward and visually confusing,
* so it’s recommended to start each line with a `>`.
*
* ## Fix
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * adds `>` markers to every line in a block quote.
+ * [`remark-stringify`][github-remark-stringify] adds `>` markers to every line
+ * in a block quote.
+ *
+ * [api-remark-lint-no-blockquote-without-marker]: #unifieduseremarklintnoblockquotewithoutmarker
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module no-blockquote-without-marker
- * @summary
- * remark-lint rule to warn when lines in block quotes start without `>`.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @example
* {"name": "ok.md"}
*
- * > Foo…
- * > …bar…
- * > …baz.
+ * > Mercury,
+ * > Venus,
+ * > and Earth.
+ *
+ * Mars.
*
* @example
* {"name": "ok-tabs.md"}
*
- * >»Foo…
- * >»…bar…
- * >»…baz.
+ * >␉Mercury,
+ * >␉Venus,
+ * >␉and Earth.
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * > Foo…
- * …bar…
- * > …baz.
+ * > Mercury,
+ * Venus,
+ * > and Earth.
+ * @example
+ * {"label": "output", "name": "not-ok.md"}
+ *
+ * 2:1: Unexpected `0` block quote markers before paragraph line, expected `1` marker, add `1` marker
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "input", "name": "not-ok-tabs.md"}
+ *
+ * >␉Mercury,
+ * ␉Venus,
+ * and Earth.
+ * @example
+ * {"label": "output", "name": "not-ok-tabs.md"}
*
- * 2:1: Missing marker in block quote
+ * 2:2: Unexpected `0` block quote markers before paragraph line, expected `1` marker, add `1` marker
+ * 3:1: Unexpected `0` block quote markers before paragraph line, expected `1` marker, add `1` marker
*
* @example
- * {"name": "not-ok-tabs.md", "label": "input"}
+ * {"label": "input", "name": "containers.md"}
+ *
+ * * > Mercury and
+ * Venus.
+ *
+ * > * Mercury and
+ * Venus.
+ *
+ * * > * Mercury and
+ * Venus.
*
- * >»Foo…
- * »…bar…
- * …baz.
+ * > * > Mercury and
+ * Venus.
*
+ * ***
+ *
+ * > * > Mercury and
+ * > Venus.
* @example
- * {"name": "not-ok-tabs.md", "label": "output"}
+ * {"label": "output", "name": "containers.md"}
*
- * 2:1: Missing marker in block quote
- * 3:1: Missing marker in block quote
+ * 2:1: Unexpected `0` block quote markers before paragraph line, expected `1` marker, add `1` marker
+ * 5:3: Unexpected `0` block quote markers before paragraph line, expected `1` marker, add `1` marker
+ * 8:5: Unexpected `0` block quote markers before paragraph line, expected `1` marker, add `1` marker
+ * 11:7: Unexpected `0` block quote markers before paragraph line, expected `2` markers, add `2` markers
+ * 16:7: Unexpected `1` block quote marker before paragraph line, expected `2` markers, add `1` marker
*/
-const remarkLintNoBlockquoteWithoutMarker = lintRule(
+const remarkLintNoBlockquoteWithoutMarker = lintRule$1(
{
origin: 'remark-lint:no-blockquote-without-marker',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-blockquote-without-marker#readme'
},
- (tree, file) => {
+ function (tree, file) {
const value = String(file);
const loc = location(file);
- visit$w(tree, 'blockquote', (node) => {
- let index = -1;
- while (++index < node.children.length) {
- const child = node.children[index];
- if (child.type === 'paragraph' && !generated(child)) {
- const end = pointEnd(child).line;
- const column = pointStart(child).column;
- let line = pointStart(child).line;
- while (++line <= end) {
- const offset = loc.toOffset({line, column});
- if (/>[\t ]+$/.test(value.slice(offset - 5, offset))) {
- continue
- }
- file.message('Missing marker in block quote', {
- line,
- column: column - 2
- });
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'paragraph') return
+ let expected = 0;
+ for (const parent of parents) {
+ if (parent.type === 'blockquote') {
+ expected++;
+ }
+ else if (
+ parent.type === 'containerDirective' ||
+ parent.type === 'footnoteDefinition' ||
+ parent.type === 'list' ||
+ parent.type === 'listItem' ||
+ parent.type === 'root'
+ ) ; else {
+ return SKIP
+ }
+ }
+ if (!expected) return SKIP
+ const end = pointEnd(node);
+ const start = pointStart(node);
+ if (!end || !start) return SKIP
+ let line = start.line;
+ while (++line <= end.line) {
+ const lineStart = loc.toOffset({line, column: 1});
+ let actual = 0;
+ let index = lineStart;
+ while (index < value.length) {
+ const code = value.charCodeAt(index);
+ if (code === 9 || code === 32) ; else if (code === 62 ) {
+ actual++;
+ } else {
+ break
}
+ index++;
+ }
+ const point = loc.toPoint(index);
+ const difference = expected - actual;
+ if (difference) {
+ file.message(
+ 'Unexpected `' +
+ actual +
+ '` block quote ' +
+ pluralize('marker', actual) +
+ ' before paragraph line, expected `' +
+ expected +
+ '` ' +
+ pluralize('marker', expected) +
+ ', add `' +
+ difference +
+ '` ' +
+ pluralize('marker', difference),
+ {ancestors: [...parents, node], place: point}
+ );
}
}
});
@@ -13710,6437 +13554,4119 @@ const remarkLintNoBlockquoteWithoutMarker = lintRule(
);
var remarkLintNoBlockquoteWithoutMarker$1 = remarkLintNoBlockquoteWithoutMarker;
-const convert$v =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$v
- }
- if (typeof test === 'string') {
- return typeFactory$v(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$v(test) : propsFactory$v(test)
- }
- if (typeof test === 'function') {
- return castFactory$v(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$v(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$v(tests[index]);
- }
- return castFactory$v(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$v(check) {
- return castFactory$v(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$v(check) {
- return castFactory$v(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$v(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$v() {
- return true
-}
-
-function color$w(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$v = true;
-const EXIT$v = false;
-const SKIP$v = 'skip';
-const visitParents$v =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$v(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$w(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$v(visitor(node, parents));
- if (result[0] === EXIT$v) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$v) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$v) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$v(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$v, value]
- }
- return [value]
-}
-
-const visit$v =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$v(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
-
-const emptyOptions$1 = {};
-function toString$1(value, options) {
- const settings = options || emptyOptions$1;
- const includeImageAlt =
- typeof settings.includeImageAlt === 'boolean'
- ? settings.includeImageAlt
- : true;
- const includeHtml =
- typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true;
- return one$1(value, includeImageAlt, includeHtml)
-}
-function one$1(value, includeImageAlt, includeHtml) {
- if (node$1(value)) {
- if ('value' in value) {
- return value.type === 'html' && !includeHtml ? '' : value.value
- }
- if (includeImageAlt && 'alt' in value && value.alt) {
- return value.alt
- }
- if ('children' in value) {
- return all$1(value.children, includeImageAlt, includeHtml)
- }
- }
- if (Array.isArray(value)) {
- return all$1(value, includeImageAlt, includeHtml)
- }
- return ''
-}
-function all$1(values, includeImageAlt, includeHtml) {
- const result = [];
- let index = -1;
- while (++index < values.length) {
- result[index] = one$1(values[index], includeImageAlt, includeHtml);
- }
- return result.join('')
-}
-function node$1(value) {
- return Boolean(value && typeof value === 'object')
-}
-
/**
+ * remark-lint rule to warn when identifiers are defined multiple times.
+ *
+ * ## What is this?
+ *
+ * This package checks that defined identifiers are unique.
+ *
* ## When should I use this?
*
- * You can use this package to check that autolink literal URLs are not used.
+ * You can use this package to check that definitions are useful.
*
* ## API
*
+ * ### `unified().use(remarkLintNoDuplicateDefinitions)`
+ *
+ * Warn when identifiers are defined multiple times.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
- * ## Recommendation
+ * ###### Returns
*
- * Autolink literal URLs (just a URL) are a feature enabled by GFM.
- * They don’t work everywhere.
- * Due to this, it’s recommended to instead use normal autolinks
- * (``) or links (`[text](url)`).
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * ## Fix
+ * ## Recommendation
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * never creates autolink literals and always uses normal autolinks (``).
+ * It’s a mistake when the same identifier is defined multiple times.
*
- * @module no-literal-urls
- * @summary
- * remark-lint rule to warn for autolink literals.
+ * [api-remark-lint-no-duplicate-definitions]: #unifieduseremarklintnoduplicatedefinitions
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-duplicate-definitions
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- *
+ * [mercury]: https://example.com/mercury/
+ * [venus]: https://example.com/venus/
*
* @example
- * {"name": "not-ok.md", "label": "input", "gfm": true}
+ * {"label": "input", "name": "not-ok.md"}
+ *
+ * [mercury]: https://example.com/mercury/
+ * [mercury]: https://example.com/venus/
+ * @example
+ * {"label": "output", "name": "not-ok.md"}
*
- * http://foo.bar/baz
+ * 2:1-2:38: Unexpected definition with an already defined identifier (`mercury`), expected unique identifiers
*
* @example
- * {"name": "not-ok.md", "label": "output", "gfm": true}
+ * {"gfm": true, "label": "input", "name": "gfm.md"}
+ *
+ * Mercury[^mercury].
+ *
+ * [^mercury]:
+ * Mercury is the first planet from the Sun and the smallest in the Solar
+ * System.
*
- * 1:1-1:19: Don’t use literal URLs without angle brackets
+ * [^mercury]:
+ * Venus is the second planet from the Sun.
+ *
+ * @example
+ * {"gfm": true, "label": "output", "name": "gfm.md"}
+ *
+ * 7:1-7:12: Unexpected footnote definition with an already defined identifier (`mercury`), expected unique identifiers
*/
-const remarkLintNoLiteralUrls = lintRule(
+const empty = [];
+const remarkLintNoDuplicateDefinitions = lintRule$1(
{
- origin: 'remark-lint:no-literal-urls',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-literal-urls#readme'
+ origin: 'remark-lint:no-duplicate-definitions',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-duplicate-definitions#readme'
},
- (tree, file) => {
- visit$v(tree, 'link', (node) => {
- const value = toString$1(node);
- if (
- !generated(node) &&
- pointStart(node).column === pointStart(node.children[0]).column &&
- pointEnd(node).column ===
- pointEnd(node.children[node.children.length - 1]).column &&
- (node.url === 'mailto:' + value || node.url === value)
- ) {
- file.message('Don’t use literal URLs without angle brackets', node);
+ function (tree, file) {
+ const definitions = new Map();
+ const footnoteDefinitions = new Map();
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ const [map, identifier] =
+ node.type === 'definition'
+ ? [definitions, node.identifier]
+ : node.type === 'footnoteDefinition'
+ ? [footnoteDefinitions, node.identifier]
+ : empty;
+ if (map && identifier && node.position) {
+ const ancestors = [...parents, node];
+ const duplicateAncestors = map.get(identifier);
+ if (duplicateAncestors) {
+ const duplicate = duplicateAncestors.at(-1);
+ file.message(
+ 'Unexpected ' +
+ (node.type === 'footnoteDefinition' ? 'footnote ' : '') +
+ 'definition with an already defined identifier (`' +
+ identifier +
+ '`), expected unique identifiers',
+ {
+ ancestors,
+ cause: new VFileMessage('Identifier already defined here', {
+ ancestors: duplicateAncestors,
+ place: duplicate.position,
+ source: 'remark-lint',
+ ruleId: 'no-duplicate-definitions'
+ }),
+ place: node.position
+ }
+ );
+ }
+ map.set(identifier, ancestors);
}
});
}
);
-var remarkLintNoLiteralUrls$1 = remarkLintNoLiteralUrls;
-
-const convert$u =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$u
- }
- if (typeof test === 'string') {
- return typeFactory$u(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$u(test) : propsFactory$u(test)
- }
- if (typeof test === 'function') {
- return castFactory$u(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$u(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$u(tests[index]);
- }
- return castFactory$u(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$u(check) {
- return castFactory$u(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$u(check) {
- return castFactory$u(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$u(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$u() {
- return true
-}
-
-function color$v(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$u = true;
-const EXIT$u = false;
-const SKIP$u = 'skip';
-const visitParents$u =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$u(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$v(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$u(visitor(node, parents));
- if (result[0] === EXIT$u) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$u) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$u) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$u(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$u, value]
- }
- return [value]
-}
-
-const visit$u =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$u(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+var remarkLintNoDuplicateDefinitions$1 = remarkLintNoDuplicateDefinitions;
/**
+ * remark-lint rule to warn when extra whitespace is used between hashes and
+ * content in headings.
+ *
+ * ## What is this?
+ *
+ * This package checks whitespace between hashes and content.
+ *
* ## When should I use this?
*
- * You can use this package to check that ordered list markers are consistent.
+ * You can use this package to check that headings are consistent.
*
* ## API
*
- * The following options (default: `'consistent'`) are accepted:
+ * ### `unified().use(remarkLintNoHeadingContentIndent)`
+ *
+ * Warn when extra whitespace is used between hashes and content in headings.
+ *
+ * ###### Parameters
+ *
+ * There are no options.
+ *
+ * ###### Returns
*
- * * `'.'`
- * — prefer dots
- * * `')'`
- * — prefer parens
- * * `'consistent'`
- * — detect the first used style and warn when further markers differ
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
* ## Recommendation
*
- * Parens for list markers were not supported in markdown before CommonMark.
- * While they should work in most places now, not all markdown parsers follow
- * CommonMark.
- * Due to this, it’s recommended to prefer dots.
+ * One space is required and more than one space has no effect.
+ * Due to this, it’s recommended to turn this rule on.
*
* ## Fix
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats ordered lists with dots by default.
- * Pass
- * [`bulletOrdered: ')'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsbulletordered)
- * to always use parens.
+ * [`remark-stringify`][github-remark-stringify] formats headings with one space.
*
- * @module ordered-list-marker-style
- * @summary
- * remark-lint rule to warn when ordered list markers are inconsistent.
+ * [api-remark-lint-no-heading-content-indent]: #unifieduseremarklintnoheadingcontentindent
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-heading-content-indent
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * 1. Foo
- *
+ * #␠Mercury
*
- * 1. Bar
+ * ##␠Venus␠##
*
- * Unordered lists are not affected by this rule.
+ * ␠␠##␠Earth
*
- * * Foo
+ * Setext headings are not affected:
*
- * @example
- * {"name": "ok.md", "config": "."}
- *
- * 1. Foo
+ * ␠Mars
+ * =====
*
- * 2. Bar
+ * ␠Jupiter
+ * --------
*
* @example
- * {"name": "ok.md", "config": ")"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * 1) Foo
+ * #␠␠Mercury
*
- * 2) Bar
+ * ##␠Venus␠␠##
*
+ * ␠␠##␠␠␠Earth
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 1. Foo
- *
- * 2) Bar
+ * 1:4: Unexpected `2` spaces between hashes and content, expected `1` space, remove `1` space
+ * 3:11: Unexpected `2` spaces between content and hashes, expected `1` space, remove `1` space
+ * 5:8: Unexpected `3` spaces between hashes and content, expected `1` space, remove `2` spaces
*
* @example
- * {"name": "not-ok.md", "label": "output"}
- *
- * 3:1-3:8: Marker style should be `.`
+ * {"label": "input", "name": "empty-heading.md"}
*
+ * #␠␠
* @example
- * {"name": "not-ok.md", "label": "output", "config": "💩", "positionless": true}
+ * {"label": "output", "name": "empty-heading.md"}
*
- * 1:1: Incorrect ordered list item marker style `💩`: use either `'.'` or `')'`
+ * 1:4: Unexpected `2` spaces between hashes and content, expected `1` space, remove `1` space
*/
-const remarkLintOrderedListMarkerStyle = lintRule(
+const remarkLintNoHeadingContentIndent = lintRule$1(
{
- origin: 'remark-lint:ordered-list-marker-style',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-ordered-list-marker-style#readme'
+ origin: 'remark-lint:no-heading-content-indent',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-content-indent#readme'
},
- (tree, file, option = 'consistent') => {
+ function (tree, file) {
const value = String(file);
- if (option !== 'consistent' && option !== '.' && option !== ')') {
- file.fail(
- 'Incorrect ordered list item marker style `' +
- option +
- "`: use either `'.'` or `')'`"
- );
- }
- visit$u(tree, 'list', (node) => {
- let index = -1;
- if (!node.ordered) return
- while (++index < node.children.length) {
- const child = node.children[index];
- if (!generated(child)) {
- const marker = (
- value
- .slice(
- pointStart(child).offset,
- pointStart(child.children[0]).offset
- )
- .replace(/\s|\d/g, '')
- .replace(/\[[x ]?]\s*$/i, '')
- );
- if (option === 'consistent') {
- option = marker;
- } else if (marker !== option) {
- file.message('Marker style should be `' + option + '`', child);
- }
- }
- }
- });
- }
-);
-var remarkLintOrderedListMarkerStyle$1 = remarkLintOrderedListMarkerStyle;
-
-const convert$t =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$t
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
}
- if (typeof test === 'string') {
- return typeFactory$t(test)
+ if (node.type !== 'heading') return
+ const start = pointStart(node);
+ const end = pointEnd(node);
+ if (
+ !end ||
+ !start ||
+ typeof end.offset !== 'number' ||
+ typeof start.offset !== 'number'
+ ) {
+ return
}
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$t(test) : propsFactory$t(test)
+ let index = start.offset;
+ let code = value.charCodeAt(index);
+ let found = false;
+ while (value.charCodeAt(index) === 35 ) {
+ index++;
+ found = true;
+ continue
}
- if (typeof test === 'function') {
- return castFactory$t(test)
+ const from = index;
+ code = value.charCodeAt(index);
+ while (code === 9 || code === 32 ) {
+ code = value.charCodeAt(++index);
+ continue
}
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$t(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$t(tests[index]);
- }
- return castFactory$t(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$t(check) {
- return castFactory$t(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$t(check) {
- return castFactory$t(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$t(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$t() {
- return true
-}
-
-function color$u(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$t = true;
-const EXIT$t = false;
-const SKIP$t = 'skip';
-const visitParents$t =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$t(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$u(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$t(visitor(node, parents));
- if (result[0] === EXIT$t) {
- return result
+ const size = index - from;
+ if (found && size > 1) {
+ file.message(
+ 'Unexpected `' +
+ size +
+ '` ' +
+ pluralize('space', size) +
+ ' between hashes and content, expected `1` space, remove `' +
+ (size - 1) +
+ '` ' +
+ pluralize('space', size - 1),
+ {
+ ancestors: [...parents, node],
+ place: {
+ line: start.line,
+ column: start.column + (index - start.offset),
+ offset: start.offset + (index - start.offset)
}
}
- if (node.children && result[0] !== SKIP$t) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$t) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
+ );
+ }
+ const contentStart = index;
+ index = end.offset;
+ code = value.charCodeAt(index - 1);
+ while (code === 9 || code === 32 ) {
+ index--;
+ code = value.charCodeAt(index - 1);
+ continue
+ }
+ let endFound = false;
+ while (value.charCodeAt(index - 1) === 35 ) {
+ index--;
+ endFound = true;
+ continue
+ }
+ const endFrom = index;
+ code = value.charCodeAt(index - 1);
+ while (code === 9 || code === 32 ) {
+ index--;
+ code = value.charCodeAt(index - 1);
+ continue
+ }
+ const endSize = endFrom - index;
+ if (endFound && index > contentStart && endSize > 1) {
+ file.message(
+ 'Unexpected `' +
+ endSize +
+ '` ' +
+ pluralize('space', endSize) +
+ ' between content and hashes, expected `1` space, remove `' +
+ (endSize - 1) +
+ '` ' +
+ pluralize('space', endSize - 1),
+ {
+ ancestors: [...parents, node],
+ place: {
+ line: end.line,
+ column: end.column - (end.offset - endFrom),
+ offset: end.offset - (end.offset - endFrom)
}
}
- return result
- }
+ );
}
- }
- );
-function toResult$t(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$t, value]
+ });
}
- return [value]
-}
+);
+var remarkLintNoHeadingContentIndent$1 = remarkLintNoHeadingContentIndent;
-const visit$t =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$t(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
+/**
+ * remark-lint rule to warn when GFM autolink literals are used.
+ *
+ * ## What is this?
+ *
+ * This package checks that regular autolinks or full links are used.
+ * Literal autolinks is a GFM feature enabled with
+ * [`remark-gfm`][github-remark-gfm].
+ *
+ * ## When should I use this?
+ *
+ * You can use this package to check that links are consistent.
+ *
+ * ## API
+ *
+ * ### `unified().use(remarkLintNoLiteralUrls)`
+ *
+ * Warn when GFM autolink literals are used.
+ *
+ * ###### Parameters
+ *
+ * There are no options.
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ## Recommendation
+ *
+ * GFM autolink literals (just a raw URL) are a feature enabled by GFM.
+ * They don’t work everywhere.
+ * So,
+ * it’s recommended to instead use regular autolinks (``) or full
+ * links (`[text](url)`).
+ *
+ * ## Fix
+ *
+ * [`remark-stringify`][github-remark-stringify] never generates GFM autolink
+ * literals.
+ * It always generates regular autolinks or full links.
+ *
+ * [api-remark-lint-no-literal-urls]: #unifieduseremarklintnoliteralurls
+ * [github-remark-gfm]: https://github.com/remarkjs/remark-gfm
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-literal-urls
+ * @author Titus Wormer
+ * @copyright 2015 Titus Wormer
+ * @license MIT
+ *
+ * @example
+ * {"name": "ok.md", "gfm": true}
+ *
+ *
+ *
+ * ![Venus](http://example.com/venus/).
+ *
+ * @example
+ * {"name": "not-ok.md", "label": "input", "gfm": true}
+ *
+ * https://example.com/mercury/
+ *
+ * www.example.com/venus/
+ *
+ * earth@mars.planets
+ *
+ * @example
+ * {"name": "not-ok.md", "label": "output", "gfm": true}
+ *
+ * 1:1-1:29: Unexpected GFM autolink literal, expected regular autolink, add `<` before and `>` after
+ * 3:1-3:23: Unexpected GFM autolink literal, expected regular autolink, add `` after
+ * 5:1-5:19: Unexpected GFM autolink literal, expected regular autolink, add `` after
+ */
+const defaultHttp = 'http://';
+const defaultMailto = 'mailto:';
+const remarkLintNoLiteralUrls = lintRule$1(
+ {
+ origin: 'remark-lint:no-literal-urls',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-literal-urls#readme'
+ },
+ function (tree, file) {
+ const value = String(file);
+ visitParents(tree, 'link', function (node, parents) {
+ const start = pointStart(node);
+ if (!start || typeof start.offset !== 'number') return
+ const raw = toString(node);
+ let protocol;
+ let otherwiseFine = false;
+ if (raw === node.url) {
+ otherwiseFine = true;
+ } else if (defaultHttp + raw === node.url) {
+ protocol = defaultHttp;
+ } else if (defaultMailto + raw === node.url) {
+ protocol = defaultMailto;
}
- }
- );
+ if (
+ (protocol || otherwiseFine) &&
+ !asciiPunctuation(value.charCodeAt(start.offset))
+ ) {
+ file.message(
+ 'Unexpected GFM autolink literal, expected regular autolink, add ' +
+ (protocol ? '`<' + protocol + '`' : '`<`') +
+ ' before and `>` after',
+ {ancestors: [...parents, node], place: node.position}
+ );
+ }
+ });
+ }
+);
+var remarkLintNoLiteralUrls$1 = remarkLintNoLiteralUrls;
/**
+ * remark-lint rule to warn when shortcut reference images are used.
+ *
+ * ## What is this?
+ *
+ * This package checks that collapsed or full reference images are used.
+ *
* ## When should I use this?
*
- * You can use this package to check that hard breaks use two spaces and
- * not more.
+ * You can use this package to check that references are consistent.
*
* ## API
*
+ * ### `unified().use(remarkLintNoShortcutReferenceImage)`
+ *
+ * Warn when shortcut reference images are used.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
- * Less than two spaces do not create a hard breaks and more than two spaces
- * have no effect.
- * Due to this, it’s recommended to turn this rule on.
+ * Shortcut references use an implicit style that looks a lot like something
+ * that could occur as plain text instead of syntax.
+ * In some cases,
+ * plain text is intended instead of an image.
+ * So it’s recommended to use collapsed or full references instead.
*
- * @module hard-break-spaces
- * @summary
- * remark-lint rule to warn when more spaces are used than needed
- * for hard breaks.
+ * [api-remark-lint-no-shortcut-reference-image]: #unifieduseremarklintnoshortcutreferenceimage
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-shortcut-reference-image
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * Lorem ipsum··
- * dolor sit amet
+ * ![Mercury][]
+ *
+ * [mercury]: /mercury.png
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * Lorem ipsum···
- * dolor sit amet.
+ * ![Mercury]
*
+ * [mercury]: /mercury.png
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 1:12-2:1: Use two spaces for hard line breaks
+ * 1:1-1:11: Unexpected shortcut reference image (`![text]`), expected collapsed reference (`![text][]`)
*/
-const remarkLintHardBreakSpaces = lintRule(
+const remarkLintNoShortcutReferenceImage = lintRule$1(
{
- origin: 'remark-lint:hard-break-spaces',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-hard-break-spaces#readme'
+ origin: 'remark-lint:no-shortcut-reference-image',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shortcut-reference-image#readme'
},
- (tree, file) => {
- const value = String(file);
- visit$t(tree, 'break', (node) => {
- if (!generated(node)) {
- const slice = value
- .slice(pointStart(node).offset, pointEnd(node).offset)
- .split('\n', 1)[0]
- .replace(/\r$/, '');
- if (slice.length > 2) {
- file.message('Use two spaces for hard line breaks', node);
- }
+ function (tree, file) {
+ visitParents(tree, 'imageReference', function (node, parents) {
+ if (node.position && node.referenceType === 'shortcut') {
+ file.message(
+ 'Unexpected shortcut reference image (`![text]`), expected collapsed reference (`![text][]`)',
+ {ancestors: [...parents, node], place: node.position}
+ );
}
});
}
);
-var remarkLintHardBreakSpaces$1 = remarkLintHardBreakSpaces;
-
-function stringifyPosition$1(value) {
- if (!value || typeof value !== 'object') {
- return ''
- }
- if ('position' in value || 'type' in value) {
- return position$1(value.position)
- }
- if ('start' in value || 'end' in value) {
- return position$1(value)
- }
- if ('line' in value || 'column' in value) {
- return point$1(value)
- }
- return ''
-}
-function point$1(point) {
- return index$1(point && point.line) + ':' + index$1(point && point.column)
-}
-function position$1(pos) {
- return point$1(pos && pos.start) + '-' + point$1(pos && pos.end)
-}
-function index$1(value) {
- return value && typeof value === 'number' ? value : 1
-}
-
-const convert$s =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$s
- }
- if (typeof test === 'string') {
- return typeFactory$s(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$s(test) : propsFactory$s(test)
- }
- if (typeof test === 'function') {
- return castFactory$s(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$s(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$s(tests[index]);
- }
- return castFactory$s(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$s(check) {
- return castFactory$s(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$s(check) {
- return castFactory$s(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$s(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$s() {
- return true
-}
-
-function color$t(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$s = true;
-const EXIT$s = false;
-const SKIP$s = 'skip';
-const visitParents$s =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$s(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$t(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$s(visitor(node, parents));
- if (result[0] === EXIT$s) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$s) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$s) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$s(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$s, value]
- }
- return [value]
-}
-
-const visit$s =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$s(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+var remarkLintNoShortcutReferenceImage$1 = remarkLintNoShortcutReferenceImage;
/**
+ * remark-lint rule to warn when shortcut reference links are used.
+ *
+ * ## What is this?
+ *
+ * This package checks that collapsed or full reference links are used.
+ *
* ## When should I use this?
*
- * You can use this package to check that identifiers are defined once.
+ * You can use this package to check that references are consistent.
*
* ## API
*
+ * ### `unified().use(remarkLintNoShortcutReferenceLink)`
+ *
+ * Warn when shortcut reference links are used.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
- * It’s a mistake when the same identifier is defined multiple times.
+ * Shortcut references use an implicit style that looks a lot like something
+ * that could occur as plain text instead of syntax.
+ * In some cases,
+ * plain text is intended instead of a link.
+ * So it’s recommended to use collapsed or full references instead.
*
- * @module no-duplicate-definitions
- * @summary
- * remark-lint rule to warn when identifiers are defined multiple times.
+ * [api-remark-lint-no-shortcut-reference-link]: #unifieduseremarklintnoshortcutreferencelink
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-shortcut-reference-link
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * [foo]: bar
- * [baz]: qux
+ * [Mercury][]
+ *
+ * [mercury]: http://example.com/mercury/
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * [foo]: bar
- * [foo]: qux
+ * [Mercury]
*
+ * [mercury]: http://example.com/mercury/
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 2:1-2:11: Do not use definitions with the same identifier (1:1)
+ * 1:1-1:10: Unexpected shortcut reference link (`[text]`), expected collapsed reference (`[text][]`)
*/
-const remarkLintNoDuplicateDefinitions = lintRule(
+const remarkLintNoShortcutReferenceLink = lintRule$1(
{
- origin: 'remark-lint:no-duplicate-definitions',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-duplicate-definitions#readme'
+ origin: 'remark-lint:no-shortcut-reference-link',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shortcut-reference-link#readme'
},
- (tree, file) => {
- const map = Object.create(null);
- visit$s(tree, (node) => {
- if (
- (node.type === 'definition' || node.type === 'footnoteDefinition') &&
- !generated(node)
- ) {
- const identifier = node.identifier;
- const duplicate = map[identifier];
- if (duplicate) {
- file.message(
- 'Do not use definitions with the same identifier (' +
- duplicate +
- ')',
- node
- );
- }
- map[identifier] = stringifyPosition$1(pointStart(node));
+ function (tree, file) {
+ visitParents(tree, 'linkReference', function (node, parents) {
+ if (node.position && node.referenceType === 'shortcut') {
+ file.message(
+ 'Unexpected shortcut reference link (`[text]`), expected collapsed reference (`[text][]`)',
+ {ancestors: [...parents, node], place: node.position}
+ );
}
});
}
);
-var remarkLintNoDuplicateDefinitions$1 = remarkLintNoDuplicateDefinitions;
+var remarkLintNoShortcutReferenceLink$1 = remarkLintNoShortcutReferenceLink;
-const convert$r =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$r
- }
- if (typeof test === 'string') {
- return typeFactory$r(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$r(test) : propsFactory$r(test)
- }
- if (typeof test === 'function') {
- return castFactory$r(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$r(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$r(tests[index]);
- }
- return castFactory$r(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$r(check) {
- return castFactory$r(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$r(check) {
- return castFactory$r(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$r(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$r() {
- return true
+const js = /\s+/g;
+const html = /[\t\n\v\f\r ]+/g;
+function collapseWhiteSpace(value, options) {
+ if (!options) {
+ options = {};
+ } else if (typeof options === 'string') {
+ options = {style: options};
+ }
+ const replace = options.preserveLineEndings ? replaceLineEnding : replaceSpace;
+ return String(value).replace(
+ options.style === 'html' ? html : js,
+ options.trim ? trimFactory(replace) : replace
+ )
}
-
-function color$s(d) {
- return '\u001B[33m' + d + '\u001B[39m'
+function replaceLineEnding(value) {
+ const match = /\r?\n|\r/.exec(value);
+ return match ? match[0] : ' '
}
-
-const CONTINUE$r = true;
-const EXIT$r = false;
-const SKIP$r = 'skip';
-const visitParents$r =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$r(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$s(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$r(visitor(node, parents));
- if (result[0] === EXIT$r) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$r) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$r) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$r(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$r, value]
- }
- return [value]
+function replaceSpace() {
+ return ' '
}
-
-const visit$r =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$r(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
-
-function headingStyle(node, relative) {
- const last = node.children[node.children.length - 1];
- const depth = node.depth;
- const pos = node.position && node.position.end;
- const final = last && last.position && last.position.end;
- if (!pos) {
- return null
- }
- if (!last) {
- if (pos.column - 1 <= depth * 2) {
- return consolidate(depth, relative)
- }
- return 'atx-closed'
- }
- if (final && final.line + 1 === pos.line) {
- return 'setext'
- }
- if (final && final.column + depth < pos.column) {
- return 'atx-closed'
+function trimFactory(replace) {
+ return dropOrReplace
+ function dropOrReplace(value, index, all) {
+ return index === 0 || index + value.length === all.length
+ ? ''
+ : replace(value)
}
- return consolidate(depth, relative)
-}
-function consolidate(depth, relative) {
- return depth < 3
- ? 'atx'
- : relative === 'atx' || relative === 'setext'
- ? relative
- : null
}
/**
+ * remark-lint rule to warn when undefined definitions are referenced.
+ *
+ * ## What is this?
+ *
+ * This package checks that referenced definitions are defined.
+ *
* ## When should I use this?
*
- * You can use this package to check that there is on space between `#`
- * characters and the content in headings.
+ * You can use this package to check for broken references.
*
* ## API
*
- * There are no options.
+ * ### `unified().use(remarkLintNoUndefinedReferences[, options])`
+ *
+ * Warn when undefined definitions are referenced.
+ *
+ * ###### Parameters
+ *
+ * * `options` ([`Options`][api-options], optional)
+ * — configuration
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ### `Options`
+ *
+ * Configuration (TypeScript type).
+ *
+ * ###### Fields
+ *
+ * * `allow` (`Array`, optional)
+ * — list of values to allow between `[` and `]`
+ * * `allowShortcutLink` (`boolean`, default: `false`)
+ * — allow shortcut references, which are just brackets such as `[text]`
*
* ## Recommendation
*
- * One space is required and more than one space has no effect.
- * Due to this, it’s recommended to turn this rule on.
+ * Shortcut references use an implicit syntax that could also occur as plain
+ * text.
+ * To illustrate,
+ * it is reasonable to expect an author adding `[…]` to abbreviate some text
+ * somewhere in a document:
*
- * ## Fix
+ * ```markdown
+ * > Some […] quote.
+ * ```
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats headings with exactly one space.
+ * This isn’t a problem,
+ * but it might become one when an author later adds a definition:
*
- * @module no-heading-content-indent
- * @summary
- * remark-lint rule to warn when there are too many spaces between
- * hashes and content in headings.
+ * ```markdown
+ * Some new text […][].
+ *
+ * […]: #read-more
+ * ```
+ *
+ * The second author might expect only their newly added text to form a link,
+ * but their changes also result in a link for the text by the first author.
+ *
+ * [api-options]: #options
+ * [api-remark-lint-no-undefined-references]: #unifieduseremarklintnoundefinedreferences-options
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-undefined-references
* @author Titus Wormer
- * @copyright 2015 Titus Wormer
+ * @copyright 2016 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * #·Foo
+ * [Mercury][] is the first planet from the Sun and the smallest in the Solar
+ * System.
*
- * ## Bar·##
+ * Venus is the second planet from the [Sun.
*
- * ##·Baz
+ * Earth is the third planet from the \[Sun] and the only astronomical object
+ * known to harbor life\.
*
- * Setext headings are not affected.
+ * Mars is the fourth planet from the Sun: [].
*
- * Baz
- * ===
+ * [mercury]: https://example.com/mercury/
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * #··Foo
+ * [Mercury] is the first planet from the Sun and the smallest in the Solar
+ * System.
*
- * ## Bar··##
+ * [Venus][] is the second planet from the Sun.
*
- * ##··Baz
+ * [Earth][earth] is the third planet from the Sun and the only astronomical
+ * object known to harbor life.
*
- * @example
- * {"name": "not-ok.md", "label": "output"}
+ * ![Mars] is the fourth planet from the Sun in the [Solar
+ * System].
+ *
+ * > Jupiter is the fifth planet from the Sun and the largest in the [Solar
+ * > System][].
+ *
+ * [Saturn][ is the sixth planet from the Sun and the second-largest
+ * in the Solar System, after Jupiter.
*
- * 1:4: Remove 1 space before this heading’s content
- * 3:7: Remove 1 space after this heading’s content
- * 5:7: Remove 1 space before this heading’s content
+ * [*Uranus*][] is the seventh planet from the Sun.
*
+ * [Neptune][neptune][more] is the eighth and farthest planet from the Sun.
* @example
- * {"name": "empty-heading.md"}
+ * {"label": "output", "name": "not-ok.md"}
+ *
+ * 1:1-1:10: Unexpected reference to undefined definition, expected corresponding definition (`mercury`) for a link or escaped opening bracket (`\[`) for regular text
+ * 4:1-4:10: Unexpected reference to undefined definition, expected corresponding definition (`venus`) for a link or escaped opening bracket (`\[`) for regular text
+ * 6:1-6:15: Unexpected reference to undefined definition, expected corresponding definition (`earth`) for a link or escaped opening bracket (`\[`) for regular text
+ * 9:2-9:8: Unexpected reference to undefined definition, expected corresponding definition (`mars`) for an image or escaped opening bracket (`\[`) for regular text
+ * 9:50-10:8: Unexpected reference to undefined definition, expected corresponding definition (`solar system`) for a link or escaped opening bracket (`\[`) for regular text
+ * 12:67-13:12: Unexpected reference to undefined definition, expected corresponding definition (`solar > system`) for a link or escaped opening bracket (`\[`) for regular text
+ * 15:1-15:9: Unexpected reference to undefined definition, expected corresponding definition (`saturn`) for a link or escaped opening bracket (`\[`) for regular text
+ * 18:1-18:13: Unexpected reference to undefined definition, expected corresponding definition (`*uranus*`) for a link or escaped opening bracket (`\[`) for regular text
+ * 20:1-20:19: Unexpected reference to undefined definition, expected corresponding definition (`neptune`) for a link or escaped opening bracket (`\[`) for regular text
+ * 20:19-20:25: Unexpected reference to undefined definition, expected corresponding definition (`more`) for a link or escaped opening bracket (`\[`) for regular text
*
- * #··
+ * @example
+ * {"config": {"allow": ["…"]}, "name": "ok-allow.md"}
+ *
+ * Mercury is the first planet from the Sun and the smallest in the Solar
+ * System. […]
+ *
+ * @example
+ * {"config": {"allow": [{"source": "^mer"}, "venus"]}, "name": "source.md"}
+ *
+ * [Mercury][] is the first planet from the Sun and the smallest in the Solar
+ * System.
+ *
+ * [Venus][] is the second planet from the Sun.
+ *
+ * @example
+ * {"gfm": true, "label": "input", "name": "gfm.md"}
+ *
+ * Mercury[^mercury] is the first planet from the Sun and the smallest in the
+ * Solar System.
+ *
+ * [^venus]:
+ * **Venus** is the second planet from the Sun.
+ * @example
+ * {"gfm": true, "label": "output", "name": "gfm.md"}
+ *
+ * 1:8-1:18: Unexpected reference to undefined definition, expected corresponding definition (`mercury`) for a footnote or escaped opening bracket (`\[`) for regular text
+ *
+ * @example
+ * {"config": {"allowShortcutLink": true}, "label": "input", "name": "allow-shortcut-link.md"}
+ *
+ * [Mercury] is the first planet from the Sun and the smallest in the Solar
+ * System.
+ *
+ * [Venus][] is the second planet from the Sun.
+ *
+ * [Earth][earth] is the third planet from the Sun and the only astronomical object
+ * known to harbor life.
+ * @example
+ * {"config": {"allowShortcutLink": true}, "label": "output", "name": "allow-shortcut-link.md"}
+ *
+ * 4:1-4:10: Unexpected reference to undefined definition, expected corresponding definition (`venus`) for a link or escaped opening bracket (`\[`) for regular text
+ * 6:1-6:15: Unexpected reference to undefined definition, expected corresponding definition (`earth`) for a link or escaped opening bracket (`\[`) for regular text
*/
-const remarkLintNoHeadingContentIndent = lintRule(
+const emptyOptions = {};
+const emptyAllow = [];
+const lineEndingExpression = /(\r?\n|\r)[\t ]*(>[\t ]*)*/g;
+const remarkLintNoUndefinedReferences = lintRule$1(
{
- origin: 'remark-lint:no-heading-content-indent',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-content-indent#readme'
+ origin: 'remark-lint:no-undefined-references',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-undefined-references#readme'
},
- (tree, file) => {
- visit$r(tree, 'heading', (node) => {
- if (generated(node)) {
- return
- }
- const type = headingStyle(node, 'atx');
- if (type === 'atx' || type === 'atx-closed') {
- const head = pointStart(node.children[0]).column;
- if (!head) {
- return
- }
- const diff = head - pointStart(node).column - 1 - node.depth;
- if (diff) {
- file.message(
- 'Remove ' +
- Math.abs(diff) +
- ' ' +
- plural('space', Math.abs(diff)) +
- ' before this heading’s content',
- pointStart(node.children[0])
- );
- }
+ function (tree, file, options) {
+ const settings = options || emptyOptions;
+ const allow = settings.allow || emptyAllow;
+ const allowShortcutLink = settings.allowShortcutLink || false;
+ const value = String(file);
+ const toPoint = location(file).toPoint;
+ const definitionIdentifiers = new Set();
+ const footnoteDefinitionIdentifiers = new Set();
+ const regexes = [];
+ const strings = new Set();
+ const phrasingStacks = [];
+ let index = -1;
+ while (++index < allow.length) {
+ const value = allow[index];
+ if (typeof value === 'string') {
+ strings.add(normalizeIdentifier(value));
+ } else if (typeof value === 'object' && 'source' in value) {
+ regexes.push(new RegExp(value.source, value.flags ?? 'i'));
}
- if (type === 'atx-closed') {
- const final = pointEnd(node.children[node.children.length - 1]);
- const diff = pointEnd(node).column - final.column - 1 - node.depth;
- if (diff) {
- file.message(
- 'Remove ' +
- diff +
- ' ' +
- plural('space', diff) +
- ' after this heading’s content',
- final
- );
- }
+ }
+ visitParents(tree, function (node, parents) {
+ if (node.type === 'definition') {
+ definitionIdentifiers.add(normalizeIdentifier(node.identifier));
}
- });
- }
-);
-var remarkLintNoHeadingContentIndent$1 = remarkLintNoHeadingContentIndent;
-
-const convert$q =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$q
+ if (node.type === 'footnoteDefinition') {
+ footnoteDefinitionIdentifiers.add(normalizeIdentifier(node.identifier));
}
- if (typeof test === 'string') {
- return typeFactory$q(test)
+ if (node.type === 'heading' || node.type === 'paragraph') {
+ phrasingStacks.push([...parents, node]);
}
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$q(test) : propsFactory$q(test)
+ });
+ for (const ancestors of phrasingStacks) {
+ findInPhrasingContainer(ancestors);
+ }
+ function findInPhrasingContainer(ancestors) {
+ const bracketRanges = [];
+ const node = ancestors.at(-1);
+ for (const child of node.children) {
+ if (child.type === 'text') {
+ findRangesInText(bracketRanges, [...ancestors, child]);
+ } else if ('children' in child) {
+ findInPhrasingContainer([...ancestors, child]);
+ }
}
- if (typeof test === 'function') {
- return castFactory$q(test)
+ for (const range of bracketRanges) {
+ handleRange(range);
}
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$q(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$q(tests[index]);
- }
- return castFactory$q(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$q(check) {
- return castFactory$q(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
}
- return true
- }
-}
-function typeFactory$q(check) {
- return castFactory$q(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$q(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$q() {
- return true
-}
-
-function color$r(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$q = true;
-const EXIT$q = false;
-const SKIP$q = 'skip';
-const visitParents$q =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$q(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$r(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$q(visitor(node, parents));
- if (result[0] === EXIT$q) {
- return result
+ function findRangesInText(ranges, ancestors) {
+ const node = ancestors.at(-1);
+ const end = pointEnd(node);
+ const start = pointStart(node);
+ if (
+ !end ||
+ !start ||
+ typeof start.offset !== 'number' ||
+ typeof end.offset !== 'number'
+ ) {
+ return
+ }
+ const source = value.slice(start.offset, end.offset);
+ const lines = [[start.offset, '']];
+ let last = 0;
+ lineEndingExpression.lastIndex = 0;
+ let match = lineEndingExpression.exec(source);
+ while (match) {
+ const index = match.index;
+ const lineTuple = lines.at(-1);
+ lineTuple[1] = source.slice(last, index);
+ last = index + match[0].length;
+ lines.push([start.offset + last, '']);
+ match = lineEndingExpression.exec(source);
+ }
+ const lineTuple = lines.at(-1);
+ lineTuple[1] = source.slice(last);
+ for (const lineTuple of lines) {
+ const [lineStart, line] = lineTuple;
+ let index = 0;
+ while (index < line.length) {
+ const code = line.charCodeAt(index);
+ if (code === 91 ) {
+ ranges.push([ancestors, [lineStart + index]]);
+ index++;
+ }
+ else if (code === 92 ) {
+ const next = line.charCodeAt(index + 1);
+ index++;
+ if (next === 91 || next === 93 ) {
+ index++;
}
}
- if (node.children && result[0] !== SKIP$q) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$q) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
+ else if (code === 93 ) {
+ const bracketInfo = ranges.at(-1);
+ if (!bracketInfo) {
+ index++;
+ }
+ else if (
+ line.charCodeAt(index + 1) === 91 &&
+ bracketInfo[1].length !== 3
+ ) {
+ index++;
+ bracketInfo[1].push(lineStart + index, lineStart + index);
+ index++;
+ }
+ else {
+ index++;
+ bracketInfo[1].push(lineStart + index);
+ handleRange(bracketInfo);
+ ranges.pop();
}
}
- return result
+ else {
+ index++;
+ }
}
}
}
- );
-function toResult$q(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$q, value]
- }
- return [value]
-}
-
-const visit$q =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$q(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
+ function handleRange(bracketRange) {
+ const [ancestors, range] = bracketRange;
+ if (range.length === 1) return
+ if (range.length === 3) range.length = 2;
+ if (range.length === 2 && range[0] + 2 === range[1]) return
+ const label =
+ value.charCodeAt(range[0] - 1) === 33
+ ? 'image'
+ : value.charCodeAt(range[0] + 1) === 94
+ ? 'footnote'
+ : 'link';
+ const offset = range.length === 4 && range[2] + 2 !== range[3] ? 2 : 0;
+ let id = normalizeIdentifier(
+ collapseWhiteSpace(
+ value.slice(range[0 + offset] + 1, range[1 + offset] - 1),
+ {style: 'html', trim: true}
)
+ );
+ let defined = definitionIdentifiers;
+ if (label === 'footnote') {
+ if (id.includes(' ')) return
+ defined = footnoteDefinitionIdentifiers;
+ id = id.slice(1);
+ }
+ if (
+ (allowShortcutLink && range.length === 2) ||
+ defined.has(id) ||
+ strings.has(id) ||
+ regexes.some(function (regex) {
+ return regex.test(id)
+ })
+ ) {
+ return
+ }
+ const start = toPoint(range[0]);
+ const end = toPoint(range[range.length - 1]);
+ if (end && start) {
+ file.message(
+ 'Unexpected reference to undefined definition, expected corresponding definition (`' +
+ id.toLowerCase() +
+ '`) for ' +
+ (label === 'image' ? 'an' : 'a') +
+ ' ' +
+ label +
+ ' or escaped opening bracket (`\\[`) for regular text',
+ {
+ ancestors,
+ place: {start, end}
+ }
+ );
}
}
- );
-
-const emptyOptions = {};
-function toString(value, options) {
- const settings = options || emptyOptions;
- const includeImageAlt =
- typeof settings.includeImageAlt === 'boolean'
- ? settings.includeImageAlt
- : true;
- const includeHtml =
- typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true;
- return one(value, includeImageAlt, includeHtml)
-}
-function one(value, includeImageAlt, includeHtml) {
- if (node(value)) {
- if ('value' in value) {
- return value.type === 'html' && !includeHtml ? '' : value.value
- }
- if (includeImageAlt && 'alt' in value && value.alt) {
- return value.alt
- }
- if ('children' in value) {
- return all(value.children, includeImageAlt, includeHtml)
- }
- }
- if (Array.isArray(value)) {
- return all(value, includeImageAlt, includeHtml)
- }
- return ''
-}
-function all(values, includeImageAlt, includeHtml) {
- const result = [];
- let index = -1;
- while (++index < values.length) {
- result[index] = one(values[index], includeImageAlt, includeHtml);
}
- return result.join('')
-}
-function node(value) {
- return Boolean(value && typeof value === 'object')
-}
+);
+var remarkLintNoUndefinedReferences$1 = remarkLintNoUndefinedReferences;
/**
+ * remark-lint rule to warn when unreferenced definitions are used.
+ *
+ * ## What is this?
+ *
+ * This package checks that definitions are referenced.
+ *
* ## When should I use this?
*
- * You can use this package to check that inline constructs (links) are
- * not padded.
- * Historically, it was possible to pad emphasis, strong, and strikethrough
- * too, but this was removed in CommonMark, making this rule much less useful.
+ * You can use this package to check definitions.
*
* ## API
*
+ * ### `unified().use(remarkLintNoUnusedDefinitions)`
+ *
+ * Warn when unreferenced definitions are used.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
- * @module no-inline-padding
- * @summary
- * remark-lint rule to warn when inline constructs are padded.
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ## Recommendation
+ *
+ * Unused definitions do not contribute anything, so they can be removed.
+ *
+ * [api-remark-lint-no-unused-definitions]: #unifieduseremarklintnounuseddefinitions
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module no-unused-definitions
* @author Titus Wormer
- * @copyright 2015 Titus Wormer
+ * @copyright 2016 Titus Wormer
* @license MIT
* @example
* {"name": "ok.md"}
*
- * Alpha [bravo](http://echo.fox/trot)
+ * [Mercury][]
+ *
+ * [mercury]: https://example.com/mercury/
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * Alpha [ bravo ](http://echo.fox/trot)
+ * [mercury]: https://example.com/mercury/
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 1:7-1:38: Don’t pad `link` with inner spaces
+ * 1:1-1:40: Unexpected unused definition, expected no definition or one or more references to `mercury`
+ *
+ * @example
+ * {"gfm": true, "label": "input", "name": "gfm.md"}
+ *
+ * Mercury[^mercury] is a planet.
+ *
+ * [^Mercury]:
+ * **Mercury** is the first planet from the Sun and the smallest
+ * in the Solar System.
+ * [^Venus]:
+ * **Venus** is the second planet from
+ * the Sun.
+ * @example
+ * {"gfm": true, "label": "output", "name": "gfm.md"}
+ *
+ * 6:1-8:13: Unexpected unused footnote definition, expected no definition or one or more footnote references to `venus`
*/
-const remarkLintNoInlinePadding = lintRule(
+const remarkLintNoUnusedDefinitions = lintRule$1(
{
- origin: 'remark-lint:no-inline-padding',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-inline-padding#readme'
+ origin: 'remark-lint:no-unused-definitions',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-unused-definitions#readme'
},
- (tree, file) => {
- visit$q(tree, (node) => {
- if (
- (node.type === 'link' || node.type === 'linkReference') &&
- !generated(node)
- ) {
- const value = toString(node);
- if (value.charAt(0) === ' ' || value.charAt(value.length - 1) === ' ') {
- file.message('Don’t pad `' + node.type + '` with inner spaces', node);
+ function (tree, file) {
+ const footnoteDefinitions = new Map();
+ const definitions = new Map();
+ visitParents(tree, function (node, parents) {
+ if ('identifier' in node) {
+ const map =
+ node.type === 'footnoteDefinition' ||
+ node.type === 'footnoteReference'
+ ? footnoteDefinitions
+ : definitions;
+ let entry = map.get(node.identifier);
+ if (!entry) {
+ entry = {ancestors: undefined, used: false};
+ map.set(node.identifier, entry);
+ }
+ if (node.type === 'definition' || node.type === 'footnoteDefinition') {
+ entry.ancestors = [...parents, node];
+ } else if (
+ node.type === 'imageReference' ||
+ node.type === 'linkReference' ||
+ node.type === 'footnoteReference'
+ ) {
+ entry.used = true;
}
}
});
- }
-);
-var remarkLintNoInlinePadding$1 = remarkLintNoInlinePadding;
-
-const convert$p =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$p
- }
- if (typeof test === 'string') {
- return typeFactory$p(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$p(test) : propsFactory$p(test)
- }
- if (typeof test === 'function') {
- return castFactory$p(test)
+ const entries = [...footnoteDefinitions.values(), ...definitions.values()];
+ for (const entry of entries) {
+ if (!entry.used) {
+ ok$1(entry.ancestors);
+ const node = entry.ancestors.at(-1);
+ ok$1(node.type === 'footnoteDefinition' || node.type === 'definition');
+ if (node.position) {
+ const prefix = node.type === 'footnoteDefinition' ? 'footnote ' : '';
+ file.message(
+ 'Unexpected unused ' +
+ prefix +
+ 'definition, expected no definition or one or more ' +
+ prefix +
+ 'references to `' +
+ node.identifier +
+ '`',
+ {ancestors: entry.ancestors, place: node.position}
+ );
+ }
}
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$p(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$p(tests[index]);
- }
- return castFactory$p(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$p(check) {
- return castFactory$p(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
}
- return true
- }
-}
-function typeFactory$p(check) {
- return castFactory$p(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$p(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
}
-}
-function ok$p() {
- return true
-}
-
-function color$q(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$p = true;
-const EXIT$p = false;
-const SKIP$p = 'skip';
-const visitParents$p =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$p(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$q(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$p(visitor(node, parents));
- if (result[0] === EXIT$p) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$p) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$p) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$p(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$p, value]
- }
- return [value]
-}
-
-const visit$p =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$p(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+);
+var remarkLintNoUnusedDefinitions$1 = remarkLintNoUnusedDefinitions;
/**
+ * remark-lint rule to warn when ordered list markers are inconsistent.
+ *
+ * ## What is this?
+ *
+ * This package checks ordered list markers.
+ *
* ## When should I use this?
*
- * You can use this package to check that collapsed or full reference images
- * are used.
+ * You can use this package to check ordered lists.
*
* ## API
*
- * There are no options.
+ * ### `unified().use(remarkLintOrderedListMarkerStyle[, options])`
+ *
+ * Warn when ordered list markers are inconsistent.
+ *
+ * ###### Parameters
+ *
+ * * `options` ([`Options`][api-options], default: `'consistent'`)
+ * — preferred style or whether to detect the first style and warn for
+ * further differences
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ### `Options`
+ *
+ * Configuration (TypeScript type).
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Options = Style | 'consistent'
+ * ```
+ *
+ * ### `Style`
+ *
+ * Style (TypeScript type).
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Style = '.' | ')'
+ * ```
*
* ## Recommendation
*
- * Shortcut references use an implicit style that looks a lot like something
- * that could occur as plain text instead of syntax.
- * In some cases, plain text is intended instead of an image.
- * Due to this, it’s recommended to use collapsed (or full) references
- * instead.
+ * Parens for list markers were not supported in markdown before CommonMark.
+ * While they should work in most places now,
+ * not all markdown parsers follow CommonMark.
+ * So it’s recommended to prefer dots.
*
- * @module no-shortcut-reference-image
- * @summary
- * remark-lint rule to warn when shortcut reference images are used.
+ * ## Fix
+ *
+ * [`remark-stringify`][github-remark-stringify] formats ordered lists with
+ * dots by default.
+ * Pass `bulletOrdered: ')'` to always use parens.
+ *
+ * [api-style]: #style
+ * [api-options]: #options
+ * [api-remark-lint-ordered-list-marker-style]: #unifieduseremarklintorderedlistmarkerstyle-options
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module ordered-list-marker-style
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * ![foo][]
+ * 1. Mercury
+ *
+ * * Venus
*
- * [foo]: http://foo.bar/baz.png
+ * 1. Earth
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"name": "ok.md", "config": "."}
*
- * ![foo]
+ * 1. Mercury
+ *
+ * @example
+ * {"name": "ok.md", "config": ")"}
*
- * [foo]: http://foo.bar/baz.png
+ * 1) Mercury
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "input", "name": "not-ok.md"}
+ *
+ * 1. Mercury
+ *
+ * 1) Venus
*
- * 1:1-1:7: Use the trailing [] on reference images
+ * @example
+ * {"label": "output", "name": "not-ok.md"}
+ *
+ * 3:2: Unexpected ordered list marker `)`, expected `.`
+ *
+ * @example
+ * {"name": "not-ok.md", "label": "output", "config": "🌍", "positionless": true}
+ *
+ * 1:1: Unexpected value `🌍` for `options`, expected `'.'`, `')'`, or `'consistent'`
*/
-const remarkLintNoShortcutReferenceImage = lintRule(
+const remarkLintOrderedListMarkerStyle = lintRule$1(
{
- origin: 'remark-lint:no-shortcut-reference-image',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shortcut-reference-image#readme'
+ origin: 'remark-lint:ordered-list-marker-style',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-ordered-list-marker-style#readme'
},
- (tree, file) => {
- visit$p(tree, 'imageReference', (node) => {
- if (!generated(node) && node.referenceType === 'shortcut') {
- file.message('Use the trailing [] on reference images', node);
- }
- });
- }
-);
-var remarkLintNoShortcutReferenceImage$1 = remarkLintNoShortcutReferenceImage;
-
-const convert$o =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$o
- }
- if (typeof test === 'string') {
- return typeFactory$o(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$o(test) : propsFactory$o(test)
- }
- if (typeof test === 'function') {
- return castFactory$o(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$o(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$o(tests[index]);
- }
- return castFactory$o(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$o(check) {
- return castFactory$o(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
+ function (tree, file, options) {
+ const value = String(file);
+ let expected;
+ let cause;
+ if (options === null || options === undefined || options === 'consistent') ; else if (options === '.' || options === ')') {
+ expected = options;
+ } else {
+ file.fail(
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected `'.'`, `')'`, or `'consistent'`"
+ );
}
- return true
- }
-}
-function typeFactory$o(check) {
- return castFactory$o(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$o(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$o() {
- return true
-}
-
-function color$p(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$o = true;
-const EXIT$o = false;
-const SKIP$o = 'skip';
-const visitParents$o =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$o(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$p(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'listItem') return
+ const parent = parents.at(-1);
+ if (!parent || parent.type !== 'list' || !parent.ordered) return
+ const start = pointStart(node);
+ if (start && typeof start.offset === 'number') {
+ let index = start.offset;
+ let code = value.charCodeAt(index);
+ while (asciiDigit(code)) {
+ index++;
+ code = value.charCodeAt(index);
}
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$o(visitor(node, parents));
- if (result[0] === EXIT$o) {
- return result
- }
+ const actual =
+ code === 41 ? ')' : code === 46 ? '.' : undefined;
+ if (!actual) return
+ const place = {
+ line: start.line,
+ column: start.column + (index - start.offset),
+ offset: start.offset + (index - start.offset)
+ };
+ if (expected) {
+ if (actual !== expected) {
+ file.message(
+ 'Unexpected ordered list marker `' +
+ actual +
+ '`, expected `' +
+ expected +
+ '`',
+ {ancestors: [...parents, node], cause, place}
+ );
}
- if (node.children && result[0] !== SKIP$o) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$o) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
+ } else {
+ expected = actual;
+ cause = new VFileMessage(
+ 'Ordered list marker style `' +
+ expected +
+ "` first defined for `'consistent'` here",
+ {
+ ancestors: [...parents, node],
+ place,
+ ruleId: 'ordered-list-marker-style',
+ source: 'remark-lint'
}
- }
- return result
+ );
}
}
- }
- );
-function toResult$o(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$o, value]
+ });
}
- return [value]
-}
+);
+var remarkLintOrderedListMarkerStyle$1 = remarkLintOrderedListMarkerStyle;
-const visit$o =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$o(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+const remarkPresetLintRecommended = {
+ plugins: [
+ remarkLint,
+ remarkLintFinalNewline$1,
+ remarkLintListItemBulletIndent$1,
+ [remarkLintListItemIndent$1, 'one'],
+ remarkLintNoBlockquoteWithoutMarker$1,
+ remarkLintNoLiteralUrls$1,
+ [remarkLintOrderedListMarkerStyle$1, '.'],
+ remarkLintHardBreakSpaces$1,
+ remarkLintNoDuplicateDefinitions$1,
+ remarkLintNoHeadingContentIndent$1,
+ remarkLintNoShortcutReferenceImage$1,
+ remarkLintNoShortcutReferenceLink$1,
+ remarkLintNoUndefinedReferences$1,
+ remarkLintNoUnusedDefinitions$1
+ ]
+};
+var remarkPresetLintRecommended$1 = remarkPresetLintRecommended;
/**
+ * remark-lint rule to warn when block quotes are indented too much or
+ * too little.
+ *
+ * ## What is this?
+ *
+ * This package checks the “indent” of block quotes: the `>` (greater than)
+ * marker *and* the spaces before content.
+ *
* ## When should I use this?
*
- * You can use this package to check that collapsed or full reference links
- * are used.
+ * You can use this rule to check markdown code style.
*
* ## API
*
- * There are no options.
+ * ### `unified().use(remarkLintBlockquoteIndentation[, options])`
+ *
+ * Warn when block quotes are indented too much or too little.
+ *
+ * ###### Parameters
+ *
+ * * `options` ([`Options`][api-options], default: `'consistent'`)
+ * — either a preferred indent or whether to detect the first style
+ * and warn for further differences
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ### `Options`
+ *
+ * Configuration (TypeScript type).
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Options = number | 'consistent'
+ * ```
*
* ## Recommendation
*
- * Shortcut references use an implicit style that looks a lot like something
- * that could occur as plain text instead of syntax.
- * In some cases, plain text is intended instead of a link.
- * Due to this, it’s recommended to use collapsed (or full) references
- * instead.
+ * CommonMark specifies that when block quotes are used the `>` markers can be
+ * followed by an optional space.
+ * No space at all arguably looks rather ugly:
*
- * @module no-shortcut-reference-link
- * @summary
- * remark-lint rule to warn when shortcut reference links are used.
+ * ```markdown
+ * >Mars and
+ * >Venus.
+ * ```
+ *
+ * There is no specific handling of more that one space, so if 5 spaces were
+ * used after `>`, then indented code kicks in:
+ *
+ * ```markdown
+ * > neptune()
+ * ```
+ *
+ * Due to this, it’s recommended to configure this rule with `2`.
+ *
+ * [api-options]: #options
+ * [api-remark-lint-blockquote-indentation]: #unifieduseremarklintblockquoteindentation-options
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module blockquote-indentation
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
- * {"name": "ok.md"}
+ * {"config": 2, "name": "ok-2.md"}
*
- * [foo][]
+ * > Mercury.
*
- * [foo]: http://foo.bar/baz
+ * Venus.
+ *
+ * > Earth.
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"config": 4, "name": "ok-4.md"}
*
- * [foo]
+ * > Mercury.
*
- * [foo]: http://foo.bar/baz
+ * Venus.
+ *
+ * > Earth.
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * { "name": "ok-tab.md"}
+ *
+ * >␉Mercury.
+ *
+ * @example
+ * {"label": "input", "name": "not-ok.md"}
+ *
+ * > Mercury.
+ *
+ * Venus.
+ *
+ * > Earth.
+ *
+ * Mars.
+ *
+ * > Jupiter
+ * @example
+ * {"label": "output", "name": "not-ok.md"}
+ *
+ * 5:5: Unexpected `4` spaces between block quote marker and content, expected `3` spaces, remove `1` space
+ * 9:3: Unexpected `2` spaces between block quote marker and content, expected `3` spaces, add `1` space
+ *
+ * @example
+ * {"config": "🌍", "label": "output", "name": "not-ok-options.md", "positionless": true}
*
- * 1:1-1:6: Use the trailing `[]` on reference links
+ * 1:1: Unexpected value `🌍` for `options`, expected `number` or `'consistent'`
*/
-const remarkLintNoShortcutReferenceLink = lintRule(
+const remarkLintBlockquoteIndentation = lintRule$1(
{
- origin: 'remark-lint:no-shortcut-reference-link',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shortcut-reference-link#readme'
+ origin: 'remark-lint:blockquote-indentation',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-blockquote-indentation#readme'
},
- (tree, file) => {
- visit$o(tree, 'linkReference', (node) => {
- if (!generated(node) && node.referenceType === 'shortcut') {
- file.message('Use the trailing `[]` on reference links', node);
+ function (tree, file, options) {
+ let expected;
+ if (options === null || options === undefined || options === 'consistent') ; else if (typeof options === 'number') {
+ expected = options;
+ } else {
+ file.fail(
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected `number` or `'consistent'`"
+ );
+ }
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'blockquote') return
+ const start = pointStart(node);
+ const headStart = pointStart(node.children[0]);
+ if (headStart && start) {
+ const actual = headStart.column - start.column;
+ if (expected) {
+ const difference = expected - actual;
+ const differenceAbsolute = Math.abs(difference);
+ if (difference !== 0) {
+ file.message(
+ 'Unexpected `' +
+ actual +
+ '` ' +
+ pluralize('space', actual) +
+ ' between block quote marker and content, expected `' +
+ expected +
+ '` ' +
+ pluralize('space', expected) +
+ ', ' +
+ (difference > 0 ? 'add' : 'remove') +
+ ' `' +
+ differenceAbsolute +
+ '` ' +
+ pluralize('space', differenceAbsolute),
+ {ancestors: [...parents, node], place: headStart}
+ );
+ }
+ } else {
+ expected = actual;
+ }
}
});
}
);
-var remarkLintNoShortcutReferenceLink$1 = remarkLintNoShortcutReferenceLink;
-
-function normalizeIdentifier(value) {
- return (
- value
- .replace(/[\t\n\r ]+/g, ' ')
- .replace(/^ | $/g, '')
- .toLowerCase()
- .toUpperCase()
- )
-}
-
-const convert$n =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$n
- }
- if (typeof test === 'string') {
- return typeFactory$n(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$n(test) : propsFactory$n(test)
- }
- if (typeof test === 'function') {
- return castFactory$n(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$n(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$n(tests[index]);
- }
- return castFactory$n(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$n(check) {
- return castFactory$n(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$n(check) {
- return castFactory$n(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$n(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$n() {
- return true
-}
-
-function color$o(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$n = true;
-const EXIT$n = false;
-const SKIP$n = 'skip';
-const visitParents$n =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$n(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$o(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$n(visitor(node, parents));
- if (result[0] === EXIT$n) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$n) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$n) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$n(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$n, value]
- }
- return [value]
-}
-
-const visit$n =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$n(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+var remarkLintBlockquoteIndentation$1 = remarkLintBlockquoteIndentation;
/**
+ * remark-lint rule to warn when list item checkboxes violate a given
+ * style.
+ *
+ * ## What is this?
+ *
+ * This package checks the character used in checkboxes.
+ *
* ## When should I use this?
*
- * You can use this package to check that referenced definitions are defined.
+ * You can use this package to check that the style of GFM tasklists is
+ * consistent.
+ * Task lists are a GFM feature enabled with
+ * [`remark-gfm`][github-remark-gfm].
*
* ## API
*
- * The following options (default: `undefined`) are accepted:
+ * ### `unified().use(remarkLintCheckboxCharacterStyle[, options])`
*
- * * `Object` with the following fields:
- * * `allow` (`Array`,
- * default: `[]`)
- * — text or regex that you want to be allowed between `[` and `]`
- * even though it’s undefined; regex is provided via a `RegExp` object
- * or via a `{source: string}` object where `source` is the source
- * text of a case-insensitive regex
- *
- * ## Recommendation
+ * Warn when list item checkboxes violate a given style.
*
- * Shortcut references use an implicit syntax that could also occur as plain
- * text.
- * For example, it is reasonable to expect an author adding `[…]` to abbreviate
- * some text somewhere in a document:
+ * ###### Parameters
*
- * ```markdown
- * > Some […] quote.
- * ```
+ * * `options` ([`Options`][api-options], default: `'consistent'`)
+ * — either preferred values or whether to detect the first styles
+ * and warn for further differences
*
- * This isn’t a problem, but it might become one when an author later adds a
- * definition:
+ * ###### Returns
*
- * ```markdown
- * Some text. […][]
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * […] #read-more "Read more"
- * ```
+ * ### `Options`
*
- * The second author might expect only their newly added text to form a link,
- * but their changes also result in a link for the first author’s text.
+ * Configuration (TypeScript type).
*
- * @module no-undefined-references
- * @summary
- * remark-lint rule to warn when undefined definitions are referenced.
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @example
- * {"name": "ok.md"}
+ * ###### Type
*
- * [foo][]
+ * ```ts
+ * type Options = Styles | 'consistent'
+ * ```
*
- * Just a [ bracket.
+ * ### `Styles`
*
- * Typically, you’d want to use escapes (with a backslash: \\) to escape what
- * could turn into a \[reference otherwise].
+ * Styles (TypeScript type).
*
- * Just two braces can’t link: [].
+ * ###### Fields
*
- * [foo]: https://example.com
+ * * `checked` (`'X'`, `'x'`, or `'consistent'`, default: `'consistent'`)
+ * — preferred style to use for checked checkboxes
+ * * `unchecked` (`'␉'` (a tab), `'␠'` (a space), or `'consistent'`, default:
+ * `'consistent'`)
+ * — preferred style to use for unchecked checkboxes
*
- * @example
- * {"name": "ok-allow.md", "config": {"allow": ["...", "…"]}}
+ * ## Recommendation
*
- * > Eliding a portion of a quoted passage […] is acceptable.
+ * It’s recommended to set `options.checked` to `'x'` (a lowercase X) as it
+ * prevents an extra keyboard press and `options.unchecked` to `'␠'` (a space)
+ * to make all checkboxes align.
*
- * @example
- * {"name": "ok-allow.md", "config": {"allow": ["a", {"source": "^b\\."}]}}
+ * ## Fix
*
- * [foo][b.c]
+ * [`remark-stringify`][github-remark-stringify] formats checked checkboxes
+ * using `'x'` (lowercase X) and unchecked checkboxes using `'␠'` (a space).
*
- * [bar][a]
+ * [api-options]: #options
+ * [api-remark-lint-checkbox-character-style]: #unifieduseremarklintcheckboxcharacterstyle-options
+ * [api-styles]: #styles
+ * [github-remark-gfm]: https://github.com/remarkjs/remark-gfm
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
- * Matching is case-insensitive: [bar][B.C]
+ * @module checkbox-character-style
+ * @author Titus Wormer
+ * @copyright 2015 Titus Wormer
+ * @license MIT
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"config": {"checked": "x"}, "gfm": true, "name": "ok-x.md"}
*
- * [bar]
+ * - [x] Mercury.
+ * - [x] Venus.
*
- * [baz][]
+ * @example
+ * {"config": {"checked": "X"}, "gfm": true, "name": "ok-x-upper.md"}
*
- * [text][qux]
+ * - [X] Mercury.
+ * - [X] Venus.
*
- * Spread [over
- * lines][]
+ * @example
+ * {"config": {"unchecked": " "}, "gfm": true, "name": "ok-space.md"}
*
- * > in [a
- * > block quote][]
+ * - [ ] Mercury.
+ * - [ ] Venus.
+ * - [ ]␠␠
+ * - [ ]
*
- * [asd][a
+ * @example
+ * {"config": {"unchecked": "\t"}, "gfm": true, "name": "ok-tab.md"}
*
- * Can include [*emphasis*].
+ * - [␉] Mercury.
+ * - [␉] Venus.
*
- * Multiple pairs: [a][b][c].
+ * @example
+ * {"label": "input", "gfm": true, "name": "not-ok-default.md"}
*
+ * - [x] Mercury.
+ * - [X] Venus.
+ * - [ ] Earth.
+ * - [␉] Mars.
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "output", "gfm": true, "name": "not-ok-default.md"}
*
- * 1:1-1:6: Found reference to undefined definition
- * 3:1-3:8: Found reference to undefined definition
- * 5:1-5:12: Found reference to undefined definition
- * 7:8-8:9: Found reference to undefined definition
- * 10:6-11:17: Found reference to undefined definition
- * 13:1-13:6: Found reference to undefined definition
- * 15:13-15:25: Found reference to undefined definition
- * 17:17-17:23: Found reference to undefined definition
- * 17:23-17:26: Found reference to undefined definition
+ * 2:5: Unexpected checked checkbox value `X`, expected `x`
+ * 4:5: Unexpected unchecked checkbox value `\t`, expected ` `
*
* @example
- * {"name": "not-ok.md", "label": "input", "config": {"allow": ["a", {"source": "^b\\."}]}}
+ * {"config": "🌍", "label": "output", "name": "not-ok-option.md", "positionless": true}
*
- * [foo][a.c]
+ * 1:1: Unexpected value `🌍` for `options`, expected an object or `'consistent'`
*
- * [bar][b]
+ * @example
+ * {"config": {"unchecked": "🌍"}, "label": "output", "name": "not-ok-option-unchecked.md", "positionless": true}
+ *
+ * 1:1: Unexpected value `🌍` for `options.unchecked`, expected `'\t'`, `' '`, or `'consistent'`
*
* @example
- * {"name": "not-ok.md", "label": "output", "config": {"allow": ["a", {"source": "^b\\."}]}}
+ * {"config": {"checked": "🌍"}, "label": "output", "name": "not-ok-option-checked.md", "positionless": true}
*
- * 1:1-1:11: Found reference to undefined definition
- * 3:1-3:9: Found reference to undefined definition
+ * 1:1: Unexpected value `🌍` for `options.checked`, expected `'X'`, `'x'`, or `'consistent'`
*/
-const remarkLintNoUndefinedReferences = lintRule(
+const remarkLintCheckboxCharacterStyle = lintRule$1(
{
- origin: 'remark-lint:no-undefined-references',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-undefined-references#readme'
+ origin: 'remark-lint:checkbox-character-style',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-checkbox-character-style#readme'
},
- (tree, file, option = {}) => {
- const contents = String(file);
- const loc = location(file);
- const lineEnding = /(\r?\n|\r)[\t ]*(>[\t ]*)*/g;
- const map = Object.create(null);
- const allow = option.allow || [];
- const regexes = [];
- const strings = new Set();
- let index = -1;
- while (++index < allow.length) {
- const value = allow[index];
- if (typeof value === 'string') {
- strings.add(normalizeIdentifier(value));
- } else if (value instanceof RegExp) {
- regexes.push(value);
- } else {
- regexes.push(new RegExp(value.source, 'i'));
+ function (tree, file, options) {
+ const value = String(file);
+ let checkedExpected;
+ let checkedConsistentCause;
+ let uncheckedExpected;
+ let uncheckedConsistentCause;
+ if (options === null || options === undefined || options === 'consistent') ; else if (typeof options === 'object') {
+ if (options.checked === 'X' || options.checked === 'x') {
+ checkedExpected = options.checked;
+ } else if (options.checked && options.checked !== 'consistent') {
+ file.fail(
+ 'Unexpected value `' +
+ options.checked +
+ "` for `options.checked`, expected `'X'`, `'x'`, or `'consistent'`"
+ );
+ }
+ if (options.unchecked === '\t' || options.unchecked === ' ') {
+ uncheckedExpected = options.unchecked;
+ } else if (options.unchecked && options.unchecked !== 'consistent') {
+ file.fail(
+ 'Unexpected value `' +
+ options.unchecked +
+ "` for `options.unchecked`, expected `'\\t'`, `' '`, or `'consistent'`"
+ );
}
+ } else {
+ file.fail(
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected an object or `'consistent'`"
+ );
}
- visit$n(tree, (node) => {
- if (
- (node.type === 'definition' || node.type === 'footnoteDefinition') &&
- !generated(node)
- ) {
- map[normalizeIdentifier(node.identifier)] = true;
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
}
- });
- visit$n(tree, (node) => {
+ if (node.type !== 'listItem') return
+ const head = node.children[0];
+ const headStart = pointStart(head);
if (
- (node.type === 'imageReference' ||
- node.type === 'linkReference' ||
- node.type === 'footnoteReference') &&
- !generated(node) &&
- !(normalizeIdentifier(node.identifier) in map) &&
- !isAllowed(node.identifier)
+ !head ||
+ !headStart ||
+ typeof node.checked !== 'boolean' ||
+ typeof headStart.offset !== 'number'
) {
- file.message('Found reference to undefined definition', node);
- }
- if (node.type === 'paragraph' || node.type === 'heading') {
- findInPhrasing(node);
+ return
}
- });
- function findInPhrasing(node) {
- let ranges = [];
- visit$n(node, (child) => {
- if (child === node) return
- if (child.type === 'link' || child.type === 'linkReference') {
- ranges = [];
- return SKIP$n
- }
- if (child.type !== 'text') return
- const start = pointStart(child).offset;
- const end = pointEnd(child).offset;
- if (typeof start !== 'number' || typeof end !== 'number') {
- return EXIT$n
- }
- const source = contents.slice(start, end);
- const lines = [[start, '']];
- let last = 0;
- lineEnding.lastIndex = 0;
- let match = lineEnding.exec(source);
- while (match) {
- const index = match.index;
- lines[lines.length - 1][1] = source.slice(last, index);
- last = index + match[0].length;
- lines.push([start + last, '']);
- match = lineEnding.exec(source);
- }
- lines[lines.length - 1][1] = source.slice(last);
- let lineIndex = -1;
- while (++lineIndex < lines.length) {
- const line = lines[lineIndex][1];
- let index = 0;
- while (index < line.length) {
- const code = line.charCodeAt(index);
- if (code === 92) {
- const next = line.charCodeAt(index + 1);
- index++;
- if (next === 91 || next === 93) {
- index++;
- }
- }
- else if (code === 91) {
- ranges.push([lines[lineIndex][0] + index]);
- index++;
- }
- else if (code === 93) {
- if (ranges.length === 0) {
- index++;
- } else if (line.charCodeAt(index + 1) === 91) {
- index++;
- let range = ranges.pop();
- if (range) {
- range.push(lines[lineIndex][0] + index);
- if (range.length === 4) {
- handleRange(range);
- range = [];
- }
- range.push(lines[lineIndex][0] + index);
- ranges.push(range);
- index++;
- }
- } else {
- index++;
- const range = ranges.pop();
- if (range) {
- range.push(lines[lineIndex][0] + index);
- handleRange(range);
- }
- }
- }
- else {
- index++;
- }
+ headStart.offset -= 2;
+ headStart.column -= 2;
+ const match = /\[([\t Xx])]/.exec(
+ value.slice(headStart.offset - 2, headStart.offset + 1)
+ );
+ if (!match) return
+ const actual = match[1];
+ const actualDisplay = actual === '\t' ? '\\t' : actual;
+ const expected = node.checked ? checkedExpected : uncheckedExpected;
+ const expectedDisplay = expected === '\t' ? '\\t' : expected;
+ if (!expected) {
+ const cause = new VFileMessage(
+ (node.checked ? 'C' : 'Unc') +
+ "hecked checkbox style `'" +
+ actualDisplay +
+ "'` first defined for `'consistent'` here",
+ {
+ ancestors: [...parents, node],
+ place: headStart,
+ ruleId: 'checkbox-character-style',
+ source: 'remark-lint'
}
+ );
+ if (node.checked) {
+ checkedExpected = (actual);
+ checkedConsistentCause = cause;
+ } else {
+ uncheckedExpected = (actual);
+ uncheckedConsistentCause = cause;
}
- });
- let index = -1;
- while (++index < ranges.length) {
- handleRange(ranges[index]);
- }
- return SKIP$n
- function handleRange(range) {
- if (range.length === 1) return
- if (range.length === 3) range.length = 2;
- if (range.length === 2 && range[0] + 2 === range[1]) return
- const offset = range.length === 4 && range[2] + 2 !== range[3] ? 2 : 0;
- const id = contents
- .slice(range[0 + offset] + 1, range[1 + offset] - 1)
- .replace(lineEnding, ' ');
- const pos = {
- start: loc.toPoint(range[0]),
- end: loc.toPoint(range[range.length - 1])
- };
- if (
- !generated({position: pos}) &&
- !(normalizeIdentifier(id) in map) &&
- !isAllowed(id)
- ) {
- file.message('Found reference to undefined definition', pos);
- }
- }
- }
- function isAllowed(id) {
- const normalized = normalizeIdentifier(id);
- return (
- strings.has(normalized) ||
- regexes.some((regex) => regex.test(normalized))
- )
- }
- }
-);
-var remarkLintNoUndefinedReferences$1 = remarkLintNoUndefinedReferences;
-
-const convert$m =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$m
- }
- if (typeof test === 'string') {
- return typeFactory$m(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$m(test) : propsFactory$m(test)
- }
- if (typeof test === 'function') {
- return castFactory$m(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$m(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$m(tests[index]);
- }
- return castFactory$m(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$m(check) {
- return castFactory$m(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$m(check) {
- return castFactory$m(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$m(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$m() {
- return true
-}
-
-function color$n(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$m = true;
-const EXIT$m = false;
-const SKIP$m = 'skip';
-const visitParents$m =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$m(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$n(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$m(visitor(node, parents));
- if (result[0] === EXIT$m) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$m) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$m) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
+ } else if (actual !== expected) {
+ file.message(
+ 'Unexpected ' +
+ (node.checked ? '' : 'un') +
+ 'checked checkbox value `' +
+ actualDisplay +
+ '`, expected `' +
+ expectedDisplay +
+ '`',
+ {
+ ancestors: [...parents, node],
+ cause: node.checked
+ ? checkedConsistentCause
+ : uncheckedConsistentCause,
+ place: headStart
}
- return result
- }
+ );
}
- }
- );
-function toResult$m(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$m, value]
+ });
}
- return [value]
-}
-
-const visit$m =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$m(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+);
+var remarkLintCheckboxCharacterStyle$1 = remarkLintCheckboxCharacterStyle;
/**
+ * remark-lint rule to warn when GFM tasklist checkboxes are followed by
+ * more than one space.
+ *
+ * ## What is this?
+ *
+ * This package checks the space after checkboxes.
+ *
* ## When should I use this?
*
- * You can use this package to check definitions are referenced.
+ * You can use this package to check that the style of GFM tasklists is
+ * a single space.
*
* ## API
*
- * There are no options.
+ * ### `unified().use(remarkLintCheckboxContentIndent)`
+ *
+ * Warn when GFM tasklist checkboxes are followed by more than one space.
+ *
+ * ###### Parameters
+ *
+ * There are no options.
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
* ## Recommendation
*
- * Unused definitions do not contribute anything, so they can be removed.
+ * GFM allows zero or more spaces and tabs after checkboxes.
+ * No space at all arguably looks rather ugly:
*
- * @module no-unused-definitions
- * @summary
- * remark-lint rule to warn when unreferenced definitions are used.
+ * ```markdown
+ * * [x]Pluto
+ * ```
+ *
+ * More that one space is superfluous:
+ *
+ * ```markdown
+ * * [x] Jupiter
+ * ```
+ *
+ * Due to this, it’s recommended to turn this rule on.
+ *
+ * ## Fix
+ *
+ * [`remark-stringify`][github-remark-stringify] formats checkboxes and the
+ * content after them with a single space between.
+ *
+ * [api-remark-lint-checkbox-content-indent]: #unifieduseremarklintcheckboxcontentindent
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module checkbox-content-indent
* @author Titus Wormer
- * @copyright 2016 Titus Wormer
+ * @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
- * {"name": "ok.md"}
+ * {"gfm": true, "name": "ok.md"}
*
- * [foo][]
+ * - [ ] Mercury.
+ * + [x] Venus.
+ * * [X] Earth.
+ * - [ ] Mars.
*
- * [foo]: https://example.com
+ * @example
+ * {"gfm": true, "label": "input", "name": "not-ok.md"}
*
+ * - [ ] Mercury.
+ * + [x] Venus.
+ * * [X] Earth.
+ * - [ ] Mars.
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"gfm": true, "label": "output", "name": "not-ok.md"}
*
- * [bar]: https://example.com
+ * 2:8: Unexpected `2` spaces between checkbox and content, expected `1` space, remove `1` space
+ * 3:9: Unexpected `3` spaces between checkbox and content, expected `1` space, remove `2` spaces
+ * 4:10: Unexpected `4` spaces between checkbox and content, expected `1` space, remove `3` spaces
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"gfm": true, "label": "input", "name": "tab.md"}
+ *
+ * - [ ]␉Mercury.
+ * + [x]␉␉Venus.
+ * @example
+ * {"gfm": true, "label": "output", "name": "tab.md"}
*
- * 1:1-1:27: Found unused definition
+ * 2:8: Unexpected `2` spaces between checkbox and content, expected `1` space, remove `1` space
*/
-const own = {}.hasOwnProperty;
-const remarkLintNoUnusedDefinitions = lintRule(
+const remarkLintCheckboxContentIndent = lintRule$1(
{
- origin: 'remark-lint:no-unused-definitions',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-unused-definitions#readme'
+ origin: 'remark-lint:checkbox-content-indent',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-checkbox-content-indent#readme'
},
- (tree, file) => {
- const map = Object.create(null);
- visit$m(tree, (node) => {
- if (
- (node.type === 'definition' || node.type === 'footnoteDefinition') &&
- !generated(node)
- ) {
- map[node.identifier.toUpperCase()] = {node, used: false};
+ function (tree, file) {
+ const value = String(file);
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
}
- });
- visit$m(tree, (node) => {
+ if (node.type !== 'listItem') return
+ const head = node.children[0];
+ const headStart = pointStart(head);
if (
- node.type === 'imageReference' ||
- node.type === 'linkReference' ||
- node.type === 'footnoteReference'
+ !head ||
+ !headStart ||
+ typeof node.checked !== 'boolean' ||
+ typeof headStart.offset !== 'number'
) {
- const info = map[node.identifier.toUpperCase()];
- if (!generated(node) && info) {
- info.used = true;
- }
- }
- });
- let identifier;
- for (identifier in map) {
- if (own.call(map, identifier)) {
- const entry = map[identifier];
- if (!entry.used) {
- file.message('Found unused definition', entry.node);
- }
- }
- }
- }
-);
-var remarkLintNoUnusedDefinitions$1 = remarkLintNoUnusedDefinitions;
-
-const remarkPresetLintRecommended = {
- plugins: [
- remarkLint,
- remarkLintFinalNewline$1,
- remarkLintListItemBulletIndent$1,
- [remarkLintListItemIndent$1, 'tab-size'],
- remarkLintNoBlockquoteWithoutMarker$1,
- remarkLintNoLiteralUrls$1,
- [remarkLintOrderedListMarkerStyle$1, '.'],
- remarkLintHardBreakSpaces$1,
- remarkLintNoDuplicateDefinitions$1,
- remarkLintNoHeadingContentIndent$1,
- remarkLintNoInlinePadding$1,
- remarkLintNoShortcutReferenceImage$1,
- remarkLintNoShortcutReferenceLink$1,
- remarkLintNoUndefinedReferences$1,
- remarkLintNoUnusedDefinitions$1
- ]
-};
-var remarkPresetLintRecommended$1 = remarkPresetLintRecommended;
-
-const convert$l =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$l
- }
- if (typeof test === 'string') {
- return typeFactory$l(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$l(test) : propsFactory$l(test)
+ return
}
- if (typeof test === 'function') {
- return castFactory$l(test)
+ const match = /\[([\t xX])]/.exec(
+ value.slice(headStart.offset - 4, headStart.offset + 1)
+ );
+ if (!match) return
+ let final = headStart.offset;
+ let code = value.charCodeAt(final);
+ while (code === 9 || code === 32) {
+ final++;
+ code = value.charCodeAt(final);
}
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$l(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$l(tests[index]);
- }
- return castFactory$l(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$l(check) {
- return castFactory$l(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$l(check) {
- return castFactory$l(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$l(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$l() {
- return true
-}
-
-function color$m(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$l = true;
-const EXIT$l = false;
-const SKIP$l = 'skip';
-const visitParents$l =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$l(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$m(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$l(visitor(node, parents));
- if (result[0] === EXIT$l) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$l) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$l) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
+ const size = final - headStart.offset;
+ if (size) {
+ file.message(
+ 'Unexpected `' +
+ (size + 1) +
+ '` ' +
+ pluralize('space', size + 1) +
+ ' between checkbox and content, expected `1` space, remove `' +
+ size +
+ '` ' +
+ pluralize('space', size),
+ {
+ ancestors: [...parents, node],
+ place: {
+ line: headStart.line,
+ column: headStart.column + size,
+ offset: headStart.offset + size
}
}
- return result
- }
+ );
}
- }
- );
-function toResult$l(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$l, value]
+ });
}
- return [value]
-}
-
-const visit$l =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$l(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+);
+var remarkLintCheckboxContentIndent$1 = remarkLintCheckboxContentIndent;
/**
+ * remark-lint rule to warn when code blocks violate a given style.
+ *
+ * ## What is this?
+ *
+ * This package checks the style of code blocks.
+ *
* ## When should I use this?
*
- * You can use this package to check that the “indent” of block quotes is
+ * You can use this package to check that the style of code blocks is
* consistent.
- * Indent here is the `>` (greater than) marker and the spaces before content.
*
* ## API
*
- * The following options (default: `'consistent'`) are accepted:
+ * ### `unified().use(remarkLintCodeBlockStyle[, options])`
*
- * * `number` (example: `2`)
- * — preferred indent of `>` and spaces before content
- * * `'consistent'`
- * — detect the first used style and warn when further block quotes differ
+ * Warn when code blocks violate a given style.
*
- * ## Recommendation
+ * ###### Parameters
*
- * CommonMark specifies that when block quotes are used the `>` markers can be
- * followed by an optional space.
- * No space at all arguably looks rather ugly:
+ * * `options` ([`Options`][api-options], default: `'consistent'`)
+ * — preferred style or whether to detect the first style and warn for
+ * further differences
*
- * ```markdown
- * >Mars and
- * >Venus.
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ### `Options`
+ *
+ * Configuration (TypeScript type).
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Options = Style | 'consistent'
* ```
*
- * There is no specific handling of more that one space, so if 5 spaces were
- * used after `>`, then indented code kicks in:
+ * ### `Style`
*
- * ```markdown
- * > neptune()
+ * Style (TypeScript type).
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Style = 'indented' | 'fenced'
* ```
*
- * Due to this, it’s recommended to configure this rule with `2`.
+ * ## Recommendation
*
- * @module blockquote-indentation
- * @summary
- * remark-lint rule to warn when block quotes are indented too much or
- * too little.
+ * Indentation in markdown is complex as lists and indented code interfere in
+ * unexpected ways.
+ * Fenced code has more features than indented code: it can specify a
+ * programming language.
+ * Since CommonMark took the idea of fenced code from GFM,
+ * fenced code became widely supported.
+ * Due to this, it’s recommended to configure this rule with `'fenced'`.
+ *
+ * ## Fix
+ *
+ * [`remark-stringify`][github-remark-stringify] always formats code blocks as
+ * fenced.
+ * Pass `fences: false` to only use fenced code blocks when they have a
+ * language and as indented code otherwise.
+ *
+ * [api-options]: #options
+ * [api-remark-lint-code-block-style]: #unifieduseremarklintcodeblockstyle-options
+ * [api-style]: #style
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module code-block-style
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
- * {"name": "ok.md", "config": 4}
+ * {"config": "indented", "name": "ok-indented.md"}
+ *
+ * venus()
*
- * > Hello
+ * Mercury.
*
- * Paragraph.
+ * earth()
*
- * > World
* @example
- * {"name": "ok.md", "config": 2}
+ * {"config": "fenced", "name": "ok-fenced.md"}
*
- * > Hello
+ * ```
+ * venus()
+ * ```
*
- * Paragraph.
+ * Mercury.
*
- * > World
+ * ```
+ * earth()
+ * ```
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok-consistent.md"}
+ *
+ * venus()
*
- * > Hello
+ * Mercury.
*
- * Paragraph.
+ * ```
+ * earth()
+ * ```
+ * @example
+ * {"label": "output", "name": "not-ok-consistent.md"}
+ *
+ * 5:1-7:4: Unexpected fenced code block, expected indented code blocks
+ *
+ * @example
+ * {"config": "indented", "label": "input", "name": "not-ok-indented.md"}
+ *
+ * ```
+ * venus()
+ * ```
*
- * > World
+ * Mercury.
*
- * Paragraph.
+ * ```
+ * earth()
+ * ```
+ * @example
+ * {"config": "indented", "label": "output", "name": "not-ok-indented.md"}
*
- * > World
+ * 1:1-3:4: Unexpected fenced code block, expected indented code blocks
+ * 7:1-9:4: Unexpected fenced code block, expected indented code blocks
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"config": "fenced", "label": "input", "name": "not-ok-fenced.md"}
+ *
+ * venus()
+ *
+ * Mercury.
+ *
+ * earth()
*
- * 5:5: Remove 1 space between block quote and content
- * 9:3: Add 1 space between block quote and content
+ * @example
+ * {"config": "fenced", "label": "output", "name": "not-ok-fenced.md"}
+ *
+ * 1:1-1:12: Unexpected indented code block, expected fenced code blocks
+ * 5:1-5:12: Unexpected indented code block, expected fenced code blocks
+ *
+ * @example
+ * {"config": "🌍", "label": "output", "name": "not-ok-options.md", "positionless": true}
+ *
+ * 1:1: Unexpected value `🌍` for `options`, expected `'fenced'`, `'indented'`, or `'consistent'`
*/
-const remarkLintBlockquoteIndentation = lintRule(
+const remarkLintCodeBlockStyle = lintRule$1(
{
- origin: 'remark-lint:blockquote-indentation',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-blockquote-indentation#readme'
+ origin: 'remark-lint:code-block-style',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-code-block-style#readme'
},
- (tree, file, option = 'consistent') => {
- visit$l(tree, 'blockquote', (node) => {
- if (generated(node) || node.children.length === 0) {
+ function (tree, file, options) {
+ const value = String(file);
+ let cause;
+ let expected;
+ if (options === null || options === undefined || options === 'consistent') ; else if (options === 'indented' || options === 'fenced') {
+ expected = options;
+ } else {
+ file.fail(
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected `'fenced'`, `'indented'`, or `'consistent'`"
+ );
+ }
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'code') return
+ const end = pointEnd(node);
+ const start = pointStart(node);
+ if (
+ !start ||
+ !end ||
+ typeof start.offset !== 'number' ||
+ typeof end.offset !== 'number'
+ ) {
return
}
- if (option === 'consistent') {
- option = check(node);
- } else {
- const diff = option - check(node);
- if (diff !== 0) {
- const abs = Math.abs(diff);
+ const actual =
+ node.lang || /^ {0,3}([`~])/.test(value.slice(start.offset, end.offset))
+ ? 'fenced'
+ : 'indented';
+ if (expected) {
+ if (expected !== actual) {
file.message(
- (diff > 0 ? 'Add' : 'Remove') +
- ' ' +
- abs +
- ' ' +
- plural('space', abs) +
- ' between block quote and content',
- pointStart(node.children[0])
+ 'Unexpected ' +
+ actual +
+ ' code block, expected ' +
+ expected +
+ ' code blocks',
+ {ancestors: [...parents, node], cause, place: {start, end}}
);
}
+ } else {
+ expected = actual;
+ cause = new VFileMessage(
+ "Code block style `'" +
+ actual +
+ "'` first defined for `'consistent'` here",
+ {
+ ancestors: [...parents, node],
+ place: {start, end},
+ source: 'remark-lint',
+ ruleId: 'code-block-style'
+ }
+ );
}
});
}
);
-var remarkLintBlockquoteIndentation$1 = remarkLintBlockquoteIndentation;
-function check(node) {
- return pointStart(node.children[0]).column - pointStart(node).column
-}
-
-const convert$k =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$k
- }
- if (typeof test === 'string') {
- return typeFactory$k(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$k(test) : propsFactory$k(test)
- }
- if (typeof test === 'function') {
- return castFactory$k(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$k(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$k(tests[index]);
- }
- return castFactory$k(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$k(check) {
- return castFactory$k(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$k(check) {
- return castFactory$k(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$k(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$k() {
- return true
-}
-
-function color$l(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$k = true;
-const EXIT$k = false;
-const SKIP$k = 'skip';
-const visitParents$k =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$k(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$l(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$k(visitor(node, parents));
- if (result[0] === EXIT$k) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$k) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$k) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$k(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$k, value]
- }
- return [value]
-}
-
-const visit$k =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$k(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+var remarkLintCodeBlockStyle$1 = remarkLintCodeBlockStyle;
/**
+ * remark-lint rule to warn when consecutive whitespace is used in
+ * a definition label.
+ *
+ * ## What is this?
+ *
+ * This package checks the whitepsace in definition labels.
+ *
+ * GFM footnotes are not affected by this rule as footnote labels cannot
+ * contain whitespace.
+ *
* ## When should I use this?
*
- * You can use this package to check that the style of GFM tasklists is
- * consistent.
+ * You can use this package to check that definition labels are consistent.
*
* ## API
*
- * The following options (default: `'consistent'`) are accepted:
+ * ### `unified().use(remarkLintDefinitionSpacing)`
*
- * * `Object` with the following fields:
- * * `checked` (`'x'`, `'X'`, or `'consistent'`, default: `'consistent'`)
- * — preferred character to use for checked checkboxes
- * * `unchecked` (`'·'` (a space), `'»'` (a tab), or `'consistent'`,
- * default: `'consistent'`)
- * — preferred character to use for unchecked checkboxes
- * * `'consistent'`
- * — detect the first used styles and warn when further checkboxes differ
+ * Warn when consecutive whitespace is used in a definition label.
*
- * ## Recommendation
+ * ###### Parameters
*
- * It’s recommended to set `options.checked` to `'x'` (a lowercase X) as it
- * prevents an extra keyboard press and `options.unchecked` to `'·'` (a space)
- * to make all checkboxes align.
+ * There are no options.
*
- * ## Fix
+ * ###### Returns
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats checked checkboxes using `'x'` (lowercase X) and unchecked checkboxes
- * using `'·'` (a space).
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * @module checkbox-character-style
- * @summary
- * remark-lint rule to warn when list item checkboxes violate a given
- * style.
- * @author Titus Wormer
- * @copyright 2015 Titus Wormer
- * @license MIT
- * @example
- * {"name": "ok.md", "config": {"checked": "x"}, "gfm": true}
+ * ## Recommendation
*
- * - [x] List item
- * - [x] List item
+ * Definitions and references are matched together by collapsing whitespace.
+ * Using more whitespace in labels might incorrectly indicate that they are of
+ * importance.
+ * Due to this, it’s recommended to use one space and turn this rule on.
*
- * @example
- * {"name": "ok.md", "config": {"checked": "X"}, "gfm": true}
+ * [api-remark-lint-definition-spacing]: #unifieduseremarklintdefinitionspacing
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
- * - [X] List item
- * - [X] List item
+ * @module definition-spacing
+ * @author Titus Wormer
+ * @copyright 2015 Titus Wormer
+ * @license MIT
*
* @example
- * {"name": "ok.md", "config": {"unchecked": " "}, "gfm": true}
- *
- * - [ ] List item
- * - [ ] List item
- * - [ ]··
- * - [ ]
+ * {"name": "ok.md"}
*
- * @example
- * {"name": "ok.md", "config": {"unchecked": "\t"}, "gfm": true}
+ * The first planet is [planet mercury][].
*
- * - [»] List item
- * - [»] List item
+ * [planet mercury]: http://example.com
*
* @example
- * {"name": "not-ok.md", "label": "input", "gfm": true}
- *
- * - [x] List item
- * - [X] List item
- * - [ ] List item
- * - [»] List item
+ * {"label": "input", "name": "not-ok-consecutive.md"}
*
+ * [planet␠␠␠␠mercury]: http://example.com
* @example
- * {"name": "not-ok.md", "label": "output", "gfm": true}
+ * {"label": "output", "name": "not-ok-consecutive.md"}
*
- * 2:5: Checked checkboxes should use `x` as a marker
- * 4:5: Unchecked checkboxes should use ` ` as a marker
+ * 1:1-1:40: Unexpected `4` consecutive spaces in definition label, expected `1` space, remove `3` spaces
*
* @example
- * {"config": {"unchecked": "💩"}, "name": "not-ok.md", "label": "output", "positionless": true, "gfm": true}
- *
- * 1:1: Incorrect unchecked checkbox marker `💩`: use either `'\t'`, or `' '`
+ * {"label": "input", "name": "not-ok-non-space.md"}
*
+ * [pla␉net␊mer␍cury]: http://e.com
* @example
- * {"config": {"checked": "💩"}, "name": "not-ok.md", "label": "output", "positionless": true, "gfm": true}
+ * {"label": "output", "name": "not-ok-non-space.md"}
*
- * 1:1: Incorrect checked checkbox marker `💩`: use either `'x'`, or `'X'`
+ * 1:1-3:20: Unexpected non-space whitespace character `\t` in definition label, expected `1` space, replace it
+ * 1:1-3:20: Unexpected non-space whitespace character `\n` in definition label, expected `1` space, replace it
+ * 1:1-3:20: Unexpected non-space whitespace character `\r` in definition label, expected `1` space, replace it
*/
-const remarkLintCheckboxCharacterStyle = lintRule(
+const remarkLintDefinitionSpacing = lintRule$1(
{
- origin: 'remark-lint:checkbox-character-style',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-checkbox-character-style#readme'
+ origin: 'remark-lint:definition-spacing',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-definition-spacing#readme'
},
- (tree, file, option = 'consistent') => {
- const value = String(file);
- let checked = 'consistent';
- let unchecked = 'consistent';
- if (typeof option === 'object') {
- checked = option.checked || 'consistent';
- unchecked = option.unchecked || 'consistent';
- }
- if (unchecked !== 'consistent' && unchecked !== ' ' && unchecked !== '\t') {
- file.fail(
- 'Incorrect unchecked checkbox marker `' +
- unchecked +
- "`: use either `'\\t'`, or `' '`"
- );
- }
- if (checked !== 'consistent' && checked !== 'x' && checked !== 'X') {
- file.fail(
- 'Incorrect checked checkbox marker `' +
- checked +
- "`: use either `'x'`, or `'X'`"
- );
- }
- visit$k(tree, 'listItem', (node) => {
- const head = node.children[0];
- const point = pointStart(head);
- if (
- typeof node.checked !== 'boolean' ||
- !head ||
- typeof point.offset !== 'number'
- ) {
- return
- }
- point.offset -= 2;
- point.column -= 2;
- const match = /\[([\t Xx])]/.exec(
- value.slice(point.offset - 2, point.offset + 1)
- );
- if (!match) return
- const style = node.checked ? checked : unchecked;
- if (style === 'consistent') {
- if (node.checked) {
- checked = match[1];
- } else {
- unchecked = match[1];
+ function (tree, file) {
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type === 'definition' && node.position && node.label) {
+ const size = longestStreak(node.label, ' ');
+ if (size > 1) {
+ file.message(
+ 'Unexpected `' +
+ size +
+ '` consecutive spaces in definition label, expected `1` space, remove `' +
+ (size - 1) +
+ '` ' +
+ pluralize('space', size - 1),
+ {ancestors: [...parents, node], place: node.position}
+ );
+ }
+ const disallowed = [];
+ if (node.label.includes('\t')) disallowed.push('\\t');
+ if (node.label.includes('\n')) disallowed.push('\\n');
+ if (node.label.includes('\r')) disallowed.push('\\r');
+ for (const disallow of disallowed) {
+ file.message(
+ 'Unexpected non-space whitespace character `' +
+ disallow +
+ '` in definition label, expected `1` space, replace it',
+ {ancestors: [...parents, node], place: node.position}
+ );
}
- } else if (match[1] !== style) {
- file.message(
- (node.checked ? 'Checked' : 'Unchecked') +
- ' checkboxes should use `' +
- style +
- '` as a marker',
- point
- );
}
});
}
);
-var remarkLintCheckboxCharacterStyle$1 = remarkLintCheckboxCharacterStyle;
-
-const convert$j =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$j
- }
- if (typeof test === 'string') {
- return typeFactory$j(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$j(test) : propsFactory$j(test)
- }
- if (typeof test === 'function') {
- return castFactory$j(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$j(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$j(tests[index]);
- }
- return castFactory$j(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$j(check) {
- return castFactory$j(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$j(check) {
- return castFactory$j(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$j(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$j() {
- return true
-}
-
-function color$k(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
+var remarkLintDefinitionSpacing$1 = remarkLintDefinitionSpacing;
-const CONTINUE$j = true;
-const EXIT$j = false;
-const SKIP$j = 'skip';
-const visitParents$j =
+const quotation =
(
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$j(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$k(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$j(visitor(node, parents));
- if (result[0] === EXIT$j) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$j) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$j) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
+ function (value, open, close) {
+ const start = open || '"';
+ const end = close || start;
+ let index = -1;
+ if (Array.isArray(value)) {
+ const list = (value);
+ const result = [];
+ while (++index < list.length) {
+ result[index] = start + list[index] + end;
}
+ return result
}
- }
- );
-function toResult$j(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$j, value]
- }
- return [value]
-}
-
-const visit$j =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$j(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
+ if (typeof value === 'string') {
+ return start + value + end
}
+ throw new TypeError('Expected string or array of strings')
}
);
/**
+ * remark-lint rule to warn when language flags of fenced code
+ * are not used.
+ *
+ * ## What is this?
+ *
+ * This package checks the language flags of fenced code blocks,
+ * whether they exist,
+ * and optionally what values they hold.
+ *
* ## When should I use this?
*
- * You can use this package to check that the “indent” after a GFM tasklist
- * checkbox is a single space.
+ * You can use this package to check that the style of language flags of fenced
+ * code blocks is consistent.
*
* ## API
*
- * There are no accepted options.
+ * ### `unified().use(remarkLintFencedCodeFlag[, options])`
*
- * ## Recommendation
+ * Warn when language flags of fenced code are not used.
*
- * GFM allows zero or more spaces and tabs after checkboxes.
- * No space at all arguably looks rather ugly:
+ * ###### Parameters
*
- * ```markdown
- * * [x]Pluto
- * ```
+ * * `options` ([`Options`][api-options] or `Array`, optional)
+ * — configuration or flags to allow
*
- * More that one space is superfluous:
+ * ###### Returns
*
- * ```markdown
- * * [x] Jupiter
- * ```
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * Due to this, it’s recommended to turn this rule on.
+ * ### `Options`
*
- * ## Fix
+ * Configuration (TypeScript type).
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats checkboxes and the content after them with a single space between.
+ * ###### Fields
*
- * @module checkbox-content-indent
- * @summary
- * remark-lint rule to warn when GFM tasklist checkboxes are followed by
- * more than one space.
+ * * `allowEmpty` (`boolean`, default: `false`)
+ * — allow language flags to be omitted
+ * * `flags` (`Array`, optional)
+ * — flags to allow,
+ * other flags will result in a warning
+ *
+ * ## Recommendation
+ *
+ * While omitting language flags is fine to signal that code is plain text,
+ * it *could* point to a mistake.
+ * It’s recommended to instead use a certain flag for plain text (such as
+ * `txt`) and to turn this rule on.
+ *
+ * [api-options]: #options
+ * [api-remark-lint-fenced-code-flag]: #unifieduseremarklintfencedcodeflag-options
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module fenced-code-flag
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
- * {"name": "ok.md", "gfm": true}
+ * {"name": "ok.md"}
*
- * - [ ] List item
- * + [x] List Item
- * * [X] List item
- * - [ ] List item
+ * Some markdown:
+ *
+ * ```markdown
+ * # Mercury
+ * ```
*
* @example
- * {"name": "not-ok.md", "label": "input", "gfm": true}
+ * {"label": "input", "name": "not-ok.md"}
+ *
+ * ```
+ * mercury()
+ * ```
+ * @example
+ * {"label": "output", "name": "not-ok.md"}
*
- * - [ ] List item
- * + [x] List item
- * * [X] List item
- * - [ ] List item
+ * 1:1-3:4: Unexpected missing fenced code language flag in info string, expected keyword
*
* @example
- * {"name": "not-ok.md", "label": "output", "gfm": true}
+ * {"config": {"allowEmpty": true}, "name": "ok-allow-empty.md"}
+ *
+ * ```
+ * mercury()
+ * ```
+ *
+ * @example
+ * {"config": {"allowEmpty": false}, "label": "input", "name": "not-ok-allow-empty.md"}
+ *
+ * ```
+ * mercury()
+ * ```
+ * @example
+ * {"config": {"allowEmpty": false}, "label": "output", "name": "not-ok-allow-empty.md"}
+ *
+ * 1:1-3:4: Unexpected missing fenced code language flag in info string, expected keyword
+ *
+ * @example
+ * {"config": ["markdown"], "name": "ok-array.md"}
+ *
+ * ```markdown
+ * # Mercury
+ * ```
+ *
+ * @example
+ * {"config": {"flags":["markdown"]}, "name": "ok-options.md"}
+ *
+ * ```markdown
+ * # Mercury
+ * ```
+ *
+ * @example
+ * {"config": ["markdown"], "label": "input", "name": "not-ok-array.md"}
+ *
+ * ```javascript
+ * mercury()
+ * ```
+ * @example
+ * {"config": ["markdown"], "label": "output", "name": "not-ok-array.md"}
+ *
+ * 1:1-3:4: Unexpected fenced code language flag `javascript` in info string, expected `markdown`
+ *
+ * @example
+ * {"config": ["javascript", "markdown", "mdx", "typescript"], "label": "input", "name": "not-ok-long-array.md"}
+ *
+ * ```html
+ * Mercury
+ * ```
+ * @example
+ * {"config": ["javascript", "markdown", "mdx", "typescript"], "label": "output", "name": "not-ok-long-array.md"}
+ *
+ * 1:1-3:4: Unexpected fenced code language flag `html` in info string, expected `javascript`, `markdown`, `mdx`, …
*
- * 2:7-2:8: Checkboxes should be followed by a single character
- * 3:7-3:9: Checkboxes should be followed by a single character
- * 4:7-4:10: Checkboxes should be followed by a single character
+ * @example
+ * {"config": "🌍", "label": "output", "name": "not-ok-options.md", "positionless": true}
+ *
+ * 1:1: Unexpected value `🌍` for `options`, expected array or object
*/
-const remarkLintCheckboxContentIndent = lintRule(
+const fence = /^ {0,3}([~`])\1{2,}/;
+const listFormat$1 = new Intl.ListFormat('en', {type: 'disjunction'});
+const listFormatUnit$1 = new Intl.ListFormat('en', {type: 'unit'});
+const remarkLintFencedCodeFlag = lintRule$1(
{
- origin: 'remark-lint:checkbox-content-indent',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-checkbox-content-indent#readme'
+ origin: 'remark-lint:fenced-code-flag',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-fenced-code-flag#readme'
},
- (tree, file) => {
+ function (tree, file, options) {
const value = String(file);
- const loc = location(file);
- visit$j(tree, 'listItem', (node) => {
- const head = node.children[0];
- const point = pointStart(head);
- if (
- typeof node.checked !== 'boolean' ||
- !head ||
- typeof point.offset !== 'number'
- ) {
- return
+ let allowEmpty = false;
+ let allowed;
+ if (options === null || options === undefined) ; else if (typeof options === 'object') {
+ if (Array.isArray(options)) {
+ const flags = (options);
+ allowed = flags;
+ } else {
+ const settings = (options);
+ allowEmpty = settings.allowEmpty === true;
+ if (settings.flags) {
+ allowed = settings.flags;
+ }
}
- const match = /\[([\t xX])]/.exec(
- value.slice(point.offset - 4, point.offset + 1)
+ } else {
+ file.fail(
+ 'Unexpected value `' +
+ options +
+ '` for `options`, expected array or object'
);
- if (!match) return
- const initial = point.offset;
- let final = initial;
- while (/[\t ]/.test(value.charAt(final))) final++;
- if (final - initial > 0) {
- file.message('Checkboxes should be followed by a single character', {
- start: loc.toPoint(initial),
- end: loc.toPoint(final)
- });
- }
- });
- }
-);
-var remarkLintCheckboxContentIndent$1 = remarkLintCheckboxContentIndent;
-
-const convert$i =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$i
- }
- if (typeof test === 'string') {
- return typeFactory$i(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$i(test) : propsFactory$i(test)
- }
- if (typeof test === 'function') {
- return castFactory$i(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$i(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$i(tests[index]);
- }
- return castFactory$i(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
}
- return false
- }
-}
-function propsFactory$i(check) {
- return castFactory$i(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
+ let allowedDisplay;
+ if (allowed) {
+ allowedDisplay =
+ allowed.length > 3
+ ? listFormatUnit$1.format([...quotation(allowed.slice(0, 3), '`'), '…'])
+ : listFormat$1.format(quotation(allowed, '`'));
+ } else {
+ allowedDisplay = 'keyword';
}
- return true
- }
-}
-function typeFactory$i(check) {
- return castFactory$i(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$i(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$i() {
- return true
-}
-
-function color$j(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$i = true;
-const EXIT$i = false;
-const SKIP$i = 'skip';
-const visitParents$i =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$i(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$j(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$i(visitor(node, parents));
- if (result[0] === EXIT$i) {
- return result
- }
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'code') return
+ const end = pointEnd(node);
+ const start = pointStart(node);
+ if (
+ end &&
+ start &&
+ typeof end.offset === 'number' &&
+ typeof start.offset === 'number'
+ ) {
+ if (node.lang) {
+ if (allowed && !allowed.includes(node.lang)) {
+ file.message(
+ 'Unexpected fenced code language flag `' +
+ node.lang +
+ '` in info string, expected ' +
+ allowedDisplay,
+ {ancestors: [...parents, node], place: node.position}
+ );
}
- if (node.children && result[0] !== SKIP$i) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$i) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
+ } else if (!allowEmpty) {
+ const slice = value.slice(start.offset, end.offset);
+ if (fence.test(slice)) {
+ file.message(
+ 'Unexpected missing fenced code language flag in info string, expected ' +
+ allowedDisplay,
+ {ancestors: [...parents, node], place: node.position}
+ );
}
- return result
}
}
- }
- );
-function toResult$i(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$i, value]
+ });
}
- return [value]
-}
-
-const visit$i =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$i(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+);
+var remarkLintFencedCodeFlag$1 = remarkLintFencedCodeFlag;
/**
+ * remark-lint rule to warn when fenced code markers are
+ * inconsistent.
+ *
+ * ## What is this?
+ *
+ * This package checks fenced code block markers.
+ *
* ## When should I use this?
*
- * You can use this package to check that code blocks are consistent.
+ * You can use this package to check that fenced code block markers are
+ * consistent.
*
* ## API
*
- * The following options (default: `'consistent'`) are accepted:
- *
- * * `'fenced'`
- * — prefer fenced code blocks:
- * ````markdown
- * ```js
- * code()
- * ```
- * ````
- * * `'indented'`
- * — prefer indented code blocks:
- * ```markdown
- * code()
- * ```
- * * `'consistent'`
- * — detect the first used style and warn when further code blocks differ
+ * ### `unified().use(remarkLintFencedCodeMarker[, options])`
*
- * ## Recommendation
+ * Warn when fenced code markers are inconsistent.
*
- * Indentation in markdown is complex, especially because lists and indented
- * code can interfere in unexpected ways.
- * Fenced code has more features than indented code: importantly, specifying a
- * programming language.
- * Since CommonMark took the idea of fenced code from GFM, fenced code became
- * widely supported.
- * Due to this, it’s recommended to configure this rule with `'fenced'`.
+ * ###### Parameters
*
- * ## Fix
+ * * `options` ([`Options`][api-options], default: `'consistent'`)
+ * — preferred style or whether to detect the first style and warn for
+ * further differences
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats code blocks as fenced code when they have a language flag and as
- * indented code otherwise.
- * Pass
- * [`fences: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsfences)
- * to always use fenced code.
+ * ###### Returns
*
- * @module code-block-style
- * @summary
- * remark-lint rule to warn when code blocks violate a given style.
- * @author Titus Wormer
- * @copyright 2015 Titus Wormer
- * @license MIT
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * @example
- * {"config": "indented", "name": "ok.md"}
+ * ### `Marker`
*
- * alpha()
+ * Marker (TypeScript type).
*
- * Paragraph.
+ * ###### Type
*
- * bravo()
+ * ```ts
+ * type Marker = '`' | '~'
+ * ```
*
- * @example
- * {"config": "indented", "name": "not-ok.md", "label": "input"}
+ * ### `Options`
*
- * ```
- * alpha()
- * ```
+ * Configuration (TypeScript type).
*
- * Paragraph.
+ * ###### Type
*
- * ```
- * bravo()
- * ```
+ * ```ts
+ * type Options = Marker | 'consistent'
+ * ```
+ *
+ * ## Recommendation
+ *
+ * Tildes are uncommon.
+ * So it’s recommended to configure this rule with ``'`'``.
+ *
+ * ## Fix
+ *
+ * [`remark-stringify`][github-remark-stringify] formats fenced code with grave
+ * accents by default.
+ * Pass `fence: '~'` to always use tildes.
+ *
+ * [api-marker]: #marker
+ * [api-options]: #options
+ * [api-remark-lint-fenced-code-marker]: #unifieduseremarklintfencedcodemarker-options
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module fenced-code-marker
+ * @author Titus Wormer
+ * @copyright 2015 Titus Wormer
+ * @license MIT
*
* @example
- * {"config": "indented", "name": "not-ok.md", "label": "output"}
+ * {"name": "ok-indented.md"}
+ *
+ * Indented code blocks are not affected by this rule:
*
- * 1:1-3:4: Code blocks should be indented
- * 7:1-9:4: Code blocks should be indented
+ * mercury()
*
* @example
- * {"config": "fenced", "name": "ok.md"}
+ * {"config": "`", "name": "ok-tick.md"}
*
- * ```
- * alpha()
+ * ```javascript
+ * mercury()
* ```
*
- * Paragraph.
- *
* ```
- * bravo()
+ * venus()
* ```
*
* @example
- * {"config": "fenced", "name": "not-ok-fenced.md", "label": "input"}
- *
- * alpha()
+ * {"config": "~", "name": "ok-tilde.md"}
*
- * Paragraph.
+ * ~~~javascript
+ * mercury()
+ * ~~~
*
- * bravo()
+ * ~~~
+ * venus()
+ * ~~~
*
* @example
- * {"config": "fenced", "name": "not-ok-fenced.md", "label": "output"}
+ * {"label": "input", "name": "not-ok-consistent-tick.md"}
*
- * 1:1-1:12: Code blocks should be fenced
- * 5:1-5:12: Code blocks should be fenced
+ * ```javascript
+ * mercury()
+ * ```
*
+ * ~~~
+ * venus()
+ * ~~~
* @example
- * {"name": "not-ok-consistent.md", "label": "input"}
+ * {"label": "output", "name": "not-ok-consistent-tick.md"}
*
- * alpha()
+ * 5:1-7:4: Unexpected fenced code marker `~`, expected `` ` ``
*
- * Paragraph.
+ * @example
+ * {"label": "input", "name": "not-ok-consistent-tilde.md"}
+ *
+ * ~~~javascript
+ * mercury()
+ * ~~~
*
* ```
- * bravo()
+ * venus()
* ```
- *
* @example
- * {"name": "not-ok-consistent.md", "label": "output"}
+ * {"label": "output", "name": "not-ok-consistent-tilde.md"}
*
- * 5:1-7:4: Code blocks should be indented
+ * 5:1-7:4: Unexpected fenced code marker `` ` ``, expected `~`
*
* @example
- * {"config": "💩", "name": "not-ok-incorrect.md", "label": "output", "positionless": true}
+ * {"config": "🌍", "label": "output", "name": "not-ok-incorrect.md", "positionless": true}
*
- * 1:1: Incorrect code block style `💩`: use either `'consistent'`, `'fenced'`, or `'indented'`
+ * 1:1: Unexpected value `🌍` for `options`, expected ``'`'``, `'~'`, or `'consistent'`
*/
-const remarkLintCodeBlockStyle = lintRule(
+const remarkLintFencedCodeMarker = lintRule$1(
{
- origin: 'remark-lint:code-block-style',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-code-block-style#readme'
+ origin: 'remark-lint:fenced-code-marker',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-fenced-code-marker#readme'
},
- (tree, file, option = 'consistent') => {
+ function (tree, file, options) {
const value = String(file);
- if (
- option !== 'consistent' &&
- option !== 'fenced' &&
- option !== 'indented'
- ) {
+ let cause;
+ let expected;
+ if (options === null || options === undefined || options === 'consistent') ; else if (options === '`' || options === '~') {
+ expected = options;
+ } else {
file.fail(
- 'Incorrect code block style `' +
- option +
- "`: use either `'consistent'`, `'fenced'`, or `'indented'`"
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected ``'`'``, `'~'`, or `'consistent'`"
);
}
- visit$i(tree, 'code', (node) => {
- if (generated(node)) {
- return
- }
- const initial = pointStart(node).offset;
- const final = pointEnd(node).offset;
- const current =
- node.lang || /^\s*([~`])\1{2,}/.test(value.slice(initial, final))
- ? 'fenced'
- : 'indented';
- if (option === 'consistent') {
- option = current;
- } else if (option !== current) {
- file.message('Code blocks should be ' + option, node);
- }
- });
- }
-);
-var remarkLintCodeBlockStyle$1 = remarkLintCodeBlockStyle;
-
-const convert$h =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$h
- }
- if (typeof test === 'string') {
- return typeFactory$h(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$h(test) : propsFactory$h(test)
- }
- if (typeof test === 'function') {
- return castFactory$h(test)
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
}
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$h(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$h(tests[index]);
- }
- return castFactory$h(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$h(check) {
- return castFactory$h(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$h(check) {
- return castFactory$h(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$h(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$h() {
- return true
-}
-
-function color$i(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$h = true;
-const EXIT$h = false;
-const SKIP$h = 'skip';
-const visitParents$h =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$h(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$i(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$h(visitor(node, parents));
- if (result[0] === EXIT$h) {
- return result
- }
+ if (node.type !== 'code') return
+ const start = pointStart(node);
+ if (start && typeof start.offset === 'number') {
+ const actual = value
+ .slice(start.offset, start.offset + 4)
+ .replace(/^\s+/, '')
+ .charAt(0);
+ if (actual !== '`' && actual !== '~') return
+ if (expected) {
+ if (actual !== expected) {
+ file.message(
+ 'Unexpected fenced code marker ' +
+ (actual === '~' ? '`~`' : '`` ` ``') +
+ ', expected ' +
+ (expected === '~' ? '`~`' : '`` ` ``'),
+ {ancestors: [...parents, node], cause, place: node.position}
+ );
}
- if (node.children && result[0] !== SKIP$h) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$h) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
+ } else {
+ expected = actual;
+ cause = new VFileMessage(
+ 'Fenced code marker style ' +
+ (actual === '~' ? "`'~'`" : "``'`'``") +
+ " first defined for `'consistent'` here",
+ {
+ ancestors: [...parents, node],
+ place: node.position,
+ ruleId: 'fenced-code-marker',
+ source: 'remark-lint'
}
- }
- return result
+ );
}
}
- }
- );
-function toResult$h(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$h, value]
+ });
}
- return [value]
-}
-
-const visit$h =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$h(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+);
+var remarkLintFencedCodeMarker$1 = remarkLintFencedCodeMarker;
/**
+ * remark-lint rule to warn for unexpected file extensions.
+ *
+ * ## What is this?
+ *
+ * This package checks the file extension.
+ *
* ## When should I use this?
*
- * You can use this package to check that the labels used in definitions
- * do not use meaningless white space.
+ * You can use this package to check that file extensions are consistent.
*
* ## API
*
- * There are no options.
+ * ### `unified().use(remarkLintFileExtension[, options])`
*
- * ## Recommendation
+ * Warn for unexpected extensions.
*
- * Definitions and references are matched together by collapsing white space.
- * Using more white space in labels might incorrectly indicate that they are of
- * importance.
- * Due to this, it’s recommended to use one space (or a line ending if needed)
- * and turn this rule on.
+ * ###### Parameters
*
- * @module definition-spacing
- * @summary
- * remark-lint rule to warn when consecutive whitespace is used in
- * a definition label.
- * @author Titus Wormer
- * @copyright 2015 Titus Wormer
- * @license MIT
- * @example
- * {"name": "ok.md"}
+ * * `options` ([`Extensions`][api-extensions] or [`Options`][api-options],
+ * optional)
+ * — configuration
*
- * [example domain]: http://example.com "Example Domain"
+ * ###### Returns
*
- * @example
- * {"name": "not-ok.md", "label": "input"}
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * [example····domain]: http://example.com "Example Domain"
+ * ### `Extensions`
*
- * @example
- * {"name": "not-ok.md", "label": "output"}
+ * File extension(s) (TypeScript type).
*
- * 1:1-1:57: Do not use consecutive whitespace in definition labels
- */
-const label = /^\s*\[((?:\\[\s\S]|[^[\]])+)]/;
-const remarkLintDefinitionSpacing = lintRule(
- {
- origin: 'remark-lint:definition-spacing',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-definition-spacing#readme'
- },
- (tree, file) => {
- const value = String(file);
- visit$h(tree, (node) => {
- if (node.type === 'definition' || node.type === 'footnoteDefinition') {
- const start = pointStart(node).offset;
- const end = pointEnd(node).offset;
- if (typeof start === 'number' && typeof end === 'number') {
- const match = value.slice(start, end).match(label);
- if (match && /[ \t\n]{2,}/.test(match[1])) {
- file.message(
- 'Do not use consecutive whitespace in definition labels',
- node
- );
- }
- }
- }
- });
- }
-);
-var remarkLintDefinitionSpacing$1 = remarkLintDefinitionSpacing;
-
-const convert$g =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$g
- }
- if (typeof test === 'string') {
- return typeFactory$g(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$g(test) : propsFactory$g(test)
- }
- if (typeof test === 'function') {
- return castFactory$g(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$g(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$g(tests[index]);
- }
- return castFactory$g(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$g(check) {
- return castFactory$g(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$g(check) {
- return castFactory$g(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$g(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$g() {
- return true
-}
-
-function color$h(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$g = true;
-const EXIT$g = false;
-const SKIP$g = 'skip';
-const visitParents$g =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$g(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$h(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$g(visitor(node, parents));
- if (result[0] === EXIT$g) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$g) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$g) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$g(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$g, value]
- }
- return [value]
-}
-
-const visit$g =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$g(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
-
-/**
- * ## When should I use this?
+ * ###### Type
+ *
+ * ```ts
+ * type Extensions = Array | string
+ * ```
*
- * You can use this package to check that language flags of fenced code
- * are used and consistent.
+ * ### `Options`
*
- * ## API
+ * Configuration (TypeScript type).
*
- * The following options (default: `undefined`) are accepted:
+ * ###### Fields
*
- * * `Array`
- * — as if passing `{flags: options}`
- * * `Object` with the following fields:
- * * `allowEmpty` (`boolean`, default: `false`)
- * — allow language flags to be omitted
- * * `flags` (`Array` default: `[]`)
- * — specific flags to allow (other flags will result in a warning)
+ * * `allowExtensionless` (`boolean`, default: `true`)
+ * — allow no file extension such as `AUTHORS` or `LICENSE`
+ * * `extensions` ([`Extensions`][api-extensions], default: `['mdx', 'md']`)
+ * — allowed file extension(s)
*
* ## Recommendation
*
- * While omitting the language flag is perfectly fine to signal that the code is
- * plain text, it *could* point to a mistake.
- * It’s recommended to instead use a certain flag for plain text (such as `txt`)
- * and to turn this rule on.
+ * Use `md` as it’s the most common.
+ * Also use `md` when your markdown contains common syntax extensions (such as
+ * GFM, frontmatter, or math).
+ * Do not use `md` for MDX: use `mdx` instead.
+ *
+ * [api-extensions]: #extensions
+ * [api-options]: #options
+ * [api-remark-lint-file-extension]: #unifieduseremarklintfileextension-options
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
- * @module fenced-code-flag
- * @summary
- * remark-lint rule to check that language flags of fenced code are used.
+ * @module file-extension
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
*
* @example
- * {"name": "ok.md"}
- *
- * ```alpha
- * bravo()
- * ```
- *
- * @example
- * {"name": "not-ok.md", "label": "input"}
- *
- * ```
- * alpha()
- * ```
- *
- * @example
- * {"name": "not-ok.md", "label": "output"}
- *
- * 1:1-3:4: Missing code language flag
+ * {"name": "readme.md"}
*
* @example
- * {"name": "ok.md", "config": {"allowEmpty": true}}
- *
- * ```
- * alpha()
- * ```
+ * {"name": "readme.mdx"}
*
* @example
- * {"name": "not-ok.md", "config": {"allowEmpty": false}, "label": "input"}
- *
- * ```
- * alpha()
- * ```
+ * {"name": "readme"}
*
* @example
- * {"name": "not-ok.md", "config": {"allowEmpty": false}, "label": "output"}
+ * {"config": {"allowExtensionless": false}, "label": "output", "name": "readme", "positionless": true}
*
- * 1:1-3:4: Missing code language flag
+ * 1:1: Unexpected missing file extension, expected `mdx` or `md`
*
* @example
- * {"name": "ok.md", "config": ["alpha"]}
+ * {"label": "output", "name": "readme.mkd", "positionless": true}
*
- * ```alpha
- * bravo()
- * ```
+ * 1:1: Unexpected file extension `mkd`, expected `mdx` or `md`
*
* @example
- * {"name": "ok.md", "config": {"flags":["alpha"]}}
- *
- * ```alpha
- * bravo()
- * ```
+ * {"config": "mkd", "name": "readme.mkd"}
*
* @example
- * {"name": "not-ok.md", "config": ["charlie"], "label": "input"}
- *
- * ```alpha
- * bravo()
- * ```
+ * {"config": ["markdown", "md", "mdown", "mdwn", "mdx", "mkd", "mkdn", "mkdown", "ron"], "label": "input", "name": "readme.css", "positionless": true}
*
* @example
- * {"name": "not-ok.md", "config": ["charlie"], "label": "output"}
+ * {"config": ["markdown", "md", "mdown", "mdwn", "mdx", "mkd", "mkdn", "mkdown", "ron"], "label": "output", "name": "readme.css"}
*
- * 1:1-3:4: Incorrect code language flag
+ * 1:1: Unexpected file extension `css`, expected `markdown`, `md`, `mdown`, …
*/
-const fence = /^ {0,3}([~`])\1{2,}/;
-const remarkLintFencedCodeFlag = lintRule(
+const defaultExtensions = ['mdx', 'md'];
+const listFormat = new Intl.ListFormat('en', {type: 'disjunction'});
+const listFormatUnit = new Intl.ListFormat('en', {type: 'unit'});
+const remarkLintFileExtension = lintRule$1(
{
- origin: 'remark-lint:fenced-code-flag',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-fenced-code-flag#readme'
+ origin: 'remark-lint:file-extension',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-file-extension#readme'
},
- (tree, file, option) => {
- const value = String(file);
- let allowEmpty = false;
- let allowed = [];
- if (typeof option === 'object') {
- if (Array.isArray(option)) {
- allowed = option;
- } else {
- allowEmpty = Boolean(option.allowEmpty);
- if (option.flags) {
- allowed = option.flags;
- }
- }
+ function (_, file, options) {
+ let expected = defaultExtensions;
+ let allowExtensionless = true;
+ let extensionsValue;
+ if (Array.isArray(options)) {
+ extensionsValue = (options);
+ } else if (typeof options === 'string') {
+ extensionsValue = options;
+ } else if (options) {
+ const settings = (options);
+ extensionsValue = settings.extensions;
+ if (settings.allowExtensionless === false) {
+ allowExtensionless = false;
+ }
+ }
+ if (Array.isArray(extensionsValue)) {
+ expected = (extensionsValue);
+ } else if (typeof extensionsValue === 'string') {
+ expected = [extensionsValue];
+ }
+ const extname = file.extname;
+ const actual = extname ? extname.slice(1) : undefined;
+ const expectedDisplay =
+ expected.length > 3
+ ? listFormatUnit.format([...quotation(expected.slice(0, 3), '`'), '…'])
+ : listFormat.format(quotation(expected, '`'));
+ if (actual ? !expected.includes(actual) : !allowExtensionless) {
+ file.message(
+ (actual
+ ? 'Unexpected file extension `' + actual + '`'
+ : 'Unexpected missing file extension') +
+ ', expected ' +
+ expectedDisplay
+ );
}
- visit$g(tree, 'code', (node) => {
- if (!generated(node)) {
- if (node.lang) {
- if (allowed.length > 0 && !allowed.includes(node.lang)) {
- file.message('Incorrect code language flag', node);
- }
- } else {
- const slice = value.slice(
- pointStart(node).offset,
- pointEnd(node).offset
- );
- if (!allowEmpty && fence.test(slice)) {
- file.message('Missing code language flag', node);
- }
- }
- }
- });
}
);
-var remarkLintFencedCodeFlag$1 = remarkLintFencedCodeFlag;
-
-const convert$f =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$f
- }
- if (typeof test === 'string') {
- return typeFactory$f(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$f(test) : propsFactory$f(test)
- }
- if (typeof test === 'function') {
- return castFactory$f(test)
- }
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory$f(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$f(tests[index]);
- }
- return castFactory$f(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$f(check) {
- return castFactory$f(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$f(check) {
- return castFactory$f(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$f(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$f() {
- return true
-}
-
-function color$g(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$f = true;
-const EXIT$f = false;
-const SKIP$f = 'skip';
-const visitParents$f =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$f(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$g(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$f(visitor(node, parents));
- if (result[0] === EXIT$f) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP$f) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$f) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
- }
- }
- );
-function toResult$f(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$f, value]
- }
- return [value]
-}
-
-const visit$f =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$f(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+var remarkLintFileExtension$1 = remarkLintFileExtension;
/**
+ * remark-lint rule to warn when definitions are used *in* the
+ * document instead of at the end.
+ *
+ * ## What is this?
+ *
+ * This package checks where definitions are placed.
+ *
* ## When should I use this?
*
- * You can use this package to check that fenced code markers are consistent.
+ * You can use this package to check that definitions are consistently at the
+ * end of the document.
*
* ## API
*
- * The following options (default: `'consistent'`) are accepted:
+ * ### `unified().use(remarkLintFinalDefinition)`
*
- * * ``'`'``
- * — prefer grave accents
- * * `'~'`
- * — prefer tildes
- * * `'consistent'`
- * — detect the first used style and warn when further fenced code differs
+ * Warn when definitions are used *in* the document instead of at the end.
*
- * ## Recommendation
+ * ###### Parameters
*
- * Tildes are extremely uncommon.
- * Due to this, it’s recommended to configure this rule with ``'`'``.
+ * There are no options.
*
- * ## Fix
+ * ###### Returns
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats fenced code with grave accents by default.
- * Pass
- * [`fence: '~'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsfence)
- * to always use tildes.
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
- * @module fenced-code-marker
- * @summary
- * remark-lint rule to warn when fenced code markers are inconsistent.
+ * ## Recommendation
+ *
+ * There are different strategies for placing definitions.
+ * The simplest is perhaps to place them all at the bottem of documents.
+ * If you prefer that, turn on this rule.
+ *
+ * [api-remark-lint-final-definition]: #unifieduseremarklintfinaldefinition
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
+ * @module final-definition
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
- * Indented code blocks are not affected by this rule:
+ * Mercury.
*
- * bravo()
+ * [venus]: http://example.com
*
* @example
- * {"name": "ok.md", "config": "`"}
+ * {"name": "ok.md"}
*
- * ```alpha
- * bravo()
- * ```
+ * [mercury]: http://example.com/mercury/
+ * [venus]: http://example.com/venus/
*
- * ```
- * charlie()
- * ```
+ * @example
+ * {"name": "ok-html-comments.md"}
+ *
+ * Mercury.
+ *
+ * [venus]: http://example.com/venus/
+ *
+ *
+ *
+ * [earth]: http://example.com/earth/
*
* @example
- * {"name": "ok.md", "config": "~"}
+ * {"name": "ok-mdx-comments.mdx", "mdx": true}
*
- * ~~~alpha
- * bravo()
- * ~~~
+ * Mercury.
*
- * ~~~
- * charlie()
- * ~~~
+ * [venus]: http://example.com/venus/
+ *
+ * {/* Comments in expressions in MDX are ignored. *␀/}
+ *
+ * [earth]: http://example.com/earth/
*
* @example
- * {"name": "not-ok-consistent-tick.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
- * ```alpha
- * bravo()
- * ```
+ * Mercury.
*
- * ~~~
- * charlie()
- * ~~~
+ * [venus]: https://example.com/venus/
*
+ * Earth.
* @example
- * {"name": "not-ok-consistent-tick.md", "label": "output"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 5:1-7:4: Fenced code should use `` ` `` as a marker
+ * 3:1-3:36: Unexpected definition before last content, expected definitions after line `5`
*
* @example
- * {"name": "not-ok-consistent-tilde.md", "label": "input"}
+ * {"gfm": true, "label": "input", "name": "gfm-nok.md"}
*
- * ~~~alpha
- * bravo()
- * ~~~
+ * Mercury.
*
- * ```
- * charlie()
- * ```
+ * [^venus]:
+ * **Venus** is the second planet from
+ * the Sun.
*
+ * Earth.
* @example
- * {"name": "not-ok-consistent-tilde.md", "label": "output"}
+ * {"gfm": true, "label": "output", "name": "gfm-nok.md"}
*
- * 5:1-7:4: Fenced code should use `~` as a marker
+ * 3:1-5:13: Unexpected footnote definition before last content, expected definitions after line `7`
*
* @example
- * {"name": "not-ok-incorrect.md", "config": "💩", "label": "output", "positionless": true}
+ * {"gfm": true, "name": "gfm-ok.md"}
*
- * 1:1: Incorrect fenced code marker `💩`: use either `'consistent'`, `` '`' ``, or `'~'`
- */
-const remarkLintFencedCodeMarker = lintRule(
+ * Mercury.
+ *
+ * Earth.
+ *
+ * [^venus]:
+ * **Venus** is the second planet from
+ * the Sun.
+ */
+const remarkLintFinalDefinition = lintRule$1(
{
- origin: 'remark-lint:fenced-code-marker',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-fenced-code-marker#readme'
+ origin: 'remark-lint:final-definition',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-final-definition#readme'
},
- (tree, file, option = 'consistent') => {
- const contents = String(file);
- if (option !== 'consistent' && option !== '~' && option !== '`') {
- file.fail(
- 'Incorrect fenced code marker `' +
- option +
- "`: use either `'consistent'`, `` '`' ``, or `'~'`"
- );
- }
- visit$f(tree, 'code', (node) => {
- const start = pointStart(node).offset;
- if (typeof start === 'number') {
- const marker = contents
- .slice(start, start + 4)
- .replace(/^\s+/, '')
- .charAt(0);
- if (marker === '~' || marker === '`') {
- if (option === 'consistent') {
- option = marker;
- } else if (marker !== option) {
- file.message(
- 'Fenced code should use `' +
- (option === '~' ? option : '` ` `') +
- '` as a marker',
- node
- );
- }
- }
+ function (tree, file) {
+ const definitionStacks = [];
+ let contentAncestors;
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
}
+ if (node.type === 'definition' || node.type === 'footnoteDefinition') {
+ definitionStacks.push([...parents, node]);
+ return SKIP
+ }
+ if (
+ node.type === 'root' ||
+ (node.type === 'html' && /^[\t ]*
+ * @example
+ * {"config": "🌍", "label": "output", "name": "not-ok.md", "positionless": true}
*
- * [example-2]: http://example.com/two/
+ * 1:1: Unexpected value `🌍` for `options`, expected `'atx'`, `'atx-closed'`, `'setext'`, or `'consistent'`
*/
-const remarkLintFinalDefinition = lintRule(
+const remarkLintHeadingStyle = lintRule$1(
{
- origin: 'remark-lint:final-definition',
- url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-final-definition#readme'
+ origin: 'remark-lint:heading-style',
+ url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-heading-style#readme'
},
- (tree, file) => {
- let last = 0;
- visit$e(
- tree,
- (node) => {
- if (
- node.type === 'root' ||
- generated(node) ||
- (node.type === 'html' && /^\s*
+ * > | Mercury|
+ * > | - |
*
- * | | Alpha | Bravo|
- * | ------ | ----- | ---: |
- * | Charlie| | Echo|
+ * * | Venus|
+ * | - |
*
+ * > * > | Earth|
+ * > > | - |
* @example
- * {"name": "empty.md", "label": "output", "config": "padded", "gfm": true}
+ * {"config": "padded", "gfm": true, "label": "output", "name": "containers.md"}
*
- * 3:25: Cell should be padded
- * 5:10: Cell should be padded
- * 5:25: Cell should be padded
+ * 1:12: Unexpected `0` spaces between cell content and edge, expected `1` space, add `1` space
+ * 4:10: Unexpected `0` spaces between cell content and edge, expected `1` space, add `1` space
+ * 7:14: Unexpected `0` spaces between cell content and edge, expected `1` space, add `1` space
*
* @example
- * {"name": "missing-body.md", "config": "padded", "gfm": true}
+ * {"config": "padded", "gfm": true, "label": "input", "name": "windows.md"}
*
- *
+ * | Mercury|␍␊| --- |␍␊| None |
+ * @example
+ * {"config": "padded", "gfm": true, "label": "output", "name": "windows.md"}
+ *
+ * 1:10: Unexpected `0` spaces between cell content and edge, expected `1` space, add `1` space
+ *
+ * @example
+ * {"config": "🌍", "gfm": true, "label": "output", "name": "not-ok.md", "positionless": true}
*
- * | Alpha | Bravo | Charlie |
- * | ----- | ------- | ------- |
- * | Delta |
- * | Echo | Foxtrot |
+ * 1:1: Unexpected value `🌍` for `options`, expected `'compact'`, `'padded'`, or `'consistent'`
*/
-const remarkLintTableCellPadding = lintRule(
+const remarkLintTableCellPadding = lintRule$1(
{
origin: 'remark-lint:table-cell-padding',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-table-cell-padding#readme'
},
- (tree, file, option = 'consistent') => {
- if (
- option !== 'padded' &&
- option !== 'compact' &&
- option !== 'consistent'
- ) {
+ function (tree, file, options) {
+ const value = String(file);
+ let expected;
+ let cause;
+ if (options === null || options === undefined || options === 'consistent') ; else if (options === 'compact' || options === 'padded') {
+ expected = options;
+ } else {
file.fail(
- 'Incorrect table cell padding style `' +
- option +
- "`, expected `'padded'`, `'compact'`, or `'consistent'`"
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected `'compact'`, `'padded'`, or `'consistent'`"
);
}
- visit$2(tree, 'table', (node) => {
- const rows = node.children;
- const align = node.align || [];
+ visitParents(tree, function (table, parents) {
+ if (phrasing(table)) {
+ return SKIP
+ }
+ if (table.type !== 'table') return
+ const entries = inferTable([...parents, table]);
const sizes = [];
- const entries = [];
- let index = -1;
- while (++index < align.length) {
- const alignment = align[index];
- sizes[index] = alignment === 'center' ? 3 : alignment ? 2 : 1;
+ for (const entry of entries) {
+ if (
+ entry.size &&
+ (sizes[entry.column] === undefined ||
+ entry.size.middle > sizes[entry.column])
+ ) {
+ sizes[entry.column] = entry.size.middle;
+ }
}
- index = -1;
- while (++index < rows.length) {
- const row = rows[index];
- let column = -1;
- while (++column < row.children.length) {
- const cell = row.children[column];
- const cellStart = pointStart(cell).offset;
- const cellEnd = pointEnd(cell).offset;
- const contentStart = pointStart(cell.children[0]).offset;
- const contentEnd = pointEnd(
- cell.children[cell.children.length - 1]
- ).offset;
+ if (!expected) {
+ for (const info of entries) {
if (
- typeof cellStart !== 'number' ||
- typeof cellEnd !== 'number' ||
- typeof contentStart !== 'number' ||
- typeof contentEnd !== 'number'
+ info.size &&
+ info.size.middle &&
+ info.size.middle === sizes[info.column]
) {
- continue
+ const node = info.ancestors.at(-1);
+ expected = info.size.left ? 'padded' : 'compact';
+ cause = new VFileMessage(
+ "Cell padding style `'" +
+ expected +
+ "'` first defined for `'consistent'` here",
+ {
+ ancestors: info.ancestors,
+ place: node.position,
+ ruleId: 'table-cell-padding',
+ source: 'remark-lint'
+ }
+ );
}
- entries.push({
- node: cell,
- start: contentStart - cellStart - 1,
- end:
- cellEnd -
- contentEnd -
- (column === row.children.length - 1 ? 1 : 0),
- column
- });
- sizes[column] = Math.max(
- sizes[column] || 0,
- contentEnd - contentStart
- );
}
}
- const style =
- option === 'consistent'
- ? entries[0] && (!entries[0].start || !entries[0].end)
- ? 0
- : 1
- : option === 'padded'
- ? 1
- : 0;
- index = -1;
- while (++index < entries.length) {
- checkSide('start', entries[index], style, sizes);
- checkSide('end', entries[index], style, sizes);
- }
- return SKIP$2
+ if (!expected) return
+ for (const info of entries) {
+ checkSide('left', info, sizes);
+ checkSide('right', info, sizes);
+ }
+ return SKIP
});
- function checkSide(side, entry, style, sizes) {
- const cell = entry.node;
- const column = entry.column;
- const spacing = entry[side];
- if (spacing === undefined || spacing === style) {
+ function checkSide(side, info, sizes) {
+ if (!info.size) {
return
}
- let reason = 'Cell should be ';
- if (style === 0) {
- if (size(cell) < sizes[column]) {
- return
- }
- reason += 'compact';
- } else {
- reason += 'padded';
- if (spacing > style) {
- if (size(cell) < sizes[column]) {
- return
+ const actual = info.size[side];
+ if (actual === undefined) {
+ return
+ }
+ const alignSpaces = sizes[info.column] - info.size.middle;
+ const min = expected === 'compact' ? 0 : 1;
+ let max = min;
+ if (info.align === 'center') {
+ max += Math.ceil(alignSpaces / 2);
+ } else if (info.align === 'right' ? side === 'left' : side === 'right') {
+ max += alignSpaces;
+ }
+ if (info.size.middle === 0) {
+ if (side === 'right') return
+ max = Math.max(max, sizes[info.column] + 2 * min);
+ }
+ if (actual < min || actual > max) {
+ const differenceMin = min - actual;
+ const differenceMinAbsolute = Math.abs(differenceMin);
+ const differenceMax = max - actual;
+ const differenceMaxAbsolute = Math.abs(differenceMax);
+ file.message(
+ 'Unexpected `' +
+ actual +
+ '` ' +
+ pluralize('space', actual) +
+ ' between cell ' +
+ (side === 'left' ? 'edge' : 'content') +
+ ' and ' +
+ (side === 'left' ? 'content' : 'edge') +
+ ', expected ' +
+ (min === max ? '' : 'between `' + min + '` (unaligned) and ') +
+ '`' +
+ max +
+ '` ' +
+ (min === max ? '' : '(aligned) ') +
+ pluralize('space', max) +
+ ', ' +
+ (differenceMin < 0 ? 'remove' : 'add') +
+ (differenceMin === differenceMax
+ ? ''
+ : ' between `' + differenceMaxAbsolute + '` and') +
+ ' `' +
+ differenceMinAbsolute +
+ '` ' +
+ pluralize('space', differenceMinAbsolute),
+ {
+ ancestors: info.ancestors,
+ cause,
+ place: side === 'left' ? info.size.leftPoint : info.size.rightPoint
}
- reason += ' with 1 space, not ' + spacing;
- }
+ );
}
- file.message(
- reason,
- side === 'start'
- ? pointStart(cell.children[0])
- : pointEnd(cell.children[cell.children.length - 1])
- );
}
- }
-);
-var remarkLintTableCellPadding$1 = remarkLintTableCellPadding;
-function size(node) {
- const head = pointStart(node.children[0]).offset;
- const tail = pointEnd(node.children[node.children.length - 1]).offset;
- return typeof head === 'number' && typeof tail === 'number' ? tail - head : 0
-}
-
-const convert$1 =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok$1
+ function inferTable(ancestors) {
+ const node = ancestors.at(-1);
+ ok$1(node.type === 'table');
+ const align = node.align || [];
+ const result = [];
+ let rowIndex = -1;
+ while (++rowIndex < node.children.length) {
+ const row = node.children[rowIndex];
+ let column = -1;
+ while (++column < row.children.length) {
+ const node = row.children[column];
+ result.push({
+ align: align[column],
+ ancestors: [...ancestors, row, node],
+ column,
+ size: inferSize(
+ pointStart(node),
+ pointEnd(node),
+ column === row.children.length - 1
+ )
+ });
+ }
+ if (rowIndex === 0) {
+ const alignRow = inferAlignRow(ancestors, align);
+ if (alignRow) result.push(...alignRow);
+ }
}
- if (typeof test === 'string') {
- return typeFactory$1(test)
+ return result
+ }
+ function inferAlignRow(ancestors, align) {
+ const node = ancestors.at(-1);
+ ok$1(node.type === 'table');
+ const headEnd = pointEnd(node.children[0]);
+ if (!headEnd || typeof headEnd.offset !== 'number') return
+ let index = headEnd.offset;
+ if (value.charCodeAt(index) === 13 ) index++;
+ if (value.charCodeAt(index) !== 10 ) return
+ index++;
+ const result = [];
+ const line = headEnd.line + 1;
+ let code = value.charCodeAt(index);
+ while (
+ code === 9 ||
+ code === 32 ||
+ code === 62
+ ) {
+ index++;
+ code = value.charCodeAt(index);
}
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory$1(test) : propsFactory$1(test)
+ if (
+ code !== 45 &&
+ code !== 58 &&
+ code !== 124
+ ) {
+ return
}
- if (typeof test === 'function') {
- return castFactory$1(test)
+ let lineEndOffset = value.indexOf('\n', index);
+ if (lineEndOffset === -1) lineEndOffset = value.length;
+ if (value.charCodeAt(lineEndOffset - 1) === 13 ) lineEndOffset--;
+ let column = 0;
+ let cellStart = index;
+ let cellEnd = value.indexOf('|', index + (code === 124 ? 1 : 0));
+ if (cellEnd === -1 || cellEnd > lineEndOffset) {
+ cellEnd = lineEndOffset;
+ }
+ while (cellStart !== cellEnd) {
+ let nextCellEnd = value.indexOf('|', cellEnd + 1);
+ if (nextCellEnd === -1 || nextCellEnd > lineEndOffset) {
+ nextCellEnd = lineEndOffset;
+ }
+ if (nextCellEnd === lineEndOffset) {
+ let maybeEnd = lineEndOffset;
+ let code = value.charCodeAt(maybeEnd - 1);
+ while (code === 9 || code === 32 ) {
+ maybeEnd--;
+ code = value.charCodeAt(maybeEnd - 1);
+ }
+ if (cellEnd + 1 === maybeEnd) {
+ cellEnd = lineEndOffset;
+ }
+ }
+ result.push({
+ align: align[column],
+ ancestors,
+ column,
+ size: inferSize(
+ {
+ line,
+ column: cellStart - index + 1,
+ offset: cellStart
+ },
+ {line, column: cellEnd - index + 1, offset: cellEnd},
+ cellEnd === lineEndOffset
+ )
+ });
+ cellStart = cellEnd;
+ cellEnd = nextCellEnd;
+ column++;
}
- throw new Error('Expected function, string, or object as test')
+ return result
}
- );
-function anyFactory$1(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert$1(tests[index]);
- }
- return castFactory$1(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
- }
- return false
- }
-}
-function propsFactory$1(check) {
- return castFactory$1(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory$1(check) {
- return castFactory$1(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory$1(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok$1() {
- return true
-}
-
-function color$2(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE$1 = true;
-const EXIT$1 = false;
-const SKIP$1 = 'skip';
-const visitParents$1 =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert$1(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$2(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
+ function inferSize(start, end, tailCell) {
+ if (
+ end &&
+ start &&
+ typeof end.offset === 'number' &&
+ typeof start.offset === 'number'
+ ) {
+ let leftIndex = start.offset;
+ let left;
+ let right;
+ if (value.charCodeAt(leftIndex) === 124 ) {
+ left = 0;
+ leftIndex++;
+ while (value.charCodeAt(leftIndex) === 32) {
+ left++;
+ leftIndex++;
+ }
}
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult$1(visitor(node, parents));
- if (result[0] === EXIT$1) {
- return result
- }
+ let rightIndex = end.offset;
+ if (tailCell) {
+ while (value.charCodeAt(rightIndex - 1) === 32) {
+ rightIndex--;
}
- if (node.children && result[0] !== SKIP$1) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT$1) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
+ if (
+ rightIndex > leftIndex &&
+ value.charCodeAt(rightIndex - 1) === 124
+ ) {
+ rightIndex--;
+ }
+ else {
+ rightIndex = end.offset;
+ }
+ }
+ const rightEdgeIndex = rightIndex;
+ if (value.charCodeAt(rightIndex) === 124 ) {
+ right = 0;
+ while (
+ rightIndex - 1 > leftIndex &&
+ value.charCodeAt(rightIndex - 1) === 32
+ ) {
+ right++;
+ rightIndex--;
+ }
+ }
+ return {
+ left,
+ leftPoint: {
+ line: start.line,
+ column: start.column + (leftIndex - start.offset),
+ offset: leftIndex
+ },
+ middle: rightIndex - leftIndex,
+ right,
+ rightPoint: {
+ line: end.line,
+ column: end.column - (end.offset - rightEdgeIndex),
+ offset: rightEdgeIndex
}
- return result
}
}
}
- );
-function toResult$1(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE$1, value]
}
- return [value]
-}
-
-const visit$1 =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents$1(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
- }
- }
- );
+);
+var remarkLintTableCellPadding$1 = remarkLintTableCellPadding;
/**
+ * remark-lint rule to warn when GFM table rows have no initial or
+ * final cell delimiter.
+ *
+ * ## What is this?
+ *
+ * This package checks that table rows have initial and final delimiters.
+ * Tables are a GFM feature enabled with [`remark-gfm`][github-remark-gfm].
+ *
* ## When should I use this?
*
- * You can use this package to check that tables have initial and final
- * delimiters.
- * Tables are a GFM feature enabled with
- * [`remark-gfm`](https://github.com/remarkjs/remark-gfm).
+ * You can use this package to check that tables are consistent.
*
* ## API
*
+ * ### `unified().use(remarkLintTablePipes)`
+ *
+ * Warn when GFM table rows have no initial or final cell delimiter.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
- * While tables don’t require initial or final delimiters (pipes before the
- * first and after the last cells in a row), it arguably does look weird.
+ * While tables don’t require initial or final delimiters (the pipes before the
+ * first and after the last cells in a row),
+ * it arguably does look weird without.
*
* ## Fix
*
- * [`remark-gfm`](https://github.com/remarkjs/remark-gfm)
- * formats all tables with initial and final delimiters.
+ * [`remark-stringify`][github-remark-stringify] with
+ * [`remark-gfm`][github-remark-gfm] formats all tables with initial and final
+ * delimiters.
+ *
+ * [api-remark-lint-table-pipes]: #unifieduseremarklinttablepipes
+ * [github-remark-gfm]: https://github.com/remarkjs/remark-gfm
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module table-pipes
- * @summary
- * remark-lint rule to warn when tables are missing initial and final
- * delimiters.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md", "gfm": true}
*
- * | A | B |
- * | ----- | ----- |
- * | Alpha | Bravo |
+ * Small table:
+ *
+ * | Planet | Mean anomaly (°) |
+ * | :- | -: |
+ * | Mercury | 174 796 |
*
* @example
* {"name": "not-ok.md", "label": "input", "gfm": true}
*
- * A | B
- * ----- | -----
- * Alpha | Bravo
- *
+ * Planet | Mean anomaly (°)
+ * :- | -:
+ * Mercury | 174 796
* @example
* {"name": "not-ok.md", "label": "output", "gfm": true}
*
- * 1:1: Missing initial pipe in table fence
- * 1:10: Missing final pipe in table fence
- * 3:1: Missing initial pipe in table fence
- * 3:14: Missing final pipe in table fence
+ * 1:1: Unexpected missing closing pipe in row, expected `|`
+ * 1:26: Unexpected missing opening pipe in row, expected `|`
+ * 2:1: Unexpected missing closing pipe in row, expected `|`
+ * 2:8: Unexpected missing opening pipe in row, expected `|`
+ * 3:1: Unexpected missing closing pipe in row, expected `|`
+ * 3:18: Unexpected missing opening pipe in row, expected `|`
+ *
+ * @example
+ * {"gfm": true, "label": "input", "name": "missing-cells.md"}
+ *
+ * Planet | Symbol | Satellites
+ * :- | - | -
+ * Mercury
+ * Venus | ♀
+ * Earth | ♁ | 1
+ * Mars | ♂ | 2 | 19 412
+ * @example
+ * {"gfm": true, "label": "output", "name": "missing-cells.md"}
+ *
+ * 1:1: Unexpected missing closing pipe in row, expected `|`
+ * 1:29: Unexpected missing opening pipe in row, expected `|`
+ * 2:1: Unexpected missing closing pipe in row, expected `|`
+ * 2:11: Unexpected missing opening pipe in row, expected `|`
+ * 3:1: Unexpected missing closing pipe in row, expected `|`
+ * 3:8: Unexpected missing opening pipe in row, expected `|`
+ * 4:1: Unexpected missing closing pipe in row, expected `|`
+ * 4:10: Unexpected missing opening pipe in row, expected `|`
+ * 5:1: Unexpected missing closing pipe in row, expected `|`
+ * 5:14: Unexpected missing opening pipe in row, expected `|`
+ * 6:1: Unexpected missing closing pipe in row, expected `|`
+ * 6:22: Unexpected missing opening pipe in row, expected `|`
+ *
+ * @example
+ * {"gfm": true, "label": "input", "name": "trailing-spaces.md"}
+ *
+ * ␠␠Planet␠␠
+ * ␠-:␠
+ *
+ * ␠␠| Planet |␠␠
+ * ␠| -: |␠
+ * @example
+ * {"gfm": true, "label": "output", "name": "trailing-spaces.md"}
+ *
+ * 1:3: Unexpected missing closing pipe in row, expected `|`
+ * 1:11: Unexpected missing opening pipe in row, expected `|`
+ * 2:2: Unexpected missing closing pipe in row, expected `|`
+ * 2:5: Unexpected missing opening pipe in row, expected `|`
+ *
+ * @example
+ * {"gfm": true, "label": "input", "name": "windows.md"}
+ *
+ * Mercury␍␊:-␍␊None
+ * @example
+ * {"gfm": true, "label": "output", "name": "windows.md"}
+ *
+ * 1:1: Unexpected missing closing pipe in row, expected `|`
+ * 1:8: Unexpected missing opening pipe in row, expected `|`
+ * 2:1: Unexpected missing closing pipe in row, expected `|`
+ * 2:3: Unexpected missing opening pipe in row, expected `|`
+ * 3:1: Unexpected missing closing pipe in row, expected `|`
+ * 3:5: Unexpected missing opening pipe in row, expected `|`
*/
-const reasonStart = 'Missing initial pipe in table fence';
-const reasonEnd = 'Missing final pipe in table fence';
-const remarkLintTablePipes = lintRule(
+const remarkLintTablePipes = lintRule$1(
{
origin: 'remark-lint:table-pipes',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-table-pipes#readme'
},
- (tree, file) => {
+ function (tree, file) {
const value = String(file);
- visit$1(tree, 'table', (node) => {
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'table') return
let index = -1;
while (++index < node.children.length) {
const row = node.children[index];
const start = pointStart(row);
const end = pointEnd(row);
- if (
- typeof start.offset === 'number' &&
- value.charCodeAt(start.offset) !== 124
- ) {
- file.message(reasonStart, start);
+ if (start && typeof start.offset === 'number') {
+ checkStart(start.offset, start, [...parents, node, row]);
}
- if (
- typeof end.offset === 'number' &&
- value.charCodeAt(end.offset - 1) !== 124
- ) {
- file.message(reasonEnd, end);
+ if (end && typeof end.offset === 'number') {
+ checkEnd(end.offset, end, [...parents, node, row]);
+ if (index === 0) {
+ let index = end.offset;
+ if (value.charCodeAt(index) === 13 ) index++;
+ if (value.charCodeAt(index) !== 10 ) continue
+ index++;
+ const lineStart = index;
+ let code = value.charCodeAt(index);
+ while (
+ code === 9 ||
+ code === 32 ||
+ code === 62
+ ) {
+ index++;
+ code = value.charCodeAt(index);
+ }
+ checkStart(
+ index,
+ {
+ line: end.line + 1,
+ column: index - lineStart + 1,
+ offset: index
+ },
+ [...parents, node]
+ );
+ index = value.indexOf('\n', index);
+ if (index === -1) index = value.length;
+ if (value.charCodeAt(index - 1) === 13 ) index--;
+ checkEnd(
+ index,
+ {
+ line: end.line + 1,
+ column: index - lineStart + 1,
+ offset: index
+ },
+ [...parents, node]
+ );
+ }
}
}
+ return SKIP
});
- }
-);
-var remarkLintTablePipes$1 = remarkLintTablePipes;
-
-const convert =
- (
- function (test) {
- if (test === undefined || test === null) {
- return ok
- }
- if (typeof test === 'string') {
- return typeFactory(test)
- }
- if (typeof test === 'object') {
- return Array.isArray(test) ? anyFactory(test) : propsFactory(test)
- }
- if (typeof test === 'function') {
- return castFactory(test)
+ function checkStart(index, place, ancestors) {
+ let code = value.charCodeAt(index);
+ while (code === 9 || code === 32 ) {
+ code = value.charCodeAt(++index);
+ }
+ if (code !== 124 ) {
+ file.message('Unexpected missing closing pipe in row, expected `|`', {
+ ancestors,
+ place
+ });
}
- throw new Error('Expected function, string, or object as test')
- }
- );
-function anyFactory(tests) {
- const checks = [];
- let index = -1;
- while (++index < tests.length) {
- checks[index] = convert(tests[index]);
- }
- return castFactory(any)
- function any(...parameters) {
- let index = -1;
- while (++index < checks.length) {
- if (checks[index].call(this, ...parameters)) return true
}
- return false
- }
-}
-function propsFactory(check) {
- return castFactory(all)
- function all(node) {
- let key;
- for (key in check) {
- if (node[key] !== check[key]) return false
- }
- return true
- }
-}
-function typeFactory(check) {
- return castFactory(type)
- function type(node) {
- return node && node.type === check
- }
-}
-function castFactory(check) {
- return assertion
- function assertion(node, ...parameters) {
- return Boolean(
- node &&
- typeof node === 'object' &&
- 'type' in node &&
- Boolean(check.call(this, node, ...parameters))
- )
- }
-}
-function ok() {
- return true
-}
-
-function color$1(d) {
- return '\u001B[33m' + d + '\u001B[39m'
-}
-
-const CONTINUE = true;
-const EXIT = false;
-const SKIP = 'skip';
-const visitParents =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- const is = convert(test);
- const step = reverse ? -1 : 1;
- factory(tree, undefined, [])();
- function factory(node, index, parents) {
- const value = node && typeof node === 'object' ? node : {};
- if (typeof value.type === 'string') {
- const name =
- typeof value.tagName === 'string'
- ? value.tagName
- :
- typeof value.name === 'string'
- ? value.name
- : undefined;
- Object.defineProperty(visit, 'name', {
- value:
- 'node (' + color$1(node.type + (name ? '<' + name + '>' : '')) + ')'
- });
- }
- return visit
- function visit() {
- let result = [];
- let subresult;
- let offset;
- let grandparents;
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult(visitor(node, parents));
- if (result[0] === EXIT) {
- return result
- }
- }
- if (node.children && result[0] !== SKIP) {
- offset = (reverse ? node.children.length : -1) + step;
- grandparents = parents.concat(node);
- while (offset > -1 && offset < node.children.length) {
- subresult = factory(node.children[offset], offset, grandparents)();
- if (subresult[0] === EXIT) {
- return subresult
- }
- offset =
- typeof subresult[1] === 'number' ? subresult[1] : offset + step;
- }
- }
- return result
- }
+ function checkEnd(index, place, ancestors) {
+ let code = value.charCodeAt(index - 1);
+ while (code === 9 || code === 32 ) {
+ index--;
+ code = value.charCodeAt(index - 1);
}
- }
- );
-function toResult(value) {
- if (Array.isArray(value)) {
- return value
- }
- if (typeof value === 'number') {
- return [CONTINUE, value]
- }
- return [value]
-}
-
-const visit =
- (
- function (tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor;
- visitor = test;
- test = null;
- }
- visitParents(tree, test, overload, reverse);
- function overload(node, parents) {
- const parent = parents[parents.length - 1];
- return visitor(
- node,
- parent ? parent.children.indexOf(node) : null,
- parent
- )
+ if (code !== 124 ) {
+ file.message('Unexpected missing opening pipe in row, expected `|`', {
+ ancestors,
+ place
+ });
}
}
- );
+ }
+);
+var remarkLintTablePipes$1 = remarkLintTablePipes;
/**
+ * remark-lint rule to warn when unordered list markers are inconsistent.
+ *
+ * ## What is this?
+ *
+ * This package checks unordered list markers.
+ *
* ## When should I use this?
*
- * You can use this package to check that unordered list markers (bullets)
- * are consistent.
+ * You can use this package to check unordered lists.
*
* ## API
*
- * The following options (default: `'consistent'`) are accepted:
+ * ### `unified().use(remarkLintUnorderedListMarkerStyle[, options])`
+ *
+ * Warn when unordered list markers are inconsistent.
+ *
+ * ###### Parameters
+ *
+ * * `options` ([`Options`][api-options], default: `'consistent'`)
+ * — preferred style or whether to detect the first style and warn for
+ * further differences
+ *
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
+ * ### `Options`
+ *
+ * Configuration (TypeScript type).
*
- * * `'*'`
- * — prefer asterisks
- * * `'+'`
- * — prefer plusses
- * * `'-'`
- * — prefer dashes
- * * `'consistent'`
- * — detect the first used style and warn when further markers differ
+ * ###### Type
+ *
+ * ```ts
+ * type Options = Style | 'consistent'
+ * ```
+ *
+ * ### `Style`
+ *
+ * Style (TypeScript type).
+ *
+ * ###### Type
+ *
+ * ```ts
+ * type Style = '*' | '+' | '-'
+ * ```
*
* ## Recommendation
*
@@ -26622,103 +23691,125 @@ const visit =
*
* ## Fix
*
- * [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
- * formats ordered lists with asterisks by default.
- * Pass
- * [`bullet: '+'` or `bullet: '-'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsbullet)
- * to always use plusses or dashes.
+ * [`remark-stringify`][github-remark-stringify] formats unordered lists with
+ * asterisks by default.
+ * Pass `bullet: '+'` or `bullet: '-'` to use a different marker.
+ *
+ * [api-options]: #options
+ * [api-style]: #style
+ * [api-remark-lint-unordered-list-marker-style]: #unifieduseremarklintunorderedlistmarkerstyle-options
+ * [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module unordered-list-marker-style
- * @summary
- * remark-lint rule to warn when unordered list markers are inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @example
* {"name": "ok.md"}
*
- * By default (`'consistent'`), if the file uses only one marker,
- * that’s OK.
+ * * Mercury
*
- * * Foo
- * * Bar
- * * Baz
+ * 1. Venus
*
- * Ordered lists are not affected.
- *
- * 1. Foo
- * 2. Bar
- * 3. Baz
+ * * Earth
*
* @example
* {"name": "ok.md", "config": "*"}
*
- * * Foo
+ * * Mercury
*
* @example
* {"name": "ok.md", "config": "-"}
*
- * - Foo
+ * - Mercury
*
* @example
* {"name": "ok.md", "config": "+"}
*
- * + Foo
+ * + Mercury
*
* @example
* {"name": "not-ok.md", "label": "input"}
*
- * * Foo
- * - Bar
- * + Baz
+ * * Mercury
+ *
+ * - Venus
*
+ * + Earth
* @example
* {"name": "not-ok.md", "label": "output"}
*
- * 2:1-2:6: Marker style should be `*`
- * 3:1-3:6: Marker style should be `*`
+ * 3:1: Unexpected unordered list marker `-`, expected `*`
+ * 5:1: Unexpected unordered list marker `+`, expected `*`
*
* @example
- * {"name": "not-ok.md", "label": "output", "config": "💩", "positionless": true}
+ * {"name": "not-ok.md", "label": "output", "config": "🌍", "positionless": true}
*
- * 1:1: Incorrect unordered list item marker style `💩`: use either `'-'`, `'*'`, or `'+'`
+ * 1:1: Unexpected value `🌍` for `options`, expected `'*'`, `'+'`, `'-'`, or `'consistent'`
*/
-const markers = new Set(['-', '*', '+']);
-const remarkLintUnorderedListMarkerStyle = lintRule(
+const remarkLintUnorderedListMarkerStyle = lintRule$1(
{
origin: 'remark-lint:unordered-list-marker-style',
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-unordered-list-marker-style#readme'
},
- (tree, file, option = 'consistent') => {
+ function (tree, file, options) {
const value = String(file);
- if (option !== 'consistent' && !markers.has(option)) {
+ let expected;
+ let cause;
+ if (options === null || options === undefined || options === 'consistent') ; else if (options === '*' || options === '+' || options === '-') {
+ expected = options;
+ } else {
file.fail(
- 'Incorrect unordered list item marker style `' +
- option +
- "`: use either `'-'`, `'*'`, or `'+'`"
+ 'Unexpected value `' +
+ options +
+ "` for `options`, expected `'*'`, `'+'`, `'-'`, or `'consistent'`"
);
}
- visit(tree, 'list', (node) => {
- if (node.ordered) return
- let index = -1;
- while (++index < node.children.length) {
- const child = node.children[index];
- if (!generated(child)) {
- const marker = (
- value
- .slice(
- pointStart(child).offset,
- pointStart(child.children[0]).offset
- )
- .replace(/\[[x ]?]\s*$/i, '')
- .replace(/\s/g, '')
+ visitParents(tree, function (node, parents) {
+ if (phrasing(node)) {
+ return SKIP
+ }
+ if (node.type !== 'listItem') return
+ const parent = parents.at(-1);
+ if (!parent || parent.type !== 'list' || parent.ordered) return
+ const place = pointStart(node);
+ if (!place || typeof place.offset !== 'number') return
+ const code = value.charCodeAt(place.offset);
+ const actual =
+ code === 42
+ ? '*'
+ : code === 43
+ ? '+'
+ : code === 45
+ ? '-'
+ :
+ undefined;
+ if (!actual) return
+ if (expected) {
+ if (actual !== expected) {
+ file.message(
+ 'Unexpected unordered list marker `' +
+ actual +
+ '`, expected `' +
+ expected +
+ '`',
+ {ancestors: [...parents, node], cause, place}
);
- if (option === 'consistent') {
- option = marker;
- } else if (marker !== option) {
- file.message('Marker style should be `' + option + '`', child);
- }
}
+ } else {
+ expected = actual;
+ cause = new VFileMessage(
+ 'Unordered list marker style `' +
+ expected +
+ "` first defined for `'consistent'` here",
+ {
+ ancestors: [...parents, node],
+ place,
+ ruleId: 'unordered-list-marker-style',
+ source: 'remark-lint'
+ }
+ );
}
});
}
@@ -26761,8 +23852,7 @@ const plugins = [
remarkLintFinalDefinition$1,
[remarkLintFirstHeadingLevel$1, 1],
[remarkLintHeadingStyle$1, "atx"],
- [remarkLintListItemIndent$1, "space"],
- remarkLintMaximumLineLength$1,
+ [remarkLintMaximumLineLength$1, 120],
remarkLintNoConsecutiveBlankLines$1,
remarkLintNoFileNameArticles$1,
remarkLintNoFileNameConsecutiveDashes$1,
@@ -26804,279 +23894,10 @@ const plugins = [
];
const settings = {
emphasis: "_",
- listItemIndent: "one",
tightDefinitions: true,
};
const remarkPresetLintNode = { plugins, settings };
-class VFileMessage extends Error {
- constructor(causeOrReason, optionsOrParentOrPlace, origin) {
- super();
- if (typeof optionsOrParentOrPlace === 'string') {
- origin = optionsOrParentOrPlace;
- optionsOrParentOrPlace = undefined;
- }
- let reason = '';
- let options = {};
- let legacyCause = false;
- if (optionsOrParentOrPlace) {
- if (
- 'line' in optionsOrParentOrPlace &&
- 'column' in optionsOrParentOrPlace
- ) {
- options = {place: optionsOrParentOrPlace};
- }
- else if (
- 'start' in optionsOrParentOrPlace &&
- 'end' in optionsOrParentOrPlace
- ) {
- options = {place: optionsOrParentOrPlace};
- }
- else if ('type' in optionsOrParentOrPlace) {
- options = {
- ancestors: [optionsOrParentOrPlace],
- place: optionsOrParentOrPlace.position
- };
- }
- else {
- options = {...optionsOrParentOrPlace};
- }
- }
- if (typeof causeOrReason === 'string') {
- reason = causeOrReason;
- }
- else if (!options.cause && causeOrReason) {
- legacyCause = true;
- reason = causeOrReason.message;
- options.cause = causeOrReason;
- }
- if (!options.ruleId && !options.source && typeof origin === 'string') {
- const index = origin.indexOf(':');
- if (index === -1) {
- options.ruleId = origin;
- } else {
- options.source = origin.slice(0, index);
- options.ruleId = origin.slice(index + 1);
- }
- }
- if (!options.place && options.ancestors && options.ancestors) {
- const parent = options.ancestors[options.ancestors.length - 1];
- if (parent) {
- options.place = parent.position;
- }
- }
- const start =
- options.place && 'start' in options.place
- ? options.place.start
- : options.place;
- this.ancestors = options.ancestors || undefined;
- this.cause = options.cause || undefined;
- this.column = start ? start.column : undefined;
- this.fatal = undefined;
- this.file;
- this.message = reason;
- this.line = start ? start.line : undefined;
- this.name = stringifyPosition$2(options.place) || '1:1';
- this.place = options.place || undefined;
- this.reason = this.message;
- this.ruleId = options.ruleId || undefined;
- this.source = options.source || undefined;
- this.stack =
- legacyCause && options.cause && typeof options.cause.stack === 'string'
- ? options.cause.stack
- : '';
- this.actual;
- this.expected;
- this.note;
- this.url;
- }
-}
-VFileMessage.prototype.file = '';
-VFileMessage.prototype.name = '';
-VFileMessage.prototype.reason = '';
-VFileMessage.prototype.message = '';
-VFileMessage.prototype.stack = '';
-VFileMessage.prototype.column = undefined;
-VFileMessage.prototype.line = undefined;
-VFileMessage.prototype.ancestors = undefined;
-VFileMessage.prototype.cause = undefined;
-VFileMessage.prototype.fatal = undefined;
-VFileMessage.prototype.place = undefined;
-VFileMessage.prototype.ruleId = undefined;
-VFileMessage.prototype.source = undefined;
-
-function isUrl(fileUrlOrPath) {
- return Boolean(
- fileUrlOrPath !== null &&
- typeof fileUrlOrPath === 'object' &&
- 'href' in fileUrlOrPath &&
- fileUrlOrPath.href &&
- 'protocol' in fileUrlOrPath &&
- fileUrlOrPath.protocol &&
- fileUrlOrPath.auth === undefined
- )
-}
-
-const order = ([
- 'history',
- 'path',
- 'basename',
- 'stem',
- 'extname',
- 'dirname'
-]);
-class VFile {
- constructor(value) {
- let options;
- if (!value) {
- options = {};
- } else if (isUrl(value)) {
- options = {path: value};
- } else if (typeof value === 'string' || isUint8Array$1(value)) {
- options = {value};
- } else {
- options = value;
- }
- this.cwd = process$1.cwd();
- this.data = {};
- this.history = [];
- this.messages = [];
- this.value;
- this.map;
- this.result;
- this.stored;
- let index = -1;
- while (++index < order.length) {
- const prop = order[index];
- if (
- prop in options &&
- options[prop] !== undefined &&
- options[prop] !== null
- ) {
- this[prop] = prop === 'history' ? [...options[prop]] : options[prop];
- }
- }
- let prop;
- for (prop in options) {
- if (!order.includes(prop)) {
- this[prop] = options[prop];
- }
- }
- }
- get basename() {
- return typeof this.path === 'string' ? path$1.basename(this.path) : undefined
- }
- set basename(basename) {
- assertNonEmpty(basename, 'basename');
- assertPart(basename, 'basename');
- this.path = path$1.join(this.dirname || '', basename);
- }
- get dirname() {
- return typeof this.path === 'string' ? path$1.dirname(this.path) : undefined
- }
- set dirname(dirname) {
- assertPath(this.basename, 'dirname');
- this.path = path$1.join(dirname || '', this.basename);
- }
- get extname() {
- return typeof this.path === 'string' ? path$1.extname(this.path) : undefined
- }
- set extname(extname) {
- assertPart(extname, 'extname');
- assertPath(this.dirname, 'extname');
- if (extname) {
- if (extname.codePointAt(0) !== 46 ) {
- throw new Error('`extname` must start with `.`')
- }
- if (extname.includes('.', 1)) {
- throw new Error('`extname` cannot contain multiple dots')
- }
- }
- this.path = path$1.join(this.dirname, this.stem + (extname || ''));
- }
- get path() {
- return this.history[this.history.length - 1]
- }
- set path(path) {
- if (isUrl(path)) {
- path = fileURLToPath(path);
- }
- assertNonEmpty(path, 'path');
- if (this.path !== path) {
- this.history.push(path);
- }
- }
- get stem() {
- return typeof this.path === 'string'
- ? path$1.basename(this.path, this.extname)
- : undefined
- }
- set stem(stem) {
- assertNonEmpty(stem, 'stem');
- assertPart(stem, 'stem');
- this.path = path$1.join(this.dirname || '', stem + (this.extname || ''));
- }
- fail(causeOrReason, optionsOrParentOrPlace, origin) {
- const message = this.message(causeOrReason, optionsOrParentOrPlace, origin);
- message.fatal = true;
- throw message
- }
- info(causeOrReason, optionsOrParentOrPlace, origin) {
- const message = this.message(causeOrReason, optionsOrParentOrPlace, origin);
- message.fatal = undefined;
- return message
- }
- message(causeOrReason, optionsOrParentOrPlace, origin) {
- const message = new VFileMessage(
- causeOrReason,
- optionsOrParentOrPlace,
- origin
- );
- if (this.path) {
- message.name = this.path + ':' + message.name;
- message.file = this.path;
- }
- message.fatal = false;
- this.messages.push(message);
- return message
- }
- toString(encoding) {
- if (this.value === undefined) {
- return ''
- }
- if (typeof this.value === 'string') {
- return this.value
- }
- const decoder = new TextDecoder(encoding || undefined);
- return decoder.decode(this.value)
- }
-}
-function assertPart(part, name) {
- if (part && part.includes(path$1.sep)) {
- throw new Error(
- '`' + name + '` cannot be a path: did not expect `' + path$1.sep + '`'
- )
- }
-}
-function assertNonEmpty(part, name) {
- if (!part) {
- throw new Error('`' + name + '` cannot be empty')
- }
-}
-function assertPath(path, name) {
- if (!path) {
- throw new Error('Setting `' + name + '` requires `path` to be set too')
- }
-}
-function isUint8Array$1(value) {
- return Boolean(
- value &&
- typeof value === 'object' &&
- 'byteLength' in value &&
- 'byteOffset' in value
- )
-}
-
function read(description, options, callback) {
const file = toVFile(description);
if (!callback && typeof options === 'function') {
@@ -27766,7 +24587,7 @@ function createAncestorsLines(state, ancestors) {
typeof value.name === 'string'
? value.name
: undefined;
- const position = stringifyPosition$2(node.position);
+ const position = stringifyPosition(node.position);
lines.push(
' at ' +
state.yellow +
@@ -27885,7 +24706,7 @@ function createMessageLine(state, message) {
}
const place = message.place || message.position;
const row = [
- stringifyPosition$2(place),
+ stringifyPosition(place),
(label === 'error' ? state.red : state.yellow) + label + state.defaultColor,
formatReason(state, reason),
message.ruleId || '',
diff --git a/tools/lint-md/package-lock.json b/tools/lint-md/package-lock.json
index eaaffa45487280..c2611fced9a7ef 100644
--- a/tools/lint-md/package-lock.json
+++ b/tools/lint-md/package-lock.json
@@ -9,7 +9,7 @@
"version": "1.0.0",
"dependencies": {
"remark-parse": "^11.0.0",
- "remark-preset-lint-node": "^5.0.0",
+ "remark-preset-lint-node": "^5.0.2",
"remark-stringify": "^11.0.0",
"to-vfile": "^8.0.0",
"unified": "^11.0.4",
@@ -18,21 +18,19 @@
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
- "rollup": "^4.14.2",
+ "rollup": "^4.14.3",
"rollup-plugin-cleanup": "^3.2.1"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@rollup/plugin-commonjs": {
"version": "25.0.7",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
- "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
@@ -55,9 +53,8 @@
},
"node_modules/@rollup/plugin-node-resolve": {
"version": "15.2.3",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
- "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
@@ -80,9 +77,8 @@
},
"node_modules/@rollup/pluginutils": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
- "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^2.0.2",
@@ -101,9 +97,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.2.tgz",
- "integrity": "sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",
+ "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==",
"cpu": [
"arm"
],
@@ -114,9 +110,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.2.tgz",
- "integrity": "sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz",
+ "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==",
"cpu": [
"arm64"
],
@@ -127,22 +123,21 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.2.tgz",
- "integrity": "sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==",
+ "version": "4.14.3",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.2.tgz",
- "integrity": "sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz",
+ "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==",
"cpu": [
"x64"
],
@@ -153,9 +148,22 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.2.tgz",
- "integrity": "sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz",
+ "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz",
+ "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==",
"cpu": [
"arm"
],
@@ -166,9 +174,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.2.tgz",
- "integrity": "sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz",
+ "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==",
"cpu": [
"arm64"
],
@@ -179,9 +187,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.2.tgz",
- "integrity": "sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz",
+ "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==",
"cpu": [
"arm64"
],
@@ -192,9 +200,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.2.tgz",
- "integrity": "sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz",
+ "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==",
"cpu": [
"ppc64"
],
@@ -205,9 +213,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.2.tgz",
- "integrity": "sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz",
+ "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==",
"cpu": [
"riscv64"
],
@@ -218,9 +226,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.2.tgz",
- "integrity": "sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz",
+ "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==",
"cpu": [
"s390x"
],
@@ -231,9 +239,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.2.tgz",
- "integrity": "sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz",
+ "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==",
"cpu": [
"x64"
],
@@ -244,9 +252,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.2.tgz",
- "integrity": "sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz",
+ "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==",
"cpu": [
"x64"
],
@@ -257,9 +265,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.2.tgz",
- "integrity": "sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz",
+ "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==",
"cpu": [
"arm64"
],
@@ -270,9 +278,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.2.tgz",
- "integrity": "sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz",
+ "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==",
"cpu": [
"ia32"
],
@@ -283,9 +291,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.2.tgz",
- "integrity": "sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz",
+ "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==",
"cpu": [
"x64"
],
@@ -297,71 +305,56 @@
},
"node_modules/@types/debug": {
"version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
"dependencies": {
"@types/ms": "*"
}
},
"node_modules/@types/estree": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ "license": "MIT"
},
"node_modules/@types/estree-jsx": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
+ "license": "MIT",
"dependencies": {
"@types/estree": "*"
}
},
"node_modules/@types/hast": {
- "version": "2.3.10",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
- "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
+ "version": "3.0.4",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2"
+ "@types/unist": "*"
}
},
- "node_modules/@types/hast/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
"node_modules/@types/mdast": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz",
- "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/@types/ms": {
"version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+ "license": "MIT"
},
"node_modules/@types/resolve": {
"version": "1.20.2",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
- "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/supports-color": {
"version": "8.1.3",
- "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz",
- "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg=="
+ "license": "MIT"
},
"node_modules/@types/unist": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
- "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ "license": "MIT"
},
"node_modules/ansi-regex": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -371,13 +364,11 @@
},
"node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ "license": "Python-2.0"
},
"node_modules/bail": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -385,24 +376,21 @@
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/builtin-modules": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -412,8 +400,7 @@
},
"node_modules/ccount": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -421,8 +408,31 @@
},
"node_modules/character-entities": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -430,19 +440,24 @@
},
"node_modules/co": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
- "integrity": "sha512-CQsjCRiNObI8AtTsNIBDRMQ4oMR83CzEswHYahClvul7gKk+lDQiOKv+5qh7LQWf5sh6jkZNispz/QlsZxyNgA=="
+ "license": "MIT"
+ },
+ "node_modules/collapse-white-space": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
"node_modules/commondir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/debug": {
"version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "license": "MIT",
"dependencies": {
"ms": "2.1.2"
},
@@ -457,8 +472,7 @@
},
"node_modules/decode-named-character-reference": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
+ "license": "MIT",
"dependencies": {
"character-entities": "^2.0.0"
},
@@ -469,25 +483,22 @@
},
"node_modules/deepmerge": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/dequal": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/devlop": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
"dependencies": {
"dequal": "^2.0.0"
},
@@ -496,28 +507,17 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "engines": {
- "node": ">=0.3.1"
- }
- },
"node_modules/eastasianwidth": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ "license": "MIT"
},
"node_modules/emoji-regex": {
"version": "10.3.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
- "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw=="
+ "license": "MIT"
},
"node_modules/escape-string-regexp": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -527,27 +527,22 @@
},
"node_modules/estree-walker": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/extend": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "license": "MIT"
},
"node_modules/fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/fsevents": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
- "hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -558,18 +553,16 @@
},
"node_modules/function-bind": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/glob": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -586,9 +579,8 @@
},
"node_modules/hasown": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -598,9 +590,8 @@
},
"node_modules/inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -608,14 +599,31 @@
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
"node_modules/is-buffer": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
"funding": [
{
"type": "github",
@@ -630,15 +638,15 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/is-builtin-module": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"builtin-modules": "^3.3.0"
},
@@ -651,9 +659,8 @@
},
"node_modules/is-core-module": {
"version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
},
@@ -661,16 +668,30 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/is-module": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-plain-obj": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -680,18 +701,16 @@
},
"node_modules/is-reference": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
- "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "*"
}
},
"node_modules/js-cleanup": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/js-cleanup/-/js-cleanup-1.2.0.tgz",
- "integrity": "sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"magic-string": "^0.25.7",
"perf-regexes": "^1.0.1",
@@ -703,17 +722,15 @@
},
"node_modules/js-cleanup/node_modules/magic-string": {
"version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sourcemap-codec": "^1.4.8"
}
},
"node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -721,18 +738,9 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/longest-streak": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -740,8 +748,7 @@
},
"node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -750,56 +757,54 @@
}
},
"node_modules/magic-string": {
- "version": "0.30.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
- "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==",
+ "version": "0.30.10",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
- },
- "engines": {
- "node": ">=12"
}
},
"node_modules/markdown-table": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
- "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/mdast-comment-marker": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.2.tgz",
- "integrity": "sha512-HED3ezseRVkBzZ0uK4q6RJMdufr/2p3VfVZstE3H1N9K8bwtspztWo6Xd7rEatuGNoCXaBna8oEqMwUn0Ve1bw==",
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-mdx-expression": "^1.1.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-mdx-expression": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-comment-marker/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "node_modules/mdast-util-directive": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2"
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-comment-marker/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
"node_modules/mdast-util-find-and-replace": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
- "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"escape-string-regexp": "^5.0.0",
@@ -813,8 +818,7 @@
},
"node_modules/mdast-util-from-markdown": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz",
- "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"@types/unist": "^3.0.0",
@@ -836,8 +840,7 @@
},
"node_modules/mdast-util-gfm": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
- "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+ "license": "MIT",
"dependencies": {
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-gfm-autolink-literal": "^2.0.0",
@@ -854,8 +857,7 @@
},
"node_modules/mdast-util-gfm-autolink-literal": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz",
- "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"ccount": "^2.0.0",
@@ -870,8 +872,7 @@
},
"node_modules/mdast-util-gfm-footnote": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
- "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.1.0",
@@ -886,8 +887,7 @@
},
"node_modules/mdast-util-gfm-strikethrough": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
- "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-from-markdown": "^2.0.0",
@@ -900,8 +900,7 @@
},
"node_modules/mdast-util-gfm-table": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
- "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
@@ -916,8 +915,7 @@
},
"node_modules/mdast-util-gfm-task-list-item": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
- "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
@@ -930,107 +928,109 @@
}
},
"node_modules/mdast-util-heading-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-2.0.1.tgz",
- "integrity": "sha512-0L5rthU4xKDVbw+UQ7D8Y8xOEsX4JXZvemWoEAsL+WAaeSH+TvVVwFnTb3G/OrjyP4VYQULoNWU+PdZfkmNu4A==",
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0"
+ "@types/mdast": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-heading-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "node_modules/mdast-util-mdx": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2"
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-heading-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
"node_modules/mdast-util-mdx-expression": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz",
- "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==",
+ "version": "2.0.0",
+ "license": "MIT",
"dependencies": {
"@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.1.2",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2"
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-remove-position": "^5.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-from-markdown": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
- "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "mdast-util-to-string": "^3.1.0",
- "micromark": "^3.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "uvu": "^0.5.0"
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-phrasing": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz",
- "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==",
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-markdown": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz",
- "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==",
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
"longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "unist-util-visit": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
"zwitch": "^2.0.0"
},
"funding": {
@@ -1038,22 +1038,19 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0"
+ "@types/mdast": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
- "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
+ "node_modules/micromark": {
+ "version": "4.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1064,30 +1061,29 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"@types/debug": "^4.0.0",
"debug": "^4.0.0",
"decode-named-character-reference": "^1.0.0",
- "micromark-core-commonmark": "^1.0.1",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-core-commonmark": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz",
- "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1098,110 +1094,154 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"decode-named-character-reference": "^1.0.0",
- "micromark-factory-destination": "^1.0.0",
- "micromark-factory-label": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-factory-title": "^1.0.0",
- "micromark-factory-whitespace": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-classify-character": "^1.0.0",
- "micromark-util-html-tag-name": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-destination": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz",
- "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-label": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz",
- "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-space": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
- "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.0.0",
+ "license": "MIT",
"dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-title": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz",
- "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-whitespace": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz",
- "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==",
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1212,17 +1252,16 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-character": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
- "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1233,15 +1272,14 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-chunked": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz",
- "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==",
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1252,14 +1290,16 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-symbol": "^1.0.0"
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-classify-character": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz",
- "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==",
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1270,16 +1310,16 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-combine-extensions": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz",
- "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==",
+ "node_modules/micromark-util-character": {
+ "version": "2.1.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1290,15 +1330,14 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz",
- "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==",
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1309,14 +1348,67 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-symbol": "^1.0.0"
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-decode-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz",
- "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==",
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.1",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1327,17 +1419,16 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-encode": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz",
- "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==",
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1347,12 +1438,11 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-html-tag-name": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz",
- "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==",
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1362,12 +1452,11 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-normalize-identifier": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
- "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1378,14 +1467,13 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-symbol": "^1.0.0"
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-resolve-all": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz",
- "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==",
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1396,14 +1484,13 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-types": "^1.0.0"
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-sanitize-uri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz",
- "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==",
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1414,16 +1501,15 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-subtokenize": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz",
- "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==",
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.0.1",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1434,17 +1520,16 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-symbol": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
- "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1454,12 +1539,11 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
- "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
- "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
+ "node_modules/micromark-util-types": {
+ "version": "2.0.0",
"funding": [
{
"type": "GitHub Sponsors",
@@ -1469,3985 +1553,680 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
- "node_modules/mdast-util-mdx-expression/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/minimatch": {
+ "version": "5.1.6",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "brace-expansion": "^2.0.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "license": "MIT"
},
- "node_modules/mdast-util-mdx-expression/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/once": {
+ "version": "1.4.0",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "wrappy": "1"
}
},
- "node_modules/mdast-util-mdx-expression/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/parse-entities": {
+ "version": "4.0.1",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "character-entities": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-markdown": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
- "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "dependencies": {
- "@types/mdast": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
- "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz",
- "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-gfm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
- "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
- "dependencies": {
- "micromark-extension-gfm-autolink-literal": "^2.0.0",
- "micromark-extension-gfm-footnote": "^2.0.0",
- "micromark-extension-gfm-strikethrough": "^2.0.0",
- "micromark-extension-gfm-table": "^2.0.0",
- "micromark-extension-gfm-tagfilter": "^2.0.0",
- "micromark-extension-gfm-task-list-item": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-autolink-literal": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz",
- "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-footnote": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz",
- "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-strikethrough": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz",
- "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz",
- "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-tagfilter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
- "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-task-list-item": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz",
- "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
- "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
- "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
- "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
- "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
- "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
- "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
- "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
- "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
- "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
- "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
- "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
- "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
- "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
- "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz",
- "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
- "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/perf-regexes": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz",
- "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==",
- "dev": true,
- "engines": {
- "node": ">=6.14"
- }
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/remark-gfm": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
- "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-gfm": "^3.0.0",
- "micromark-extension-gfm": "^3.0.0",
- "remark-parse": "^11.0.0",
- "remark-stringify": "^11.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.2.tgz",
- "integrity": "sha512-m9e/aPlh7tsvfJfj8tPxrQzD6oEdb9Foko+Ya/6OwUP9EoGMfehv1Qtv26W1DoH58Wn8rT8CD+KuprTWscMmIA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "remark-message-control": "^7.0.0",
- "unified": "^10.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-blockquote-indentation": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-3.1.2.tgz",
- "integrity": "sha512-5DOrFsZd5dXqA4p/VZvWSrqIWNFbBXjX7IV/FkVkxlNhNF/0FMf/4v8x1I2W3mzaZ7yDsWS/egpZnmligq1ckQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "pluralize": "^8.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-blockquote-indentation/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-blockquote-indentation/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-blockquote-indentation/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-character-style": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-4.1.2.tgz",
- "integrity": "sha512-5ITz+1cCuJ3Jv/Q7rKgDEucCOnIgjWDnSHPJA1tb4TI/D316h+ALbDhZIpP8gyfAm6sBAh3Pwz9XZJN2uJB5UQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-character-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-checkbox-character-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-checkbox-character-style/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-content-indent": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-4.1.2.tgz",
- "integrity": "sha512-8uaHAm4bSqB7XpnecLRObe00Lj9eoHiecV+44CfJeWyoo50cTPR/hIMfsMtDxsNt4LZP+6oCV9z+vACJqDv8Hg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile-location": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-content-indent/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-checkbox-content-indent/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-checkbox-content-indent/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-code-block-style": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-3.1.2.tgz",
- "integrity": "sha512-3wsWmzzdyEsB9sOzBOf46TSkwwVKXN2JpTEQb6feN0Tl6Vg75F7T9MHqMz7aqk/56bOXSxUzdpXDscGBhziLRA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-code-block-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-code-block-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-code-block-style/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-code-block-style/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-code-block-style/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-code-block-style/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-definition-spacing": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-3.1.2.tgz",
- "integrity": "sha512-l058jAKfZfCOmlbIzoTll+CrZm9Bh42ZVCHcODPSZC8Yx4terCKgIoks+RWJDEdUbEw0YQoYvPc59ZVmp3BIew==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-definition-spacing/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-definition-spacing/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-definition-spacing/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-definition-spacing/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-definition-spacing/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-definition-spacing/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-flag": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.2.tgz",
- "integrity": "sha512-yh4m3dlPmRsqM/BFhpqHYfrmBvFQ+D5dZZKDDYP2rf3YEoXlEVt8T8lWQueTTSxcq6yXAqL/XQL/iqqUHlLcHw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-flag/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-fenced-code-flag/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-fenced-code-flag/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-marker": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-3.1.2.tgz",
- "integrity": "sha512-6XNqjOuhT+0c7Q/22aCsMz61ne9g8HRpYF79EXQPdbzYa+PcfPXMiQKStONY3PfC8OE2/3WXI2zcs8w9x+8+VQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-marker/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-fenced-code-marker/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-fenced-code-marker/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-file-extension": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-2.1.2.tgz",
- "integrity": "sha512-Nq54F5R7F1gyj/IMW6SvkAbVNrH+p38WK3//KCoZLDUYFrH0oXgXXFGHi9CT/O0VEopW+bWJfTn8YAJRs0qI5Q==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-file-extension/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-definition": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-3.1.2.tgz",
- "integrity": "sha512-3O3JT6xqlrgq+UjhMPxshgMtwXn99w0BEO9JwbDls49N0XCu0n22Pq1n6X3tEVzskPLo3YYyVYfW2Z2C2rneKQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-definition/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-final-definition/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-final-definition/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-definition/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-definition/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-definition/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-newline": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-2.1.2.tgz",
- "integrity": "sha512-K0FdPGPyEB94PwNgopwVJFE8oRWi7IhY2ycXFVAMReI51el7EHB8F1gX14tB6p6zyGy6mUh69bCVU9mMTNeOUg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-final-newline/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-final-newline/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-final-newline/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-first-heading-level": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-first-heading-level/-/remark-lint-first-heading-level-3.1.2.tgz",
- "integrity": "sha512-uSgDMAKOolDcxfJwQU+iJK2Vbz2ZIzBAjQiN0f+9O/7XwrAH5IuVQH60w7chuxVrauVHmd1rbjmvzXVq8R30VQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-first-heading-level/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-first-heading-level/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-first-heading-level/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-first-heading-level/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-first-heading-level/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-first-heading-level/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-hard-break-spaces": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-3.1.2.tgz",
- "integrity": "sha512-HaW0xsl3TI7VFAqGWWcZtPqyz0NWu19KKjSO7OGFTUJU4S9YiRnhIxmSFM0ZLSsVAynE+dhzVKa8U7dOpWDcOg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-hard-break-spaces/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-hard-break-spaces/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-hard-break-spaces/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-heading-style": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-3.1.2.tgz",
- "integrity": "sha512-0RkcRPV/H2bPFgeInzBkK1cWUwtFTm83I+Db/Z5tDY02GzKOosHLvxtJyj/1391/opAH1LYbHtHWffir99IUgw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-heading-style": "^2.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-heading-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-heading-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-heading-style/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-heading-style/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-heading-style/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-heading-style/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-bullet-indent": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-4.1.2.tgz",
- "integrity": "sha512-WgU5nooqIEm6f35opcbHKBzWrdFJA3XcyTfB3nv/v0KX43/h6qFGmmMJ5kEiaFExuQp3dZSdatWuY0YZ9YRbUg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "pluralize": "^8.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-bullet-indent/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-list-item-bullet-indent/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-list-item-bullet-indent/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-bullet-indent/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-bullet-indent/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-bullet-indent/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-indent": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-3.1.2.tgz",
- "integrity": "sha512-tkrra1pxZVE4OVJGfN435u/v0ljruXU+dHzWiKDYeifquD4aWhJxvSApu7+FbE098D/4usVXgMxwFkNhrpZcSQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "pluralize": "^8.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-indent/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-list-item-indent/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-list-item-indent/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-indent/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-indent/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-list-item-indent/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-maximum-line-length": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-3.1.3.tgz",
- "integrity": "sha512-TA7IE+0c8agRm1k7JZr7ZZFiL44JMBAj1KlMxSTACBuebdPJe7IPaLIQga10bnz75jfWMzSiRURMFHo4lt3kdw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-maximum-line-length/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-maximum-line-length/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-maximum-line-length/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-blockquote-without-marker": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-5.1.2.tgz",
- "integrity": "sha512-QPbqsrt7EfpSWqTkZJ9tepabPIhBDlNqZkuxxMQYD0OQ2N+tHDUq3zE1JxI5ts1V9o/mWApgySocqGd3jlcKmQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile-location": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-blockquote-without-marker/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-blockquote-without-marker/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-consecutive-blank-lines": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-4.1.3.tgz",
- "integrity": "sha512-yU3jH6UMHvaxX3DPBen+7CoPiCcqJ4BeteyOKeKX+tKWCWKILpiz+TVToRbeLnWO4IvFNnSRFMSXmcWSDdbY4w==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "pluralize": "^8.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-3.1.2.tgz",
- "integrity": "sha512-vi0nXA7p+pjQOorZOkr9E+QDhG74JAdbzqglWPrWWNI3z2rUYWYHTNSyWJbwEXaIIcev1ZAw8SCAOis5MNm+pA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-file-name-articles": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-2.1.2.tgz",
- "integrity": "sha512-kM4vwBkne7f9euDKsuyxTtrsiafjH+KOwu8ZmuSVWh5U+u0EMcPyN5fxfaQIW+5FkrJA1jwnRu7ciXJBJt74Og==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-file-name-articles/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-file-name-articles/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-file-name-articles/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-file-name-consecutive-dashes": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-2.1.2.tgz",
- "integrity": "sha512-gw06jaaFwBR3s+3E2kJlv+E7rAzS7Nj+MFU7TViwbsYnR7PA96htLVDCjClyNUE7JHUNcv93HdLm8ykg8kRyNA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-file-name-outer-dashes": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-2.1.2.tgz",
- "integrity": "sha512-VrbHg25Oo9k/bNbS7ye1X7F6ER4uZSubO+t5DHJ4WZ6iVbNtBar/JwzVelY1YxUAutv42OvHfuveh4vKlcNgVA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-content-indent": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-4.1.2.tgz",
- "integrity": "sha512-TTxFsm1f4ZHFxZQCuz7j0QK4RvP6oArTiwazKLr16yaZe1608ypogMek4A30j2xX8WuO9+2uBzLXCY5OBo5x5Q==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-heading-style": "^2.0.0",
- "pluralize": "^8.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-content-indent/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-heading-content-indent/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-heading-content-indent/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-indent": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-4.1.2.tgz",
- "integrity": "sha512-XFoSebfsYV6EFYRCYkCzSw6xxgltN5l3aPH+UfCk/0geMnl3DrCQjbQt9qhxQzBSBa4gA91CGs2DRI5Xxbwzig==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "pluralize": "^8.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-indent/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-heading-indent/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-heading-indent/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-inline-padding": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz",
- "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
- "dependencies": {
- "@types/mdast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-inline-padding/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-literal-urls": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-3.1.2.tgz",
- "integrity": "sha512-4tV9JGLKxAMFSuWDMOqLozkFJ3HyRvhzgrPrxASoziaml23m7UXAozk5dkIrFny1cN2oG988Z8tORxX2FL1Ilw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
- "dependencies": {
- "@types/mdast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-3.1.2.tgz",
- "integrity": "sha512-9rJSsrwdzwKmtuloBjJobLzjGL7Lgtk3+vMNUyuH9z/nBfkUCN3qxn3Nt9AxL+wwSAsHV6e74W+W2S1ohBLt6A==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shell-dollars": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.2.tgz",
- "integrity": "sha512-np2MDEhXHviXhbQFjnC1QYv5/fxCV1cIHfGMoJpqiW7Zcu/UGCOo5TE3XswZH4ukHZJ65c3X2A6qfLDW+ur3CQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shell-dollars/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-shell-dollars/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-shell-dollars/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shell-dollars/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shell-dollars/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shell-dollars/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-image": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-3.1.2.tgz",
- "integrity": "sha512-NX4XJFPyDeJJ77pmETxRj4oM/zayf7Lmn/O87HgExBkQIPz2NYbDeKD8QEyliLaV/oKA2rQufpzuFw55xa1Tww==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-image/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-image/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-link": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-3.1.2.tgz",
- "integrity": "sha512-/9iPN7FLKaaIzw4tLWKu7Rx0wAP7E2EuzIeentQlkY0rO/mMHipmT3IlgiebsAInKagzTY6TNFoG1rq2VnaCcA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-link/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-link/node_modules/@types/unist": {
+ "node_modules/parse-entities/node_modules/@types/unist": {
"version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-no-table-indentation": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-4.1.2.tgz",
- "integrity": "sha512-5lkO+Yrtni/CDMZi7mlwbB2zzRQLH94DesboXg51aO2UfZlSn5dZNhmN5wkyCU2AiApUhlFNbxfKMHOWFPLdog==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile-location": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
+ "license": "MIT"
},
- "node_modules/remark-lint-no-table-indentation/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-table-indentation/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/remark-lint-no-table-indentation/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/perf-regexes": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.14"
}
},
- "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/quotation": {
+ "version": "2.0.3",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/remark-lint-no-tabs": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-3.1.2.tgz",
- "integrity": "sha512-PQQmRpGHRW9tMnAXtlQbMke8byIJu9hlotCH6pJZPO4FodpXvD4JW5EMM3BmO0JQDZsQWrx3qfqxCEMxrj8Qbg==",
+ "node_modules/remark-gfm": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "vfile-location": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-tabs/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-tabs/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-tabs/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint": {
+ "version": "10.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "remark-message-control": "^8.0.0",
+ "unified": "^11.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-trailing-spaces": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-trailing-spaces/-/remark-lint-no-trailing-spaces-2.0.1.tgz",
- "integrity": "sha512-cj8t+nvtO6eAY2lJC7o5du8VeOCK13XiDUHL4U6k5aw6ZLr3EYWbQ/rNc6cr60eHkh5Ldm09KiZjV3CWpxqJ0g==",
- "dependencies": {
- "unified-lint-rule": "^1.0.2"
- }
- },
- "node_modules/remark-lint-no-trailing-spaces/node_modules/unified-lint-rule": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz",
- "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==",
+ "node_modules/remark-lint-blockquote-indentation": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "wrapped": "^1.0.1"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-undefined-references": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-4.2.1.tgz",
- "integrity": "sha512-HdNg5b2KiuNplcuVvRtsrUiROw557kAG1CiZYB7jQrrVWFgd86lKTa3bDiywe+87dGrGmHd3qQ28eZYTuHz2Nw==",
+ "node_modules/remark-lint-checkbox-character-style": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile-location": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-undefined-references/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-undefined-references/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-undefined-references/node_modules/micromark-util-normalize-identifier": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
- "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/remark-lint-no-undefined-references/node_modules/micromark-util-symbol": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
- "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/remark-lint-no-undefined-references/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-checkbox-content-indent": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-code-block-style": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-definition-spacing": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-fenced-code-flag": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "quotation": "^2.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-unused-definitions": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-3.1.2.tgz",
- "integrity": "sha512-bOcaJAnjKxT3kASFquUA3fO9xem9wZhVqt8TbqjA84+G4n40qjaLXDs/4vq73aMsSde73K0f3j1u0pMe7et8yQ==",
+ "node_modules/remark-lint-fenced-code-marker": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-unused-definitions/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-no-unused-definitions/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-no-unused-definitions/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-file-extension": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "quotation": "^2.0.0",
+ "unified-lint-rule": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-final-definition": {
+ "version": "4.0.1",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-mdx": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-final-newline": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "vfile-location": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-first-heading-level": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-mdx": "^3.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-ordered-list-marker-style": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-3.1.2.tgz",
- "integrity": "sha512-62iVE/YQsA0Azaqt8yAJWPplWLS47kDLjXeC2PlRIAzCqbNt9qH3HId8vZ15QTSrp8rHmJwrCMdcqV6AZUi7gQ==",
+ "node_modules/remark-lint-hard-break-spaces": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-ordered-list-marker-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-ordered-list-marker-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-ordered-list-marker-style/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-heading-style": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-heading-style": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-list-item-bullet-indent": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-list-item-indent": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-maximum-line-length": {
+ "version": "4.0.1",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-mdx": "^3.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-prohibited-strings": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/remark-lint-prohibited-strings/-/remark-lint-prohibited-strings-3.1.0.tgz",
- "integrity": "sha512-zwfDDdYl7ye0gEHcwhdkv1ZGXj1ibw4gnLLZkkvySnDdTz2tshY3fOJLY5NikbVseaIRVGOr5qa+8J9WNQT/fA==",
- "dependencies": {
- "escape-string-regexp": "^5.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.1",
- "unist-util-visit": "^4.0.0",
- "vfile-location": "^4.0.1"
- }
- },
- "node_modules/remark-lint-prohibited-strings/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-prohibited-strings/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-no-blockquote-without-marker": {
+ "version": "6.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-directive": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-location": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-prohibited-strings/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-no-consecutive-blank-lines": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-directive": "^3.0.0",
+ "mdast-util-mdx": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-prohibited-strings/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-no-duplicate-definitions": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-rule-style": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-3.1.2.tgz",
- "integrity": "sha512-0CsX2XcX9pIhAP5N7Y8mhYXp3/Ld+NvxXY1p0LHAq0NZu17UsZLuegvx/s25uFbQs08DcmSqyKnepU9qGGqmTQ==",
+ "node_modules/remark-lint-no-file-name-articles": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-rule-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-rule-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-rule-style/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "node_modules/remark-lint-no-file-name-consecutive-dashes": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-rule-style/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-no-file-name-outer-dashes": {
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-rule-style/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-no-heading-content-indent": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-rule-style/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-no-heading-indent": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-strong-marker": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-3.1.2.tgz",
- "integrity": "sha512-U/g4wngmiI0Q6WBRQG6pZxnDS33Wt/0QYA3+KNFBDykoi1vXsDEorIqy3dEag9z6XHwcMvFDsff6VRUhaOJWQg==",
+ "node_modules/remark-lint-no-literal-urls": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-character": "^2.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-strong-marker/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-strong-marker/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-strong-marker/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-no-multiple-toplevel-headings": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-mdx": "^3.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-strong-marker/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-no-shell-dollars": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "collapse-white-space": "^2.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-strong-marker/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-no-shortcut-reference-image": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-strong-marker/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-no-shortcut-reference-link": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-cell-padding": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-4.1.3.tgz",
- "integrity": "sha512-N9xtnS6MG/H3srAMjqqaF26A7socr87pIgt64dr5rxoSbDRWRPChGQ8y7wKyV8VeyRNF37e3E5KB3bQVqjSYaQ==",
+ "node_modules/remark-lint-no-table-indentation": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-location": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-cell-padding/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-table-cell-padding/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-table-cell-padding/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-no-tabs": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "vfile-location": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-no-trailing-spaces": {
+ "version": "2.0.1",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "unified-lint-rule": "^1.0.2"
+ }
+ },
+ "node_modules/remark-lint-no-trailing-spaces/node_modules/unified-lint-rule": {
+ "version": "1.0.6",
+ "license": "MIT",
+ "dependencies": {
+ "wrapped": "^1.0.1"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-no-undefined-references": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "collapse-white-space": "^2.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-location": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-no-unused-definitions": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-pipes": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-4.1.2.tgz",
- "integrity": "sha512-Ex2cJDXA0hdD9CC5Nu0p3K5LP+AhzPvk4sIOSbevCTSRyCS/SkNk4CQ6pwWBxuPVuHQUkqXkT8lgu8wwr/9A3A==",
+ "node_modules/remark-lint-ordered-list-marker-style": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "micromark-util-character": "^2.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-pipes/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "node_modules/remark-lint-prohibited-strings": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2"
+ "escape-string-regexp": "^5.0.0",
+ "unified-lint-rule": "^2.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile-location": "^5.0.1"
}
},
- "node_modules/remark-lint-table-pipes/node_modules/@types/unist": {
+ "node_modules/remark-lint-prohibited-strings/node_modules/@types/unist": {
"version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+ "license": "MIT"
},
- "node_modules/remark-lint-table-pipes/node_modules/unified": {
+ "node_modules/remark-lint-prohibited-strings/node_modules/unified": {
"version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"bail": "^2.0.0",
@@ -5462,204 +2241,147 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-pipes/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-table-pipes/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-prohibited-strings/node_modules/unified-lint-rule": {
+ "version": "2.1.2",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "trough": "^2.0.0",
+ "unified": "^10.0.0",
+ "vfile": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-table-pipes/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-prohibited-strings/node_modules/unist-util-stringify-position": {
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/unist": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-unordered-list-marker-style": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-3.1.2.tgz",
- "integrity": "sha512-JFiyB4ZprJGGndCaFB8FssXd48m4Kh+CUqzNgu3lBLEiW8dEAGRlD9M2AzyyA+Q29WJP/FntDCbP22DeON91UA==",
+ "node_modules/remark-lint-prohibited-strings/node_modules/vfile": {
+ "version": "5.3.7",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-unordered-list-marker-style/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-unordered-list-marker-style/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint-unordered-list-marker-style/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-prohibited-strings/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "unist-util-stringify-position": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/remark-lint-rule-style": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/remark-lint-strong-marker": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "@types/mdast": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/remark-lint-table-cell-padding": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "pluralize": "^8.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-lint/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-lint-table-pipes": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-message-control": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.1.tgz",
- "integrity": "sha512-xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==",
+ "node_modules/remark-lint-unordered-list-marker-style": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-comment-marker": "^2.0.0",
- "unified": "^10.0.0",
- "unified-message-control": "^4.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-message-control/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-message-control/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-message-control/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "node_modules/remark-message-control": {
+ "version": "8.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/mdast": "^4.0.0",
+ "mdast-comment-marker": "^3.0.0",
+ "unified-message-control": "^5.0.0",
+ "vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
@@ -5668,8 +2390,7 @@
},
"node_modules/remark-parse": {
"version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-from-markdown": "^2.0.0",
@@ -5682,103 +2403,68 @@
}
},
"node_modules/remark-preset-lint-node": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-5.0.0.tgz",
- "integrity": "sha512-E8q3jgNVuhm738oQV7dLNEukO1JVIgYuNoNdn4hliVYdrjJY3zJdsntJbUzZqMmBopcMAy3HwOwwHWz7C0Qsvw==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-5.0.2.tgz",
+ "integrity": "sha512-yuPSpd9hDqX8ZqCMem+EX2CJvuu7zzjoZRL65NGkJeg4wrxiv7ztrRZ8WgQ0lKV0JVG6h541QHG1gtzd6E3Eig==",
"dependencies": {
"js-yaml": "^4.1.0",
"remark-gfm": "^4.0.0",
- "remark-lint-blockquote-indentation": "^3.1.2",
- "remark-lint-checkbox-character-style": "^4.1.2",
- "remark-lint-checkbox-content-indent": "^4.1.2",
- "remark-lint-code-block-style": "^3.1.2",
- "remark-lint-definition-spacing": "^3.1.2",
- "remark-lint-fenced-code-flag": "^3.1.2",
- "remark-lint-fenced-code-marker": "^3.1.2",
- "remark-lint-file-extension": "^2.1.2",
- "remark-lint-final-definition": "^3.1.2",
- "remark-lint-first-heading-level": "^3.1.2",
- "remark-lint-heading-style": "^3.1.2",
- "remark-lint-list-item-indent": "^3.1.2",
- "remark-lint-maximum-line-length": "^3.1.3",
- "remark-lint-no-consecutive-blank-lines": "^4.1.3",
- "remark-lint-no-file-name-articles": "^2.1.2",
- "remark-lint-no-file-name-consecutive-dashes": "^2.1.2",
- "remark-lint-no-file-name-outer-dashes": "^2.1.2",
- "remark-lint-no-heading-indent": "^4.1.2",
- "remark-lint-no-multiple-toplevel-headings": "^3.1.2",
- "remark-lint-no-shell-dollars": "^3.1.2",
- "remark-lint-no-table-indentation": "^4.1.2",
- "remark-lint-no-tabs": "^3.1.2",
+ "remark-lint-blockquote-indentation": "^4.0.0",
+ "remark-lint-checkbox-character-style": "^5.0.0",
+ "remark-lint-checkbox-content-indent": "^5.0.0",
+ "remark-lint-code-block-style": "^4.0.0",
+ "remark-lint-definition-spacing": "^4.0.0",
+ "remark-lint-fenced-code-flag": "^4.0.0",
+ "remark-lint-fenced-code-marker": "^4.0.0",
+ "remark-lint-file-extension": "^3.0.0",
+ "remark-lint-final-definition": "^4.0.1",
+ "remark-lint-first-heading-level": "^4.0.0",
+ "remark-lint-heading-style": "^4.0.0",
+ "remark-lint-maximum-line-length": "^4.0.1",
+ "remark-lint-no-consecutive-blank-lines": "^5.0.0",
+ "remark-lint-no-file-name-articles": "^3.0.0",
+ "remark-lint-no-file-name-consecutive-dashes": "^3.0.0",
+ "remark-lint-no-file-name-outer-dashes": "^3.0.0",
+ "remark-lint-no-heading-indent": "^5.0.0",
+ "remark-lint-no-multiple-toplevel-headings": "^4.0.0",
+ "remark-lint-no-shell-dollars": "^4.0.0",
+ "remark-lint-no-table-indentation": "^5.0.0",
+ "remark-lint-no-tabs": "^4.0.0",
"remark-lint-no-trailing-spaces": "^2.0.1",
- "remark-lint-prohibited-strings": "^3.1.0",
- "remark-lint-rule-style": "^3.1.2",
- "remark-lint-strong-marker": "^3.1.2",
- "remark-lint-table-cell-padding": "^4.1.3",
- "remark-lint-table-pipes": "^4.1.2",
- "remark-lint-unordered-list-marker-style": "^3.1.2",
- "remark-preset-lint-recommended": "^6.1.3",
+ "remark-lint-prohibited-strings": "^4.0.0",
+ "remark-lint-rule-style": "^4.0.0",
+ "remark-lint-strong-marker": "^4.0.0",
+ "remark-lint-table-cell-padding": "^5.0.0",
+ "remark-lint-table-pipes": "^5.0.0",
+ "remark-lint-unordered-list-marker-style": "^4.0.0",
+ "remark-preset-lint-recommended": "^7.0.0",
"semver": "^7.5.4",
- "unified-lint-rule": "^2.1.2",
+ "unified-lint-rule": "^3.0.0",
"unist-util-visit": "^5.0.0"
},
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/remark-preset-lint-recommended": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-6.1.3.tgz",
- "integrity": "sha512-DGjbeP2TsFmQeJflUiIvJWAOs1PxJt7SG3WQyMxOppkRr/up+mxWVkuv+6AUuaR0EsuaaFGz7WmZM5TrSSFWJw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "remark-lint": "^9.0.0",
- "remark-lint-final-newline": "^2.0.0",
- "remark-lint-hard-break-spaces": "^3.0.0",
- "remark-lint-list-item-bullet-indent": "^4.0.0",
- "remark-lint-list-item-indent": "^3.0.0",
- "remark-lint-no-blockquote-without-marker": "^5.0.0",
- "remark-lint-no-duplicate-definitions": "^3.0.0",
- "remark-lint-no-heading-content-indent": "^4.0.0",
- "remark-lint-no-inline-padding": "^4.0.0",
- "remark-lint-no-literal-urls": "^3.0.0",
- "remark-lint-no-shortcut-reference-image": "^3.0.0",
- "remark-lint-no-shortcut-reference-link": "^3.0.0",
- "remark-lint-no-undefined-references": "^4.0.0",
- "remark-lint-no-unused-definitions": "^3.0.0",
- "remark-lint-ordered-list-marker-style": "^3.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-preset-lint-recommended/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-preset-lint-recommended/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/remark-preset-lint-recommended/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/remark-preset-lint-recommended": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "remark-lint": "^10.0.0",
+ "remark-lint-final-newline": "^3.0.0",
+ "remark-lint-hard-break-spaces": "^4.0.0",
+ "remark-lint-list-item-bullet-indent": "^5.0.0",
+ "remark-lint-list-item-indent": "^4.0.0",
+ "remark-lint-no-blockquote-without-marker": "^6.0.0",
+ "remark-lint-no-duplicate-definitions": "^4.0.0",
+ "remark-lint-no-heading-content-indent": "^5.0.0",
+ "remark-lint-no-literal-urls": "^4.0.0",
+ "remark-lint-no-shortcut-reference-image": "^4.0.0",
+ "remark-lint-no-shortcut-reference-link": "^4.0.0",
+ "remark-lint-no-undefined-references": "^5.0.0",
+ "remark-lint-no-unused-definitions": "^4.0.0",
+ "remark-lint-ordered-list-marker-style": "^4.0.0",
+ "unified": "^11.0.0"
},
"funding": {
"type": "opencollective",
@@ -5787,8 +2473,7 @@
},
"node_modules/remark-stringify": {
"version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
- "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-to-markdown": "^2.0.0",
@@ -5801,9 +2486,8 @@
},
"node_modules/resolve": {
"version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -5817,9 +2501,9 @@
}
},
"node_modules/rollup": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.2.tgz",
- "integrity": "sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==",
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz",
+ "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==",
"dev": true,
"dependencies": {
"@types/estree": "1.0.5"
@@ -5832,29 +2516,29 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.14.2",
- "@rollup/rollup-android-arm64": "4.14.2",
- "@rollup/rollup-darwin-arm64": "4.14.2",
- "@rollup/rollup-darwin-x64": "4.14.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.14.2",
- "@rollup/rollup-linux-arm64-gnu": "4.14.2",
- "@rollup/rollup-linux-arm64-musl": "4.14.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.14.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.14.2",
- "@rollup/rollup-linux-s390x-gnu": "4.14.2",
- "@rollup/rollup-linux-x64-gnu": "4.14.2",
- "@rollup/rollup-linux-x64-musl": "4.14.2",
- "@rollup/rollup-win32-arm64-msvc": "4.14.2",
- "@rollup/rollup-win32-ia32-msvc": "4.14.2",
- "@rollup/rollup-win32-x64-msvc": "4.14.2",
+ "@rollup/rollup-android-arm-eabi": "4.14.3",
+ "@rollup/rollup-android-arm64": "4.14.3",
+ "@rollup/rollup-darwin-arm64": "4.14.3",
+ "@rollup/rollup-darwin-x64": "4.14.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.14.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.14.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.14.3",
+ "@rollup/rollup-linux-arm64-musl": "4.14.3",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.14.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.14.3",
+ "@rollup/rollup-linux-x64-gnu": "4.14.3",
+ "@rollup/rollup-linux-x64-musl": "4.14.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.14.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.14.3",
+ "@rollup/rollup-win32-x64-msvc": "4.14.3",
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-cleanup": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz",
- "integrity": "sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"js-cleanup": "^1.2.0",
"rollup-pluginutils": "^2.8.2"
@@ -5868,34 +2552,20 @@
},
"node_modules/rollup-pluginutils": {
"version": "2.8.2",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
- "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"estree-walker": "^0.6.1"
}
},
"node_modules/rollup-pluginutils/node_modules/estree-walker": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
- "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
- "dev": true
- },
- "node_modules/sade": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
- "dependencies": {
- "mri": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- }
+ "dev": true,
+ "license": "MIT"
},
"node_modules/semver": {
"version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -5908,29 +2578,32 @@
},
"node_modules/skip-regex": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz",
- "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4.2"
}
},
"node_modules/sliced": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA=="
+ "license": "MIT"
},
"node_modules/sourcemap-codec": {
"version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "deprecated": "Please use @jridgewell/sourcemap-codec instead",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
"node_modules/string-width": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz",
- "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==",
+ "license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^10.2.1",
@@ -5943,10 +2616,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/strip-ansi": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -5959,8 +2643,7 @@
},
"node_modules/supports-color": {
"version": "9.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz",
- "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -5970,9 +2653,8 @@
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -5982,8 +2664,7 @@
},
"node_modules/to-vfile": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-8.0.0.tgz",
- "integrity": "sha512-IcmH1xB5576MJc9qcfEC/m/nQCFt3fzMHz45sSlgJyTWjRbKW1HAkJpuf3DgE57YzIlZcwcBZA5ENQbBo4aLkg==",
+ "license": "MIT",
"dependencies": {
"vfile": "^6.0.0"
},
@@ -5992,37 +2673,9 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/to-vfile/node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/to-vfile/node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/trough": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -6030,8 +2683,7 @@
},
"node_modules/unified": {
"version": "11.0.4",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz",
- "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"bail": "^2.0.0",
@@ -6047,37 +2699,13 @@
}
},
"node_modules/unified-lint-rule": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.2.tgz",
- "integrity": "sha512-JWudPtRN7TLFHVLEVZ+Rm8FUb6kCAtHxEXFgBGDxRSdNMnGyTU5zyYvduHSF/liExlFB3vdFvsAHnNVE/UjAwA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "trough": "^2.0.0",
- "unified": "^10.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-lint-rule/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/unified-lint-rule/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "version": "3.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
+ "@types/unist": "^3.0.0",
"trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
@@ -6085,73 +2713,16 @@
}
},
"node_modules/unified-message-control": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz",
- "integrity": "sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit": "^3.0.0",
- "vfile": "^5.0.0",
- "vfile-location": "^4.0.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-message-control/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/unified-message-control/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-message-control/node_modules/unist-util-visit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
- "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-message-control/node_modules/unist-util-visit-parents": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
- "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified/node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
+ "devlop": "^1.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
"vfile-message": "^4.0.0"
},
"funding": {
@@ -6159,32 +2730,20 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/unified/node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
+ "@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/unist-util-generated": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
- "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
},
@@ -6193,27 +2752,21 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/unist-util-position": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz",
- "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==",
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/unist-util-position/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
"node_modules/unist-util-stringify-position": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
},
@@ -6224,8 +2777,7 @@
},
"node_modules/unist-util-visit": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"unist-util-is": "^6.0.0",
@@ -6238,8 +2790,7 @@
},
"node_modules/unist-util-visit-parents": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"unist-util-is": "^6.0.0"
@@ -6249,32 +2800,13 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/uvu": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
- "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
- "dependencies": {
- "dequal": "^2.0.0",
- "diff": "^5.0.0",
- "kleur": "^4.0.3",
- "sade": "^1.7.3"
- },
- "bin": {
- "uvu": "bin.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
+ "version": "6.0.1",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
@@ -6282,47 +2814,23 @@
}
},
"node_modules/vfile-location": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz",
- "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==",
+ "version": "5.0.2",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "vfile": "^5.0.0"
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/vfile-location/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
"node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/vfile-message/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "version": "4.0.2",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
},
"funding": {
"type": "opencollective",
@@ -6331,8 +2839,7 @@
},
"node_modules/vfile-reporter": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.1.tgz",
- "integrity": "sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==",
+ "license": "MIT",
"dependencies": {
"@types/supports-color": "^8.0.0",
"string-width": "^6.0.0",
@@ -6348,37 +2855,9 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/vfile-reporter/node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-reporter/node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/vfile-sort": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz",
- "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==",
+ "license": "MIT",
"dependencies": {
"vfile": "^6.0.0",
"vfile-message": "^4.0.0"
@@ -6388,37 +2867,9 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/vfile-sort/node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-sort/node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/vfile-statistics": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz",
- "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==",
+ "license": "MIT",
"dependencies": {
"vfile": "^6.0.0",
"vfile-message": "^4.0.0"
@@ -6428,54 +2879,9 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/vfile-statistics/node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-statistics/node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile/node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/vfile/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/wrapped": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
- "integrity": "sha512-ZTKuqiTu3WXtL72UKCCnQLRax2IScKH7oQ+mvjbpvNE+NJxIWIemDqqM2GxNr4N16NCjOYpIgpin5pStM7kM5g==",
+ "license": "MIT",
"dependencies": {
"co": "3.1.0",
"sliced": "^1.0.1"
@@ -6483,19 +2889,16 @@
},
"node_modules/wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "license": "ISC"
},
"node_modules/zwitch": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
diff --git a/tools/lint-md/package.json b/tools/lint-md/package.json
index ea456ae37988a3..1d61f24e376f9a 100644
--- a/tools/lint-md/package.json
+++ b/tools/lint-md/package.json
@@ -7,7 +7,7 @@
},
"dependencies": {
"remark-parse": "^11.0.0",
- "remark-preset-lint-node": "^5.0.0",
+ "remark-preset-lint-node": "^5.0.2",
"remark-stringify": "^11.0.0",
"to-vfile": "^8.0.0",
"unified": "^11.0.4",
@@ -16,7 +16,7 @@
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
- "rollup": "^4.14.2",
+ "rollup": "^4.14.3",
"rollup-plugin-cleanup": "^3.2.1"
}
}