@custom-elements-manifest/to-markdown
Version:
Custom-elements.json is a file format that describes custom elements. This format will allow tooling and IDEs to give rich information about the custom elements in a given project. It is, however, very experimental and things are subject to change. Follow
1,482 lines (1,420 loc) • 61.5 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all2) => {
__markAsModule(target);
for (var name in all2)
__defProp(target, name, { get: all2[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
// ../../node_modules/mdast-builder/lib/src/index.js
var require_src = __commonJS({
"../../node_modules/mdast-builder/lib/src/index.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function normalizeChildren(children) {
if (Array.isArray(children)) {
return children;
} else if (typeof children === "function") {
const res = children();
return normalizeChildren(res);
} else if (typeof children === "undefined") {
return [];
} else {
return [children];
}
}
var valueNode = (type, value) => ({
type,
value
});
var nodeWithChildren = (type, kids) => ({
type,
children: normalizeChildren(kids)
});
exports.text = (value) => valueNode("text", value);
exports.inlineCode = (value) => valueNode("inlineCode", value);
exports.html = (value) => valueNode("html", value);
exports.strong = (kids) => nodeWithChildren("strong", kids);
exports.emphasis = (kids) => nodeWithChildren("emphasis", kids);
exports.strike = (kids) => nodeWithChildren("delete", kids);
exports.tableCell = (kids) => nodeWithChildren("tableCell", kids);
exports.tableRow = (kids) => nodeWithChildren("tableRow", kids);
exports.table = (align, kids) => Object.assign({}, nodeWithChildren("table", kids), { align });
exports.brk = Object.freeze({ type: "break" });
exports.separator = exports.text("---");
exports.link = (url, title = "", kids) => Object.assign({}, nodeWithChildren("link", kids), {
url,
title
});
exports.root = (kids) => nodeWithChildren("root", kids);
exports.rootWithTitle = (depth, title, kids) => {
return exports.root([exports.heading(depth, title), ...normalizeChildren(kids)]);
};
exports.paragraph = (kids) => nodeWithChildren("paragraph", kids);
exports.image = (url, title, alt, kids) => Object.assign({}, nodeWithChildren("image", kids), { url, title, alt });
exports.blockquote = (kids) => nodeWithChildren("blockquote", kids);
exports.code = (lang, value) => Object.assign({}, valueNode("code", value), { lang });
exports.heading = (depth, kids) => {
if (depth < 1)
throw new Error(`Invalid depth: ${depth}`);
return Object.assign({}, nodeWithChildren("heading", kids), { depth });
};
exports.list = (ordered, kids) => Object.assign({}, nodeWithChildren("list", kids), { ordered: ordered === "ordered" });
exports.listItem = (kids) => nodeWithChildren("listItem", kids);
}
});
// index.js
__export(exports, {
customElementsManifestToMarkdown: () => customElementsManifestToMarkdown
});
var import_mdast_builder2 = __toModule(require_src());
// lib/fp.js
var compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)));
var identity = (x) => x;
var not = (p) => (x) => !p(x);
var and = (p, q) => (x) => p(x) && q(x);
var or = (p, q) => (x) => p(x) || q(x);
var length = (x) => x?.length ?? 0;
var privacy = (x) => x?.privacy;
var kind = (x) => x?.kind;
var isSame = (test) => (x) => x === test;
var isStatic = (x) => x?.static ?? false;
var isPrivate = compose(isSame("private"), privacy);
var isProtected = compose(isSame("protected"), privacy);
var isClass = compose(isSame("class"), privacy);
var isMixin = compose(isSame("mixin"), privacy);
var isLengthy = compose((x) => !!x, length);
var isClassLike = or(isClass, isMixin);
var kindIs = (test) => compose(isSame(test), kind);
var repeat = (length2, x) => Array.from({ length: length2 }, () => x);
var capital = (x) => typeof x !== "string" ? x : x.trim().replace(/^\w/, (c) => c.toUpperCase());
var isDefined = (value) => value != null;
// lib/cells.js
var import_mdast_builder = __toModule(require_src());
var formatParam = (param) => `${param?.name}${param?.type?.text ? `: ${param.type.text}` : ""}`;
var formatParameters = (x) => x?.parameters?.map(formatParam).join(", ");
function getExportKind(x, options) {
const configured = options?.exportKinds?.[x.kind];
if (configured?.url)
return (0, import_mdast_builder.image)(configured.url, null, x.kind);
else if (typeof configured === "string")
return (0, import_mdast_builder.text)(configured);
else
return x.kind ? (0, import_mdast_builder.inlineCode)(x.kind) : (0, import_mdast_builder.text)("");
}
var DECLARATION = { heading: "Declaration", get: (x) => x.declaration?.name ?? "" };
var DEFAULT = { heading: "Default", get: (x) => x.default, cellType: import_mdast_builder.inlineCode };
var NAME = { heading: "Name", get: (x) => x.name, cellType: import_mdast_builder.inlineCode };
var ATTR_FIELD = { heading: "Field", get: (x) => x.fieldName };
var INHERITANCE = { heading: "Inherited From", get: (x) => x.inheritedFrom?.name ?? "" };
var MODULE = { heading: "Module", get: (x) => x.declaration?.module ?? "" };
var PACKAGE = { heading: "Package", get: (x) => x.declaration?.package ?? "" };
var PARAMETERS = { heading: "Parameters", get: formatParameters, cellType: import_mdast_builder.inlineCode };
var RETURN = { heading: "Return", get: (x) => x.return?.type?.text ?? x.return, cellType: import_mdast_builder.inlineCode };
var TYPE = { heading: "Type", get: (x) => x.type?.text ?? "", cellType: import_mdast_builder.inlineCode };
var EXPORT_KIND = { heading: "Kind", get: getExportKind, cellType: "raw" };
// node_modules/zwitch/index.js
var own = {}.hasOwnProperty;
function zwitch(key, options) {
var settings = options || {};
function one2(value) {
var fn = one2.invalid;
var handlers = one2.handlers;
if (value && own.call(value, key)) {
fn = own.call(handlers, value[key]) ? handlers[value[key]] : one2.unknown;
}
if (fn) {
return fn.apply(this, arguments);
}
}
one2.handlers = settings.handlers || {};
one2.invalid = settings.invalid;
one2.unknown = settings.unknown;
return one2;
}
// node_modules/mdast-util-to-markdown/lib/configure.js
function configure(base, extension) {
let index = -1;
let key;
if (extension.extensions) {
while (++index < extension.extensions.length) {
configure(base, extension.extensions[index]);
}
}
for (key in extension) {
if (key === "extensions") {
} else if (key === "unsafe" || key === "join") {
base[key] = [...base[key] || [], ...extension[key] || []];
} else if (key === "handlers") {
base[key] = Object.assign(base[key], extension[key] || {});
} else {
base.options[key] = extension[key];
}
}
return base;
}
// node_modules/mdast-util-to-markdown/lib/util/container-flow.js
function containerFlow(parent, context) {
const children = parent.children || [];
const results = [];
let index = -1;
while (++index < children.length) {
const child = children[index];
results.push(context.handle(child, parent, context, { before: "\n", after: "\n" }));
if (index < children.length - 1) {
results.push(between(child, children[index + 1]));
}
}
return results.join("");
function between(left, right) {
let index2 = context.join.length;
let result;
while (index2--) {
result = context.join[index2](left, right, parent, context);
if (result === true || result === 1) {
break;
}
if (typeof result === "number") {
return "\n".repeat(1 + result);
}
if (result === false) {
return "\n\n<!---->\n\n";
}
}
return "\n\n";
}
}
// node_modules/mdast-util-to-markdown/lib/util/indent-lines.js
var eol = /\r?\n|\r/g;
function indentLines(value, map3) {
const result = [];
let start = 0;
let line2 = 0;
let match;
while (match = eol.exec(value)) {
one2(value.slice(start, match.index));
result.push(match[0]);
start = match.index + match[0].length;
line2++;
}
one2(value.slice(start));
return result.join("");
function one2(value2) {
result.push(map3(value2, line2, !value2));
}
}
// node_modules/mdast-util-to-markdown/lib/handle/blockquote.js
function blockquote(node, _, context) {
const exit = context.enter("blockquote");
const value = indentLines(containerFlow(node, context), map);
exit();
return value;
}
function map(line2, _, blank) {
return ">" + (blank ? "" : " ") + line2;
}
// node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js
function patternInScope(stack, pattern) {
return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);
}
function listInScope(stack, list2, none) {
if (!list2) {
return none;
}
if (typeof list2 === "string") {
list2 = [list2];
}
let index = -1;
while (++index < list2.length) {
if (stack.includes(list2[index])) {
return true;
}
}
return false;
}
// node_modules/mdast-util-to-markdown/lib/handle/break.js
function hardBreak(_, _1, context, safe2) {
let index = -1;
while (++index < context.unsafe.length) {
if (context.unsafe[index].character === "\n" && patternInScope(context.stack, context.unsafe[index])) {
return /[ \t]/.test(safe2.before) ? "" : " ";
}
}
return "\\\n";
}
// node_modules/longest-streak/index.js
function longestStreak(value, character) {
var source = String(value);
var index = source.indexOf(character);
var expected = index;
var count = 0;
var max = 0;
if (typeof character !== "string" || character.length !== 1) {
throw new Error("Expected character");
}
while (index !== -1) {
if (index === expected) {
if (++count > max) {
max = count;
}
} else {
count = 1;
}
expected = index + 1;
index = source.indexOf(character, expected);
}
return max;
}
// node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js
function formatCodeAsIndented(node, context) {
return Boolean(!context.options.fences && node.value && !node.lang && /[^ \r\n]/.test(node.value) && !/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(node.value));
}
// node_modules/mdast-util-to-markdown/lib/util/check-fence.js
function checkFence(context) {
const marker = context.options.fence || "`";
if (marker !== "`" && marker !== "~") {
throw new Error("Cannot serialize code with `" + marker + "` for `options.fence`, expected `` ` `` or `~`");
}
return marker;
}
// node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js
function patternCompile(pattern) {
if (!pattern._compiled) {
const before = (pattern.atBreak ? "[\\r\\n][\\t ]*" : "") + (pattern.before ? "(?:" + pattern.before + ")" : "");
pattern._compiled = new RegExp((before ? "(" + before + ")" : "") + (/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? "\\" : "") + pattern.character + (pattern.after ? "(?:" + pattern.after + ")" : ""), "g");
}
return pattern._compiled;
}
// node_modules/mdast-util-to-markdown/lib/util/safe.js
function safe(context, input, config) {
const value = (config.before || "") + (input || "") + (config.after || "");
const positions = [];
const result = [];
const infos = {};
let index = -1;
while (++index < context.unsafe.length) {
const pattern = context.unsafe[index];
if (!patternInScope(context.stack, pattern)) {
continue;
}
const expression = patternCompile(pattern);
let match;
while (match = expression.exec(value)) {
const before = "before" in pattern || Boolean(pattern.atBreak);
const after = "after" in pattern;
const position = match.index + (before ? match[1].length : 0);
if (positions.includes(position)) {
if (infos[position].before && !before) {
infos[position].before = false;
}
if (infos[position].after && !after) {
infos[position].after = false;
}
} else {
positions.push(position);
infos[position] = { before, after };
}
}
}
positions.sort(numerical);
let start = config.before ? config.before.length : 0;
const end = value.length - (config.after ? config.after.length : 0);
index = -1;
while (++index < positions.length) {
const position = positions[index];
if (position < start || position >= end) {
continue;
}
if (position + 1 < end && positions[index + 1] === position + 1 && infos[position].after && !infos[position + 1].before && !infos[position + 1].after) {
continue;
}
if (start !== position) {
result.push(escapeBackslashes(value.slice(start, position), "\\"));
}
start = position;
if (/[!-/:-@[-`{-~]/.test(value.charAt(position)) && (!config.encode || !config.encode.includes(value.charAt(position)))) {
result.push("\\");
} else {
result.push("&#x" + value.charCodeAt(position).toString(16).toUpperCase() + ";");
start++;
}
}
result.push(escapeBackslashes(value.slice(start, end), config.after));
return result.join("");
}
function numerical(a, b) {
return a - b;
}
function escapeBackslashes(value, after) {
const expression = /\\(?=[!-/:-@[-`{-~])/g;
const positions = [];
const results = [];
const whole = value + after;
let index = -1;
let start = 0;
let match;
while (match = expression.exec(whole)) {
positions.push(match.index);
}
while (++index < positions.length) {
if (start !== positions[index]) {
results.push(value.slice(start, positions[index]));
}
results.push("\\");
start = positions[index];
}
results.push(value.slice(start));
return results.join("");
}
// node_modules/mdast-util-to-markdown/lib/handle/code.js
function code(node, _, context) {
const marker = checkFence(context);
const raw = node.value || "";
const suffix = marker === "`" ? "GraveAccent" : "Tilde";
let value;
let exit;
if (formatCodeAsIndented(node, context)) {
exit = context.enter("codeIndented");
value = indentLines(raw, map2);
} else {
const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));
let subexit;
exit = context.enter("codeFenced");
value = sequence;
if (node.lang) {
subexit = context.enter("codeFencedLang" + suffix);
value += safe(context, node.lang, {
before: "`",
after: " ",
encode: ["`"]
});
subexit();
}
if (node.lang && node.meta) {
subexit = context.enter("codeFencedMeta" + suffix);
value += " " + safe(context, node.meta, {
before: " ",
after: "\n",
encode: ["`"]
});
subexit();
}
value += "\n";
if (raw) {
value += raw + "\n";
}
value += sequence;
}
exit();
return value;
}
function map2(line2, _, blank) {
return (blank ? "" : " ") + line2;
}
// ../../node_modules/parse-entities/decode-entity.browser.js
var semicolon = 59;
var element;
function decodeEntity(characters) {
var entity = "&" + characters + ";";
var char;
element = element || document.createElement("i");
element.innerHTML = entity;
char = element.textContent;
if (char.charCodeAt(char.length - 1) === semicolon && characters !== "semi") {
return false;
}
return char === entity ? false : char;
}
// node_modules/mdast-util-to-markdown/lib/util/association.js
var characterEscape = /\\([!-/:-@[-`{-~])/g;
var characterReference = /&(#(\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
function association(node) {
if (node.label || !node.identifier) {
return node.label || "";
}
return node.identifier.replace(characterEscape, "$1").replace(characterReference, decodeIfPossible);
}
function decodeIfPossible($0, $1) {
return decodeEntity($1) || $0;
}
// node_modules/mdast-util-to-markdown/lib/util/check-quote.js
function checkQuote(context) {
const marker = context.options.quote || '"';
if (marker !== '"' && marker !== "'") {
throw new Error("Cannot serialize title with `" + marker + "` for `options.quote`, expected `\"`, or `'`");
}
return marker;
}
// node_modules/mdast-util-to-markdown/lib/handle/definition.js
function definition(node, _, context) {
const marker = checkQuote(context);
const suffix = marker === '"' ? "Quote" : "Apostrophe";
const exit = context.enter("definition");
let subexit = context.enter("label");
let value = "[" + safe(context, association(node), { before: "[", after: "]" }) + "]: ";
subexit();
if (!node.url || /[ \t\r\n]/.test(node.url)) {
subexit = context.enter("destinationLiteral");
value += "<" + safe(context, node.url, { before: "<", after: ">" }) + ">";
} else {
subexit = context.enter("destinationRaw");
value += safe(context, node.url, { before: " ", after: " " });
}
subexit();
if (node.title) {
subexit = context.enter("title" + suffix);
value += " " + marker + safe(context, node.title, { before: marker, after: marker }) + marker;
subexit();
}
exit();
return value;
}
// node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js
function checkEmphasis(context) {
const marker = context.options.emphasis || "*";
if (marker !== "*" && marker !== "_") {
throw new Error("Cannot serialize emphasis with `" + marker + "` for `options.emphasis`, expected `*`, or `_`");
}
return marker;
}
// node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
function containerPhrasing(parent, context, safeOptions) {
const children = parent.children || [];
const results = [];
let index = -1;
let before = safeOptions.before;
while (++index < children.length) {
const child = children[index];
let after;
if (index + 1 < children.length) {
let handle2 = context.handle.handlers[children[index + 1].type];
if (handle2 && handle2.peek)
handle2 = handle2.peek;
after = handle2 ? handle2(children[index + 1], parent, context, {
before: "",
after: ""
}).charAt(0) : "";
} else {
after = safeOptions.after;
}
if (results.length > 0 && (before === "\r" || before === "\n") && child.type === "html") {
results[results.length - 1] = results[results.length - 1].replace(/(\r?\n|\r)$/, " ");
before = " ";
}
results.push(context.handle(child, parent, context, { before, after }));
before = results[results.length - 1].slice(-1);
}
return results.join("");
}
// node_modules/mdast-util-to-markdown/lib/handle/emphasis.js
emphasis.peek = emphasisPeek;
function emphasis(node, _, context) {
const marker = checkEmphasis(context);
const exit = context.enter("emphasis");
const value = containerPhrasing(node, context, {
before: marker,
after: marker
});
exit();
return marker + value + marker;
}
function emphasisPeek(_, _1, context) {
return context.options.emphasis || "*";
}
// node_modules/mdast-util-to-string/index.js
function toString(node, options) {
var { includeImageAlt = true } = options || {};
return one(node, includeImageAlt);
}
function one(node, includeImageAlt) {
return node && typeof node === "object" && (node.value || (includeImageAlt ? node.alt : "") || "children" in node && all(node.children, includeImageAlt) || Array.isArray(node) && all(node, includeImageAlt)) || "";
}
function all(values, includeImageAlt) {
var result = [];
var index = -1;
while (++index < values.length) {
result[index] = one(values[index], includeImageAlt);
}
return result.join("");
}
// node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js
function formatHeadingAsSetext(node, context) {
return Boolean(context.options.setext && (!node.depth || node.depth < 3) && toString(node));
}
// node_modules/mdast-util-to-markdown/lib/handle/heading.js
function heading(node, _, context) {
const rank = Math.max(Math.min(6, node.depth || 1), 1);
let exit;
let subexit;
let value;
if (formatHeadingAsSetext(node, context)) {
exit = context.enter("headingSetext");
subexit = context.enter("phrasing");
value = containerPhrasing(node, context, { before: "\n", after: "\n" });
subexit();
exit();
return value + "\n" + (rank === 1 ? "=" : "-").repeat(value.length - (Math.max(value.lastIndexOf("\r"), value.lastIndexOf("\n")) + 1));
}
const sequence = "#".repeat(rank);
exit = context.enter("headingAtx");
subexit = context.enter("phrasing");
value = containerPhrasing(node, context, { before: "# ", after: "\n" });
value = value ? sequence + " " + value : sequence;
if (context.options.closeAtx) {
value += " " + sequence;
}
subexit();
exit();
return value;
}
// node_modules/mdast-util-to-markdown/lib/handle/html.js
html.peek = htmlPeek;
function html(node) {
return node.value || "";
}
function htmlPeek() {
return "<";
}
// node_modules/mdast-util-to-markdown/lib/handle/image.js
image2.peek = imagePeek;
function image2(node, _, context) {
const quote = checkQuote(context);
const suffix = quote === '"' ? "Quote" : "Apostrophe";
const exit = context.enter("image");
let subexit = context.enter("label");
let value = "![" + safe(context, node.alt, { before: "[", after: "]" }) + "](";
subexit();
if (!node.url && node.title || /[ \t\r\n]/.test(node.url)) {
subexit = context.enter("destinationLiteral");
value += "<" + safe(context, node.url, { before: "<", after: ">" }) + ">";
} else {
subexit = context.enter("destinationRaw");
value += safe(context, node.url, {
before: "(",
after: node.title ? " " : ")"
});
}
subexit();
if (node.title) {
subexit = context.enter("title" + suffix);
value += " " + quote + safe(context, node.title, { before: quote, after: quote }) + quote;
subexit();
}
value += ")";
exit();
return value;
}
function imagePeek() {
return "!";
}
// node_modules/mdast-util-to-markdown/lib/handle/image-reference.js
imageReference.peek = imageReferencePeek;
function imageReference(node, _, context) {
const type = node.referenceType;
const exit = context.enter("imageReference");
let subexit = context.enter("label");
const alt = safe(context, node.alt, { before: "[", after: "]" });
let value = "![" + alt + "]";
subexit();
const stack = context.stack;
context.stack = [];
subexit = context.enter("reference");
const reference = safe(context, association(node), { before: "[", after: "]" });
subexit();
context.stack = stack;
exit();
if (type === "full" || !alt || alt !== reference) {
value += "[" + reference + "]";
} else if (type !== "shortcut") {
value += "[]";
}
return value;
}
function imageReferencePeek() {
return "!";
}
// node_modules/mdast-util-to-markdown/lib/handle/inline-code.js
inlineCode2.peek = inlineCodePeek;
function inlineCode2(node, _, context) {
let value = node.value || "";
let sequence = "`";
let index = -1;
while (new RegExp("(^|[^`])" + sequence + "([^`]|$)").test(value)) {
sequence += "`";
}
if (/[^ \r\n]/.test(value) && (/[ \r\n`]/.test(value.charAt(0)) || /[ \r\n`]/.test(value.charAt(value.length - 1)))) {
value = " " + value + " ";
}
while (++index < context.unsafe.length) {
const pattern = context.unsafe[index];
const expression = patternCompile(pattern);
let match;
if (!pattern.atBreak)
continue;
while (match = expression.exec(value)) {
let position = match.index;
if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {
position--;
}
value = value.slice(0, position) + " " + value.slice(match.index + 1);
}
}
return sequence + value + sequence;
}
function inlineCodePeek() {
return "`";
}
// node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js
function formatLinkAsAutolink(node, context) {
const raw = toString(node);
return Boolean(!context.options.resourceLink && node.url && !node.title && node.children && node.children.length === 1 && node.children[0].type === "text" && (raw === node.url || "mailto:" + raw === node.url) && /^[a-z][a-z+.-]+:/i.test(node.url) && !/[\0- <>\u007F]/.test(node.url));
}
// node_modules/mdast-util-to-markdown/lib/handle/link.js
link.peek = linkPeek;
function link(node, _, context) {
const quote = checkQuote(context);
const suffix = quote === '"' ? "Quote" : "Apostrophe";
let exit;
let subexit;
let value;
if (formatLinkAsAutolink(node, context)) {
const stack = context.stack;
context.stack = [];
exit = context.enter("autolink");
value = "<" + containerPhrasing(node, context, { before: "<", after: ">" }) + ">";
exit();
context.stack = stack;
return value;
}
exit = context.enter("link");
subexit = context.enter("label");
value = "[" + containerPhrasing(node, context, { before: "[", after: "]" }) + "](";
subexit();
if (!node.url && node.title || /[ \t\r\n]/.test(node.url)) {
subexit = context.enter("destinationLiteral");
value += "<" + safe(context, node.url, { before: "<", after: ">" }) + ">";
} else {
subexit = context.enter("destinationRaw");
value += safe(context, node.url, {
before: "(",
after: node.title ? " " : ")"
});
}
subexit();
if (node.title) {
subexit = context.enter("title" + suffix);
value += " " + quote + safe(context, node.title, { before: quote, after: quote }) + quote;
subexit();
}
value += ")";
exit();
return value;
}
function linkPeek(node, _, context) {
return formatLinkAsAutolink(node, context) ? "<" : "[";
}
// node_modules/mdast-util-to-markdown/lib/handle/link-reference.js
linkReference.peek = linkReferencePeek;
function linkReference(node, _, context) {
const type = node.referenceType;
const exit = context.enter("linkReference");
let subexit = context.enter("label");
const text4 = containerPhrasing(node, context, { before: "[", after: "]" });
let value = "[" + text4 + "]";
subexit();
const stack = context.stack;
context.stack = [];
subexit = context.enter("reference");
const reference = safe(context, association(node), { before: "[", after: "]" });
subexit();
context.stack = stack;
exit();
if (type === "full" || !text4 || text4 !== reference) {
value += "[" + reference + "]";
} else if (type !== "shortcut") {
value += "[]";
}
return value;
}
function linkReferencePeek() {
return "[";
}
// node_modules/mdast-util-to-markdown/lib/handle/list.js
function list(node, _, context) {
const exit = context.enter("list");
const value = containerFlow(node, context);
exit();
return value;
}
// node_modules/mdast-util-to-markdown/lib/util/check-bullet.js
function checkBullet(context) {
const marker = context.options.bullet || "*";
if (marker !== "*" && marker !== "+" && marker !== "-") {
throw new Error("Cannot serialize items with `" + marker + "` for `options.bullet`, expected `*`, `+`, or `-`");
}
return marker;
}
// node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js
function checkListItemIndent(context) {
const style = context.options.listItemIndent || "tab";
if (style === 1 || style === "1") {
return "one";
}
if (style !== "tab" && style !== "one" && style !== "mixed") {
throw new Error("Cannot serialize items with `" + style + "` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");
}
return style;
}
// node_modules/mdast-util-to-markdown/lib/handle/list-item.js
function listItem(node, parent, context) {
const listItemIndent = checkListItemIndent(context);
let bullet = checkBullet(context);
if (parent && parent.ordered) {
bullet = (typeof parent.start === "number" && parent.start > -1 ? parent.start : 1) + (context.options.incrementListMarker === false ? 0 : parent.children.indexOf(node)) + ".";
}
let size = bullet.length + 1;
if (listItemIndent === "tab" || listItemIndent === "mixed" && (parent && parent.spread || node.spread)) {
size = Math.ceil(size / 4) * 4;
}
const exit = context.enter("listItem");
const value = indentLines(containerFlow(node, context), map3);
exit();
return value;
function map3(line2, index, blank) {
if (index) {
return (blank ? "" : " ".repeat(size)) + line2;
}
return (blank ? bullet : bullet + " ".repeat(size - bullet.length)) + line2;
}
}
// node_modules/mdast-util-to-markdown/lib/handle/paragraph.js
function paragraph(node, _, context) {
const exit = context.enter("paragraph");
const subexit = context.enter("phrasing");
const value = containerPhrasing(node, context, { before: "\n", after: "\n" });
subexit();
exit();
return value;
}
// node_modules/mdast-util-to-markdown/lib/handle/root.js
function root(node, _, context) {
return containerFlow(node, context);
}
// node_modules/mdast-util-to-markdown/lib/util/check-strong.js
function checkStrong(context) {
const marker = context.options.strong || "*";
if (marker !== "*" && marker !== "_") {
throw new Error("Cannot serialize strong with `" + marker + "` for `options.strong`, expected `*`, or `_`");
}
return marker;
}
// node_modules/mdast-util-to-markdown/lib/handle/strong.js
strong.peek = strongPeek;
function strong(node, _, context) {
const marker = checkStrong(context);
const exit = context.enter("strong");
const value = containerPhrasing(node, context, {
before: marker,
after: marker
});
exit();
return marker + marker + value + marker + marker;
}
function strongPeek(_, _1, context) {
return context.options.strong || "*";
}
// node_modules/mdast-util-to-markdown/lib/handle/text.js
function text2(node, _, context, safeOptions) {
return safe(context, node.value, safeOptions);
}
// node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js
function checkRuleRepetition(context) {
const repetition = context.options.ruleRepetition || 3;
if (repetition < 3) {
throw new Error("Cannot serialize rules with repetition `" + repetition + "` for `options.ruleRepetition`, expected `3` or more");
}
return repetition;
}
// node_modules/mdast-util-to-markdown/lib/util/check-rule.js
function checkRule(context) {
const marker = context.options.rule || "*";
if (marker !== "*" && marker !== "-" && marker !== "_") {
throw new Error("Cannot serialize rules with `" + marker + "` for `options.rule`, expected `*`, `-`, or `_`");
}
return marker;
}
// node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js
function thematicBreak(_, _1, context) {
const value = (checkRule(context) + (context.options.ruleSpaces ? " " : "")).repeat(checkRuleRepetition(context));
return context.options.ruleSpaces ? value.slice(0, -1) : value;
}
// node_modules/mdast-util-to-markdown/lib/handle/index.js
var handle = {
blockquote,
break: hardBreak,
code,
definition,
emphasis,
hardBreak,
heading,
html,
image: image2,
imageReference,
inlineCode: inlineCode2,
link,
linkReference,
list,
listItem,
paragraph,
root,
strong,
text: text2,
thematicBreak
};
// node_modules/mdast-util-to-markdown/lib/join.js
var join = [joinDefaults];
function joinDefaults(left, right, parent, context) {
if (right.type === "list" && right.type === left.type && Boolean(left.ordered) === Boolean(right.ordered) || right.type === "code" && formatCodeAsIndented(right, context) && (left.type === "list" || left.type === right.type && formatCodeAsIndented(left, context))) {
return false;
}
if (typeof parent.spread === "boolean") {
if (left.type === "paragraph" && (left.type === right.type || right.type === "definition" || right.type === "heading" && formatHeadingAsSetext(right, context))) {
return;
}
return parent.spread ? 1 : 0;
}
}
// node_modules/mdast-util-to-markdown/lib/unsafe.js
var unsafe = [
{
character: " ",
inConstruct: ["codeFencedLangGraveAccent", "codeFencedLangTilde"]
},
{
character: "\r",
inConstruct: [
"codeFencedLangGraveAccent",
"codeFencedLangTilde",
"codeFencedMetaGraveAccent",
"codeFencedMetaTilde",
"destinationLiteral",
"headingAtx"
]
},
{
character: "\n",
inConstruct: [
"codeFencedLangGraveAccent",
"codeFencedLangTilde",
"codeFencedMetaGraveAccent",
"codeFencedMetaTilde",
"destinationLiteral",
"headingAtx"
]
},
{
character: " ",
inConstruct: ["codeFencedLangGraveAccent", "codeFencedLangTilde"]
},
{ character: "!", after: "\\[", inConstruct: "phrasing" },
{ character: '"', inConstruct: "titleQuote" },
{ atBreak: true, character: "#" },
{ character: "#", inConstruct: "headingAtx", after: "(?:[\r\n]|$)" },
{ character: "&", after: "[#A-Za-z]", inConstruct: "phrasing" },
{ character: "'", inConstruct: "titleApostrophe" },
{ character: "(", inConstruct: "destinationRaw" },
{ before: "\\]", character: "(", inConstruct: "phrasing" },
{ atBreak: true, before: "\\d+", character: ")" },
{ character: ")", inConstruct: "destinationRaw" },
{ atBreak: true, character: "*" },
{ character: "*", inConstruct: "phrasing" },
{ atBreak: true, character: "+" },
{ atBreak: true, character: "-" },
{ atBreak: true, before: "\\d+", character: ".", after: "(?:[ \r\n]|$)" },
{ atBreak: true, character: "<", after: "[!/?A-Za-z]" },
{ character: "<", after: "[!/?A-Za-z]", inConstruct: "phrasing" },
{ character: "<", inConstruct: "destinationLiteral" },
{ atBreak: true, character: "=" },
{ atBreak: true, character: ">" },
{ character: ">", inConstruct: "destinationLiteral" },
{ atBreak: true, character: "[" },
{ character: "[", inConstruct: ["phrasing", "label", "reference"] },
{ character: "\\", after: "[\\r\\n]", inConstruct: "phrasing" },
{
character: "]",
inConstruct: ["label", "reference"]
},
{ atBreak: true, character: "_" },
{ before: "[^A-Za-z]", character: "_", inConstruct: "phrasing" },
{ character: "_", after: "[^A-Za-z]", inConstruct: "phrasing" },
{ atBreak: true, character: "`" },
{
character: "`",
inConstruct: [
"codeFencedLangGraveAccent",
"codeFencedMetaGraveAccent",
"phrasing"
]
},
{ atBreak: true, character: "~" }
];
// node_modules/mdast-util-to-markdown/lib/index.js
function toMarkdown(tree, options = {}) {
const context = {
enter,
stack: [],
unsafe: [],
join: [],
handlers: {},
options: {}
};
configure(context, { unsafe, join, handlers: handle });
configure(context, options);
if (context.options.tightDefinitions) {
configure(context, { join: [joinDefinition] });
}
context.handle = zwitch("type", {
invalid,
unknown,
handlers: context.handlers
});
let result = context.handle(tree, null, context, { before: "\n", after: "\n" });
if (result && result.charCodeAt(result.length - 1) !== 10 && result.charCodeAt(result.length - 1) !== 13) {
result += "\n";
}
return result;
function enter(name) {
context.stack.push(name);
return exit;
function exit() {
context.stack.pop();
}
}
}
function invalid(value) {
throw new Error("Cannot handle value `" + value + "`, expected node");
}
function unknown(node) {
throw new Error("Cannot handle unknown node `" + node.type + "`");
}
function joinDefinition(left, right) {
if (left.type === "definition" && left.type === right.type) {
return 0;
}
}
// ../../node_modules/mdast-util-gfm-autolink-literal/index.js
var inConstruct = "phrasing";
var notInConstruct = ["autolink", "link", "image", "label"];
var gfmAutolinkLiteralToMarkdown = {
unsafe: [
{
character: "@",
before: "[+\\-.\\w]",
after: "[\\-.\\w]",
inConstruct,
notInConstruct
},
{
character: ".",
before: "[Ww]",
after: "[\\-.\\w]",
inConstruct,
notInConstruct
},
{ character: ":", before: "[ps]", after: "\\/", inConstruct, notInConstruct }
]
};
// ../../node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
function containerPhrasing2(parent, context, safeOptions) {
const children = parent.children || [];
const results = [];
let index = -1;
let before = safeOptions.before;
while (++index < children.length) {
const child = children[index];
let after;
if (index + 1 < children.length) {
let handle2 = context.handle.handlers[children[index + 1].type];
if (handle2 && handle2.peek)
handle2 = handle2.peek;
after = handle2 ? handle2(children[index + 1], parent, context, {
before: "",
after: ""
}).charAt(0) : "";
} else {
after = safeOptions.after;
}
if (results.length > 0 && (before === "\r" || before === "\n") && child.type === "html") {
results[results.length - 1] = results[results.length - 1].replace(/(\r?\n|\r)$/, " ");
before = " ";
}
results.push(context.handle(child, parent, context, { before, after }));
before = results[results.length - 1].slice(-1);
}
return results.join("");
}
// ../../node_modules/mdast-util-gfm-strikethrough/index.js
var gfmStrikethroughToMarkdown = {
unsafe: [{ character: "~", inConstruct: "phrasing" }],
handlers: { delete: handleDelete }
};
handleDelete.peek = peekDelete;
function handleDelete(node, _, context) {
const exit = context.enter("emphasis");
const value = containerPhrasing2(node, context, { before: "~", after: "~" });
exit();
return "~~" + value + "~~";
}
function peekDelete() {
return "~";
}
// ../../node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
function containerPhrasing3(parent, context, safeOptions) {
const children = parent.children || [];
const results = [];
let index = -1;
let before = safeOptions.before;
while (++index < children.length) {
const child = children[index];
let after;
if (index + 1 < children.length) {
let handle2 = context.handle.handlers[children[index + 1].type];
if (handle2 && handle2.peek)
handle2 = handle2.peek;
after = handle2 ? handle2(children[index + 1], parent, context, {
before: "",
after: ""
}).charAt(0) : "";
} else {
after = safeOptions.after;
}
if (results.length > 0 && (before === "\r" || before === "\n") && child.type === "html") {
results[results.length - 1] = results[results.length - 1].replace(/(\r?\n|\r)$/, " ");
before = " ";
}
results.push(context.handle(child, parent, context, { before, after }));
before = results[results.length - 1].slice(-1);
}
return results.join("");
}
// ../../node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js
function patternCompile2(pattern) {
if (!pattern._compiled) {
const before = (pattern.atBreak ? "[\\r\\n][\\t ]*" : "") + (pattern.before ? "(?:" + pattern.before + ")" : "");
pattern._compiled = new RegExp((before ? "(" + before + ")" : "") + (/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? "\\" : "") + pattern.character + (pattern.after ? "(?:" + pattern.after + ")" : ""), "g");
}
return pattern._compiled;
}
// ../../node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-markdown/lib/handle/inline-code.js
inlineCode3.peek = inlineCodePeek2;
function inlineCode3(node, _, context) {
let value = node.value || "";
let sequence = "`";
let index = -1;
while (new RegExp("(^|[^`])" + sequence + "([^`]|$)").test(value)) {
sequence += "`";
}
if (/[^ \r\n]/.test(value) && (/[ \r\n`]/.test(value.charAt(0)) || /[ \r\n`]/.test(value.charAt(value.length - 1)))) {
value = " " + value + " ";
}
while (++index < context.unsafe.length) {
const pattern = context.unsafe[index];
const expression = patternCompile2(pattern);
let match;
if (!pattern.atBreak)
continue;
while (match = expression.exec(value)) {
let position = match.index;
if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {
position--;
}
value = value.slice(0, position) + " " + value.slice(match.index + 1);
}
}
return sequence + value + sequence;
}
function inlineCodePeek2() {
return "`";
}
// ../../node_modules/markdown-table/index.js
function markdownTable(table2, options) {
const settings = options || {};
const align = (settings.align || []).concat();
const stringLength = settings.stringLength || defaultStringLength;
const alignments = [];
let rowIndex = -1;
const cellMatrix = [];
const sizeMatrix = [];
const longestCellByColumn = [];
let mostCellsPerRow = 0;
let columnIndex;
let row;
let sizes;
let size;
let cell;
let line2;
let before;
let after;
let code2;
while (++rowIndex < table2.length) {
columnIndex = -1;
row = [];
sizes = [];
if (table2[rowIndex].length > mostCellsPerRow) {
mostCellsPerRow = table2[rowIndex].length;
}
while (++columnIndex < table2[rowIndex].length) {
cell = serialize(table2[rowIndex][columnIndex]);
if (settings.alignDelimiters !== false) {
size = stringLength(cell);
sizes[columnIndex] = size;
if (longestCellByColumn[columnIndex] === void 0 || size > longestCellByColumn[columnIndex]) {
longestCellByColumn[columnIndex] = size;
}
}
row.push(cell);
}
cellMatrix[rowIndex] = row;
sizeMatrix[rowIndex] = sizes;
}
columnIndex = -1;
if (typeof align === "object" && "length" in align) {
while (++columnIndex < mostCellsPerRow) {
alignments[columnIndex] = toAlignment(align[columnIndex]);
}
} else {
code2 = toAlignment(align);
while (++columnIndex < mostCellsPerRow) {
alignments[columnIndex] = code2;
}
}
columnIndex = -1;
row = [];
sizes = [];
while (++columnIndex < mostCellsPerRow) {
code2 = alignments[columnIndex];
before = "";
after = "";
if (code2 === 99) {
before = ":";
after = ":";
} else if (code2 === 108) {
before = ":";
} else if (code2 === 114) {
after = ":";
}
size = settings.alignDelimiters === false ? 1 : Math.max(1, longestCellByColumn[columnIndex] - before.length - after.length);
cell = before + "-".repeat(size) + after;
if (settings.alignDelimiters !== false) {
size = before.length + size + after.length;
if (size > longestCellByColumn[columnIndex]) {
longestCellByColumn[columnIndex] = size;
}
sizes[columnIndex] = size;
}
row[columnIndex] = cell;
}
cellMatrix.splice(1, 0, row);
sizeMatrix.splice(1, 0, sizes);
rowIndex = -1;
const lines = [];
while (++rowIndex < cellMatrix.length) {
row = cellMatrix[rowIndex];
sizes = sizeMatrix[rowIndex];
columnIndex = -1;
line2 = [];
while (++columnIndex < mostCellsPerRow) {
cell = row[columnIndex] || "";
before = "";
after = "";
if (settings.alignDelimiters !== false) {
size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0);
code2 = alignments[columnIndex];
if (code2 === 114) {
before = " ".repeat(size);
} else if (code2 === 99) {
if (size % 2) {
before = " ".repeat(size / 2 + 0.5);
after = " ".repeat(size / 2 - 0.5);
} else {
before = " ".repeat(size / 2);
after = before;
}
} else {
after = " ".repeat(size);
}
}
if (settings.delimiterStart !== false && !columnIndex) {
line2.push("|");
}
if (settings.padding !== false && !(settings.alignDelimiters === false && cell === "") && (settings.delimiterStart !== false || columnIndex)) {
line2.push(" ");
}
if (settings.alignDelimiters !== false) {
line2.push(before);
}
line2.push(cell);
if (settings.alignDelimiters !== false) {
line2.push(after);
}
if (settings.padding !== false) {
line2.push(" ");
}
if (settings.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {
line2.push("|");
}
}
lines.push(settings.delimiterEnd === false ? line2.join("").replace(/ +$/, "") : line2.join(""));
}
return lines.join("\n");
}
function serialize(value) {
return value === null || value === void 0 ? "" : String(value);
}
function defaultStringLength(value) {
return value.length;
}
function toAlignment(value) {
const code2 = typeof value === "string" ? value.charCodeAt(0) : 0;
return code2 === 67 || code2 === 99 ? 99 : code2 === 76 || code2 === 108 ? 108 : code2 === 82 || code2 === 114 ? 114 : 0;
}
// ../../node_modules/mdast-util-gfm-table/index.js
function gfmTableToMarkdown(options) {
const settings = options || {};
const padding = settings.tableCellPadding;
const alignDelimiters = settings.tablePipeAlign;
const stringLength = settings.stringLength;
const around = padding ? " " : "|";
return {
unsafe: [
{ character: "\r", inConstruct: "tableCell" },
{ character: "\n", inConstruct: "tableCell" },
{ atBreak: true, character: "|", after: "[ :-]" },
{ character: "|", inConstruct: "tableCell" },
{ atBreak: true, character: ":", after: "-" },
{ atBreak: true, character: "-", after: "[:|-]" }
],
handlers: {
table: handleTable,
tableRow: handleTableRow,
tableCell: handleTableCell,
inlineCode: inlineCodeWithTable
}
};
function handleTable(node, _, context) {
return serializeData(handleTableAsData(node, context), node.align);
}
function handleTableRow(node, _, context) {
const row = handleTableRowAsData(node, context);
const value = serializeData([row]);
return value.slice(0, value.indexOf("\n"));
}
function handleTableCell(node, _, context) {
const exit = context.enter("tableCell");
const value = containerPhrasing3(node, context, {
before: around,
after: around
});
exit();
return value;
}
function serializeData(matrix, align) {
return markdownTable(matrix, {
align,
alignDelimiters,
padding,
stringLength
});
}
function handleTableAsData(node, context) {
const children = node.children;
let index = -1;
const result = [];
const subexit = context.enter("table");
while (++index < children.length) {
result[index] = handleTableRowAsData(children[index], context);
}
subexit();
return result;
}
function handleTableRowAsData(node, context) {
const children = node.children;
let index = -1;
const result = [];
const subexit = context.enter("tableRow");
while (++index < children.length) {
result[index] = handleTableCell(children[index], node, context);
}
subexit();
return result;
}
function inlineCodeWithTable(node, parent, context) {
let value = inlineCode3(node, parent, context);
if (context.stack.includes("tableCell")) {
value = value.replace(/\|/g, "\\$&");
}
return value;
}
}
// ../../node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-markdown/lib/util/check-bullet.js
function checkBullet2(context) {
const marker = context.options.bullet || "*";
if (marker !== "*" && marker !== "+" && marker !== "-") {
throw new Error("Cannot serialize items with `" + marker + "` for `options.bullet`, expected `*`, `+`, or `-`");
}
return marker;
}
// ../../node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js
function checkListItemIndent2(context) {
const style = context.options.listItemIndent || "tab";
if (style === 1 || style === "1") {
return "one";
}
if (style !== "tab" && style !== "one" && style !== "mixed") {
throw new Error("Cannot serialize items with `" + style + "` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");
}
return style;
}
// ../../node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-markdown/lib/util/container-flow.js
function containerFlow2(parent, context) {
const children = parent.children || [];
const results = [];
let index = -1;
while (++index < children.length) {
const child = children[index];
results.push(context.handle(child, parent, context, { before: "\n", after: "\n" }));
if (index < children.length - 1) {
results.push(between(child, children[index + 1]));
}
}
return results.join("");
function between(left, right) {
let index2 = context.join.length;
let result;
while (index2--) {
result = context.join[index2](left, right, parent, context);
if (result === true || result === 1) {
break;
}
if (typeof result === "number") {
return "\n".repeat(1 + result);
}
if (result === false) {